diff --git "a/database/q6_\354\240\225\352\267\234\355\231\224\354\227\220 \353\214\200\355\225\230\354\227\254 \354\204\244\353\252\205\355\225\264\354\243\274\354\204\270\354\232\224/02.md" "b/database/q6_\354\240\225\352\267\234\355\231\224\354\227\220 \353\214\200\355\225\230\354\227\254 \354\204\244\353\252\205\355\225\264\354\243\274\354\204\270\354\232\224/02.md" new file mode 100644 index 0000000..6d83651 --- /dev/null +++ "b/database/q6_\354\240\225\352\267\234\355\231\224\354\227\220 \353\214\200\355\225\230\354\227\254 \354\204\244\353\252\205\355\225\264\354\243\274\354\204\270\354\232\224/02.md" @@ -0,0 +1,64 @@ +## 정규화란? + +관계형 데이터베이스의 설계에서 중복을 최소화하게 데이터를 구조화 하는 프로세스. 데이터의 중복성을 제거, 사입/삭제/갱신 이상을 제거하는 것이 핵심 + +## 데이터베이스 정규화의 목적 + +- 중복 데이터를 최소화하여 데이터 불일치 위험 최소화 +- 수정, 삭제 시 이상현상을 최소화하여 데이터 구조의 안정성을 최대화 +- 어떠한 릴레이션이라도 데이터베이스 내에서 표현 가능하게 만든다 +- 데이터 삽입시 릴레이션 재구성에 대한 필요성을 줄인다 +- 효과적인 검색 알고리즘을 생성할 수 있다 + +## 이상 현상 + +정규화 되지 않는 경우 발생하는 현상 + +- 데이터 중복성으로 릴레이션을 조작할 때 발생하는 비합리적 현상 +- 삽입, 삭제, 갱신 이상 + +## 데이터베이스 정규화 단계 + +- 1정규형 : 원자 값으로 구성 +- 2정규형 : 부분 함수 종속 제거 +- 3정규형 : 이행 함수 종속 제거 +- 보이스-코드 정규형 : 결정자 함수 종속 +- 4정규형 : 다치(다중 값) 종속성 제거 +- 5정규형 : 조인 종속성 제거 + +## 1정규화 + +1. 모든 Domain 이 원자값 만으로 되어 있다 +2. 반복되는 그룹이 나타나지 않는다 +3. 기본키를 이용하여 관련 데이터의 집합을 고유하게 식별할 수 있다. +- 테이블 내의 속성 값은 원자값위반 + +![image](https://user-images.githubusercontent.com/63634505/133640725-58d9ccc4-bad3-4593-8d74-f74aee911a86.png) + +- 반복되는 그룹 (2 위반) + +![image](https://user-images.githubusercontent.com/63634505/133640824-eb3f6e51-2b2a-4d35-985c-0c21c46524ab.png) + +- 기본키를 이용하여 데이터 집합 고유 식별 불가 + +![image](https://user-images.githubusercontent.com/63634505/133640902-0be09a31-1990-4c3c-9279-97f6a3bd2b33.png) + +## 2정규화 + +제2 정규화를 수행하면 테이블의 모든 컬럼이 완전 함수적 종속을 만족한다 + +- 함수적 종속 : X의 값에 따라 Y 값이 결정될 때 + +![image](https://user-images.githubusercontent.com/63634505/133640290-52848acc-88f5-4a44-8bcb-f756dc42430e.png) + +![image](https://user-images.githubusercontent.com/63634505/133640398-0a27f1be-14be-4c32-9c44-bfa24b935023.png) + +![image](https://user-images.githubusercontent.com/63634505/133640512-4998e563-5c48-4ea5-92fb-b4c67ca134ad.png) + +## 3정규화 + +1. Relation 이 2정규화 되었다. +2. 기본키가 아닌 속성들은 기본키에만 의존해야한다. +- 2번째 조건 위반 + +![image](https://user-images.githubusercontent.com/63634505/133640064-55aa6101-2513-428c-9e81-cc65dde8e2c9.png) \ No newline at end of file diff --git "a/database/q6_\354\240\225\352\267\234\355\231\224\354\227\220 \353\214\200\355\225\230\354\227\254 \354\204\244\353\252\205\355\225\264\354\243\274\354\204\270\354\232\224/README.md" "b/database/q6_\354\240\225\352\267\234\355\231\224\354\227\220 \353\214\200\355\225\230\354\227\254 \354\204\244\353\252\205\355\225\264\354\243\274\354\204\270\354\232\224/README.md" new file mode 100644 index 0000000..e69de29