가장 널리 사용되는 데이터베이스 모델 : Relational Model
관계형 DBMS : MySQL, DB2, Oracle, Sybase, SQL server 등
"관계"기반 모델
관계는 "집합"에 기반을 둔 수학적 개념
장점:
관계는 주어진 집합들을 곱셈한 결과의 부분집합
관계는 튜플들의 유한한 집합
Example : Let D1 = {0, 1}, D2 = {a ,b, c}; Then,
- r1 = {<0, a>, <0, b>, <1, c>} 3 tuples
- r2 = {<1, a>, <1, b>} 2 tuples
관계는 “table(행/열)”로 표현 가능
행: 튜플-entity/relationship
열: 속성-attribute
속성값:
Super key: 유일성
Key: 유일성+최소성
ex) 학생 식별
keys = {SSN}, {Name, Address}
{Name, Address}에서 둘 중에 어느 하나를 지워도 식별 못 하게 됨. 꼭 둘이 같이 있어야 식별할 수 있음 따라서 최소성을 만족함
superkey는 SSN을 포함한 모든 속성들의 부분집합 {SSN, Name} 등
식별할 때 superkey보다 최소성을 가진 key를 사용하는 것이 더 편리함
Candidate Key : 하나의 관계에는 key가 여러 개 있을 수 있다. 이때, 각각의 key를 candidate key라고 한다
Key 유형
Primary Key 우선 키, 주 키
Good Primary Key
무결성 제약조건은 모든 관계들이 만족해야만 하는 조건으로, 세 가지 종류가 있다.
Key Integrity
Entity Integrity
참조 무결성은 관계들 사이의 튜플들의 관계를 명시한다
관계가 관계를 참조하고/참조할 때 공통 속성을 포함해야 한다
이때, 참조되는 관계에서 Primary key 속성을 주고, 참조하는 관계에서 이 속성을 받아Foreign key(FK)라고 부른다
FK에 허용되는 값들은? 즉, 다른 관계에서 불러올 수 있는, 참조할 수 있는 값은?
1) 참조되는 PK에 현재 존재하는 값이어야 한다
2) null value도 허용 가능하다 (단, 참조하는 FK값이 자기 자신의 PK를 구성할 때에는 허용 안 됨)
자기 자신 참조해도 됨
Referential integrity could be violated by following cases;
Case 1 : 참조되는 관계에서 퓨틀 삭제/업데이트
Case 2 : 참조하는 관계에서 튜플 삽입
If integrity violated, several optional actions can be taken:
(1) 해당 오퍼레이션 거절하고 사용자에게 이유 설명
(2) 오퍼레이션 수행하고 수정하라고 요청
(3) 추가적인 행동 일으키고 시스템에서 수정하라고 요청
- by CASCADE, SET NULL, SET DEFAULT