2025. 9. 2. 16:21ㆍCoding Study/데이터베이스
테이블 만들기
정규형식
- 1NF : 제1 정규형
- 2NF :제2 정규형
- 3NF: 제3 정규형
정규화 규칙의 장점
- 데이터 중복 (redundancy) 제거
- 데이터 무결성 (integrity) 준수
- 이상현상 (anomaly) 방지
1NF
테이블 한칸에는 하나의 값만
중복 로우, 컬럼 X
Primary Key 필수
한 컬럼에는 같은 데이터 타입 사용
도서관 책 대여를 예시로 1NF 에 대한 테이블 예시 설명
1. 테일블 한칸에는 하나의 값만 / 중복 로우,컬럼 x
대여한 책 목록에 값이 2개 이상이 들어갈 경우 1NF 에 위배 된다.
만약 책 1개만 반납 할 경우 작성 방법이 애매해지기 때문이다.

< 수정 된 테이블 >
테이블 한 칸에는 하나의 값만 작성한다.

2. 중복 로우, 컬럼x
로우를 늘이지 않고 컬럼을 늘여서 대여한 책을 추가해서 작성하면 첫번째에서 발생한 문제를
동일하게 해결하지 못한다.
책 1권만 대여 한다거나 하면 대여한 책 2는 빈칸이 발생할 수도 있다.

3. Primary Key 필수
기록이 많아 질 경우 이름과 대여한 책조합으로 대여기록을 특정할 수 없다.
대여일까지 조합하면 로우를 특정할 수 있는 복합키를 만들 수 있지만,
복합키 보다 더 간결한 방법은 ID 컬럼을 추가하는 방법이다.

<수정된 테이블>
ID 컬럼을 추가하면 좀더 간단하게 특정가능한 *Primary Key를 만들 수 있다.

*Primary Key : 테이블과 컬럼을 대표할 수 있는 값으로 *고유성과 *최소성이 있어야 한다.
*고유성 : 대여기록 1번, 대여기록 2번 으로 겹치지 않고 구분이 가능하다.
*최소성 : ID는 여러컬럼을 조합하지 않고 ID 컬럼 1개만 사용
4. 한 컬럼에는 같은 형식의 데이터를 사용
반납일 날자 데이터와 같이 날자 형식을 다르게 작성해서는 안된다.

테이블 나누기
테이블에 엔터티가 너무 많으면 다른 테이블로 분리 할 수 있다.
데이터 중복을 제거하고, 무결성을 준수하며, 이상현상을 없앤다.
회원의 이름이나 대여한 책의 제목이 변경이 된다면 테이블 내 동일한 이름과 책이름 모두 변경 하여야 한다.

<변경 후>
다른테이블의 PK를 참조하는 키를 Forign Key 라고 부른다.
이렇게 하게 되면 대여 테이블의 회원 ID 를 참고 하기 때문에 회원 테이블의 이름만 바꿔도 된다.

2NF
- 1NF 를 만족
- 부분 함수 종속 제거
- 고유성, 최소성을 만족하는 PK 지정
- 테이블에 여러 엔티티가 있으면 분리
책 ID 와 책제목/저자이름과 함수적 종속성 즉 특정할 수 있으면, 부분함수 종속이라고 한다.

PK를 책 ID로 정하고 부분함수 종속에 해당되는 엔터티를 따로 테이블로 분리한다.

이후 대여 테이블에 ID를 달아 PK 로 지정한다.
2NF 만족

3NF
- 2NF를 만족
- 이행적 함수 종속을 제거 ( A->B, B->C 또는 C->A)
- 테이블에 여러 엔티티가 있으면 분리
이행적 함수 종속 확인
- 대여ID -> 회원ID 특정할 수 있고
- 회원ID -> 회원 이름, 회원 주소를 특정 가능 하다.

회원 테이블을 분리하여 3NF 만족

'Coding Study > 데이터베이스' 카테고리의 다른 글
| Prisma /데이터베이스/ 3Tier의 개념 (2) | 2025.05.22 |
|---|---|
| [SQL] 기타 팁 (1) | 2025.05.21 |
| [SQL] 서브 쿼리 (0) | 2025.05.21 |
| [SQL] JOIN (0) | 2025.05.21 |
| [SQL]GROUPING (0) | 2025.05.21 |