✅ 정규화란?
정규화는 데이터베이스 설계에서 중복을 최소화하고 데이터의 일관성과 무결성을 유지하기 위해 사용된다. 주로 엔터티 간의 중복 데이터를 줄이고, 데이터 이상 현상을 방지하기 위해 적용된다. 관계형 데이터베이스 설계에서는 주로 제 1정규화, 제 2정규화, 제 3정규화, Boyce-Codd 정규화 등이 사용된다.
✅ 정규형
![notion image](https://inblog.ai/_next/image?url=https%3A%2F%2Fwww.notion.so%2Fimage%2Fhttps%253A%252F%252Fprod-files-secure.s3.us-west-2.amazonaws.com%252Fe1a18480-88a4-46db-aa53-3a07d94ec86c%252Fa22b2eab-1191-4962-9d5e-6f23de39d043%252Fimage-3.png%3Ftable%3Dblock%26id%3D3d1fcb14-16c4-438f-8ca6-ff0cf6520e1e%26cache%3Dv2&w=3840&q=75&dpl=dpl_9Fy5DR7iXit8HvYKCDvmsFiYTXKA)
- 정규화 과정에서 관계가 만족해야 하는 특정한 함수 종속성의 충족 조건
→ 특정 정규형이 요구하는 충족 조건을 관계가 만족하면 해당 수준의 정규형을 충족함을 의미한다.
- 제 3정규형 이상의 정규형을 충족하면 충분한 정규화가 이루어졌다고 본다.
→ 보통 제 3정규형 또는 보이스-코드 정규형까지만 정규화를 진행한다.
✅ 제 1정규형 (1NF)
정의
관계 R에 속한 모든 속성의 도메인이 원자값을 갖는 경우에, 관계 R은 제 1정규형이라 한다.
비정규 관계를 제 1정규형 관계로 정규화하는 방법
![notion image](https://inblog.ai/_next/image?url=https%3A%2F%2Fwww.notion.so%2Fimage%2Fhttps%253A%252F%252Fprod-files-secure.s3.us-west-2.amazonaws.com%252Fe1a18480-88a4-46db-aa53-3a07d94ec86c%252Fd5c848a8-1534-43ed-ae3c-10dafba22018%252Fimage-4.png%3Ftable%3Dblock%26id%3De0af8d12-7861-4a25-b767-ca35afff9289%26cache%3Dv2&w=3840&q=75&dpl=dpl_9Fy5DR7iXit8HvYKCDvmsFiYTXKA)
- n개의 다중값을 갖는 속성을 n개의 속성으로 분리한다.
- 정규화 대상인 관계가 관계형 데이터 모델의 기본 원칙을 따르기만 한다면 제 1정규형에 속한다.
제 1정규형의 문제점
![notion image](https://inblog.ai/_next/image?url=https%3A%2F%2Fwww.notion.so%2Fimage%2Fhttps%253A%252F%252Fprod-files-secure.s3.us-west-2.amazonaws.com%252Fe1a18480-88a4-46db-aa53-3a07d94ec86c%252Fecc24c98-20bb-421d-a29a-5592919334c9%252Fimage-7.png%3Ftable%3Dblock%26id%3Da88ee652-2979-4fab-a74c-3e583c73c4c3%26cache%3Dv2&w=3840&q=75&dpl=dpl_9Fy5DR7iXit8HvYKCDvmsFiYTXKA)
- 삽입 이상
→ 과목 번호가
c006
인 과목의 개설학과가 통계학과
라는 사실만 따로 삽입할 수 없다.- 수정 이상
→ 컴퓨터학과의 학과장이
박유찬
에서 홍길동
으로 변경될 경우, 과목개설학과가 컴퓨터
인 모든 튜플을 찾아 학과장 속성 값을 한꺼번에 홍길동
으로 변경해야 함.- 삭제 이상
→ 만약, 학번
s002
학생이 과목번호 c002
과목 수강을 취소하여 이 튜플을 삭제하면 c002
과목의 개설학과가 경영학과
이고 학과장이 김철수
라는 정보까지 데이터베이스에서 함께 삭제됨.제 1정규형의 문제점을 해결하기 위해 정규화
![notion image](https://inblog.ai/_next/image?url=https%3A%2F%2Fwww.notion.so%2Fimage%2Fhttps%253A%252F%252Fprod-files-secure.s3.us-west-2.amazonaws.com%252Fe1a18480-88a4-46db-aa53-3a07d94ec86c%252Ffd1c6588-7db1-480c-b10b-e3d6a0a6c2e0%252Fimage-8.png%3Ftable%3Dblock%26id%3Dd20d86d7-9d0c-46b7-8c1e-57d033408d84%26cache%3Dv2&w=3840&q=75&dpl=dpl_9Fy5DR7iXit8HvYKCDvmsFiYTXKA)
![notion image](https://inblog.ai/_next/image?url=https%3A%2F%2Fwww.notion.so%2Fimage%2Fhttps%253A%252F%252Fprod-files-secure.s3.us-west-2.amazonaws.com%252Fe1a18480-88a4-46db-aa53-3a07d94ec86c%252F3806c03e-56dd-4d20-b6f2-f287083a0c13%252Fimage-9.png%3Ftable%3Dblock%26id%3De0721444-ef3b-4f8c-a2d7-771ed564186f%26cache%3Dv2&w=3840&q=75&dpl=dpl_9Fy5DR7iXit8HvYKCDvmsFiYTXKA)
이로써 부분 함수 종속성이 사라지게 된다.
✅ 제 2정규형 (2NF)
정의
관계 R이 제 1정규형이고, 기본 키에 해당하지 않는 모든 속성이 기본키에 완전 종속인 형태일 때, 이 관계 R을 제 2정규형이라 한다.
제 2정규형인지 점검하는 방법
![notion image](https://inblog.ai/_next/image?url=https%3A%2F%2Fwww.notion.so%2Fimage%2Fhttps%253A%252F%252Fprod-files-secure.s3.us-west-2.amazonaws.com%252Fe1a18480-88a4-46db-aa53-3a07d94ec86c%252Facdb8b3d-a404-4aa3-84ce-5f612222756c%252Fimage-5.png%3Ftable%3Dblock%26id%3D01747783-a78b-4f7b-b42c-388faae838b5%26cache%3Dv2&w=3840&q=75&dpl=dpl_9Fy5DR7iXit8HvYKCDvmsFiYTXKA)
- 제 2정규형은 제 1정규형을 충족하는 관계의 기본키가 복합 속성(속성이 2개 이상)일 때, 기본키의 일부 속성이 결정자인지(즉, 부분 함수 종속성이 있는지)를 검사한다.
- 만약 기본키가 단일 속성이면, 모든 속성이 완전 함수 종속이므로 검사할 필요가 없이 제 2정규형에 속한다.
제 2정규형의 문제점
![notion image](https://inblog.ai/_next/image?url=https%3A%2F%2Fwww.notion.so%2Fimage%2Fhttps%253A%252F%252Fprod-files-secure.s3.us-west-2.amazonaws.com%252Fe1a18480-88a4-46db-aa53-3a07d94ec86c%252Ff48a34ad-876a-4ce3-bb36-cb278810f3eb%252Fimage-10.png%3Ftable%3Dblock%26id%3D693d91c0-e85a-41fe-a84a-ec7f82fe2811%26cache%3Dv2&w=3840&q=75&dpl=dpl_9Fy5DR7iXit8HvYKCDvmsFiYTXKA)
- 삽입 이상
- 과목 개설 학과인
통계학과
의 학과장이홍장미
라는 사실만 따로 삽입할 수 없다.
- 수정 이상
- 컴퓨터학과의 학과장이
박유찬
에서홍길동
으로 변경될 경우, 여전히 과목 개설 학과가컴퓨터
인 모든 튜플을 찾아학과장
속성 값을 한꺼번에홍길동
으로 변경해야 한다.
- 삭제 이상
- 과목번호
c002
의 등록을 취소하여 이 튜플을 삭제하면경영학과
의 학과장이김철수
라는 원하지 않은 정보까지 함께 삭제된다.
제 2정규형을 충족하는 데도 위와 같은 이상이 발생하는 이유
아직도 둘 이상의 의미적 연관성을 하나의 관계로 함께 표현했기 때문이다.
이행적 함수 종속성
- 기본키에 속하지 않은 일반 속성 값이 기본키에 속하지 않은 또 다른 일반 속성 값을 결정한다.
- 해결방법: 이행적 종속 관계를 끊어 두 종속 관계를 각기 다른 관계에 표현한다. 즉, 2개의 관계로 분해한다.
![notion image](https://inblog.ai/_next/image?url=https%3A%2F%2Fwww.notion.so%2Fimage%2Fhttps%253A%252F%252Fprod-files-secure.s3.us-west-2.amazonaws.com%252Fe1a18480-88a4-46db-aa53-3a07d94ec86c%252F1cfcaab4-8421-4814-9a81-eb8844ee66e6%252Fimage-11.png%3Ftable%3Dblock%26id%3D321f7449-db6d-4789-8c6c-ed877335f8e7%26cache%3Dv2&w=3840&q=75&dpl=dpl_9Fy5DR7iXit8HvYKCDvmsFiYTXKA)
![notion image](https://inblog.ai/_next/image?url=https%3A%2F%2Fwww.notion.so%2Fimage%2Fhttps%253A%252F%252Fprod-files-secure.s3.us-west-2.amazonaws.com%252Fe1a18480-88a4-46db-aa53-3a07d94ec86c%252Fbbf58359-67a7-4bc1-bdc4-9e0971e26231%252Fimage-12.png%3Ftable%3Dblock%26id%3D8a340a5a-3c2f-43a5-9c67-52866b620a6c%26cache%3Dv2&w=3840&q=75&dpl=dpl_9Fy5DR7iXit8HvYKCDvmsFiYTXKA)
✅ 제 3정규형 (3NF)
정의
어떤 관계 R이 제 2정규형이고, 기본 키에 속하지 않는 모든 속성이 기본키에 대해 이행적 종속이 아니면, 관계 R은 제 3정규형이다.
제 3정규형 점검 방법
- 제 3정규형은 제 2정규형을 충족하는 관계의 기본키가 아닌 일반 속성이 결정자인지를 검사한다.
- 일반 속성이 기본키 속성이 아닌 일반 속성에 종속적일 때 제 3정규형에 위배된다.
![notion image](https://inblog.ai/_next/image?url=https%3A%2F%2Fwww.notion.so%2Fimage%2Fhttps%253A%252F%252Fprod-files-secure.s3.us-west-2.amazonaws.com%252Fe1a18480-88a4-46db-aa53-3a07d94ec86c%252Fee0cd86c-12a8-4cb2-bc08-b10ac4e742e8%252Fimage-6.png%3Ftable%3Dblock%26id%3D01e6ffa1-a620-4c86-a21e-2b9c9d46691a%26cache%3Dv2&w=3840&q=75&dpl=dpl_9Fy5DR7iXit8HvYKCDvmsFiYTXKA)
제 3정규형의 문제점
![notion image](https://inblog.ai/_next/image?url=https%3A%2F%2Fwww.notion.so%2Fimage%2Fhttps%253A%252F%252Fprod-files-secure.s3.us-west-2.amazonaws.com%252Fe1a18480-88a4-46db-aa53-3a07d94ec86c%252Fa270cc5d-05a7-410a-945d-12c4e241b30e%252Fimage-14.png%3Ftable%3Dblock%26id%3D30b0210f-ccc7-4176-80fd-c35e7c66675c%26cache%3Dv2&w=3840&q=75&dpl=dpl_9Fy5DR7iXit8HvYKCDvmsFiYTXKA)
- 삽입 이상
- 과목번호
c004
의 강의담당교수가p005
라는 사실만 따로 삽입할 수 없다.
- 수정 이상
- 강의담당교수
p001
의 담당 과목번호가c005
로 변경될 경우,p001
과 관련된 모든 튜플을 찾아과목번호
속성 값을 한꺼번에c005
로 변경해야 한다.
- 삭제 이상
- 학번
s002
인 학생이 교과번호c002
의 수강을 취소하여 이 튜플을 삭제하면p002
교수가c002
과목을 강의한다는 정보까지 함께 삭제된다.
제 3정규형을 충족하는 데도 위와 같은 이상이 발생하는 이유
- 원인: 기본키가 아닌 속성이 기본키 일부 속성의 결정자가 되기 때문이다.
- 관계의 후보 키가 둘 이상이고 기본 키가 둘 이상의 조합일 때 발생한다.
제 3정규형의 문제점 해결
이러한 문제를 해결하려면 기본키가 아닌 결정자를 분리하여 2개의 관계로 분해해야 한다.
![notion image](https://inblog.ai/_next/image?url=https%3A%2F%2Fwww.notion.so%2Fimage%2Fhttps%253A%252F%252Fprod-files-secure.s3.us-west-2.amazonaws.com%252Fe1a18480-88a4-46db-aa53-3a07d94ec86c%252F0d4b2b0f-de4c-46aa-8e1c-5ee6524617c1%252Fimage-14.png%3Ftable%3Dblock%26id%3D5925352f-872b-4a52-944e-369c640fcf37%26cache%3Dv2&w=3840&q=75&dpl=dpl_9Fy5DR7iXit8HvYKCDvmsFiYTXKA)
✅ 보이스코드 정규형 (BCNF)
- 모든 결정자를 후보키로 만든다. 즉, 기본키가 아니면서 결정자 역할을 하는 속성과 그 결정자에 함수 종속이 되는 속성을 하나의 관계로 분리한다.
- 이때, 결정자는 원 관계에도 남겨서 외래키 역할을 하도록 한다.
![notion image](https://inblog.ai/_next/image?url=https%3A%2F%2Fwww.notion.so%2Fimage%2Fhttps%253A%252F%252Fprod-files-secure.s3.us-west-2.amazonaws.com%252Fe1a18480-88a4-46db-aa53-3a07d94ec86c%252Fc437505e-9634-49ca-bdc5-ccb9ffb64d97%252Fimage-15.png%3Ftable%3Dblock%26id%3D3bb06695-3520-475f-b624-c58b32a05d19%26cache%3Dv2&w=3840&q=75&dpl=dpl_9Fy5DR7iXit8HvYKCDvmsFiYTXKA)
Share article