7. Relational Database Design (1)
Introduction
- Relational Database Design(๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค๊ณ)
- ์ ๋ณด ์๊ตฌ์ฌํญ์ ๋ง๋ "์ข์" relation schema(relation schema)์ ์งํฉ์ ์ฐพ๋ ๊ณผ์
- ์ค๊ณ ๋ชฉํ
- ํํผ ๊ฐ๋ฅํ redundancy ์์ด ๋ชจ๋ ํ์ํ ์ ๋ณด๋ฅผ ํํ(์ ์ฅ)ํ ์ ์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค schema ์ค๊ณ
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ด์ relation ๋ฐ ๊ฐ relation์ schema ์ ์
- : ๋จ์ผ relation schema
- : ๋ฐ์ดํฐ๋ฒ ์ด์ค schema (relation schema์ ์งํฉ)
- Relational database design์ ํจ์
- ์๋ชป๋ ์ค๊ณ๋ ๋ค์์ ์ผ๊ธฐํ ์ ์์.
- ํน์ ์ ๋ณด ํํ ๋ถ๊ฐ
- ์ ๋ณด์ ๋ฐ๋ณต
- ์ ๋ณด์ ์์ค
- ์๋ชป๋ ์ค๊ณ๋ ๋ค์์ ์ผ๊ธฐํ ์ ์์.
- ์ค๊ณ ๋ชฉํ
- Attribute ๊ฐ์ relation์ด ํํ๋๋๋ก ๋ณด์ฅ
- ์ค๋ณต ๋ฐ์ดํฐ ํํผ
- ๋ฐ์ดํฐ๋ฒ ์ด์ค integrity constraint์ ์ฉ์ดํ ์ ์ฉ
Overview of Normalization
Features of Good Relational Designs
| 22222 | Einstein | 95000 | Physics | Watson | 70000 |
| 12121 | Wu | 90000 | Finance | Painter | 120000 |
| 32343 | El Said | 60000 | History | Painter | 50000 |
| 45565 | Katz | 75000 | Comp. Sci. | Taylor | 100000 |
| 98345 | Kim | 80000 | Elec. Eng. | Taylor | 85000 |
| 76766 | Crick | 72000 | Biology | Watson | 90000 |
| 10101 | Srinivasan | 65000 | Comp. Sci. | Taylor | 100000 |
| 58583 | Califieri | 62000 | History | Painter | 50000 |
| 83821 | Brandt | 92000 | Comp. Sci. | Taylor | 100000 |
| 15151 | Mozart | 40000 | Music | Packard | 80000 |
| 33456 | Gold | 87000 | Physics | Watson | 70000 |
| 76543 | Singh | 80000 | Finance | Painter | 120000 |
instructor์departmentrelation์ natural joinํ์ฌin_dep์ผ๋ก ๊ฒฐํฉํ๋ค๊ณ ๊ฐ์ - ์ ๋ณด์ ๋ฐ๋ณต(redundancy) ๋ฐ์
- (๊ฐ์ฌ๊ฐ ์๋ ์๋ก์ด ๋ถ์๋ฅผ ์ถ๊ฐํ ๊ฒฝ์ฐ) Null value(null๊ฐ) ์ฌ์ฉ ํ์
- ์ด relation schema์ primary key๋ ๋ฌด์์ด ๋ ์ ์๋๊ฐ?
(ID, dept_name):ID์ null๊ฐ์ด ์ฌ ์ ์์ผ๋ฏ๋กdept_name์ด ํค์ ํฌํจ๋์ด์ผ ํจ.
Redundancy creates problems
- Anomalies(์ด์ ํ์) (by Codd)
- Insertion anomaly(์ฝ์
์ด์): ๊ฐ์ฌ ์์ด๋ ์๋ก์ด ๋ถ์๋ฅผ ์ถ๊ฐํ๋ ๊ฒ์ด ๋ถ๊ฐ๋ฅ
- ๋ฐ๋์งํ์ง ์์ null๊ฐ ์ฌ์ฉ ํ์
- Deletion anomaly(์ญ์ ์ด์): ํ ๋ถ์์ ์ ์ผํ ๊ฐ์ฌ๋ฅผ ์ญ์ ํ๋ ๊ฒฝ์ฐ (์: Music ๋ถ์์ Mozart)
- ๋ถ์ ์ ๋ณด๋ฅผ ๋ณด์กดํ๊ธฐ ์ํด null๊ฐ ์ฌ์ฉ ํ์
- ํด๋น ์ฌ๋ก๋ฅผ ์๋ณํ๊ธฐ ์ํ ๋ณต์กํ ์ญ์ ๋ก์ง ์๊ตฌ
- Update anomaly(๊ฐฑ์ ์ด์): CS ๋ถ์์ ์์ฐ์ด ๋ณ๊ฒฝ๋๋ ๊ฒฝ์ฐ
- CS ๋ถ์์ ๋ชจ๋ ์ค๋ณต๋ ๋ ์ฝ๋์ ๋ํ ๊ฐฑ์ ํ์
- Insertion anomaly(์ฝ์
์ด์): ๊ฐ์ฌ ์์ด๋ ์๋ก์ด ๋ถ์๋ฅผ ์ถ๊ฐํ๋ ๊ฒ์ด ๋ถ๊ฐ๋ฅ
- ์์ธ: ๋ฐ์ดํฐ redundancy
- ๋จ์ผ ํ ์ด๋ธ์ ์ฌ๋ฌ ์ํฐํฐ๊ฐ ๊ณต์กด
- ํด๊ฒฐ์ฑ : Decomposition(๋ถํด)
Decomposition
in_depschema์์ ์ ๋ณด ๋ฐ๋ณต ๋ฌธ์ ๋ฅผ ํผํ๋ ์ ์ผํ ๋ฐฉ๋ฒ์ schema๋ฅผinstructor์department๋ ๊ฐ๋ก ๋ถํดํ๋ ๊ฒ- ๋ถํด๋ schema๋ ์ด์ ์์ ์ ๋ฌธ์ ๋ค์ ๊ฐ์ง์ง ์์.
- ๋ชจ๋ ๋ถํด๊ฐ ์ข์ ๊ฒ์ ์๋.
employee(ID, name, street, city, salary)๋ฅผ ๋ค์๊ณผ ๊ฐ์ด ๋ถํดํ๋ค๊ณ ๊ฐ์ employee1(ID, name)employee2(name, street, city, salary)
- ๋์ผํ ์ด๋ฆ์ ๊ฐ์ง ๋ ๋ช
์ ์ง์์ด ์์ ๋ ๋ฌธ์ ๋ฐ์
- ์๋ณธ
employeerelation๋ฅผ ์ฌ๊ตฌ์ฑํ ์ ์์: Lossy decomposition(์์ค ๋ถํด)
- ์๋ณธ
- ๋ค์ ์ฌ๋ผ์ด๋๋ ์ ๋ณด๊ฐ ์ด๋ป๊ฒ ์์ค๋๋์ง ๋ณด์ฌ์ค
A Lossy Decomposition

- ID 57766์ธ Kim์ด Perryridge์ ์ฐ๋ค๋ ๊ฒ์ ํ์ ๊ฐ๋ฅ
- (๋ถํด ํ ๋ค์ joinํ์ ๋) ID 57766์ธ Kim์ด ์ด๋์ ์ฌ๋์ง ํ์ ๋ถ๊ฐ๋ฅ!
Lossless Decomposition
- ์ relation schema๋ผ ํ๊ณ , ๊ณผ ๊ฐ ์ ๋ถํด๋ฅผ ํ์ฑํ๋ค๊ณ ๊ฐ์
- ์ฆ,
- ์ ๋ ๊ฐ์ relation schema ๋ก ๋์ฒดํจ์ผ๋ก์จ ์ ๋ณด์ ์์ค์ด ์๋ค๋ฉด, ์ด ๋ถํด๋ฅผ Lossless decomposition(๋ฌด์์ค ๋ถํด)์ด๋ผ๊ณ ํจ.
- ๊ณต์์ ์ผ๋ก, schema๋ฅผ ๊ฐ์ง relation์ด ์ผ ๋
- ๋ฐ๋๋ก, ๋ถํด๊ฐ ์์ค ๋ถํด์ธ ๊ฒฝ์ฐ๋ ๋ค์๊ณผ ๊ฐ์.
- (๋ ์ ๋ ๋ฐ์ํ ์ ์์)
Example of Lossless Decomposition
1 A 2 B 1 2 1 A 2 B 1 A 2 B
Normalization Theory
- ํน์ relation ์ด "์ข์ ํํ"์ธ์ง, ์ฆ ์ ๋ณด ๋ฐ๋ณต ๋ฌธ์ ๊ฐ ์๋์ง ํ๋จ
- ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ค๊ณํ๋ ๋ฐฉ๋ฒ์ ์ผ๋ฐ์ ์ผ๋ก normalization(์ ๊ทํ)์ผ๋ก ์๋ ค์ง ํ๋ก์ธ์ค๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์.
- Normalization์ ๋ชฉํ
- Relation ์ด "์ข์ ํํ"๊ฐ ์๋ ๊ฒฝ์ฐ, ์ด๋ฅผ relation์ ์งํฉ ์ผ๋ก ๋ถํด
- ๊ฐ relation์ ์ข์ ํํ(Normal form, ์ ๊ทํ)์.
- ๋ถํด๋ ๋ฌด์์ค ๋ถํด์.
- Relation ์ด "์ข์ ํํ"๊ฐ ์๋ ๊ฒฝ์ฐ, ์ด๋ฅผ relation์ ์งํฉ ์ผ๋ก ๋ถํด
- ์ด ์ด๋ก ์ ๋ค์์ ๊ธฐ๋ฐํจ.
- Functional dependencies(ํจ์ ์ข ์์ฑ) (๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ์ ๊ทผ ๋ฐฉ์)
- Multivalued dependencies (์ด ์์ ์์๋ ๋ค๋ฃจ์ง ์์)
Functional Dependencies
- ํ์ค ์ธ๊ณ์ ๋ฐ์ดํฐ์๋ ์ผ๋ฐ์ ์ผ๋ก ๋ค์ํ Constraint (rule)์ด ์กด์ฌ
- ์๋ฅผ ๋ค์ด, ๋ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ ์ง๋ ๊ฒ์ผ๋ก ์์๋๋ ์ ์ฝ์กฐ๊ฑด
- ํ์๊ณผ ๊ฐ์ฌ๋ ID๋ก ๊ณ ์ ํ๊ฒ ์๋ณ๋จ
- ๊ฐ ํ์๊ณผ ๊ฐ์ฌ๋ ํ๋์ ์ด๋ฆ๋ง ๊ฐ์ง
- ๊ฐ ๊ฐ์ฌ์ ํ์์ (์ฃผ๋ก) ํ๋์ ๋ถ์์๋ง ์์๋จ
- ๊ฐ ๋ถ์๋ ์์ฐ์ ๋ํด ํ๋์ ๊ฐ๋ง ๊ฐ์ง๋ฉฐ, ํ๋์ ๊ด๋ จ๋ ๊ฑด๋ฌผ๋ง ์์.
- ์ด๋ฌํ ๋ชจ๋ ํ์ค ์ธ๊ณ์ ์ ์ฝ์กฐ๊ฑด์ ๋ง์กฑํ๋ relation์ ์ธ์คํด์ค๋ฅผ legal instance๋ผ ํจ.
- ๋ฐ์ดํฐ๋ฒ ์ด์ค์ legal instance๋ ๋ชจ๋ relation ์ธ์คํด์ค๊ฐ legal instance์ธ ๊ฒฝ์ฐ์.
- Legal relation ์งํฉ์ ๋ํ ์ ์ฝ์กฐ๊ฑด
- Functional Dependency (FD): ํน์ ์์ฑ ์งํฉ์ ๊ฐ์ด ๋ค๋ฅธ ์์ฑ ์งํฉ์ ๊ฐ์ ๊ณ ์ ํ๊ฒ ๊ฒฐ์ ํ๋๋ก ์๊ตฌ
- ํจ์ ์ข ์์ฑ์ key ๊ฐ๋ ์ ์ผ๋ฐํ์.
Functional Dependencies Definition
- ์ relation schema๋ผ ํ ๋
- ์ด๊ณ
- ํจ์ ์ข
์์ฑ
๋ ๋ชจ๋ legal relation ์ ๋ํด, ์ ์์์ ๋ ํํ(tuple) ๊ณผ ๊ฐ ์์ฑ ์ ๋ํด ๋์ผํ ๊ฐ์ ๊ฐ์ง ๋๋ง๋ค ์์ฑ ์ ๋ํด์๋ ๋์ผํ ๊ฐ์ ๊ฐ์ง ๊ฒฝ์ฐ์๋ง ์ ๋ํด ์ฑ๋ฆฝํจ.
- ์ฆ,
- ์์: ๋ค์ ์ธ์คํด์ค๋ฅผ ๊ฐ์ง ๋ฅผ ๊ณ ๋ ค
A B 1 4 1 5 3 7 - ์ด ์ธ์คํด์ค์์ ๋ ์ฑ๋ฆฝํ์ง๋ง ๋ ์ฑ๋ฆฝํ์ง ์์.
Closure of a Set of Functional Dependencies
- ํจ์ ์ข
์์ฑ ์งํฉ ๊ฐ ์ฃผ์ด์ก์ ๋, ์ ์ํด ๋
ผ๋ฆฌ์ ์ผ๋ก ํจ์ถ๋๋ ๋ค๋ฅธ ํน์ ํจ์ ์ข
์์ฑ๋ค์ด ์กด์ฌ
- ๋ง์ฝ ์ด๊ณ ์ด๋ฉด, ๋ฅผ ์ถ๋ก ํ ์ ์์.
- ์ ์ํด ๋ ผ๋ฆฌ์ ์ผ๋ก ํจ์ถ๋ ๋ชจ๋ ํจ์ ์ข ์์ฑ์ ์งํฉ์ ์ Closure(ํํฌ)๋ผ๊ณ ํจ.
- ์ ํํฌ๋ฅผ ๋ก ํ๊ธฐํจ.
Keys and Functional Dependencies
- ๊ฐ relation schema ์ superkey์ธ ๊ฒ์ ์ผ ๋์ ๋์น์.
- ๊ฐ ์ candidate key์ธ ๊ฒ์ ๋ค์ ๋ ์กฐ๊ฑด์ ๋ง์กฑํ ๋์ ๋์น์.
- ์ธ ์ด๋ค ์ ๋ํด์๋ ์ด ์ฑ๋ฆฝํ์ง ์์.
- ํจ์ ์ข ์์ฑ์ superkey๋ฅผ ์ฌ์ฉํ์ฌ ํํํ ์ ์๋ ์ ์ฝ์กฐ๊ฑด์ ํํํ๊ฒ ํด์ค
- Schema
in_dep(ID, name, salary, dept_name, building, budget)๋ฅผ ๊ณ ๋ ค- ์ฃผ๋ก ๋ค์ ํจ์ ์ข
์์ฑ๋ค์ด ์ฑ๋ฆฝํ ๊ฒ์ผ๋ก ๊ธฐ๋ํจ.
dept_namebuildingIDbuilding
- ํ์ง๋ง ๋ค์์ ์ฑ๋ฆฝํ์ง ์์ ๊ฒ์ผ๋ก ๊ธฐ๋ํจ.
dept_namesalary
- ์ฃผ๋ก ๋ค์ ํจ์ ์ข
์์ฑ๋ค์ด ์ฑ๋ฆฝํ ๊ฒ์ผ๋ก ๊ธฐ๋ํจ.
Keys and Functional Dependencies
- ํจ์ ์ข
์์ฑ์ ์ฌ์ฉ ๋ชฉ์
- ์ฃผ์ด์ง ํจ์ ์ข
์์ฑ ์งํฉ ํ์์ relation์ด legalํ์ง ํ
์คํธํ๊ธฐ ์ํด
- Relation ์ด ํจ์ ์ข ์์ฑ ์งํฉ ํ์์ legalํ๋ฉด, ์ด ๋ฅผ ๋ง์กฑํ๋ค๊ณ ๋งํจ.
- Legal relation์ ์งํฉ์ ๋ํ ์ ์ฝ์กฐ๊ฑด ๋ช
์ํ๊ธฐ ์ํด
- ์ ๋ํ ๋ชจ๋ legal relation์ด ํจ์ ์ข ์์ฑ ์งํฉ ๋ฅผ ๋ง์กฑํ๋ฉด, ๊ฐ ์์ ์ฑ๋ฆฝํ๋ค๊ณ ๋งํจ.
- ์ฃผ์ด์ง ํจ์ ์ข
์์ฑ ์งํฉ ํ์์ relation์ด legalํ์ง ํ
์คํธํ๊ธฐ ์ํด
- ์ฐธ๊ณ : Relation schema์ ํน์ ์ธ์คํด์ค๋, ๋ชจ๋ legal ์ธ์คํด์ค์์ ํจ์ ์ข
์์ฑ์ด ์ฑ๋ฆฝํ์ง ์๋๋ผ๋, ์ฐ์ฐํ ํด๋น ํจ์ ์ข
์์ฑ์ ๋ง์กฑํ ์ ์์.
- ์๋ฅผ ๋ค์ด,
instructor์ ํน์ ์ธ์คํด์ค๊ฐ ์ฐ์ฐํnameID๋ฅผ ๋ง์กฑํ ์ ์์.
- ์๋ฅผ ๋ค์ด,
- ํจ์ ์ข
์์ฑ์ด relation์ ๋ชจ๋ ์ธ์คํด์ค(legalํ๋ ์๋๋ )์ ์ํด ๋ง์กฑ๋๋ฉด trivial(์๋ช
ํ) ํจ์ ์ข
์์ฑ์ด๋ผ ํจ.
- ์์
ID, nameIDnamename
- ์ผ๋ฐ์ ์ผ๋ก, ๋ ์ผ ๋ ์๋ช ํจ.
- ์์
Lossless Decomposition and Functional Dependencies
- ํน์ ๋ถํด๊ฐ ๋ฌด์์ค์ธ์ง ๋ณด์ด๊ธฐ ์ํด ํจ์ ์ข ์์ฑ์ ์ฌ์ฉํ ์ ์์.
- ์ ๊ฒฝ์ฐ, schema ์์ ๋ชจ๋ ๊ฐ๋ฅํ relation ์ ๋ํด ๋ค์์ ์๊ตฌ
- ์ ๊ณผ ๋ก ๋ถํดํ๋ ๊ฒ์ด ๋ฌด์์ค ๋ถํด์ด๋ ค๋ฉด, ์์ ์ฑ๋ฆฝํ๋ ์ ๋ํด, ๋ค์ ์ข
์์ฑ ์ค ์ ์ด๋ ํ๋๊ฐ ์ ์ํด์ผ ํจ.
- ์์ ํจ์ ์ข ์์ฑ๋ค์ ๋ฌด์์ค join ๋ถํด๋ฅผ ์ํ ์ถฉ๋ถ์กฐ๊ฑด์.
Example
- ,
- ๋ ๋ฌด์์ค ๋ถํด์.
- ์ด๊ณ
- ๋ ๋ฌด์์ค ๋ถํด์.
- ์ด๊ณ
- ์ฐธ๊ณ
- ๋ ์ ์ถ์ฝ ํ๊ธฐ์.
Dependency Preservation
- ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ๊ฐฑ์ ๋ ๋๋ง๋ค ํจ์ ์ข ์์ฑ ์ ์ฝ์กฐ๊ฑด์ ํ ์คํธํ๋ ๊ฒ์ ๋น์ฉ์ด ๋ง์ด ๋ค ์ ์์.
- ์ ์ฝ์กฐ๊ฑด์ ํจ์จ์ ์ผ๋ก ํ ์คํธํ ์ ์๋ ๋ฐฉ์์ผ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ค๊ณํ๋ ๊ฒ์ด ์ ์ฉํจ.
- ํ๋์ relation๋ง ๊ณ ๋ คํ์ฌ ํจ์ ์ข ์์ฑ์ ํ ์คํธํ ์ ์๋ค๋ฉด, ์ด ์ ์ฝ์กฐ๊ฑด์ ํ ์คํธ ๋น์ฉ์ ๋ฎ์.
- Relation๋ฅผ ๋ถํดํ ๋, cartesian product๋ฅผ ์ํํ์ง ์๊ณ ๋ ํ ์คํธ๊ฐ ๋ ์ด์ ๋ถ๊ฐ๋ฅํด์ง ์ ์์.
- ํจ์ ์ข ์์ฑ์ ๊ฐ์ ํ๊ธฐ ์ด๋ ต๊ฒ ๋ง๋๋ ๋ถํด๋ dependency preserving์ด ์๋๋ผ๊ณ ํจ.
| Name | City | Prefecture |
|---|---|---|
| Kim | Suwon | Kyungki-do |
NameCity,PrefectureCityPrefecture- Lossless decomposition์ด๋ฉด์ dependency preservation
| Name | City |
|---|---|
| Kim | Suwon |
| City | Prefecture |
|---|---|
| Suwon | Kyungki-do |
NameCityCityPrefecture- ์ ๋ ํจ์ ์ข
์์ฑ์ผ๋ก๋ถํฐ
NameCity,Prefecture๊ฐ ์ ๋ - ๋ณธ๋์ ํจ์ ์ข
์์ฑ์ธ
NameCity์CityPrefecture๊ฐ ๊ฐ๊ฐ ๋ถํด๋ ํ ์ด๋ธ ๋ด์์ ๋ชจ๋ ๋ณด์กด
Lossless decomposition์ด์ง๋ง not dependency preserving
| Name | City |
|---|---|
| Kim | Suwon |
| Name | Prefecture |
|---|---|
| Kim | Kyungki-do |
NameCityNamePrefecture- ์ ๋ ํจ์ ์ข
์์ฑ์ผ๋ก๋ถํฐ
NameCity,Prefecture๊ฐ ์ ๋ - ํ์ง๋ง, ๋ณธ๋์ ํจ์ ์ข
์์ฑ์ด์๋
CityPrefecture๋ฅผ ๊ฒ์ฌํ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผ ํ ๊น?- ๋ ํ ์ด๋ธ์ joinํด์ผ๋ง ํ์ธ ๊ฐ๋ฅ
- ๊ฒฐ๋ก ์ ์ผ๋ก, ์ด ๋ถํด๋ ์ข ์์ฑ์ ๋ณด์กดํ์ง ๋ชปํจ.
Goals for Decomposition
- Relation schema ๊ณผ ํจ์ ์ข
์์ฑ(functional dependency) ์ ์งํฉ์ ์ผ๋ก ๋ถํด(decompose)ํ ๋ ์ํ๋ ๊ฒ
- ๋ฌด์์ค ๋ถํด(Lossless decomposition)
- ์ค๋ณต ์์(No redundancy)
- ์ข ์์ฑ ๋ณด์กด(Dependency preservation)
Normal Forms
First Normal Form
- ๋๋ฉ์ธ์ ์์๊ฐ ๋ ์ด์ ๋๋ ์ ์๋ ๋จ์๋ก ๊ฐ์ฃผ๋ ๋, ํด๋น ๋๋ฉ์ธ์ ์์์ (atomic)์.
- ๋น์์์ ๋๋ฉ์ธ์ ์
- ์ด๋ฆ ์งํฉ, ๋ณตํฉ ์์ฑ(composite attribute)
CS101๊ณผ ๊ฐ์ด ๋ถ๋ถ์ผ๋ก ๋๋ ์ ์๋ ์๋ณ ๋ฒํธ
- ๋ชจ๋ ์์ฑ์ ๋๋ฉ์ธ์ด ์์์ ์ผ ๋, relation schema๋ ์ 1 ์ ๊ทํ(First Normal Form, 1NF)์ ์์.
- ์์์ฑ์ ์ค์ ๋ก๋ ๋๋ฉ์ธ์ ์์๊ฐ ์ด๋ป๊ฒ ์ฌ์ฉ๋๋์ง์ ๋ํ ์์ฑ
- ํ์ ID ๋ฒํธ:
CS0012,EE1127, ...- ํ๊ณผ๋ฅผ ์ฐพ๊ธฐ ์ํด ์์ ๋ ๋ฌธ์๋ฅผ ์ถ์ถํ๋ค๋ฉด, ๋๋ฉ์ธ์ ์์์ ์ด์ง ์์.
- ๊ทธ๋ ์ง ์๋ค๋ฉด, ๋๋ฉ์ธ์ ์์์ ์.
- ๋น์์์ ์์ฑ
- ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์๋ ์ ํ๋ฆฌ์ผ์ด์ ํ๋ก๊ทธ๋จ์์ ์ ๋ณด์ ์ธ์ฝ๋ฉ/๋์ฝ๋ฉ์ผ๋ก ์ด์ด์ง
- ์ ์ฅ ๋ฐ ์ฟผ๋ฆฌ ์ฒ๋ฆฌ ๋ณต์กํ
- ๋ชจ๋ relation์ first normal form(1NF)์ ์๋ค๊ณ ๊ฐ์
Boyce-Codd Normal Form (BCNF)
- Relation schema ์ด ํจ์ ์ข
์์ฑ ์งํฉ ์ ๋ํด BCNF(Boyce-Codd Normal Form)์ ์์ผ๋ ค๋ฉด, ์ ์๋ ํํ(์ด๊ณ )์ ๋ชจ๋ ํจ์ ์ข
์์ฑ์ ๋ํด ๋ค์ ์ค ์ ์ด๋ ํ๋๊ฐ ์ฑ๋ฆฝํด์ผ ํจ.
- ๊ฐ ์๋ช ํ(trivial) ํจ์ ์ข ์์ฑ (์ฆ, )
- ๊ฐ ์ superkey (์ฆ, )
- BCNF๋ 'ํ์คํ' ์กด์ฌํ๋ ๊ฒ ์ธ์๋ ํจ์ ์ข ์์ฑ์ด ์์์ ๋ณด์ฅ
- BCNF๊ฐ ์๋ schema ์์
in_dep(ID, name, salary, dept_name, building, budget )์ด์dept_nameโbuilding,budget์ดin_dep์์ ์ฑ๋ฆฝ- ํ์ง๋ง
dept_name์ superkey๊ฐ ์๋
in_dep์instructor์department๋ก ๋ถํดํ ๋instructor(ID, name, salary, dept_name)์ BCNF์ ์์.department(dept_name, building, budget)์ BCNF์ ์์.
dept_name์ด superkey๊ฐ ์๋๋ฏ๋ก, ๋์ผํ ํ๊ณผ๋ช ์ด ํ ์ด๋ธ์ ๋ฐ๋ณต์ ์ผ๋ก ๋ํ๋ ์ ์์.dept_name์ผ๋ก๋ถํฐ์ ํจ์ ์ข ์์ฑ์building๊ณผbudget๋ ๋ฐ๋ณต์ ์ผ๋ก ๋ํ๋๊ฒ ํจ.dept_name์ด superkey๋ผ๋ฉด, ์ด๋ฌํ ์ค๋ณต์ ๋ฐ์ํ์ง ์์.
Decomposing a Schema into BCNF
- ์ BCNF์ ์์ง ์์ schema๋ผ๊ณ ๊ฐ์
- ๋ฅผ BCNF ์๋ฐ์ ์ผ๊ธฐํ๋ ํจ์ ์ข
์์ฑ(FD)์ด๋ผ๊ณ ๊ฐ์
- ์ฆ, ๋ ์ superkey๊ฐ ์๋
- ์ ๋ ๊ฐ์ schema๋ก ๋ถํด
- ์ ๋ง์ ๊ฐ์ง๋ ๋ค๋ฅธ relation๋ฅผ ์์ฑ
- ์ด์ง๋ง, ์ด relation์์ ๋ superkey์ด๋ฏ๋ก BCNF๋ฅผ ์๋ฐํ์ง ์์.
- ์๋ schema์์ ๋ฅผ ์ ๊ฑฐํ๊ณ ๋ ์ ์ง
- ์ด schema์๋ ๋ ์ด์ ๊ฐ ์กด์ฌํ์ง ์์.
in_dep์์์์,dept_nameโbuilding,budget์ด BCNF๋ฅผ ์๋ฐ- ๋ฐ๋ผ์,
in_dep์ ๋ค์๊ณผ ๊ฐ์ด ๋ถํด๋จ
Example
- , ,
- ์ BCNF์ ์์ง ์์, ์๋ํ๋ฉด ์ด์ง๋ง ๋ superkey๊ฐ ์๋๊ธฐ ๋๋ฌธ
- ๋ฌด์์ค-join ๋ถํด: ์ด๊ณ (์๋ช ํ ์ข ์์ฑ์ด๋ฏ๋ก ์ค์ ๋ก๋ ๋ง ํ์ธ)
- ์ข ์์ฑ ๋ณด์กด: ๋ ์, ๋ ์ ์์ผ๋ฏ๋ก, ๋ฅผ ์ํํ์ง ์๊ณ ๋ ๋ฅผ ํ ์คํธํ ์ ์์.
- ๋ ์ ์ ์ํด ๋ณด์ฅ๋จ (์ฆ, ๋ช ์์ ํ ์คํธ ๋ถํ์)
- ๋ฌด์์ค-join ๋ถํด: ์ด๊ณ (์๋ช ํ ์ข ์์ฑ์ด๋ฏ๋ก ์ค์ ๋ก๋ ๋ง ํ์ธ)
- ์ข ์์ฑ์ ๋ณด์กดํ์ง ์์.
- ๋ ์, ๋ ์ ์์.
- ํ์ง๋ง ๋ฅผ ๊ณ์ฐํ์ง ์๊ณ ๋ ๋ฅผ ํ์ธํ ์ ์์.
BCNF and Dependency Preservation
- BCNF์ ์ข ์์ฑ ๋ณด์กด์ ๋ชจ๋ ๋ฌ์ฑํ๋ ๊ฒ์ด ํญ์ ๊ฐ๋ฅํ ๊ฒ์ ์๋
- Schema ์์
dept_advisor(student_ID, instructor_ID, dept_name)
- ํจ์ ์ข
์์ฑ
instructor_IDโdept_namestudent_ID, dept_nameโinstructor_ID
- ์ schema๋ ํ ํ์์ด ์๋ก ๋ค๋ฅธ ํ๊ณผ์ ์ฌ๋ฌ ๋ช ์ ์ง๋๊ต์๋ฅผ ๊ฐ์ง ์ ์๋ค๊ณ ๊ฐ์
dept_advisor๋instructor_ID๊ฐ superkey๊ฐ ์๋๋ฏ๋ก BCNF์ ์์ง ์์.dept_advisor์ ์ด๋ค ๋ถํด๋student_ID, dept_nameโinstructor_ID๋ฅผ ๋ณด์กดํ์ง ๋ชปํจ.- ๋ฐ๋ผ์, ์ด ๋ถํด๋ ์ข ์์ฑ์ ๋ณด์กดํ์ง ์์.
Third Normal Form: Motivation
- ๋ค์๊ณผ ๊ฐ์ ์ผ๋ถ ์ํฉ ์กด์ฌ
- BCNF๊ฐ ์ข ์์ฑ์ ๋ณด์กดํ์ง ์์.
- ์ ๋ฐ์ดํธ ์ ํจ์ ์ข ์์ฑ ์๋ฐ์ ๋ํ ํจ์จ์ ์ธ ๊ฒ์ฌ๊ฐ ์ค์
- ํด๊ฒฐ์ฑ
: ์ 3 ์ ๊ทํ(Third Normal Form, 3NF)์ด๋ผ๋ ๋ ์ฝํ ์ ๊ทํ ์ ์
- ์ผ๋ถ ์ค๋ณต ํ์ฉ
- ํ์ง๋ง join์ ๊ณ์ฐํ์ง ์๊ณ ๊ฐ๋ณ relation์์ ํจ์ ์ข ์์ฑ์ ๊ฒ์ฌ ๊ฐ๋ฅ
- BCNF์ ๋นํด 3NF๊ฐ ๊ฐ๋ ์ฅ์
- 3NF๋ก์ ๋ฌด์์ค, ์ข ์์ฑ ๋ณด์กด ๋ถํด๊ฐ ํญ์ ์กด์ฌ
- 3NF์ ๋จ์
- ๋ฐ์ดํฐ ํญ๋ชฉ ๊ฐ์ ์๋ฏธ ์๋ relation ์ผ๋ถ๋ฅผ ํํํ๊ธฐ ์ํด null๊ฐ์ ์ฌ์ฉํด์ผ ํ ์ ์์.
- ์ ๋ณด ๋ฐ๋ณต์ ๋ฌธ์ ๊ฐ ์์.
Third Normal Form
- Relation schema ์ด ์ 3 ์ ๊ทํ(3NF)์ ์์ผ๋ ค๋ฉด, ์ ๋ชจ๋ ์ ๋ํด ๋ค์ ์ค ์ ์ด๋ ํ๋๊ฐ ์ฑ๋ฆฝํด์ผ ํจ.
- ๊ฐ ์๋ช ํ ํจ์ ์ข ์์ฑ (์ฆ, )
- ๊ฐ ์ superkey
- ์ ์๋ ๊ฐ ์์ฑ ๊ฐ ์ ํ๋ณด ํค(candidate key)์ ํฌํจ๋จ (์ฐธ๊ณ : ๊ฐ ์์ฑ์ ๋ค๋ฅธ ํ๋ณด ํค์ ์์ ์ ์์)
- Relation์ด BCNF์ ์์ผ๋ฉด, 3NF์๋ ์์.
- BCNF์์๋ ์์ ์ฒซ ๋ ์กฐ๊ฑด ์ค ํ๋๊ฐ ๋ฐ๋์ ์ฑ๋ฆฝํ๊ธฐ ๋๋ฌธ
- ์ธ ๋ฒ์งธ ์กฐ๊ฑด์ ์ข ์์ฑ ๋ณด์กด์ ๋ณด์ฅํ๊ธฐ ์ํด BCNF๋ฅผ ์ต์ํ์ผ๋ก ์ํํ ๊ฒ
3NF Example
- Schema ์์
dept_advisor(student_ID, instructor_ID, dept_name)
- ํจ์ ์ข
์์ฑ
instructor_IDโdept_namestudent_ID, dept_nameโinstructor_ID
- ๋ ํ๋ณด ํค =
{student_ID, dept_name},{student_ID, instructor_ID} - ์์
dept_advisor๋ BCNF์ ์์ง ์์์ ํ์ธํ์. - ๊ทธ๋ฌ๋ ์ 3NF์ ์์.
student_ID, dept_name์ superkeyinstructor_IDโdept_name์ด์ง๋งinstructor_ID๋ superkey๊ฐ ์๋. ํ์ง๋ง,- ์ด๊ณ
dept_name์ ํ๋ณด ํค์ ํฌํจ๋จ
Redundancy in 3NF
- 3NF์ ์์ง๋ง BCNF์๋ ์๋ ์๋ schema ์ ๊ณ ๋ ค
- , ๋ ํ๋ณด ํค: ์
- ๊ทธ๋ฆฌ๊ณ ์ธ์คํด์ค ํ ์ด๋ธ
- ํ
์ด๋ธ์ ๋ฌธ์ ์ ์ ๋ฌด์์ธ๊ฐ?
- ์ ๋ณด์ ๋ฐ๋ณต ()
- Null๊ฐ ์ฌ์ฉ ํ์ (์: ์ ํด๋นํ๋ ๊ฐ์ด ์๋ relation ๋ฅผ ํํํ๊ธฐ ์ํด)
Goals of Normalization: Revisited
- ์ ํจ์ ์ข ์์ฑ ์งํฉ ๋ฅผ ๊ฐ์ง relation schema๋ผ๊ณ ๊ฐ์
- Relation schema ์ด "์ข์" ํํ์ธ์ง ๊ฒฐ์
- Relation schema ์ด "์ข์" ํํ๊ฐ ์๋ ๊ฒฝ์ฐ, ๋ค์๊ณผ ๊ฐ์ relation schema ์งํฉ ์ผ๋ก ๋ถํดํ ํ์๊ฐ ์์.
- ๊ฐ relation schema๋ ์ข์ ํํ์.
- ๋ถํด๋ ๋ฌด์์ค ๋ถํด์.
- ๊ฐ๊ธ์ ๋ถํด๋ ์ข ์์ฑ์ ๋ณด์กดํด์ผ ํจ.
How good is BCNF?
- ์ถฉ๋ถํ ์ ๊ทํ๋์ง ์์ ๊ฒ์ฒ๋ผ ๋ณด์ด๋ BCNF ๋ฐ์ดํฐ๋ฒ ์ด์ค schema ์กด์ฌ
- ํ ๋ช
์ ๊ต์๊ฐ ์ฌ๋ฌ ๊ฐ์ ์ ํ๋ฒํธ์ ์ฌ๋ฌ ๋ช
์ ์๋
๋ฅผ ๊ฐ์ง ์ ์๋ relation
inst_info(ID, child_name, phone)๋ฅผ ๊ณ ๋ ค inst_info์ ์ธ์คํด์ค- ์ด relation์ ์๋ช ํ์ง ์์ ํจ์ ์ข ์์ฑ์ด ์์ผ๋ฏ๋ก BCNF์ ์์.
- ์ฝ์
์ด์(Insertion anomaly): ID
99999์ ์ ํ๋ฒํธ981-992-3443์ ์ถ๊ฐํ๋ ค๋ฉด ๋ ๊ฐ์ ํํ์ ์ถ๊ฐํด์ผ ํจ.(99999, David, 981-992-3443),(99999, William, 981-992-3443)
Higher Normal Forms
inst_info๋ฅผ ๋ค์๊ณผ ๊ฐ์ด ๋ถํดํ๋ ๊ฒ์ด ๋ ์ข์.inst_childinst_phone
- ์ด๋ ๋ค์น ์ข ์์ฑ(Multivalued Dependency)์ ๊ธฐ๋ฐํ ์ 4 ์ ๊ทํ(4NF)๊ณผ ๊ฐ์ ๋ ๋์ ์ ๊ทํ์ ํ์์ฑ์ ์์ฌ

