Database

[DATABASE] constraints의 종류

ju_young 2023. 10. 15. 22:11
728x90

relation database의 relations들이 지켜야하는 제약사항

implicit constraints

  • relational data model 자체가 가지는 constraints
    • relation은 중복된 tuple을 가질 수 없다
    • relation 내에서는 같은 이름의 attribute를 가질 수 없다

schema-based constraints

  • DDL을 통해 schema에 직접 명시할 수 있는 constraints
  • explicit constraints라고도 함

1. domain constraints

  • attribute의 value는 해당 attribute의 domain에 속한 value여야 한다.
  • 예를 들어서 email attribute에 포맷에 맞지않는 "email"이 들어가 있으면 안되고 "email@gmail.com"과 같이 포맷에 맞게, domain에 속한 value가 들어가있어야한다.

2. key constraints

  • 서로 다른 tuples는 같은 value의 key를 가질 수 없다.
  • 예를 들어 하나의 tuple의 id가 1이라면 다른 어떤 tuple도 id가 1을 가질 수 없다.

3. NULL value constraints

  • attribute가 NOT NULL로 명시됐다면 NULL을 값으로 가질 수 없다.

4. entity integrity constraints

  • primary key는 value에 NULL을 가질 수 없다.

5. referential integrity constraints

  • FK(foreign key)와 PK(primary key)는 도메인이 같아야하고 PK에 없는 value를 FK가 값을 가질 수 없다.
  • 예를 들어서 User(id, name, email, phone)와 Order(id, user_id, price)이 있을때 FK는 {user_id}, PK는 User relation의 {id}라고 가정해보겠다. FK user_id에 값이 4가 있다면 User의 PK id에도 4라는 값이 있어야한다는 것이다.
728x90