Index
- relational data model
- relational algebra
- additinoal relational algebra
2.1 Relational Data Model
용어 정리
위의 경우 1개의 relation(=table), 7개의 속성(=attribute, column), 5개의 튜플(=tuple, record, row)
relational data model | network data model / hierarchical data model |
---|
relation | table |
tuple | record, row |
attribute | column |
둘 간 엄격하게 분리해서 쓰지 않고 적당히 혼용해서 사용한다.
Attributes(속성)
-
Domain
- 각 atttribute에서 attribute값으로 허용할 수 있는 값의 집합
- 특정 attribute값은 해당 domain의 원소이다.
- 보통 attribute에 대한 데이터 타입 정의로부터 domain 유추
-
atomic
- attribute domain에 속하는 값은 atomic (=indivisible)해아함.
- 속성 값이 원자값이라는 건 관계형 모델의 중요한 성질
-
NULL
- 여러 인후로 속성값이 입력되지 않으면 이를 NULL로 표시한다.
데이터타입
atomic types | int, real, char, varchr, decimal, date, time, timestamp, etc. |
---|
non-atomic types | multi-valued(set), bag, list |
-
⚠️ 의외로 문자열은 atomic type
-
set : 원소간 순서 X, 중복 허용 X
-
bag : 원소간 순서 X, 중복 허용 O
-
list : 원소간 순서 O, 중복 허용 O
-
예시
- 집합 {a,b}와 집합 {b,a}는 동일한 집합이다.
- {a,b,a}는 집합은 아니나, 백은 될 수 있다.
- 백 {a,b,a}와 백 {a,a,b}는 동일한 백이다. (원소 순서에 무관하므로)
- 리스트 [a,b,a,c]와 리스트 [a,a,b,c]는 상이한 리스트이다
Relational DB
- DB는 [관계 + 제약조건] 으로 구성된다고 정의
- 무결성 제약조건(intergrity constraints)
- key constraint : 주 키는 중복된 값을 가지지 못하게함
- entity constraint : 주 키는 NULL 값을 가지지 못하게 함
- referential intergrity constraint
- 관계 스키마
- 관계 이름과 속성명 (+ 각 속성 데이터타입, 관계에 관련되는 무결성 제약 등)
- 관계 인스턴스
- 관계 스키마에 적합한 값의 조합
- 도메인의 cartesian product (카타시안곱)의 부분집합 (=수학적 'relation' 뜻함)
- ⚠️ 순서는 중요하지 않다! (=order is immaterial)
- 관계간 순서/상하관계 없음
- 관계 내 튜플에서도 순서/상하관계 없음
- relational DB model의 중요한 특징
Key
- key는 attribute의 집합
- super key
- tuple을 유일하게 식별할 수 있는 속성의 집합
- candidate key
- superkey이되(유일성), minimal 함
- minimal 함이란?
- attribute 갯수의 속성이 가장 작은 것 X
- primary key
- relation에 하나 이상의 candidate key가 존재시 D설계자가 그 중 하나를 primary key로 지정
- ⚠️ 모든 테이블에 primary key는 반드시 한개만 가질 수 있다
- 예시
- 
referential intergrity constraint(참조무결성 제약)
- relational data model 에만 존재하는 제약
- 특성 속성에 나오는 보든 값은 다른 속성 값의 일부분이어야한다.
- 화살표로 표시
예시

- major 속성값은 아무 제약없이 임의의 값 가지지 못함
- major 속성값은 dID 속성값 중에서 나와야함
- foreign key(외래키)
- major은 dID를 참조하는 외래키이다!
- student table은 referencing table, departement table은 referenced table
- ⚠️ 참조받는 속성은 반드시 그 테이블의 주 키어야 한다