[RDBMS] Database Design
Updated:
- Normalization
- Relationships
- Constraints
Normalization (정규화)
- 데이터베이스의 데이터를 효율적으로 구조화하는 프로세스
- 중복을 제거
- 테이블 내에 관련있는 데이터만 저장
Benefits
- 저장소의 용량 확보
- 삽입, 갱신, 삭제 이상(anomaly)을 줄일 수 있음
- 쿼리 퍼포먼스 증가
Levels of normalization
- 1st Normal Form (1NF)
- 2nd Normal Form (2NF)
- 3rd Normal Form (3NF)
- Boyce and Codd Normal Form (BCNF)
1NF
- 레코드 중복 없어야함
- 컬럼은 오직 한 가지 값만 가질 수 있음
- 테이블에는 primary key가 있어야함
2NF
- 1NF 조건 만족
- primary key가 아닌 모든 컬럼은 모든 primary key에 의존해야함 (완전 함수적 종속)
- 반대로, primary key 중 특정 컬럼에만 종속된 컬럼(부분적 종속)이 없어야함
- ex) 두 개의 컬럼을 묶어 primary key를 형성하는데, pk가 아닌 다른 컬럼이 그 pk인 두 컬럼 모두에 의존해야함
3NF
- 2NF 조건 만족
- primary key가 아닌 모든 컬럼은 pk에만 의존해야함
- 즉, pk가 아닌 컬럼이 pk가 아닌 다른 컬럼을 결정(이행적 함수 종속)할 수 없어야함
Relationships
- 테이블들은 pk, fk로 서로 연관되어 있음
- One to One
- One to Many
- Many to Many
Type of relationships | Description |
---|---|
One to One | 한 테이블의 키가 다른 테이블에서의 키로서 하나보다 많지 않을 경우 ex) product - product detail |
One to Many | 한 테이블의 pk가 다른 테이블에서 다수의 row로서 fk가 될 때 ex) customers - orders |
Many to Many | 두 테이블이 서로의 intance를 다수 가지고 있을 때 ex) products - orders (중간에 order_detail 테이블로 one-to-many 연결) |
Constraints
- 컬럼에 어떤 값이 들어가야하는지에 대한 제약조건
Types
NOT NULL
- NULL 값이 들어갈 수 없음UNIQUE
- 중복된 다른 값이 있을 수 없음PRIMARY KEY
- 특정 row를 uniquely identify 할 수 있는 컬럼FOREIGN KEY
- 다른 테이블의 pk와 관련된 컬럼CHECK
- 조건을 달아 들어오는 값을 제어DEFAULT
- 값이 안 들어오는 경우, DEFAULT로 초기 값 정해줄 수 있음
ref :
데이터베이스 정규화 1NF, 2NF, 3NF, BCNF
Database relationships
제약조건
Leave a comment