본문 바로가기

Database [DB]

[DB] 02. Relational Data Model

Relational Data Model

관계형 데이터 모델 : 데이터베이스를 관계 + 무결성 제약 조건의 모음으로 나타냄

 

Student 관계는 5개의 tuple과 7개의 attribute로 구성

맨 위는 속성 헤드 (attribute head) 

relation = table

 

tuple = record = row
attribute = column


속성 Attributes

  • 속성은 도메인을 가짐
  • 도메인 : 속성값으로 허용할 수 있는 값의 집합
  • 속성값은 원자(atomic)이어야 함 (분할될 수 없는 값)
  • atomic 속성 타입 : integer, real, char, varchar, decimal, date, time, timestamp 등 (문자열은 원자값으로 취급)
  • non-atomic 속성 타입 : 다중값 속성(set, beg, list), 복합 속성
  • ‘null’ 값은 모든 도메인의 멤버
  • 널 값은 많은 관계 연산의 정의에서 복잡성을 유발

관계 스키마 (Relation Schema) : 관계 이름과 속성명 나열

  • 속성 : A1, A2, …, An
  • 관계 스키마 R = (A1, A2, …, An) / (위 표에서 student(sID, name, gender, deptName, year, GPA, totalCredit))
  • 관계 인스턴스 : 관계 스키마에 대한 개별 값의 조합 (위 표에서 5개의 tuple)

=> D1, D2, …, Dn 도메인에서, 관계 인스턴스는 D1 x D2 x … x Dn의 부분집합
     관계 인스턴스는 n-tuple (a1, a2, …, an) where (ai ∈ Di) 의 집합

 

관계형 데이터베이스는 관계의 집합과 제약 조건의 집합으로 구성

  • 무결성 제약 조건 : 키 제약 조건 / Entity 제약 조건 / 참조 무결성 제약 조건 등
  • 관계 간에 순서는 중요하지 않음
  • tuples는 임의의 순서대로 저장 가능

키 Keys

  • 슈퍼 키 (Super key) : 관계에서 tuple을 유일하게 식별할 수 있는 속성의 집합
  • 후보 키 (Candidate key) : 슈퍼 키의 유일성을 유지하면서 가장 적은 수의 속성으로 구성된 키
  • 주 키 (Primary key) : 후보 키 중 하나를 선택

예제

  • MyStudent 관계 : MyStudent(student-id, name, national-id, address, phone)
  • student-id(학번)와 national-id(주민번호)는 유일 식별자
  • Super key : (student-id), (student-id, name), (student-id, name, address), (national-id), (national-id, address, phone), (student-id, national-id), (student-id, national-id, name), (student-id, national-id, address, phone), …
  • Candidate key : (student-id)와 (national-id)
  • Primary key : (student-id) 또는 (national-id) 중 하나를 선택

참조 무결성 (Integrity Constraint)

  • 관계형 데이터 모델에만 존재하는 제약, 데이터 간의 관계를 값으로 표현하기 때문
    (기존 계층/네트워크 데이터 모델은 데이터 간의 관계를 포인터로 표현했었음)
  • 참조 무결성 제약은 특정 관계에 나타나는 모든 값은 다른 관계에서도 나타나야 한다는 것을 의미

 

예제

  • student 테이블에서 Lee 학생의 major 속성값은 2
  • department 테이블을 보고 전공을 알 수 있음
  • Sohn 학생은 major 속성값이 4인데 이는 department 테이블에 존재하지 않아 문제가 발생
  • Park 학생의 major 속성값은 null인데 이는 학과 미결정 혹은 미존재 데이터로 해석 가능하여 문제가 없음
  • student 테이블 : 참조하는 테이블 (referencing relation)
  • major 속성 : department를 참조하는 외래 키
  • department 테이블 : 참조 받는 테이블 (referenced relation)
  • 참조 받는 속성은 반드시 그 테이블의 Primary key여야 함

데이터 사전 (Data Dictionary)

데이터베이스 시스템이 내부적으로 관리하는 데이터 장소

  • 메타 데이터(데이터에 관한 데이터)를 관리
  • 관계의 이름
  • 각 관계의 속성의 이름, 타입, 길이
  • 뷰의 이름과 정의
  • 무결성 제약 조건
  • 사용자 및 계정 정보 (비밀번호 포함)
  • 통계 및 서술 데이터 (각 관계의 tuple 수)
  • 물리적 화일 조직 정보 (관계 저장 방식, 관계의 물리적 위치) - 인덱스에 대한 정보

Relational Algebra

관계 대수 : 절차적 언어

관계형 데이터 모델의 일부이며 지금까지 정의한 관계, 제약 사항에 대한 연산을 제공

 

6가지 연산자

  • select : σ
  • project : ∏
  • union : ∪
  • set difference : –
  • Cartesian product : x
  • rename : ρ

select 예제

 


project 예제

 


union 예제

= 합집합 연산

 


set difference 예제

= 차집합 연산

 


Cartesian product 예제


rename 연산

  • 단순히 테이블 이름이나 속성 이름을 변경하는 연산
  • 기호 : ρ

관계 대수 표현식 E가 n개의 속성을 가진다면

 

로 표현 가능

=> A1, A2 ... An 으로 재명명한 속성의 이름 X로 반환


관계 대수식 예제

 

1. “CS” 학과에 속하고 성별이 남자인 학생들의 이름과 GPA를 검색

 

2. “CS” 학과 또는 “EE” 학과에서 개설되는 강의 제목을 검색

 

3. “CS” 학과와 “EE” 학과 모두에서 개설되는 강의 제목을 검색

       => 불가능 (선택 조건이 and 조건인데 양쪽 조건을 모두 만족하는 deptName은 존재하지 않음)

 

4. 첫 번째 학과의 예산이 두 번째 학과의 예산보다 큰 학과 이름의 쌍을 검색

=> department와 rename한 department를 x로 결합, 그리고 select 연산과 project 연산 수행


Additional Relational Algebra

기본 관계 대수를 이용하여 표현이 가능하지만 사용 편리성을 제공

  • Assignment
  • Set intersection
  • Natural join
  • Outer join
  • Division

Assignment 연산 (할당 연산)

기호 : ←

복잡한 질의문 작성 시, 중간 결과 표현을 임시로 저장 가능

rename 연산자와 함께 사용하면 중간 결과의 관계 및 속성 이름을 원하는 것으로 변경하여 할당 가능


Set intersection 연산 (교집합 연산)


Natural Join 연산

 

2020년 가을에 강의한 교수명과 교수가 강의한 과목명 검색 질의

 

course 테이블을 myCourse로 rename하는 이유 : course의 deptName과 professor의 deptName 간 조인이 발생하기 때문

 

Natural Join의 특징

  • associative(결합성) : ((professor ⋈ teaches) ⋈ course) ≡ (professor ⋈ (teaches ⋈ course))
  • commutative(교환성) : (professor ⋈ teaches) ≡ (teaches ⋈ professor)

Join은 Inner Join과 Outer Join으로 구분

 

Inner Join의 3가지 종류

  • 세타 조인(Theta Join) : 가장 일반적인 조인 연산 
  • 동등 조인(Equi Join) : 세타 조인 중에서 조인 조건이 동등 조건만으로 구성된 경우
  • 자연 조인(Natural Join) : 동등 조인 중에서 조인 조건 속성이 조인 결과에 한 번만 나오는 경우


Outer Join 연산

  • 정보 손실을 피하기 위한 조인 연산의 확장
  • 조인 연산 후 조인 결과에 포함되지 않는 tuple을 추가
  • null 값을 이용


Division 연산

  • 입력 관계가 두 개 있으며 두 관계에는 공통 이름을 가지는 속성이 존재해야 함
  • 나눔 연산의 결과 관계는 공통 속성이 제거된 속성을 가짐
  • 결과 관계에 속하는 tuple은 S 관계의 공통 속성에 속하는 모든 tuple을 가지는 R 관계 tuple임

 

 

나눔 연산의 의미

q = r ÷ s 라고 하면, q는 q x s ⊆ r를 만족하는 가장 큰 관계

 

모든(for all)의 의미

 

r ÷ s 는 “CS” 학과의 모든 수업을 수강한 학생을 제공

 

나눔 연산은 다른 기본 연산으로 표현이 가능
r(R) and s(S)가 관계이고 S ⊆ R이면


관계 대수식 예제

 

 

'Database [DB]' 카테고리의 다른 글

[DB] 06. Application Development  (1) 2024.01.08
[DB] 05. Major Functionalities of Database Systems  (3) 2024.01.08
[DB] 04. SQL 2  (0) 2024.01.07
[DB] 03. SQL 1  (1) 2024.01.07
[DB] 01. Introduction to Databases  (0) 2024.01.05