MySQL

제 1정규화(First Normal Form, 1NF)

ryeonng 2024. 6. 13. 17:09

테이블(Relation)이 제 1 정규형을 만족했다는 것은 아래 세 가지 조건을 만족했다는 것을 의미한다.

  1. 어떤 Relation에 속한 모든 Domain이 원자값(atomic value)만으로 되어 있다.
  2. 모든 attribute에 반복되는 그룹(repeating group)이 나타나지 않는다.
  3. 기본 키를 사용하여 관련 데이터의 각 집합을 고유하게 식별할 수 있어야 한다.

 

1. 원자값이 아닌 데이터

제 1정규형의 첫 번째 조건은 모든 도메인이 원자값으로 구성되어야 한다는 것

  • 원자값이 아닌 예 (수강과목)
학생ID
이름
수강 과목
1
홍길동
수학, 과학
2
이순신
역사, 미술, 음악

 

위 표에서 '수강 과목' 필드에 여러 과목이 쉼표로 구분되어 들어가 있어, 이 필드가 원자값이 아님.

 

 

2. 반복 그룹이 있는 데이터

제 1정규형의 두 번째 조건은 속성에 반복되는 그룹이 나타나지 않아야 한다는 것

학생ID 이름 전화번호1 전화번호2
1
홍길동
010-1234-5678
010-8765-4321
2
이순신
010-1111-2222
 

 

위 표에서 '전화번호1', '전화번호2' 등 전화번호 관련 정보가 반복적으로 나타나므로 반복 그룹이 발생.

 

 

3. 기본 키 없는 데이터

제 1정규형의 세 번째 조건은 각 데이터 집합을 고유하게 식별할 수 있는 기본 키가 있어야 한다는 것이다.

이름 주소 전화번호
홍길동
서울시 강남구
010-1234-5678
이순신
서울시 서초구
010-1111-2222
홍길동
서울시 마포구
010-1234-1234

 

위 표에서 동일한 이름과 주소, 전화번호를 가진 중복 레코드가 존재하므로 이 데이터 세트에는 유일하게 각 행을 식별할 수 있는 기본 키가 없다.

 

 

시나리오

ID NAME TEL
1
홍길동
010-1111-1111, 010-2222-2222
2
이순신
010-3333-3333, 010-4444-4444
3
강감찬
010-5555-5555

 

원자성을 위한하고 있는 테이블 형태

 

 

ID NAME TEL1 TEL2
1 홍길동 010-1111-1111 010-2222-2222
2 이순신 010-3333-3333 010-4444-4444
3 강감찬 010-5555-5555  

 

반복된 그룹이 생성된 형태

 

 

ID NAME TEL
1 홍길동 010-1111-1111
2 이순신 010-3333-3333
3 강감찬 010-5555-5555
1 홍길동 010-2222-2222
2 이순신 010-4444-4444

 

ID가 더 이상 고유하게 식별할 수 있는 키가 아니란 것을 확인 (고유하게 식별)

 

 

ID NAME
1 홍길동
2 이순신
3 강감찬

 

ID USER_ID TEL
100 1 010-1111-1111
101 2 010-3333-3333
102 3 010-5555-5555
103 1 010-2222-2222
104 2 010-4444-4444

 

위 내용들의 잘못된 부분을 제1정규화를 사용해서 정리하여 위와 같은 형태로 발전할 수 있다.

'MySQL' 카테고리의 다른 글

제 3정규형(Third Normal Form, 3NF)  (0) 2024.07.10
제 2정규화(Second Normal Form, 2NF)  (0) 2024.07.08
서브 쿼리(subquery)  (0) 2024.06.13
쇼핑몰 서비스의 DB 구축  (1) 2024.06.12
블로그 서비스의 DB 구축  (0) 2024.06.12