0. Intro
1. Features of Good Relational Design
์ฐ๋ฆฌ๊ฐ instructor ๊ณผ department๋ฅผ in_dep์ด๋ผ๋ table๋ก ํฉ์ณค๋ค๊ณ ์๊ฐํด๋ณด์.
์ด๋ฌ๋ฉด ๊ฐ์ dept ์ ๋ณด๊ฐ ๊ณ์ ๋ฐ๋ณตํด์ ๋ค์ด๊ฐ๊ณ , ๋ง์ฝ ํ๊ณผ๊ฐ ์๋ก ๋ง๋ค์ด ์ก์ ๋ ๊ต์์๊ฐ ์์ง ์๋ค๋ฉด null๊ฐ์ผ๋ก ๋ฃ์ด ์ถ๊ฐํด์ผ ํ๋ ๋ฌธ์ ๋ ๋ฐ์ํ๋ค. ์ฌ์ง์ด id๊ฐ not null์ด๋ฉด ์ด๊ฒ๋ ๋ถ๊ฐ๋ฅ ํ๋ค.์ฆ, ๋ฌด์กฐ๊ฑด table์ ํฉ์น๋ค๊ณ ์ข์ ๊ฒ์ด ์๋๋ค.
Combined schema without repetition
- ๊ทธ๋ฌ๋ ํฉ์น๋ค๊ณ ๋ ๋ฌด์กฐ๊ฑด ์ค๋ณต์ด ์๊ธฐ๋ ๊ฑด ์๋๋ค.
- sec_class์ section์ ํฉ์น ๊ฒฝ์ฐ ์ค๋ณต๋๋ ์ ๋ณด๊ฐ ์๊ฒ ๋๋ค.
2. Decomposition : table ์ชผ๊ฐ๊ธฐ.
์ฐ๋ฆฌ๊ฐ ์์ ๋ณธ in_dep schema์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ค๋ฉด table์ ๋ ๊ฐ๋ก ์ชผ๊ฐ์ผ ํ๋ค. (instructor๊ณผ department)
๊ทผ๋ฐ ๋ ๋ชจ๋ decomposition์ด ์ข์ ๊ฑด ์๋๋ค.
employee(ID, name, street, city, salary) ๋ฅผ
employee1(ID, name)
employee2(name, street, city, salary)๋ก ์ชผ๊ฐ๊ฐ ๋๋ฉด
๋ง์ฝ ๋๋ช ์ด์ธ์ด ์์ ๊ฒฝ์ฐ joinํ ๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค.
๋๋ช ์ด์ธ์์ผ๋ฉด ์ ๋ณด ์ผ๋ถ๊ฐ ๋ ๋ผ๊ฐ ์๋์ table๋ก ๋ณต์์ด ๋ถ๊ฐํ๊ฒ ๋๋๋ฐ ์ด๋ฅผ lossy decomposition์ด๋ผ๊ณ ํ๋ค.
(๋ฐ์ดํฐ ์(tuple)์ ์ฆ๊ฐํ๋๋ฐ information์ ๋๋ฝ(less)๋๋ค)
Lossless Decomposition
-> Table์ ๋ค์ ํฉ์ณค์ ๋ ์ ๋ณด ๋๋ฝ์ด ์๋๋ก ํ๋ decomposition (<-> lossy)
3. Normalization Theory
: relation schema R์ด ์ง๊ธ ํ์ฌ 'good' ํ ํํ์ธ์ง decideํ๋ ์ด๋ก .
๋ง์ฝ good form ์ด ์๋๋ผ๋ฉด, decomposeํด์ relation์ ์ชผ๊ฐ์ผ ํ๋ค. (๋น์ฐํ ์ชผ๊ฐ ํ์ relation์ good form์ด์ด์ผ ํ๊ณ , lossless decomposition์ด์ด์ผํจ)
ํฌ๊ฒ ๋ ๊ฐ๋ก ๋๋์ด ์ดํด๋ณผ ๊ฒ !
- Functional dependencies
- Multivalued dependencies
1. Funtional dependency
์ฐ๋ฆฌ๊ฐ ์ด์๊ฐ๋ ์ธ์์ ๋ฐ์ดํฐ์๋ ์ฌ๋ฌ๊ฐ์ง ์ ํ (constraints, rule)์ด ์กด์ฌํ๋ค.
์ด๋ฌํ ๋ชจ๋ real-world constraints๋ฅผ ๋ง์กฑํ๋ relation์ instance๋ฅผ legal instance ๋ผ๊ณ ๋ถ๋ฅธ๋ค.
๋ฐ์ดํฐ๋ฒ ์ด์ค์ legal instance๋ relation์ instance๊ฐ ๋ชจ๋ legal instance์ผ ๋๋ฅผ ๋งํ๋ค.functional dependency : legal relations์ constraints๋ก ์ธํด ํน์ attributes์ ์งํฉ์ด ๋ค๋ฅธ set of attribute๋ฅผ ์ ์ผํ๊ฒ ๊ฒฐ์ ํ๋๋ก ํด์ผํ๋ค.
๋ง์ด ์ด๋ ต๊ธด ํ๋ฐ, ๊ทธ๋ฅ key ๊ฐ๋ ์ ์ผ๋ฐํ ํ ๊ฒ
legal instance๋ฅผ ๋ง๋ค๊ธฐ ์ํด ์กฐ๊ฑด์ ์ถ๊ฐํจ์ผ๋ก ์ธํด ํน์ attribute๊ฐ์ ์ข ์์ฑ์ด ์์ฑ๋๋ค.
relation R์ a, b attribute๊ฐ ์์ ๋,
functional dependency a -> b๋ a๊ฐ ๊ฒฐ์ ๋จ์ ๋ฐ๋ผ b๊ฐ ๊ฒฐ์ ๋ ๋์ ์ด๋ค legal relations r(R)์ ๋ํด์ hold on R ๋๋ค.
์ฆ ์์ ๊ฒ์ด UNIQUE ํ ๋ ๋ค์ ๊ฒ์ด ํ๋๋ก ๊ฒฐ์ ๋๋ ๊ฒฝ์ฐ๋ฅผ functional dependency ๊ฐ HOLD ๋๋ค๊ณ ๋งํ๋ค.
Closure of a set of functional dependencies
๋ง์ฝ A->B, B->C๋ผ๋ Functional dependency๊ฐ ์๋ค๋ฉด ์ฐ๋ฆฐ A->C๋ hold๋จ์ ์ ์ ์๋ค. ์ด๋ฐ ์์ผ๋ก funstional dependencies ์ ์งํฉ F๊ฐ ์ฃผ์ด์ก์ ๋, F๋ก ๋ถํฐ ์ถ๋ก ํด์ ์ป์ด ๋ผ ์ ์๋ ๋ชจ๋ functional dependency๋ฅผ closure of F๋ผ๊ณ ๋ถ๋ฅธ๋ค.
F+ ๋ผ๊ณ ํ๊ธฐํ๋ค.
Keys and Functional Dependency
K๊ฐ relation schema R์ superkey๋ผ๊ณ ํ๋ฉด, K->R์ด๋ค. (๋ฐ๋๋ ์ฑ๋ฆฝํ๋ค.)
K๊ฐ candidate key๋ผ๋ฉด
- K->R
- a โ K, a->R ์ธ ๋๋ค๋ฅธ a ๋ ์กด์ฌํ์ง ์์
fd๋ ์ฐ๋ฆฌ๊ฐ superkey๋ก๋ ํํํ์ง ๋ชปํ๋ constraints๋ฅผ ํํํ ์ ์๋ค.
Use of Functional Dependencies
์ฃผ์ด์ง functional dependencies์์ relation์ด legalํ์ง ํ์ธํ๋ค.
- ๋ง์ฝ functional dependencies F ์๋์์, relation instance r์ด legalํ๋ค๋ฉด r satisfies F๋ผ๊ณ ๋งํ๋ค.
legal relations์ ์งํฉ์ constraints๋ฅผ ์ง์ ํ๊ธฐ ์ํด ์ฌ์ฉํ๋ค.
- ๋ง์ฝ R์ ๋ชจ๋ legal relation์ด funtional dependencies F๋ฅผ ๋ง์กฑํ๋ค๋ฉด F holds on R ๋ผ๊ณ ๋งํ๋ค.
satisfy๋ ํน์ instance๊ฐ fd๋ฅผ ๋ง์กฑํ๋ ๊ฒ, hold๋ ์คํค๋ง ์์ฒด๊ฐ legalํ ๊ฒ.
holdํ์ง ์๋๋ผ๋ ์ฐ์ฐํ satisfy๋ ํ ์ ์์
Trivial Functional Dependencies
๋น์ฐํ ์ฌ์ค๋ค (์๋ช ํ ๊ฒ๋ค)
ex) ID , NAME -> ID
NAME -> NAME๋ณดํต a->b ์์ bโa ์ผ ๋ trivial ํ๋ค๊ณ ๋งํจ
Lossless Decomposition
functional dependency๋ฅผ ์ด์ฉํด decomposition์ด lossless ํ์ง ์๋์ง๋ฅผ ํ์ธํ ์ ์๋ค.
R = (R1, R2)๊ฐ ์์ ๋, R์ R1๊ณผ R2๋ก decompositionํ ๋, ๋ค์๊ณผ ๊ฐ์ ์ข ์์ฑ์ ์ ์ด๋ ํ๋ F+๊ฐ ๊ฐ์ง๊ณ ์์ด์ผ lossless decomposition์ด๋ผ๊ณ ํ ์ ์๋ค.
- R1 โฉ R2 -> R1
- R1 โฉ R2 -> R2
์ functional dependency๋ loseless join decomposition์ ์ํด ํ์ํ ์กฐ๊ฑด์ด๋ค.
์ dependency๋ ๋ชจ๋ constraints๊ฐ functional dependencies์ธ ๊ฒฝ์ฐ์๋ง ํ์ํ ์กฐ๊ฑด์ด๋ค.
์๋ฅผ ๋ณด์.
R=(A, B, C)
F = {A->B, B->C}
R1 = (A, B), R2= (B, C)
R1 โฉ R2 = {B} AND B->BC
R1 = (A,B) , R2 = (A, C)
R1 โฉ R2 = {A} AND A -> AB
์ฐธ๊ณ ๋ก, AB = {A, B}๋ผ๊ณ ๋ณด๋ฉด ๋จ
์ ์กฐ๊ฑด์ ๋ง์กฑํ๋๊น ๋ ๋ค ์ฌ๋ฐ๋ฅธ Decomposition!
Dependency Preservation
: dependency constraints๊ฐ ์ง์ผ์ก๋์ง ์๋์ง๋ฅผ ๋งค๋ฒ join์ ํด๋ด์ผ ์๋์ง, ์๋๋ฉด ๋ฐ๋ก ์ ์ ์๋์ง ์ฌ๋ถ๊ฐ ์ด๊ฒ!
- ๋๋น๊ฐ ์
๋ฐ์ดํธ ๋ ๋ ๋ง๋ค fd constraints๋ฅผ ํ
์คํธํ๋ ค๋ฉด ๋น์ฉ์ด ๋ง์ด ๋ค ์ ์๋ค.
- ๋ฐ๋ผ์ ์ ์ฝ ์กฐ๊ฑด์ ํจ์จ์ ์ผ๋ก ํ ์คํธ ํ ์ ์๊ฒ ๋๋น๋ฅผ ์ค๊ณํ๋ ๊ฒ์ด ์ข๋ค
- ํ๋์ relation๋ง ๊ณ ๋ คํด fd constraint๋ฅผ ํ ์คํธํ ์ ์๋ค๋ฉด ๋น์ฉ์ด ์ ๊ฒ ๋ ๋ค.
- ๊ทธ๋ฌ๋ decomposing ๊ณผ์ ์์ ์นด๋ฅดํ ์ง์ ๊ณฑ์ ์ฌ์ฉํ์ง ์์ผ๋ฉด ํ ์คํธ๋ฅผ ํ ์ ์๊ฒ ๋๊ธฐ๋ ํจ
functional dependency๋ฅผ ํ์ธํ๊ธฐ ์ํด join์ ํด์ผ ํ๋ ๋ฑ, ์ด๋ ต๊ฒ ๋ง๋๋ decomposition์ ๊ฒฝ์ฐ, NOT dependency preserving ์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค.
์๋ฅผ ๋ค์ด์ dept_advisor(s_ID, i_ID, department_name) ์ด ์๋ค๊ณ ์น์.
์ฌ๊ธฐ์ fd๋
i_id -> dept_name
s_id, dept_name -> i_id
์ด ๊ฒฝ์ฐ instructor๊ฐ dept_advisor relation์ ์ฐธ์ฌํ ๋๋ง๋ค department_name์ ๊ณ์ ๋ฐ๋ณตํด์ ์ ์ด์ค์ผ ํ๋ค.
์ด ์ค๋ณต์ฑ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ค๋ฉด decomposing์ ํด์ค์ผ ํ๋๋ฐ, ์ด ๊ฒฝ์ฐ ์ด๋ป๊ฒ ๋๋ ๋ s_id, dept_name -> i_id๋ฅผ ํฌํจํ ์ ์์ผ๋ฏ๋ก ์ด decomposition์ not dependency preserving ํ๋ค๊ณ ๋งํ ์ ์๋ค.
1. Normal Forms
1. BCNF (Boyce-Codd Normal Form)
a -> b ์ผ ๋
- a -> b๊ฐ trivial ํ๋ค
- a๊ฐ R์ superkey์ด๋ค.
F+์ ๋ชจ๋ functional dependencies๊ฐ ๋ค์๊ณผ ๊ฐ์ ์กฐ๊ฑด์ ๋ง์กฑํ๋ ๊ฒฝ์ฐ relation schema R์ด BCNF๋ฅผ ๋ง์กฑํ๋ค๊ณ ํ ์ ์๋ค.
์๋ฅผ ๋ค์ด in_dep(ID, name, salary, dept_name, building, budget)
์ด ์๊ณ
dept_name -> building , budget ์ด๋ผ๋ fd๊ฐ ์์ ๊ฒฝ์ฐ
hold๋ฅผ ํ๊ธด ํ๋๋ฐ, dept_name์ด superkey๋ ์๋๋ฏ๋ก BCNF ๊ฐ ์๋๋ค.
๋ง์ฝ Violation of BCNF๊ฐ ์ผ์ด๋ ๊ฒฝ์ฐ, Decompose๋ฅผ ํด์ค์ผ ํ๋ค. ์ด๋ป๊ฒ?
- a โช B
- R - (b-a)
์ด๋ ๊ฒ.
์์ ์๋ก ๋ค์ ํด๋ณด๋ฉด
a = dept_name
b= building, budget
์ด๋๊น
a โช B = (dept_name, building, budget)
R - (b-a) = (ID, name, dept_name, salary)
๊ฐ ๋๋ค.
BCNF and Dependency Preservation
-> BCNF์ dependency preserving decomposition์ ์ธ์ ๋ ๋์์ ๋ง์กฑ ์ํฌ ์๋ ์๋ค
dept_advisor(s_ID, i_ID, department_name)
i_id -> dept_name
s_id, dept_name -> i_id
๊ฐ ์์ ๋,
i_id๊ฐ superkey๊ฐ ์๋๋ฏ๋ก decomposition์ ํด์ผํ๋ค.
๊ทผ๋ฐ ์ด ์์ด๋ค์ 3๊ฐ๊ฐ ๋ค ์ฐ์์ผ๋ฏ๋ก ์ด๋ป๊ฒ ์ชผ๊ฐ๋ dependency ์ ์ง๊ฐ ๋ถ๊ฐ๋ฅํ๋ค.
๋ฐ๋ผ์ ์ด decomposition ์ not be dependency preserving ์ด๋ค.
2. 3NF (Third Normal Form)
- 3NF๋ ์กฐ๊ธ ๋ ์ํ๋ ํํ์ normal form์ด๋ค.
- a -> b๊ฐ trivial ํ๋ค
- a๊ฐ R์ superkey์ด๋ค.
- b-a ์ ์๋ attribute๊ฐ R์ candidate key์ ํฌํจ์ด ๋๋ค.
์ด ์ ์ค ํ๋ ๋ง์กฑ์ํค๋ฉด 3NF!
dept_advisor(s_ID, i_ID, department_name)
i_id -> dept_name
s_id, dept_name -> i_id
๋ค์ ์ด๊ฑธ ๋ณด์.
s_id, dept_name์ superkey์ด๋ค.
i_id๋ superkey๋ ์๋์ง๋ง,
{dept_name} - {i_id} = {dept_name} ์ด๊ณ dept_name์ candidate key์ ํฌํจ๋๋ฏ๋ก
3NF๋ ๋ง์กฑํ๊ฒ ๋๋ค.
Redundancy in 3NF
- repetition of information
- need to use null values
Comparison of BCNF and 3NF
- 3NF๋ ์ธ์ ๋ lossless ํ๊ณ dependency preservingํ 3NF design์ ์ป์ ์ ์๋ค.
- ๊ทธ๋ฌ๋ ๋ฐ์ดํฐ ๊ฐ์ ์๋ฏธ์๋ ๊ด๊ณ ์ค ์ผ๋ถ๋ฅผ ๋ํ๋ด๋ ค๋ฉด null ๊ฐ์ ์ฌ์ฉํด์ผ ํ ์๋ ์๊ณ , ์ ๋ณด์ repetition์ด ์ผ์ด๋๊ธฐ๋ ํ๋ค.
Goals of Normalization
- R ์ด๋ผ๋ relation schema์ F ๋ผ๋ Functional dependencies๊ฐ ์์ ๋, ์ด R์ด "good" form์ธ์ง ํ๋ณํ๊ณ , ์๋๋ผ๋ฉด relation์ decomposeํ๋ค.
- ์ด ๋ ๊ฐ relation schema๋ good form์ด์ด์ผ ํ๋ฉฐ, lossless decomposition์ด์ด์ผ ํ๊ณ , dependency preserving ํด์ผ ํ๋ค.
3. Higher Normal Form
4NF(Fourth Normal Form)
2. Funtional Dependency Theory
1. Closure of a set of functional dependency
- F๋ก๋ถํฐ ์ถ๋ก ๋ ์ ์๋ ๋ชจ๋ functional dependencies๋ฅผ closure๋ผ๊ณ ํ๋ค.
Armstrong's Axioms
- Reflexive rule : b โ a ์ด๋ฉด a->b
- Augmentation rule : a->b์ด๋ฉด ra -> rb
- Transitivity rule : a->b์ด๊ณ b->c์ด๋ฉด a->c
Sound : ๋์ถํด๋ธ ๋ฌธ์ฅ์ด ์ ๋ถ true์ธ ๊ฒฝ์ฐ(๋ฐ๋กX ์ ๋ถ๋ค ์ฐพ์ ๊ฑด ์๋ ์ ์์)
Complete : true์ธ ๋ฌธ์ฅ์ ์ ๋ถ ๋์ถํ ์ ์๋ ๊ฒฝ์ฐ (์ ๋ถ๋ค ์ฐพ์์ง๋ง ์๋ ๊ฒ๋ ์์ฌ์์ ์ ์์)
Addition rules
- Union Rule : a->b , a->r ์ด๋ฉด a->br
- Decomposition rule : a->br ์ด๋ฉด a->b ๊ทธ๋ฆฌ๊ณ a->r
- Pseudotransitivity rule : a->b์ด๊ณ rb->q ์ด๋ฉด ar -> q ์ด๋ค.
์๋ค๋ ์์คํธ๋กฑ ์ด์ฉ๊ตฌ์์ ์ถ๋ก ํ ์ ์์
F+ ๋ฅผ ๊ตฌํ๋ ๋ฐฉ๋ฒ
F์์ ์์ํด์ reflexivity, augmentation rules, combined using transitivy ๊ณผ์ ์ ๊ฑฐ์ณ F+์ ์ถ๊ฐํด๋๊ฐ๋ค.
2. Closure of Attribute Sets
Attribute sets์ closure ๊ตฌํ๊ธฐ
result := a;
while (changes to result) do
for each b->r in F do
begin
if b โ result then result := result โช r
end
Usees of Attribute Closure
- Testing for superkey
-> a๊ฐ superkey๋ผ๋ฉด a+๋ R ์ ๋ชจ๋ attributes๋ฅผ ๊ฐ์ง๊ณ ์์ด์ผ ํ๋ค. - Testing functional dependencies
-> fd a->b๊ฐ holdํ์ง ๋ณด๋ ค๋ฉด b โ a+๋ฅผ ๋ง์กฑํ๋์ง ํ์ธํด๋ณด๋ฉด ๋๋ค.
-> ๋งค์ฐ ์ฝ๊ณ ๋น ๋ฅด๊ณ ์ ์ฉํ ๋ฐฉ๋ฒ. - computing closure of F
-> rโR์ด ์์ ๋ closure r+๋ฅผ ์ฐพ๊ณ S โ r+์ ๋ํด r->S๋ฅผ output์ผ๋ก ๋ด๋ณด๋ธ๋ค.
3. Canonical Cover
- relation schema์ functional dependency F๊ฐ ์๋ค๊ณ ํ์. ์ฌ์ฉ์๊ฐ relation ์ ์ ๋ฐ์ดํธ ํ ๋๋ง๋ค ๋๋น ์์คํ ์ ์ด ์ฌํญ์ด F์ ๋ชจ๋ dependency๋ฅผ ์ถฉ์กฑํ๋์ง ํ์ธํด์ผ ํ๋ค.
- ๋ง์ฝ violateํ๋ค๋ฉด update๋ roll back๋์ด์ผ ํ๋ค.
- ์ฐ๋ฆฌ๋ ์ฃผ์ด์ง set์ ๊ฐ์ closure๋ฅผ ๊ฐ์ง, ๋ ๋จ์ํ ๋ functional dependency๋ฅผ ๊ฒ์ฌํจ์ผ๋ก์ ๋๋ ๋น์ฉ์ ์ค์ผ ์ ์๋ค.
- ์ด ๋จ์ํ ๋ functional dependency ๋ฅผ canonical cover๋ผ๊ณ ๋ถ๋ฅธ๋ค
Extraneous Attributes
: ์์ด๋ ๋ฌด๋ฐฉํ functional dependency์ attribute
-> ์ด๊ฑธ ๋ค ์์ ์ผ canonical cover๋ฅผ ์ฐพ์ ์ ์์
- remove left side -> stronger
AB -> C์์ A->C๋ก ์ค์ด๋ฉด ์ข ๋ ๊ฐ๋ ฅํด์ง. A๋ง ์์ด๋ C๋ฅผ ์ ์ ์์
- A โ a ์ด๊ณ F ๊ฐ ๋ ผ๋ฆฌ์ ์ผ๋ก (F - {a-b}) โช {(a - A)->b}๋ฅผ ์ถ๋ก ํ ์ ์์ ๊ฒฝ์ฐ A๋ extraneous ํ๋ค.
- remove right side -> weaker
- A โ b ์ด๊ณ F ๊ฐ ๋
ผ๋ฆฌ์ ์ผ๋ก (F - {a-b}) โช {(a->(b-A)}๋ฅผ ์ถ๋ก ํ ์ ์์ ๊ฒฝ์ฐ B๋ extraneous ํ๋ค.
AB -> CD์์ AB->C๋ก ์ค์ด๋ฉด ์ฝํด์ง. AB๊ฐ ์์ด๋ D๋ฅผ ์ ์ ์์
Testing Extraneous
A โ b ์ผ ๋ extraneous ์ธ๊ฐ
- F'= (F - {a-b}) โช {(a - A)->b}
- F' ์์ a+๊ฐ A๋ฅผ ํฌํจํ๋์ง ํ์ธํด๋ณด๊ณ ๊ทธ๋ ๋ค๋ฉด A ๋ extraneous ํ๋ค.
A โ a ์ผ ๋ extraneous ์ธ๊ฐ
- r = a - {A} ๋ผ๊ณ ํ์. r->B๊ฐ F๋ก๋ถํฐ ์ถ๋ก ๊ฐ๋ฅํ์ง ์ฒดํฌํ๋ค.
- r+ ๋ฅผ ๊ณ์ฐํด์ ์ด๊ฒ b์ ๋ชจ๋ attribute๋ฅผ ํฌํจํ๋ค๋ฉด A๋ extraneous ํ๋ค.
์๋ฅผ ๋ค์ด๋ณด์
F={AB->CD, A->E, E->C}
C๋ฅผ Check ํด๋ด ์๋ค.F' = {AB->D, A->E, E->C}
์ด๊ณ ์ด CLOUSER๋ ABCDE์ด๋ฏ๋ก CD๋ฅผ ํฌํจํ๋ค.
๋ฐ๋ผ์ C๋ EXTRANEOUS ํ๋ค.์ฆ, C๊ฐ ์์ด๋ ๋ค ์ ์ถ๊ฐ ๊ฐ๋ฅํด์ ํ์ ์๋ ๊ฒ.
Canonical Cover
F์ canonical cover๋ Fc์ด๋ค.
- F๋ Fc์ ์๋ ๋ชจ๋ dependency๋ฅผ ์ถ๋ก ํด๋ผ ์ ์๋ค
- Fc๋ F์ ์๋ ๋ชจ๋ dependency๋ฅผ ์ถ๋ก ํด ๋ผ ์ ์๋ฐ.
- Fc์๋ extraneous attribute๊ฐ ์์ผ๋ฉด ์๋๋ค.
- Fc์ functional dependency์ ์ผ์ชฝ side๋ uniqueํด์ผ ํ๋ค.
a1-> b1 , a2->b2 ์ผ ๋ a1 = a2 ์ด๋ฉด ์๋จ.
canonical cover๋ฅผ ๊ตฌํด๋ณด์
- F์ ์๋ dependency๋ฅผ union rule์ ํ์ฉํด a1->b1, a1->b2 ๋ฅผ a1->b1b2 ๊ผด๋ก ๋ฐ๊ฟ์ค๋ค.
- a->b ์ ์๋ extraneous attribute๋ฅผ ์ฐพ์ ์์ ์ค๋ค.
- ๋ฐ๋ณตํ๋ค.
4. Dependency Preservation
ํ๋์ relation ์์์ FD๊ฐ ํ์ธ ๊ฐ๋ฅํ๋ฉด DEPENDENCY Preserving ํ ๊ฒ.
*(F1 U F2 U F3 ...U Fn) + = F+
์์ ์ ์๋๋ก dp๋ฅผ ํ ์คํธ ํ๋ ค๋ฉด ์ง์ํจ์์ ์๊ฐ์ด ์์๋๋ค.
(๋ง์ฝ preserveํ์ง ์๋๋ค๋ฉด violation of functional dependency ๋ฅผ ํ์ธํ๊ธฐ ์ํด join์ ๊ณ์ ํด์ผํจ)๊ทธ๋ฌ๋ restrinction์ ๋ชจ๋ functional dependency๋ ์ค์ง ํ๋์ relation schema์ attribute๋ฅผ ํฌํจํ๊ณ ์์ผ๋ฏ๋ก ํ๋์ relation์ ํ์ธํจ์ผ๋ก์ dependency check๋ฅผ ํ ์ ์๋ค. (๋คํญ์๊ฐ์ ๊ฐ๋ฅ)
Testing for Dependency Preservation
result = a
repeat
for each Ri in the decomposition
t = (result โฉ Ri)+ โฉ Ri
result = result U t
until (result does not change)
๋ง์ฝ result๊ฐ b์ ๋ชจ๋ attribute๋ฅผ ๊ฐ์ง๊ณ ใ ฃใ ใ ๋ค๋ฉด functional dependency a->b๋ preservedํ ๊ฒ.
3. Algorithm for Decomposition Using Functional Dependencies
2. Testing for BCNF
a->b๊ฐ violation of BCNF๋ฅผ ์ผ๊ธฐํ๋์ง ํ์ธํ๊ธฐ ์ํด์๋
- a+ ๊ณ์ฐ
- ์ด a+๊ฐ R์ ๋ชจ๋ attribute๋ฅผ ํฌํจํ๋์ง, ์ฆ R์ superkey์ธ์ง ํ์ธ
superkey๋ผ๋ฉด BCNF๋ฅผ ๋ง์กฑํ๋ ๊ฒ์ด๋ค.
Testing decomposition for BCNF
- ๊ฐ๊ฐ์ relation์ ๋ํด์ fd๋ฅผ ์ฐพ์๋ด
- ๊ฐ leftside์ attribute์ closure๊ฐ decomposition relation์ ๋ชจ๋ attribute๋ฅผ ๊ฐ๊ณ ์๋์ง ํ์ธ.
result := {R};
done := fasle;
compute F+;
while(not done) do
if(BCNF๊ฐ ์๋ schema Ri๊ฐ result์ ์์ ๊ฒฝ์ฐ)
then begin
nontribial functional dependency, Ri๋ฅผ hold, F+์ ์ํ์ง ์์ a->b, a โฉ b = โฎ์ผ ๋
result := (result - Ri) โช (Ri - b) โช (a,b);
end
end done := true;
4. Third Normal Form
BCNF๋ dependency preserving์ ์ ์งํ์ง ๋ชปํ๋ค.
efficient checking for FD violation on updates is important
๋ฐ๋ผ์ weaker normal form ์ธ 3NF ์ฌ์ฉ
์กฐ๊ธ์ ์ค๋ณต ํ์ฉ
join ์์ด fd ํ์ธ ๊ฐ๋ฅ
ํญ์ lossless-join,, dependency-preserving decomposition
๋์ถฉ NP hard ๋ฌธ์ ์.
5. Design Goal
๋ชฉํ๋ BCNF, Lossless join, Dependency preservation
๋ง์กฑ ๋ชปํ๋ค๋ฉด ๋ ์ค ํ๋ ํฌ๊ธฐ
dependency preservation , BCNF
๋์ 3NF ์ด๋ค.
sql์์๋ ๊ณ ๋ คํ์ง ์๊ธฐ ๋๋ฌธ์ ์ค๊ณํ ๋ ๊ณ ๋ คํด์ผ ํจ.
4. Multivalued Dependencies
-> a ์ ๋ฐ๋ผ b์ ๊ฐ์ด ์ ํด์ง๊ธด ํ๋๋ฐ, b๊ฐ multivalue์ธ ๊ฒฝ์ฐ๋ฅผ multivalued dependency๋ผ๊ณ ํจ
์ด๋ฅผ
a->->b
๋ก ํ๊ธฐํจ.
Use of Multivalued Dependency
multialed dependency๋ ๋๊ฐ์ง ๋ฐฉ๋ฒ์ผ๋ก ์ด๋ค.
- relation์์ ์ฃผ์ด์ง fdp, mdp ํ์ legalํ์ง ๊ฒฐ์ ํ๋ค
- legal relation ํ์์ constraints๋ฅผ ์ง์ ํ๋ค.
mdp ์ ์ ์์ ๋ฐ๋ฅด๋ฉด ์ฐ๋ฆฌ๋
a->b์ด๋ฉด a->->b
๋ผ๋ ๊ท์น์ ๋์ถํ ์ ์๋ค. ์ฆ ๋ชจ๋ fdp๋ mdp์ด๋ค.
4NF
๋ค์๊ณผ ๊ฐ์ ์กฐ๊ฑด ์ค ํ๋ ์ด์์ ๋ง์กฑํ๋ฉด ๋จ
- a->->b is trivial
- a is superke for schema R
4NF์ด๋ฉด BCNF์ด๊ธฐ๋ ํจ.
First Normal Form
- ๋ชจ๋ attributes์ domain ์ด atomicํด์ผ ํจ.
Overall DB Design Process
- ER Diagram์ table๋ก ๋ณํํ ๋ schema R์ด ์์ฑ๋ ์ ์๋ค.
- R์ ๋ชจ๋ attribute๋ฅผ ํฌํจํ๋ single relation์ nomalization์ ๊ฒฐ๊ณผ์ผ ์ ์๋ฐ.
- R๋ ์ฐ๋ฆฌ๊ฐ test/conver normalformํ๋ ad hoc design์ relation์ ๊ฒฐ๊ณผ์ผ ์ ใ ฃใ ใ ๋ฐ
๋ญ๋ผ๋๊ฑฐใ ใ
ER model and Normalization
Denormalization for Performance
performance ๋๋ฌธ์ non-normalized schema๋ฅผ ์ฌ์ฉํ๊ณ ์ถ์ ์ ์์.
๋์ 1. ๊ฑ deormalized relation ์ฌ์ฉ
- faster lookup ๊ฐ๋ฅ
- extra space and execution time for updates ํ์
- extra coding work for programmer and possibility of error in extra code
๋์ 2. view ์ฌ์ฉ
-> ์ฅ์ ๊ณผ ๋จ์ ์์ ๊ฐ์. ๊ทธ๋ฌ๋ ์ถ๊ฐ ์ฝ๋ฉ ์์ ๊ณผ ์๋ฌ ๋ฐ์์ ํผํ ์ ์์
'๐ก๐ธ๐ธ๐ถ5: ๐ฆ๐๐๐๐ถ ๐ฐ๐๐พ๐ > Database(COSE371)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐ์ดํฐ๋ฒ ์ด์ค] CH6. Database Design Using the E-R Model (0) | 2021.12.14 |
---|---|
[๋ฐ์ดํฐ๋ฒ ์ด์ค] CH4. Intermediate SQL (0) | 2021.10.26 |
[๋ฐ์ดํฐ๋ฒ ์ด์ค] CH3. Introduction to SQL (0) | 2021.10.10 |
[๋ฐ์ดํฐ๋ฒ ์ด์ค] CH2. Introduction to Relation Model(1) (0) | 2021.10.10 |
[๋ฐ์ดํฐ๋ฒ ์ด์ค] CH1. Introduction (0) | 2021.10.10 |