데이터 모델링

2025. 9. 2. 16:21Coding 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