[DB] Relational Database 개념
용어
Relation: table을 의미
Tuple: row를 의미
Attribute: column을 의미
Schema: Relation명(Attribute명1, Attribute명2, ...) 으로 나타내는데, 보통은 Schema diagram을 일컫는 듯하다
Key: Tuple에 유니크한 정체성을 부여하는 Attribute
(말이 좀 어려운데 예를 들어 STUDENT Relation에서 SSN(학번) Attribute가 Key이다)
Domain: Attribute가 가질 수 있는 값들(을 의미하는 듯)
특징
- Relational Database는 table 형태로 데이터를 저장한다.
- Relation은 Tuple들의 집합이므로 중복된 행(Tuple)이 없어야 한다.
Relational Constraints
1. Key constraints
Superkey: Tuple에 정체성을 부여할 수 있는 Attribute의 집합
Attribute는 하나일수도 있고 여러개일수도 있음, ex: {이름, 학번}
Key: minimal한 Superkey
ex: {학번}
- Key는 Superkey에 속하지만, Superkey는 Key에 속하지 않는다
- candidate key가 여러 개 있으면 그 중 임의로 primary key를 선택한다
- schema diagram을 그릴 때 primary key에 밑줄을 긋는다
2. Entity Integrity constraints
: PK는 null일 수 없다.
ex: STUDENT Relation에서 SSN이 없는 학생이 있으면 안된다
3. Referential Integrity constraints
: FK가 갖는 값은 Referenced Relation의 PK 값 or null 이어야 한다.
- FK는 null 값을 가질 수 있으므로 NOT NULL constraint를 가질 수 없다
Relational Update Operations
: INSERT, DELETE, UPDATE
- Referenced Relation을 DELETE하면 Referential Integrity constraints가 위반된다.
그래서 option을 줄 수 있다. (option: RESTRICT / CASCADE / SET NULL)
RESTRICT: 지우려는 Relation을 참조하는 Relation이 있으므로 못 지우게 함
CASCADE: Referenced Relation과 Referencing Relation을 모두 지워버림
SET NULL: Referenced Relation을 지웠으므로 FK값을 NULL로 설정
- Referenced Relation의 PK를 UPDATE하면 Referential Integrity constraints가 위반된다.
Referenced Relation의 PK값과 FK값이 달라지기 때문
그래서 option을 줄 수 있다.
CASCADE: 변경된 PK값을 FK에도 업데이트함