본문 바로가기

CSあるある

constraints(Feat. implicit constraints,explicit constraints)

constraints : relational database의 relation들이 항상/무조건 지켜줘야 하는 제약사항. 

constraints는 크게 implicit constraints(내포된/묵시적 제약사항)와 explicit constraints(명시적 제약사항)로 나뉜다. 

implicit constraints

relational data model 자체가 가지는 constraints로써 아래 2가지 예시가 있다. 

1] relation은 중복되는 tuple을 가질 수 없다. 

2] relation 내에 같은 이름의 attribute를 가질 수 없다. 

 

explicit constraints( schema-based constraints )

주로 DDL을 통해 Schema에 직접 명시할 수 있는 constraints.

-> 이러한 의미한에서 schema-based constraints라고도 불린다. 

 

domain constrains - explicit constraints(schema-based constraints)

attribute의 value는 해당 attribute의 domain 범위의 value여야 한다. 

grade 도메인의 범위는 {1,2,3,4} 중 하나여야 하는데, 위 예시에서는 100으로 되어 있다. 

이건 domain constraints 위반이며, relation(table) schema를 정의할 때 명시적으로 설정을 해준다. 

 

key constrains - explicit constraints(schema-based constraints)

서로 다른 tuple은 같은 value의 key를 가질 수가 없다 

 

Null value constraints - explicit constraints(schema-based constraints)

 

referential integrity constraints-explicit constraints(schema-based constraints)

Foreign Key와 Primary Key는 도메인이 같아야 함 && Primary Key에 없는 value를 Foreign Key가 가질 수 없음

FK/PK의 도메인은 같으나 PLAYER의 FK인 "team_023" 이라는 value는 TEAM의 PK에는 없는 value이다.