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
'Database' 카테고리의 다른 글
[DATABASE] attribute data type (1) | 2023.11.17 |
---|---|
[DATABASE] 데이터베이스와 테이블 생성, 삭제 (0) | 2023.11.17 |
[DATABASE] Key의 종류 (1) | 2023.10.15 |
[DATABASE] relation data model에서 relation의 의미가 뭘까? (1) | 2023.10.15 |
[DATABASE] Database Language로 어떤 것들이 있을까? (0) | 2023.10.13 |