100
Chuaån hoùa CSDL Caùc vaán ñeà trong caùc baûng quan heä Ví duï 1 : Inventory part warehouse quantity warehouse-address

Chuaån hoùa CSDL

  • Upload
    nowles

  • View
    22

  • Download
    1

Embed Size (px)

DESCRIPTION

Chuaån hoùa CSDL. Caùc vaán ñeà trong caùc baûng quan heä Ví duï 1 :. part. warehouse. quantity. Inventory. warehouse-address. Chuaån hoùa CSDL. Caùc vaán ñeà trong caùc baûng quan heä. Inventory. partwarehousequantitywarehouse-address. bolt King Bros. 20 Long St. 20 - PowerPoint PPT Presentation

Citation preview

Page 1: Chuaån hoùa CSDL

Chuaån hoùa CSDLChuaån hoùa CSDL

Caùc vaán ñeà trong caùc baûng quan heä Ví duï 1:

Caùc vaán ñeà trong caùc baûng quan heä Ví duï 1:

Inventory

part warehouse quantity

warehouse-address

Page 2: Chuaån hoùa CSDL

Chuaån hoùa CSDLChuaån hoùa CSDL

Caùc vaán ñeà trong caùc baûng quan heä

Caùc vaán ñeà trong caùc baûng quan heä

part warehouse quantity warehouse-address

Inventory

bolt King Bros. 20 Long St. 20

nut King Bros. 40 Long St. 20

screw King Bros. 10 Long St. 20

NULL Lucid Ltd. NULL Compton Pl. 10

Page 3: Chuaån hoùa CSDL

Chuaån hoùa CSDLChuaån hoùa CSDL

Caùc vaán ñeà trong caùc baûng quan heä INVENTORY table

– Ñòa chæ nhaø kho laäp laïi trong nhieàu boä

chöùa maët haøng coù taïi nhaø kho ñoù

– Neáu ñòa chæ moät nhaø kho thay ñoåi, caùc

boä löu caùc maët haøng chöùa trong nhaø kho

naøy ñeàu phaûi thay ñoåi theo

– Neáu coù thôøi ñieåm naøo ñoù moät nhaø kho

khoâng coù maët haøng naøo thì khoâng coù boä

ñeå löu ñòa chæ nhaø kho, hoaëc caàn phaûi coù

1 boä maø thuoäc tính veà maët haøng vaø soá

löôïng phaûi NULL

Caùc vaán ñeà trong caùc baûng quan heä INVENTORY table

– Ñòa chæ nhaø kho laäp laïi trong nhieàu boä

chöùa maët haøng coù taïi nhaø kho ñoù

– Neáu ñòa chæ moät nhaø kho thay ñoåi, caùc

boä löu caùc maët haøng chöùa trong nhaø kho

naøy ñeàu phaûi thay ñoåi theo

– Neáu coù thôøi ñieåm naøo ñoù moät nhaø kho

khoâng coù maët haøng naøo thì khoâng coù boä

ñeå löu ñòa chæ nhaø kho, hoaëc caàn phaûi coù

1 boä maø thuoäc tính veà maët haøng vaø soá

löôïng phaûi NULL

Page 4: Chuaån hoùa CSDL

Chuaån hoùa CSDLChuaån hoùa CSDL

Caùc vaán ñeà trong caùc baûng quan heä

Ví duï 2:

Caùc vaán ñeà trong caùc baûng quan heä

Ví duï 2:Institution

Employee DepartmentLocation

Peter ITACS 15.101

Paul ITACS 15.101

Kate ITACS 15.104

Mike Math 10.001

Jane Math 10.008

NULL Physics 15.78

Page 5: Chuaån hoùa CSDL

Chuaån hoùa CSDLChuaån hoùa CSDL

Caùc vaán ñeà trong caùc baûng quan heä

Institution table

– Vò trí cuûa phoøng ban laäp laïi trong moïi boä

chöùa nhaân vieân cuûa phoøng ban ñoù

– Neáu vò trí phoøng ban thay ñoåi thì moïi boä löu

nhaân vieân cuûa phoøng ban ñoù phaûi ñöôïc

caäp nhaät

– Neáu moät phoøng ban chöa coù nhaân vieân thì

khoâng coù boä ñeå löu vò trí cuûa phoøng ban

hoaëc coù boä maø moät soá thuoäc tính phaûi

laø NULL

Caùc vaán ñeà trong caùc baûng quan heä

Institution table

– Vò trí cuûa phoøng ban laäp laïi trong moïi boä

chöùa nhaân vieân cuûa phoøng ban ñoù

– Neáu vò trí phoøng ban thay ñoåi thì moïi boä löu

nhaân vieân cuûa phoøng ban ñoù phaûi ñöôïc

caäp nhaät

– Neáu moät phoøng ban chöa coù nhaân vieân thì

khoâng coù boä ñeå löu vò trí cuûa phoøng ban

hoaëc coù boä maø moät soá thuoäc tính phaûi

laø NULL

Page 6: Chuaån hoùa CSDL

Chuaån hoùa CSDLChuaån hoùa CSDL

Caùc vaán ñeà trong caùc baûng quan heä

Ví duï 3:Insertion test

Caùc vaán ñeà trong caùc baûng quan heä

Ví duï 3:Insertion test

Employee

emp# carchild

100 TRS200 John

100 TRS200 Kate

100 SWG100 John

100 SWG100 Kate

100 ??? Peter

Page 7: Chuaån hoùa CSDL

Chuaån hoùa CSDLChuaån hoùa CSDL

Caùc vaán ñeà trong caùc baûng quan heä Employee table

– Vieäc ñaêng kyù soá xe phaûi ñöôïc laäp laïi cho

töøng ngöôøi con

– Teân cuûa moät ngöôøi con caàn ñöôïc laäp laïi

vôùi moãi soá ñaêng kyù xe (buøng noå soá

boä !)

– Do söï dö thöøa döõ lieäu, döõ lieäu coù theå

trôû neân maát tính nhaát quaùn

– Neáu 1 ngöôøi khoâng coù con (hoaëc xe) thì trò

thuoäc tính con (hoaëc xe) caàn phaûi ñeå NULL

Caùc vaán ñeà trong caùc baûng quan heä Employee table

– Vieäc ñaêng kyù soá xe phaûi ñöôïc laäp laïi cho

töøng ngöôøi con

– Teân cuûa moät ngöôøi con caàn ñöôïc laäp laïi

vôùi moãi soá ñaêng kyù xe (buøng noå soá

boä !)

– Do söï dö thöøa döõ lieäu, döõ lieäu coù theå

trôû neân maát tính nhaát quaùn

– Neáu 1 ngöôøi khoâng coù con (hoaëc xe) thì trò

thuoäc tính con (hoaëc xe) caàn phaûi ñeå NULL

Page 8: Chuaån hoùa CSDL

Chuaån hoùa CSDLChuaån hoùa CSDL

Caùc vaán ñeà trong caùc baûng quan heä

Ví duï 4:

Keát 2 baûng thoâng qua thuoäc tính city

Caùc vaán ñeà trong caùc baûng quan heä

Ví duï 4:

Keát 2 baûng thoâng qua thuoäc tính citySupplier

s# sname salary city

10 Peter 100K Paris

20 Joan 120K Rome

Company

cname city

Golden Bolts Paris

Red Nuts Rome

Green Tomatoes Rome

Page 9: Chuaån hoùa CSDL

Chuaån hoùa CSDLChuaån hoùa CSDL

Caùc vaán ñeà trong caùc baûng quan heä

Nhaø cung caáp 'Peter' soáng vaø laøm vieäc cho moät coâng ty ôû 'Paris‘.

Nhaø cung caáp 'Joan' soáng taïi 'Rome' vaø laøm vieäc cho coâng ty 'Green Tomatoes' nhöng khoâng laøm vieäc

cho coâng ty ‘Red Nuts'

Caùc vaán ñeà trong caùc baûng quan heä

Nhaø cung caáp 'Peter' soáng vaø laøm vieäc cho moät coâng ty ôû 'Paris‘.

Nhaø cung caáp 'Joan' soáng taïi 'Rome' vaø laøm vieäc cho coâng ty 'Green Tomatoes' nhöng khoâng laøm vieäc

cho coâng ty ‘Red Nuts'

Supplier JOIN Company

s# sname salary city cname

10 Peter 100K Paris Golden Bolts

20 Joan 120K Rome Red Nuts

20 Joan 120K Rome Green Tomatoes?

Page 10: Chuaån hoùa CSDL

Chuaån hoùa CSDLChuaån hoùa CSDL

Caùc vaán ñeà trong caùc baûng quan heä

Baûng Supplier vaø Company

– Keát 2 baûng thoâng qua thuoäc tính city coù theå sinh ra caùc boä bieåu dieãn thoâng tin sai

Caùc vaán ñeà trong caùc baûng quan heä

Baûng Supplier vaø Company

– Keát 2 baûng thoâng qua thuoäc tính city coù theå sinh ra caùc boä bieåu dieãn thoâng tin sai

Supplier JOIN Company

s# sname salary city cname

10 Peter 100K Paris Golden Bolts

20 Joan 120K Rome Red Nuts

20 Joan 120K Rome Green Tomatoes

Page 11: Chuaån hoùa CSDL

Chuaån hoùa CSDLChuaån hoùa CSDL

Söï baát thöôøng cuûa pheùp caäp nhaät (Update anomalies)Söï baát thöôøng cuûa pheùp theâm vaøo

(Insertion anomaly)

Söï baát thöôøng cuûa pheùp caäp nhaät (Update anomalies)Söï baát thöôøng cuûa pheùp theâm vaøo

(Insertion anomaly)Employee

emp# carchild

100 TRS200 John

100 TRS200 Kate

100 SWG100 John

100 SWG100 Kate

100 ??? Peter

Vieäc theâm 1 haøng keùo theo vieäc theâm caùc haøng khaùc (vaán ñeà buøng noå soá haøng)

Vieäc theâm 1 haøng taïo ra moät soá thuoäc tính NULL

Page 12: Chuaån hoùa CSDL

Chuaån hoùa CSDLChuaån hoùa CSDL

Söï baát thöôøng cuûa pheùp caäp nhaät

Söï baát thöôøng cuûa pheùp loaïi boû (Deletion anomaly)

Söï baát thöôøng cuûa pheùp caäp nhaät

Söï baát thöôøng cuûa pheùp loaïi boû (Deletion anomaly) Institution

Employee Department Location

Peter ITACS 15.101

Paul ITACS 15.101

Kate ITACS 15.104

Mike Math 10.001

Jane Math 10.008

Vieäc loaïi moät

haøng daãn ñeán

vieäc maát thoâng

tin

Vieäc xoùa boû 1

thoâng tin daãn

ñeán vieäc loaïi

nhieàu hôn 1 haøng

Page 13: Chuaån hoùa CSDL

Chuaån hoùa CSDLChuaån hoùa CSDL

Söï baát thöôøng cuûa pheùp caäp nhaät

Söï baát thöôøng cuûa pheùp söûa ñoåi (Modification anomaly)

Söï baát thöôøng cuûa pheùp caäp nhaät

Söï baát thöôøng cuûa pheùp söûa ñoåi (Modification anomaly)

Employee

emp# carchild

100 TRS200 John

100 TRS200 Kate

100 SWG100 John

100 SWG100 Kate

Vieäc söûa ñoåi

moät haøng ñoøi

hoûi vieäc söûa

ñoåi ôû caû moät

soá haøng khaùc

Page 14: Chuaån hoùa CSDL

Chuaån hoùa CSDLChuaån hoùa CSDL

Nguyeân taéc chæ ñaïo trong thieát keá CSDL

Thieát keá caùc baûng quan heä sao cho vieäc giaûi thích yù nghóa cuûa noù ñöôïc deã daøng. Khoâng keát hôïp nhieàu thuoäc tính khoâng lieân quan trong cuøng moät baûng

Thieát keá caùc baûng quan heä sao cho traùnh ñöôïc nhöõng söï baát thöôøng trong vieäc theâm, bôùt hay söûa ñoåi caùc boä

Thieát keá caùc baûng quan heä sao cho soá thuoäc tính coù theå NULL laø toái thieåu

Nguyeân taéc chæ ñaïo trong thieát keá CSDL

Thieát keá caùc baûng quan heä sao cho vieäc giaûi thích yù nghóa cuûa noù ñöôïc deã daøng. Khoâng keát hôïp nhieàu thuoäc tính khoâng lieân quan trong cuøng moät baûng

Thieát keá caùc baûng quan heä sao cho traùnh ñöôïc nhöõng söï baát thöôøng trong vieäc theâm, bôùt hay söûa ñoåi caùc boä

Thieát keá caùc baûng quan heä sao cho soá thuoäc tính coù theå NULL laø toái thieåu

Page 15: Chuaån hoùa CSDL

Chuaån hoùa CSDLChuaån hoùa CSDL

Nguyeân taéc chæ ñaïo trong thieát keá CSDL

Thieát keá caùc baûng quan heä sao

cho chuùng coù theå ñöôïc keát bôûi

caùc ñieàu kieän baèng nhau treân

caùc thuoäc tính khoùa chính hoaëc

khoùa ngoaïi, maø khoâng sinh ra caùc

boä khoâng coù trong thöïc teá

Nguyeân taéc chæ ñaïo trong thieát keá CSDL

Thieát keá caùc baûng quan heä sao

cho chuùng coù theå ñöôïc keát bôûi

caùc ñieàu kieän baèng nhau treân

caùc thuoäc tính khoùa chính hoaëc

khoùa ngoaïi, maø khoâng sinh ra caùc

boä khoâng coù trong thöïc teá

Page 16: Chuaån hoùa CSDL

Chuaån hoùa CSDLChuaån hoùa CSDL

Phuï thuoäc haøm (Functional dependency-FD)

Cho löôïc ñoà quan heä R = ( A1, ..., An) vaø

2 taäp X, Y khaùc roãng laø 2 taäp con cuûa

taäp thuoäc tính cuûa R.

FD X -> Y (ñoïc laø: "X xaùc ñònh haøm Y" )

laø ñuùng trong R neáu, vôùi moïi theå

hieän r cuûa R, khoâng coù hai haøng coù

truøng caùc trò treân taäp thuoäc tính X

maø coù trò khaùc nhau treân moät hoaëc

hôn caùc thuoäc tính trong taäp Y

Phuï thuoäc haøm (Functional dependency-FD)

Cho löôïc ñoà quan heä R = ( A1, ..., An) vaø

2 taäp X, Y khaùc roãng laø 2 taäp con cuûa

taäp thuoäc tính cuûa R.

FD X -> Y (ñoïc laø: "X xaùc ñònh haøm Y" )

laø ñuùng trong R neáu, vôùi moïi theå

hieän r cuûa R, khoâng coù hai haøng coù

truøng caùc trò treân taäp thuoäc tính X

maø coù trò khaùc nhau treân moät hoaëc

hôn caùc thuoäc tính trong taäp Y

Page 17: Chuaån hoùa CSDL

Chuaån hoùa CSDLChuaån hoùa CSDL

Phuï thuoäc haøm Ví duï:

EMPLOYEE( e#,ename, dept_name, dept_addr, class )

Vôùi X = { dept_name }, Y= { dept_addr },

thì FD X -> Y laø ñuùng trong EMPLOYEE

Teân phoøng ban xaùc ñònh haøm ñòa chæ cuûa phoøng ban, hoaëc, 1 phoøng ban coù duy nhaát 1 ñòa chæ

Phuï thuoäc haøm Ví duï:

EMPLOYEE( e#,ename, dept_name, dept_addr, class )

Vôùi X = { dept_name }, Y= { dept_addr },

thì FD X -> Y laø ñuùng trong EMPLOYEE

Teân phoøng ban xaùc ñònh haøm ñòa chæ cuûa phoøng ban, hoaëc, 1 phoøng ban coù duy nhaát 1 ñòa chæ

Page 18: Chuaån hoùa CSDL

Chuaån hoùa CSDLChuaån hoùa CSDL

• Phuï thuoäc haøm• Phuï thuoäc haøm

e# ename dept_name dept_addr class

10 Peter Math G16 2nd20 Joan CS G15 1st30 Mike CS G15 1st40 Kate CS G15 1st50 Peter Law G20 2nd60 Albert Physics G20 1st

Employee

e# -> ename Phụ thuộc hàm tầm thường, không bao giờ bị vi phạm

Page 19: Chuaån hoùa CSDL

Chuaån hoùa CSDLChuaån hoùa CSDL

• Phuï thuoäc haøm• Phuï thuoäc haøm

e# ename dept_name dept_addr class

10 Peter Math G16 2nd20 Joan CS G15 1st30 Mike CS G15 1st40 Kate CS G15 1st50 Peter Law G20 2nd60 Albert Physics G20 1st

Employee

e# -> dept_name

Page 20: Chuaån hoùa CSDL

Chuaån hoùa CSDLChuaån hoùa CSDL

• Phuï thuoäc haøm• Phuï thuoäc haøm

e# ename dept_name dept_addr class

10 Peter Math G16 2nd20 Joan CS G15 1st30 Mike CS G15 1st40 Kate CS G15 1st50 Peter Law G20 2nd60 Albert Physics G20 1st

Employee

e# -> dept_addr

Page 21: Chuaån hoùa CSDL

Chuaån hoùa CSDLChuaån hoùa CSDL

• Phuï thuoäc haøm • Phuï thuoäc haøm

e# ename dept_name dept_addr class

10 Peter Math G16 2nd20 Joan CS G15 1st30 Mike CS G15 1st40 Kate CS G15 1st50 Peter Law G20 2nd60 Albert Physics G20 1st

Employee

e# -> class

Page 22: Chuaån hoùa CSDL

Chuaån hoùa CSDLChuaån hoùa CSDL

• Phuï thuoäc haøm• Phuï thuoäc haøm

e# ename dept_name dept_addr class

10 Peter Math G16 2nd20 Joan CS G15 1st30 Mike CS G15 1st40 Kate CS G15 1st50 Peter Law G20 2nd60 Albert Physics G20 1st

Employee

dept_name -> class

Page 23: Chuaån hoùa CSDL

Chuaån hoùa CSDLChuaån hoùa CSDL

• Phuï thuoäc haøm• Phuï thuoäc haøm

e# ename dept_name dept_addr class

10 Peter Math G16 2nd20 Joan CS G15 1st30 Mike CS G15 1st40 Kate CS G15 1st50 Peter Law G20 2nd60 Albert Physics G20 1st

Employee

e# -> ename, e# -> dept_name,e# -> dept_addr,e# -> class,

minimal key -> any other attribute

Page 24: Chuaån hoùa CSDL

Chuaån hoùa CSDLChuaån hoùa CSDL

• Phuï thuoäc haøm• Phuï thuoäc haøm

e# ename dept_name dept_addr class

10 Peter Math G16 2nd50 Peter Law G20 2nd 20 Joan CS G15 1st30 Mike CS G15 1st40 Kate CS G15 1st60 Albert Physics G20 1st

Employee

e# -> ename, but ename -/> e#e# -> dept_name, but dept_name -/> e#e# -> dept_addr,e# -> class,dept_name -> class

Page 25: Chuaån hoùa CSDL

Chuaån hoùa CSDLChuaån hoùa CSDL

Phuï thuoäc haøm

Chuù yù raèng:

– e# -> e#

– class -> class

– e#, ename -> ename

– if (e# -> ename) then (e#, dept_name -> ename)

– if (e# -> ename) and (e# -> dept_name) and

(e# -> dept_addr) then

e# -> ename,dept_name,dept_address

– if (e# -> dept_name) and (dept_name -> class) then

e# -> class

Phuï thuoäc haøm

Chuù yù raèng:

– e# -> e#

– class -> class

– e#, ename -> ename

– if (e# -> ename) then (e#, dept_name -> ename)

– if (e# -> ename) and (e# -> dept_name) and

(e# -> dept_addr) then

e# -> ename,dept_name,dept_address

– if (e# -> dept_name) and (dept_name -> class) then

e# -> class

Page 26: Chuaån hoùa CSDL

Chuaån hoùa CSDLChuaån hoùa CSDL

Tieân ñeà Armstrong

If X Y then X -> Y (reflexivity)

If X -> Y then XZ -> YZ (augmentation)

If X -> Y and Y -> Z then X -> Z

(transitivity)

Tieân ñeà Armstrong

If X Y then X -> Y (reflexivity)

If X -> Y then XZ -> YZ (augmentation)

If X -> Y and Y -> Z then X -> Z

(transitivity)

Taäp tieân ñeà ñaày ñuû vaø toái tieåu

Page 27: Chuaån hoùa CSDL

Chuaån hoùa CSDLChuaån hoùa CSDL

Caùc quy taéc boå sung

If X -> Y and X -> Z then X ->YZ

(union)

If X -> Y and WY -> Z then WX ->Z

(pseudotransitivity)

If X -> Y and Y Z then X -> Z

(decomposition)

Caùc quy taéc boå sung

If X -> Y and X -> Z then X ->YZ

(union)

If X -> Y and WY -> Z then WX ->Z

(pseudotransitivity)

If X -> Y and Y Z then X -> Z

(decomposition)

Page 28: Chuaån hoùa CSDL

Chuaån hoùa CSDLChuaån hoùa CSDL

Daãn xuaát töø caùc phuï thuoäc haøm

Ví duï:

Given F = {A->B, B->C}, is it true that A->C ?

A -> B & B -> C

A -> C

Daãn xuaát töø caùc phuï thuoäc haøm

Ví duï:

Given F = {A->B, B->C}, is it true that A->C ?

A -> B & B -> C

A -> C

transitivity axiom

Page 29: Chuaån hoùa CSDL

Chuaån hoùa CSDLChuaån hoùa CSDL

Daãn xuaát töø caùc phuï thuoäc haømVí duï:

Given F = {A->BC}, is it true that A->B and A->C ?

BC-> B

A->BC & BC-> B

A-> BTöông töï, suy ra A->C

Daãn xuaát töø caùc phuï thuoäc haømVí duï:

Given F = {A->BC}, is it true that A->B and A->C ?

BC-> B

A->BC & BC-> B

A-> BTöông töï, suy ra A->C

transitivity axiom

reflexivity axiom

Page 30: Chuaån hoùa CSDL

Chuaån hoùa CSDLChuaån hoùa CSDL

Daãn xuaát töø caùc phuï thuoäc haøm

Ví duï: Given F = {A->B, A ->C}, is it true that A->BC?

A->B A->C

A->AB & AB->BC

A->BC

Daãn xuaát töø caùc phuï thuoäc haøm

Ví duï: Given F = {A->B, A ->C}, is it true that A->BC?

A->B A->C

A->AB & AB->BC

A->BC

augmentation axiomaugmentation axiom

transitivity axiom

Page 31: Chuaån hoùa CSDL

Chuaån hoùa CSDLChuaån hoùa CSDL

Daãn xuaát töø caùc phuï thuoäc haøm

Ví duï:

Given F = {A->B},

is it true that AC->B?

AC->A

AC->A & A->B

AC->B

Daãn xuaát töø caùc phuï thuoäc haøm

Ví duï:

Given F = {A->B},

is it true that AC->B?

AC->A

AC->A & A->B

AC->B

reflexivity axiom

transistivity axiom

Page 32: Chuaån hoùa CSDL

Chuaån hoùa CSDLChuaån hoùa CSDL

• FD vs. entity• FD vs. entity

sid# name

language

Student

address

sid# -> name

sid# -> address

sid# -/> language

name ? sid#name ? address

Thuộc tính đa trị

Page 33: Chuaån hoùa CSDL

Chuaån hoùa CSDLChuaån hoùa CSDL

• FD vs. relationship• FD vs. relationship

Department Chairperson

cname

dname

building#

manages

title

dname -> cname

cname -> dname

dname -> building# cname -> title

dname -> titlecname -> building#dname, cname -> building#, title

Page 34: Chuaån hoùa CSDL

Chuaån hoùa CSDLChuaån hoùa CSDL

• Functional dependency vs. relationship• Functional dependency vs. relationship

Employee Projectworks-on

e# enamecdate

budgettitle

e# -> ename title -> budget

title -> cdate

e# -> ename, titlee# -> budgete# -> cdate

e# -> title

Page 35: Chuaån hoùa CSDL

Chuaån hoùa CSDLChuaån hoùa CSDL

Daïng chuaån 1 (First Normal Form - 1NF)

Löôïc ñoà quan heä ñaït daïng chuaån 1 neáu moïi

haøng trong baûng quan heä töông öùng coù

cuøng soá thuoäc tính vaø chæ chöùa caùc trò

nguyeân toá, coù nghóa laø khoâng coù söï laäp

laïi caùc thuoäc tính vaø caùc nhoùm trò

Ví duï 1ï: löôïc ñoà quan heä sau khoâng ñaït daïng

chuaån 1

Family

Daïng chuaån 1 (First Normal Form - 1NF)

Löôïc ñoà quan heä ñaït daïng chuaån 1 neáu moïi

haøng trong baûng quan heä töông öùng coù

cuøng soá thuoäc tính vaø chæ chöùa caùc trò

nguyeân toá, coù nghóa laø khoâng coù söï laäp

laïi caùc thuoäc tính vaø caùc nhoùm trò

Ví duï 1ï: löôïc ñoà quan heä sau khoâng ñaït daïng

chuaån 1

Familyperson_name children cars

Peter { Mike Joan}, {PPP777}

Paul {} { KGN004,MN3345}

Page 36: Chuaån hoùa CSDL

Chuaån hoùa CSDLChuaån hoùa CSDL

Khoùa (Keys)

Sieâu khoùa (Superkey)

Sieâu khoùa laø moät taäp con khaùc roãng caùc thuoäc tính cuûa löôïc ñoà quan heä R sao cho vôùi baát kyø 2 boä t1, t2 trong baûng quan heä ñònh

nghóa treân R thì t1 [X] t2 [X]

Löu yù raèng khi X laø sieâu khoùa trong R thì X xaùc ñònh haøm moïi thuoäc tính cuûa R: X -> R

Khoùa toái tieåu (Minimal key)

Khoùa toái tieåu K laø sieâu khoùa keøm theâm tính chaát laø neáu loaïi khoûi K baát kyø thuoäc tính naøo cuõng laøm cho K khoâng coøn laø sieâu khoùa

Khoùa (Keys)

Sieâu khoùa (Superkey)

Sieâu khoùa laø moät taäp con khaùc roãng caùc thuoäc tính cuûa löôïc ñoà quan heä R sao cho vôùi baát kyø 2 boä t1, t2 trong baûng quan heä ñònh

nghóa treân R thì t1 [X] t2 [X]

Löu yù raèng khi X laø sieâu khoùa trong R thì X xaùc ñònh haøm moïi thuoäc tính cuûa R: X -> R

Khoùa toái tieåu (Minimal key)

Khoùa toái tieåu K laø sieâu khoùa keøm theâm tính chaát laø neáu loaïi khoûi K baát kyø thuoäc tính naøo cuõng laøm cho K khoâng coøn laø sieâu khoùa

Khóa dự tuyển là khóa tối tiểu

Page 37: Chuaån hoùa CSDL

Chuaån hoùa CSDLChuaån hoùa CSDL

Khoùa

Khoùa chính (Primary key)

Khoùa chính laø moät khoùa toái tieåu ñöôïc

ngöôøi phaân tích choïn ñeå caøi ñaët

Khoùa döï tuyeån (Candidate key)

Caùc khoùa döï tuyeån laø caùc khoùa toái

tieåu khaùc maø khoâng phaûi laø khoùa

chính

Khoùa

Khoùa chính (Primary key)

Khoùa chính laø moät khoùa toái tieåu ñöôïc

ngöôøi phaân tích choïn ñeå caøi ñaët

Khoùa döï tuyeån (Candidate key)

Caùc khoùa döï tuyeån laø caùc khoùa toái

tieåu khaùc maø khoâng phaûi laø khoùa

chính

Page 38: Chuaån hoùa CSDL

Chuaån hoùa CSDLChuaån hoùa CSDL

Thuoäc tính

Thuoäc tính nguyeân toá (Prime

attribute)

Thuoäc tính nguyeân toá laø moät thuoäc tính

cuûa löôïc ñoà quan heä R maø laø thaønh phaàn

cuûa ít nhaát moät khoùa döï tuyeån

Thuoäc tính khoâng nguyeân toá

(Nonprime attribute)

Thuoäc tính khoâng nguyeân toá laø thuoäc tính

khoâng phaûi laø thuoäc tính nguyeân toá

Thuoäc tính

Thuoäc tính nguyeân toá (Prime

attribute)

Thuoäc tính nguyeân toá laø moät thuoäc tính

cuûa löôïc ñoà quan heä R maø laø thaønh phaàn

cuûa ít nhaát moät khoùa döï tuyeån

Thuoäc tính khoâng nguyeân toá

(Nonprime attribute)

Thuoäc tính khoâng nguyeân toá laø thuoäc tính

khoâng phaûi laø thuoäc tính nguyeân toá

Page 39: Chuaån hoùa CSDL

Chuaån hoùa CSDLChuaån hoùa CSDL

Phuï thuoäc haøm ñaày ñuû (full FD) vaø

phuï thuoäc haøm rieâng phaàn (partial FD)

Phuï thuoäc haøm ñaày ñuû

Phuï thuoäc haøm ñaày ñuû laø phuï thuoäc haøm X -> Y maø neáu loaïi baát kyø thuoäc tính A naøo trong X thì (X-A) not-> Y

Phuï thuoäc haøm rieâng phaàn

Phuï thuoäc haøm rieâng phaàn laø phuï thuoäc haøm maø khoâng phaûi laø phuï thuoäc haøm ñaày ñuû

Phuï thuoäc haøm ñaày ñuû (full FD) vaø

phuï thuoäc haøm rieâng phaàn (partial FD)

Phuï thuoäc haøm ñaày ñuû

Phuï thuoäc haøm ñaày ñuû laø phuï thuoäc haøm X -> Y maø neáu loaïi baát kyø thuoäc tính A naøo trong X thì (X-A) not-> Y

Phuï thuoäc haøm rieâng phaàn

Phuï thuoäc haøm rieâng phaàn laø phuï thuoäc haøm maø khoâng phaûi laø phuï thuoäc haøm ñaày ñuû

Page 40: Chuaån hoùa CSDL

Daïng chuaån 2 (Second Normal Form -2NF)

Löôïc ñoà quan heä ñaït daïng chuaån 2

neáu moïi thuoäc tính khoâng nguyeân

toá A trong R

phuï thuoäc haøm ñaày ñuû vaøo khoùa

chính cuûa R Ví duï 2:

Daïng chuaån 2 (Second Normal Form -2NF)

Löôïc ñoà quan heä ñaït daïng chuaån 2

neáu moïi thuoäc tính khoâng nguyeân

toá A trong R

phuï thuoäc haøm ñaày ñuû vaøo khoùa

chính cuûa R Ví duï 2:

Chuaån hoùa CSDLChuaån hoùa CSDL

part warehouse quantity warehouse-address

Inventory

bolt King Bros. 20 Long St. 20

nut King Bros. 40 Long St. 20

screw King Bros. 10 Long St. 20

NULL Lucid Ltd. NULL Compton Pl. 10

FD: warehouse -> warehouse-addresspart, warehouse -> quantity

Quantity phụ thuộc hàm toàn phần vào khóa, còn ware-add phụ thuộc riêng phần vào khóa

Part,warehouse là khóa

Page 41: Chuaån hoùa CSDL

Chuaån hoùa CSDLChuaån hoùa CSDL

Daïng chuaån 2

INVENTORY (part, warehouse, quantity, warehouse-address)

F= { part, warehouse -> quantity,

warehouse -> warehouse-address }

Khoùa : ???

warehouse -> warehouse-address, part, warehouse -> warehouse-address

Khoùa : part, warehouse

INVENTORY khoâng ñaït 2NF vì coù warehouse-address (thuoäc tính khoâng nguyeân toá) khoâng phuï thuoäc ñaày ñuû vaøo khoùa

Daïng chuaån 2

INVENTORY (part, warehouse, quantity, warehouse-address)

F= { part, warehouse -> quantity,

warehouse -> warehouse-address }

Khoùa : ???

warehouse -> warehouse-address, part, warehouse -> warehouse-address

Khoùa : part, warehouse

INVENTORY khoâng ñaït 2NF vì coù warehouse-address (thuoäc tính khoâng nguyeân toá) khoâng phuï thuoäc ñaày ñuû vaøo khoùa

Page 42: Chuaån hoùa CSDL

Chuaån hoùa CSDLChuaån hoùa CSDL

Daïng chuaån 2

Löôïc ñoà INVENTORY neân ñöôïc phaân

raõ thaønh caùc löôïc ñoà sau:

P ( part, warehouse, quantity ) F = { part, warehouse -> quantity }Khoùa: part, warehouse

W ( warehouse, warehouse-address )F = { warehouse -> warehouse-address }Khoùa: warehouse

Daïng chuaån 2

Löôïc ñoà INVENTORY neân ñöôïc phaân

raõ thaønh caùc löôïc ñoà sau:

P ( part, warehouse, quantity ) F = { part, warehouse -> quantity }Khoùa: part, warehouse

W ( warehouse, warehouse-address )F = { warehouse -> warehouse-address }Khoùa: warehouse

2NF

2NF

Page 43: Chuaån hoùa CSDL

Chuaån hoùa CSDLChuaån hoùa CSDL

Phuï thuoäc haøm baéc caàu (Transitive FD)

Phuï thuoäc haøm X -> Y ñuùng trong R laø

baéc caàu neáu toàn taïi taäp con khaùc roãng

Z cuûa R, Zø khoâng phaûi laø taäp con cuûa

moät khoùa naøo trong R, vaø caùc phuï

thuoäc haøm X->Z vaø Z->Y laø ñuùng trong R

Ñoïc laø: “ Y phuï thuoäc baéc caàu vaøo X

trong löôïc ñoà R” neáu X->Y laø ñuùng trong

R vaø X->Y laø phuï thuoäc haøm baéc caàu

Phuï thuoäc haøm baéc caàu (Transitive FD)

Phuï thuoäc haøm X -> Y ñuùng trong R laø

baéc caàu neáu toàn taïi taäp con khaùc roãng

Z cuûa R, Zø khoâng phaûi laø taäp con cuûa

moät khoùa naøo trong R, vaø caùc phuï

thuoäc haøm X->Z vaø Z->Y laø ñuùng trong R

Ñoïc laø: “ Y phuï thuoäc baéc caàu vaøo X

trong löôïc ñoà R” neáu X->Y laø ñuùng trong

R vaø X->Y laø phuï thuoäc haøm baéc caàu

Page 44: Chuaån hoùa CSDL

Chuaån hoùa CSDLChuaån hoùa CSDL

Daïng chuaån 3 (Third Normal Form - 3NF)

Löôïc ñoà quan heä R ñaït daïng chuaån 3 neáu R ñaït daïng chuaån 2 vaø khoâng coù moät thuoäc tính khoâng nguyeân toá naøo cuûa R phuï thuoäc baéc caàu vaøo khoùa chính cuûa R

Ñònh nghóa khaùc:

Löôïc ñoà quan heä R ñaït 3NF neáu vôùi moïi FD

X -> A ñuùng trong R thì:

(i) X laø sieâu khoùa trong R,

hoaëc

(ii) A laø thuoäc tính nguyeân toá trong R

Daïng chuaån 3 (Third Normal Form - 3NF)

Löôïc ñoà quan heä R ñaït daïng chuaån 3 neáu R ñaït daïng chuaån 2 vaø khoâng coù moät thuoäc tính khoâng nguyeân toá naøo cuûa R phuï thuoäc baéc caàu vaøo khoùa chính cuûa R

Ñònh nghóa khaùc:

Löôïc ñoà quan heä R ñaït 3NF neáu vôùi moïi FD

X -> A ñuùng trong R thì:

(i) X laø sieâu khoùa trong R,

hoaëc

(ii) A laø thuoäc tính nguyeân toá trong R

Page 45: Chuaån hoùa CSDL

Chuaån hoùa CSDLChuaån hoùa CSDL

Daïng chuaån 3Ví duï 3:

SUPPLIER ( s#, sname, cname, city )

F= { s# -> sname,

s# -> cname, cname -> city, s# -> city }

Khoùa : s#

Löôïc ñoà SUPPLIER khoâng ñaït 3NF vì

thuoäc tính city phuï thuoäc baéc caàu

vaøo s#

Daïng chuaån 3Ví duï 3:

SUPPLIER ( s#, sname, cname, city )

F= { s# -> sname,

s# -> cname, cname -> city, s# -> city }

Khoùa : s#

Löôïc ñoà SUPPLIER khoâng ñaït 3NF vì

thuoäc tính city phuï thuoäc baéc caàu

vaøo s#

2NF

Page 46: Chuaån hoùa CSDL

Chuaån hoùa CSDLChuaån hoùa CSDL

Daïng chuaån 3

Löôïc ñoà SUPPLIER neân ñöôïc phaân raõ thaønh caùc löôïc ñoà sau:

S ( s#, sname, cname )F= { s# -> sname, s# -> cname }Khoùa : s#

C ( cname, city )F= { cname -> city }Khoùa : cname

Daïng chuaån 3

Löôïc ñoà SUPPLIER neân ñöôïc phaân raõ thaønh caùc löôïc ñoà sau:

S ( s#, sname, cname )F= { s# -> sname, s# -> cname }Khoùa : s#

C ( cname, city )F= { cname -> city }Khoùa : cname

3NF

3NF

Page 47: Chuaån hoùa CSDL

Chuaån hoùa CSDLChuaån hoùa CSDLDaïng chuaån 3

Ví duï 4:

LOCATION ( city, street, zip-code )F = { city, street -> zip-code,

zip-code -> city

Khoùa1 : city, street

Khoùa2 : street, zip-code

Löôïc ñoà LOCATION ñaït 3NF vì thuoäc

tính city ôû veá phaûi cuûa FD zip-code -> city laø thuoäc tính nguyeân toá

Daïng chuaån 3

Ví duï 4:

LOCATION ( city, street, zip-code )F = { city, street -> zip-code,

zip-code -> city

Khoùa1 : city, street

Khoùa2 : street, zip-code

Löôïc ñoà LOCATION ñaït 3NF vì thuoäc

tính city ôû veá phaûi cuûa FD zip-code -> city laø thuoäc tính nguyeân toá

Page 48: Chuaån hoùa CSDL

Chuaån hoùa CSDLChuaån hoùa CSDL

Daïng chuaån 3

LOCATION ( city, street, zip-code )

Daïng chuaån 3

LOCATION ( city, street, zip-code )

city street zip-code

NY 55th 484

NY 56th 484

LA 55th 473

LA 56th 473

LA 57th 474

Vaán ñeà coøn toàn taïi:

Söï laëp laïi cuûa <LA ... 473> vaø <NY ... 484>, bò raøng buoäc bôûi FD: zip-code -> city laø dö thöøa trong baûng LOCATION

Location

Page 49: Chuaån hoùa CSDL

Chuaån hoùa CSDLChuaån hoùa CSDL

Daïng chuaån Boyce-Codd (Boyce-Codd Normal Form - BCNF)

Löôïc ñoà quan heä R ñaït BCNF neáu vôùi

moïi FDX->A ñuùng trong R thì X laø sieâu khoùa trong R

Daïng chuaån Boyce-Codd (Boyce-Codd Normal Form - BCNF)

Löôïc ñoà quan heä R ñaït BCNF neáu vôùi

moïi FDX->A ñuùng trong R thì X laø sieâu khoùa trong R

Page 50: Chuaån hoùa CSDL

Chuaån hoùa CSDLChuaån hoùa CSDL

Daïng chuaån Boyce-CoddVí duï 5: SCL ( student, course, lecturer)

F= { student, course -> lecturer,

lecturer -> course }

Khoùa1 : student, course; Khoùa2: student, lecturer

Löôïc ñoà quan heä SCL khoâng ñaït BCNF vì

thuoäc tính lecturer khoâng laø sieâu khoùa

Löôïc ñoà quan heä SCL ñaït 3NF vì thuoäc tính

course ôû veá phaûi cuûa FD student, course ->

lecturer laø

thuoäc tính nguyeân toá

Daïng chuaån Boyce-CoddVí duï 5: SCL ( student, course, lecturer)

F= { student, course -> lecturer,

lecturer -> course }

Khoùa1 : student, course; Khoùa2: student, lecturer

Löôïc ñoà quan heä SCL khoâng ñaït BCNF vì

thuoäc tính lecturer khoâng laø sieâu khoùa

Löôïc ñoà quan heä SCL ñaït 3NF vì thuoäc tính

course ôû veá phaûi cuûa FD student, course ->

lecturer laø

thuoäc tính nguyeân toá

Page 51: Chuaån hoùa CSDL

Chuaån hoùa CSDLChuaån hoùa CSDL

Daïng chuaån Boyce-Codd

Löôïc ñoà quan heä SCL ( student, course, lecturer)neân ñöôïc phaân raõ thaønh caùc löôïc

ñoà sau:

S ( student, course )Khoùa: student, course

L ( lecturer, course )F= { lecturer -> course }Khoùa: lecturer

Daïng chuaån Boyce-Codd

Löôïc ñoà quan heä SCL ( student, course, lecturer)neân ñöôïc phaân raõ thaønh caùc löôïc

ñoà sau:

S ( student, course )Khoùa: student, course

L ( lecturer, course )F= { lecturer -> course }Khoùa: lecturer

BCNF

BCNF

Page 52: Chuaån hoùa CSDL

Chuaån hoùa CSDLChuaån hoùa CSDL

Chuaån hoùa caùc löôïc ñoà quan heä

Cho löôïc ñoà quan heä R ( A1, ..., An )

1. Xaùc ñònh caùc phuï thuoäc haøm

2. Xaùc ñònh caùc khoùa toái tieåu

3. Xaùc ñònh daïng chuaån cao nhaát

maø R thoûa

4. Phaân raõ R thaønh caùc löôïc ñoà

sao cho moãi löôïc ñoà ñaït BCNF

Chuaån hoùa caùc löôïc ñoà quan heä

Cho löôïc ñoà quan heä R ( A1, ..., An )

1. Xaùc ñònh caùc phuï thuoäc haøm

2. Xaùc ñònh caùc khoùa toái tieåu

3. Xaùc ñònh daïng chuaån cao nhaát

maø R thoûa

4. Phaân raõ R thaønh caùc löôïc ñoà

sao cho moãi löôïc ñoà ñaït BCNF

Page 53: Chuaån hoùa CSDL

Chuaån hoùa CSDLChuaån hoùa CSDL

Chuaån hoùa caùc löôïc ñoà quan heä Ví duï 6:

S (s#, city, status, p#, qty )

F = { s# -> city,

s# -> status,

city -> status,

s#, p# -> qty,

s#, p# -> city,

s#, p# ->status }

Khoùa : s#, p#

Chuaån hoùa caùc löôïc ñoà quan heä Ví duï 6:

S (s#, city, status, p#, qty )

F = { s# -> city,

s# -> status,

city -> status,

s#, p# -> qty,

s#, p# -> city,

s#, p# ->status }

Khoùa : s#, p#

1NF

not 2NF

Page 54: Chuaån hoùa CSDL

Chuaån hoùa CSDLChuaån hoùa CSDL

Chuaån hoùa caùc löôïc ñoà quan heä

S (s#, city, status, p#, qty )

Phaân raõ S thaønh caùc löôïc ñoà sau

SP ( s#, p#, qty)

F = { s#, p# -> qty }

SUPPLIER (s#, city, status )

F = { s# -> city, city -> status , s# -> status }

Chuaån hoùa caùc löôïc ñoà quan heä

S (s#, city, status, p#, qty )

Phaân raõ S thaønh caùc löôïc ñoà sau

SP ( s#, p#, qty)

F = { s#, p# -> qty }

SUPPLIER (s#, city, status )

F = { s# -> city, city -> status , s# -> status }

1NF

BCNFkhoùa: s#, p#

2NFkhoùa: s#

Page 55: Chuaån hoùa CSDL

Chuaån hoùa CSDLChuaån hoùa CSDL

Chuaån hoùa caùc löôïc ñoà quan heä

Tieáp tuïc phaân raõ SUPPLIER (s#, city, status )

F = { s# -> city, s# -> status, city -> status }

thaønh:

SUPPLIER’ ( s#, city )F = { s# -> city }

LOCATION ( city, status )F = { city -> status }

Chuaån hoùa caùc löôïc ñoà quan heä

Tieáp tuïc phaân raõ SUPPLIER (s#, city, status )

F = { s# -> city, s# -> status, city -> status }

thaønh:

SUPPLIER’ ( s#, city )F = { s# -> city }

LOCATION ( city, status )F = { city -> status }

2NF

BCNF

BCNF

Page 56: Chuaån hoùa CSDL

Chuaån hoùa CSDLChuaån hoùa CSDL

Chuaån hoùa caùc löôïc ñoà quan heäVí duï 7: SSC ( supplier, status, city}

F= { supplier -> status,

city -> status, supplier -> city }

Khoùa: supplier

2 caùch phaân raõ coù theå:

S ( supplier, city ) S ( supplier, status )F = {supplier -> city} F = {supplier -> status }

C ( city, status ) T ( supplier, city ) G = { city -> status } G = { supplier -> city }

Chuaån hoùa caùc löôïc ñoà quan heäVí duï 7: SSC ( supplier, status, city}

F= { supplier -> status,

city -> status, supplier -> city }

Khoùa: supplier

2 caùch phaân raõ coù theå:

S ( supplier, city ) S ( supplier, status )F = {supplier -> city} F = {supplier -> status }

C ( city, status ) T ( supplier, city ) G = { city -> status } G = { supplier -> city }

BCNF BCNF

2NFPhuï thuoäc baéc caàu

Page 57: Chuaån hoùa CSDL

Chuaån hoùa CSDLChuaån hoùa CSDL

Phuï thuoäc ña trò (Multivalued dependency -MVD)

Cho X, Y laø 2 taäp con khaùc roãng cuûa löôïc ñoà quan heä R

Phuï thuoäc ña trò X ->-> Y | Z laø ñuùng trong R neáu vôùi moãi 2 boä v vaø w trong baûng quan heä r(R) maø v[X] = w[X] thì toàn taïi moät boä t trong r(R) sao cho:

(i) v[XY] = t[XY]

(ii) w[XZ] = t[XZ]

Khi ñoù, XY(r) JOIN XZ(r) = r

Phuï thuoäc ña trò (Multivalued dependency -MVD)

Cho X, Y laø 2 taäp con khaùc roãng cuûa löôïc ñoà quan heä R

Phuï thuoäc ña trò X ->-> Y | Z laø ñuùng trong R neáu vôùi moãi 2 boä v vaø w trong baûng quan heä r(R) maø v[X] = w[X] thì toàn taïi moät boä t trong r(R) sao cho:

(i) v[XY] = t[XY]

(ii) w[XZ] = t[XZ]

Khi ñoù, XY(r) JOIN XZ(r) = r

v: X Y _

w: X _ Z

t: X Y Z

Page 58: Chuaån hoùa CSDL

Chuaån hoùa CSDLChuaån hoùa CSDL

Phuï thuoäc ña trò

Ví duï 8:

Phuï thuoäc ña trò

Ví duï 8:

Employee

emp# carchild

100 TRS200 John

100 TRS200 Kate

100 SWG100 John

100 SWG100 Kate

MVD:

emp# ->-> car | child

or

emp# car

emp# child

emp# car child

Page 59: Chuaån hoùa CSDL

Chuaån hoùa CSDLChuaån hoùa CSDL

Phuï thuoäc ña trò

Ví duï 8:

Phuï thuoäc ña trò

Ví duï 8:

Employee

emp# carchild

100 TRS200 John

100 TRS200 Kate

100 SWG100 John

100 SWG100 Kate

MVD:

emp# ->-> car | child

or

emp# car

emp# child

emp# car child

Page 60: Chuaån hoùa CSDL

Chuaån hoùa CSDLChuaån hoùa CSDL

Daïng chuaån 4 (Fourth Normal Form -4NF)

Löôïc ñoà quan heä R ñaït daïng chuaån 4 neáu vôùi moïi phuï thuoäc ña trò khoâng taàm thöôøng

X ->->Y | Z

thì X laø sieâu khoùa cuûa R

Ví duï 9:

EMPLOYEE (emp#, car, child)

MVD = {emp# ->-> car | child}

Daïng chuaån 4 (Fourth Normal Form -4NF)

Löôïc ñoà quan heä R ñaït daïng chuaån 4 neáu vôùi moïi phuï thuoäc ña trò khoâng taàm thöôøng

X ->->Y | Z

thì X laø sieâu khoùa cuûa R

Ví duï 9:

EMPLOYEE (emp#, car, child)

MVD = {emp# ->-> car | child}

BCNFKhoâng coù FD naøo trong R, MVD treân laø khoâng taàm thöôøng, emp# khoâng laø sieâu khoùa, EMPLOYEE khoâng ñaït 4NF

Page 61: Chuaån hoùa CSDL

Chuaån hoùa CSDLChuaån hoùa CSDL

Daïng chuaån 4

EMPLOYEE (emp#, car, child)

neân phaân raõ thaønh caùc löôïc ñoà sau:

S1 (emp#, car )

S2 (emp#, child )

Daïng chuaån 4

EMPLOYEE (emp#, car, child)

neân phaân raõ thaønh caùc löôïc ñoà sau:

S1 (emp#, car )

S2 (emp#, child )

BCNF

4NF

4NF

Page 62: Chuaån hoùa CSDL

Chuaån hoùa CSDLChuaån hoùa CSDL

• 3NF versus BCNFVí duï 1:

Address (City, Street, ZipCode)

F = { ZipCode -> City,

City, Street -> ZipCode }

Keys:

K1 : City, Street : City,Street -> ZipCode

K2 : ZipCode, Street : ZipCode -> City

ZipCode, Street -> City

• 3NF versus BCNFVí duï 1:

Address (City, Street, ZipCode)

F = { ZipCode -> City,

City, Street -> ZipCode }

Keys:

K1 : City, Street : City,Street -> ZipCode

K2 : ZipCode, Street : ZipCode -> City

ZipCode, Street -> City

Page 63: Chuaån hoùa CSDL

Chuaån hoùa CSDLChuaån hoùa CSDL

• 3NF versus BCNF

Address (City, Street, ZipCode)

F = { ZipCode -> City,

City, Street -> ZipCode }

K1 : City, Street

K2 : ZipCode, Street

• 3NF versus BCNF

Address (City, Street, ZipCode)

F = { ZipCode -> City,

City, Street -> ZipCode }

K1 : City, Street

K2 : ZipCode, Street

not BCNF

ZipCode khoâng phaûi laø khoùa toái tieåu

Page 64: Chuaån hoùa CSDL

Chuaån hoùa CSDLChuaån hoùa CSDL

• 3NF versus BCNF

Address (City, Street, ZipCode)

F = { ZipCode -> City,

City, Street -> ZipCode }

K1 : City, Street

K2 : ZipCode, Street

• 3NF versus BCNF

Address (City, Street, ZipCode)

F = { ZipCode -> City,

City, Street -> ZipCode }

K1 : City, Street

K2 : ZipCode, Street

3NF

City laø thaønh phaàn cuûa khoùa toái tieåu

Page 65: Chuaån hoùa CSDL

Chuaån hoùa CSDLChuaån hoùa CSDL

• 3NF versus BCNFAddress (City, Street, ZipCode)

F = { ZipCode -> City,

City, Street -> ZipCode }

Phaân raõ Address thaønh (City, Street) vaø

(City, ZipCode) seõ khoâng giöõ ñöôïc phuï

thuoäc haøm

City, Street -> ZipCode

Khoâng theå phaân raõ Address ñeå ñaït BCNF

maø vaãn baûo toaøn phuï thuoäc haøm

• 3NF versus BCNFAddress (City, Street, ZipCode)

F = { ZipCode -> City,

City, Street -> ZipCode }

Phaân raõ Address thaønh (City, Street) vaø

(City, ZipCode) seõ khoâng giöõ ñöôïc phuï

thuoäc haøm

City, Street -> ZipCode

Khoâng theå phaân raõ Address ñeå ñaït BCNF

maø vaãn baûo toaøn phuï thuoäc haøm

Page 66: Chuaån hoùa CSDL

Chuaån hoùa CSDLChuaån hoùa CSDL

• 3NF versus BCNFAddress (City, Street, ZipCode)

F = { ZipCode -> City,

City, Street -> ZipCode }

Lôøi giaûi:

– ZipCode ñöôïc taïo thaønh bôûi:

ZipCode (ZipCodeCity, ZipCodeStreet in a City)

– Caáu truùc cuûa ZipCode ñoàng daïng vôùi

caáu truùc cuûa (City, Street)

• 3NF versus BCNFAddress (City, Street, ZipCode)

F = { ZipCode -> City,

City, Street -> ZipCode }

Lôøi giaûi:

– ZipCode ñöôïc taïo thaønh bôûi:

ZipCode (ZipCodeCity, ZipCodeStreet in a City)

– Caáu truùc cuûa ZipCode ñoàng daïng vôùi

caáu truùc cuûa (City, Street)

Page 67: Chuaån hoùa CSDL

Chuaån hoùa CSDLChuaån hoùa CSDL

• 3NF versus BCNF• 3NF versus BCNF

City Street

ZipCodeCityZipCodeStreetinaCity

Page 68: Chuaån hoùa CSDL

Chuaån hoùa CSDLChuaån hoùa CSDL

• 3NF versus BCNF• 3NF versus BCNF

City Street

ZipCodeCityZipCodeStreetinaCity

(City,ZipCodeCity)

Page 69: Chuaån hoùa CSDL

Chuaån hoùa CSDLChuaån hoùa CSDL

• 3NF versus BCNF• 3NF versus BCNF

Street

ZipCodeStreetinaCity

(City,ZipCodeCity)

Page 70: Chuaån hoùa CSDL

Chuaån hoùa CSDLChuaån hoùa CSDL

• 3NF versus BCNF• 3NF versus BCNF

(City, Street)

ZipCodeStreetinaCity

(City,ZipCodeCity)

Case 1

(City, Street, ZipCodeStreetinaCity)

Page 71: Chuaån hoùa CSDL

Chuaån hoùa CSDLChuaån hoùa CSDL

• 3NF versus BCNF• 3NF versus BCNF

Street

(ZipCodeCity,ZipCodeStreetinaCity)

(City,ZipCodeCity)

Case 2

(Street, ZipCodeCity, ZipCodeStreetinaCity)

Page 72: Chuaån hoùa CSDL

Chuaån hoùa CSDLChuaån hoùa CSDL

• 3NF versus BCNFCase 1

Address (City, Street, ZipCode)

Address (City, Street, ZipCodeCity, ZipCodeStreetinaCity)

A1 (City, ZipCodeCity)

A2 (City, Street,ZipCodeStreetinaCity)

City ->ZipCodeCity

ZipCodeCity -> City

City,Street -> ZipCode StreetinaCity

• 3NF versus BCNFCase 1

Address (City, Street, ZipCode)

Address (City, Street, ZipCodeCity, ZipCodeStreetinaCity)

A1 (City, ZipCodeCity)

A2 (City, Street,ZipCodeStreetinaCity)

City ->ZipCodeCity

ZipCodeCity -> City

City,Street -> ZipCode StreetinaCity

BCNF

Page 73: Chuaån hoùa CSDL

Chuaån hoùa CSDLChuaån hoùa CSDL

• 3NF versus BCNFCase 2

Address (City, Street, ZipCode)

Address (City, Street, ZipCodeCity, ZipCodeStreetinaCity)

A1 (City, ZipCodeCity)

A2 (Street, ZipCodeCity, ZipCodeStreetinaCity)

City ->ZipCodeCity

ZipCodeCity -> City

ZipCodeCity,ZipCode StreetinaCity -> Street

• 3NF versus BCNFCase 2

Address (City, Street, ZipCode)

Address (City, Street, ZipCodeCity, ZipCodeStreetinaCity)

A1 (City, ZipCodeCity)

A2 (Street, ZipCodeCity, ZipCodeStreetinaCity)

City ->ZipCodeCity

ZipCodeCity -> City

ZipCodeCity,ZipCode StreetinaCity -> StreetBCNF

Page 74: Chuaån hoùa CSDL

Chuaån hoùa CSDLChuaån hoùa CSDL

• 3NF versus BCNFVí duï 2:

• 3NF versus BCNFVí duï 2:

Course

Laboratory LabSpecification

LabNo LabSpec

CourseNo

Title

Credits

Course(CourseNo,Title,Credits)

Laboratory(CourseNo, LabNo,

Page 75: Chuaån hoùa CSDL

Chuaån hoùa CSDLChuaån hoùa CSDL

• 3NF versus BCNF• 3NF versus BCNF

Course

Laboratory LabSpecification

LabNo LabSpec

CourseNo

Title

Credits

Course(CourseNo,Title,Credits)

Laboratory(CourseNo, LabNo, LabSpec)

Page 76: Chuaån hoùa CSDL

Chuaån hoùa CSDLChuaån hoùa CSDL

• 3NF versus BCNF

Laboratory (CourseNo, LabNo, LabSpec)

F= { LabSpec -> CourseNo,

CourseNo, LabNo -> LabSpec }

LabSpec -/-> LabNo vì moät phoøng thí nghieäm

chuyeân bieät coù theå ñöôïc söû duïng cho

nhieàu thí nghieäm

• 3NF versus BCNF

Laboratory (CourseNo, LabNo, LabSpec)

F= { LabSpec -> CourseNo,

CourseNo, LabNo -> LabSpec }

LabSpec -/-> LabNo vì moät phoøng thí nghieäm

chuyeân bieät coù theå ñöôïc söû duïng cho

nhieàu thí nghieäm

Page 77: Chuaån hoùa CSDL

Chuaån hoùa CSDLChuaån hoùa CSDL

• 3NF versus BCNF

Laboratory (CourseNo, LabNo, LabSpec)

F= { LabSpec -> CourseNo,

CourseNo, LabNo -> LabSpec }

K1 : Course, LabNo :Course, LabNo -> LabSpec

K2 : LabSpec, LabNo :LabSpec -> Course

LabSpec,LabNo -> Course

• 3NF versus BCNF

Laboratory (CourseNo, LabNo, LabSpec)

F= { LabSpec -> CourseNo,

CourseNo, LabNo -> LabSpec }

K1 : Course, LabNo :Course, LabNo -> LabSpec

K2 : LabSpec, LabNo :LabSpec -> Course

LabSpec,LabNo -> Coursenot BCNF

3NF

Page 78: Chuaån hoùa CSDL

Chuaån hoùa CSDLChuaån hoùa CSDL

• 3NF versus BCNFKhoâng theå phaân raõ Laboratory ñeå ñaït BCNF

maø vaãn baûo toaøn phuï thuoäc haøm

Laboratory (CourseNo, LabNo, LabSpec)

F= { LabSpec -> CourseNo,

CourseNo, LabNo -> LabSpec }

Phaân raõ thaønh:

L1 (CourseNo, LabSpec)

L2 (LabNo, LabSpec)

Laøm maát phuï thuoäc haøm:

• 3NF versus BCNFKhoâng theå phaân raõ Laboratory ñeå ñaït BCNF

maø vaãn baûo toaøn phuï thuoäc haøm

Laboratory (CourseNo, LabNo, LabSpec)

F= { LabSpec -> CourseNo,

CourseNo, LabNo -> LabSpec }

Phaân raõ thaønh:

L1 (CourseNo, LabSpec)

L2 (LabNo, LabSpec)

Laøm maát phuï thuoäc haøm:

Moät moân hoïc vaø moät phoøng thí nghieäm coù moät ñaëïc tính rieâng

Page 79: Chuaån hoùa CSDL

Chuaån hoùa CSDLChuaån hoùa CSDL

• 3NF versus BCNF• 3NF versus BCNF

Course

Laboratory LabSpecification

LabNo LabSpec

CourseNo

Title

CreditsSPLIT

Page 80: Chuaån hoùa CSDL

Chuaån hoùa CSDLChuaån hoùa CSDL

• 3NF versus BCNF• 3NF versus BCNF

Course

Laboratory SpecificationHeader

LabNo SpecHeaderText

CourseNo

Title

Credits

SpecificationBody

SpecBodyText

Page 81: Chuaån hoùa CSDL

Chuaån hoùa CSDLChuaån hoùa CSDL

• 3NF versus BCNF• 3NF versus BCNF

Course

Laboratory

SpecificationHeader

LabNo

SpecHeaderText

CourseNo

Title

Credits

SpecificationBody

SpecBodyText

Page 82: Chuaån hoùa CSDL

Chuaån hoùa CSDLChuaån hoùa CSDL

• 3NF versus BCNF• 3NF versus BCNF

SpecificationHeader

SpecHeaderText

SpecificationBody

SpecBodyText

Course

Laboratory

LabNo

CourseNo

Title

Credits

Page 83: Chuaån hoùa CSDL

Chuaån hoùa CSDLChuaån hoùa CSDL

• 3NF versus BCNFCase 1

Laboratory (CourseNo, LabNo, LabSpec)

Laboratory (CourseNo,LabNo,SpecHeaderText,SpecBodyText)

L1 (CourseNo, SpecHeaderText)

L2 (CourseNo, LabNo, SpecBodyText)

CourseNo -> SpecHeaderText

CourseNo, LabNo -> SpecBodyText

• 3NF versus BCNFCase 1

Laboratory (CourseNo, LabNo, LabSpec)

Laboratory (CourseNo,LabNo,SpecHeaderText,SpecBodyText)

L1 (CourseNo, SpecHeaderText)

L2 (CourseNo, LabNo, SpecBodyText)

CourseNo -> SpecHeaderText

CourseNo, LabNo -> SpecBodyText

Page 84: Chuaån hoùa CSDL

Chuaån hoùa CSDLChuaån hoùa CSDL

• 3NF versus BCNFCase 2

Laboratory (CourseNo, LabNo, LabSpec)

Laboratory (CourseNo,LabNo,SpecHeaderText,SpecBodyText)

L1 (CourseNo, SpecHeaderText)

L2 (LabNo, SpecHeaderText, SpecBodyText)

CourseNo -> SpecHeaderText

LabNo, SpecHeaderText -> SpecBodyText

• 3NF versus BCNFCase 2

Laboratory (CourseNo, LabNo, LabSpec)

Laboratory (CourseNo,LabNo,SpecHeaderText,SpecBodyText)

L1 (CourseNo, SpecHeaderText)

L2 (LabNo, SpecHeaderText, SpecBodyText)

CourseNo -> SpecHeaderText

LabNo, SpecHeaderText -> SpecBodyText

Page 85: Chuaån hoùa CSDL

Định nghĩa khóa dựa trên tập phụ thuộc hàmCho R(U,F), U là tập thuộc tính, F là tập phụ thuộc hàm

trong R

Với X U, X là một khóa của R nếu: X->U F+ , và Y X, Y ≠ X, mà Y->U F+

R phải có ít nhất 1 khóa và có thể có nhiều khóa Chú ý:

Cho R(U), ta luôn có U->U. Nếu U thỏa điều kiện 2 ở trên thì U là khóa

Khóa của lược đồ quan hệ

Page 86: Chuaån hoùa CSDL

Khóa chính (primary key): Là một siêu khóa tối tiểu được người phân tích chọn để cài đặt

Khóa dự tuyển (candidate key): Là các siêu khóa tối tiểu khác không được chọn làm khóa chính

Khi cài đặt vào CSDL, khoá dự tuyển trở thành khóa duy nhất (unique key) và còn được gọi là khóa thứ cấp (secondary key)

Khóa của lược đồ quan hệ

Page 87: Chuaån hoùa CSDL

Khóa giúp cho việc nhận biết và tìm record một cách nhanh chóng trong các quan hệ

Ràng buộc đối với khóa chính: NOT NULL và UNIQUE

Ràng buộc đối với khóa dự tuyển: UNIQUE

Khóa của lược đồ quan hệ

Page 88: Chuaån hoùa CSDL

Bao đóng của tập thuộc tính X tương ứng tập phụ thuộc hàm F (ký hiệu là XF

+) là tất cả các thuộc tính A sao cho X->A có thể được suy dẫn logic từ F

Thuật toán tìm XF+

Bao đóng của tập thuộc tính

X->A F+ <=> A XF+

Input: R(U, F), X U

Output: XF+

Phương pháp:

X0 = X;

Lặp: Xi+1 = Xi Z sao cho (Y->Z) F và Y Xi cho đến khi Xi+1 = Xi

Ta có XF+ = Xi

Page 89: Chuaån hoùa CSDL

Thuật toán tìm khoáCho R(U,F), các ký hiệu trong thuật toán tìm khoá: Uright(ULeft): Các thuộc tính ở vế phải của tất cả

các PTH N = U – Uright: Các thuộc tính cô lập (không xuất

hiện trong bất kỳ FD nào) và các thuộc tính chỉ xuất hiện ở vế trái của các FD

=> N khoá D = Uright – Uleft: Các thuộc tính chỉ xuất hiện ở vế

phải của các FD=> D khoá

L = U – (N D): là các thuộc tính có thể thuộc hoặc không thuộc khoá

Page 90: Chuaån hoùa CSDL

Thuật toán tìm tất cả các khoá của một lược đồ quan hệ dựa trên tập PTH

Input: R(U, F)

Output: Các khoá của R

Phương pháp: N = U – Uright. Nếu NF

+ = U, thì N là khoá duy nhất của R. Giải thuật dừng Tìm D = Uright – Uleft, L = U – (N D): Với mọi Li L: Thử với từng Li, các Li có ít phần tử làm trước

X = N Li, Nếu XF+ = U thì X là một khoá của R

Lưu ý: Nếu X = N Li là khoá thì không thử với các Lj L mà Li Lj

Thuật toán tìm khoá (tt)

Page 91: Chuaån hoùa CSDL

Phân rã (decomposition) một lược đồ quan hệ R(U) là thay R bằng tập các lược đồ quan hệ con R1, R2, .., Rk của R sao cho

U1 U2 … Uk = U, với Ui là tập thuộc tính của Ri, trong đó giao của các Ui không nhất thiết phải rỗng

Phân rã các lược đồ quan hệ

• Khi muốn khôi phục lại r (thể hiện của R) ta thực hiện phép kết của các ri ( thể hiện của Ri tương ứng)

• Hỏi:

• Dữ liệu lưu tại các ri có phản ánh trung thực r hay không?

• Khi cần có thể khôi phục lại được r từ các ri hay không?

Page 92: Chuaån hoùa CSDL

Cho R(U,F). Nếu R được phân rã bởi phép phân rã ρ thành các Ri, sao cho với mọi thể hiện r(R) thoả tập phụ thuộc hàm F, ta có được r = s (với s có được bằng cách kết các ri), lúc đó ρ được gọi là một phân rã bảo toàn nội dung.

Phân rã bảo toàn nội dung

• Khi phân rã bảo toàn nội dung, r ban đầu luôn được tái tạo một các trung thực bằng cách kết nối các ri

• Kết trong trường hợp này gọi là kết không mất thông tin (lossless join)

Page 93: Chuaån hoùa CSDL

Định lý:

Cho R(U,F). Phân rã R thành R1, R2 là bảo toàn nội dung (btnd) tương ứng với F nếu và chỉ nếu

R1 R2 -> R1 - R2 hay R1 R2 -> R2 - R1

Phân rã bảo toàn nội dung (tt)

Ví dụ: R(ABC), F = {A -> B}

• Nếu R được phân rã thành R1(AB) và R2(AC) thì btnd

• Nếu R được phân rã thành R1(AB) và R2(BC) thì không btnd

=> Một phép phân rã có btnd hay không là còn tùy thuộc vào tập pth

Page 94: Chuaån hoùa CSDL

Phân rã bảo toàn phụ thuộc hàm

• Chiếu của một tập pth F trên tập thuộc tính Z, ký hiệu ¶Z(F), là tập các phụ thuộc hàm X -> Y trong F+ sao cho XY Z

• Khi phân rã R(U, F) thành các Ri(Ui, Fi) thì:

Ui = U và Fi = ¶Ui (F)

• Phép phân rã ρ là bảo toàn pth nếu:

Fi suy dẫn được tất cả các pth trong F

Page 95: Chuaån hoùa CSDL

Phân rã bảo toàn phụ thuộc hàm (tt)

• Các pth trong F là các ràng buộc toàn vẹn trên R

• Khi phân rã btnd nhưng không bảo toàn pth thì dữ liệu có thể được phục hồi giống như ban đầu nhưng không đảm bảo ràng buộc toàn vẹn dữ liệu

• Những pth không được bảo toàn trong phép phân rã cần được kiểm tra, thông qua việc kết nối một số ri, trong quá trình cập nhật dữ liệu

• Trường hợp lý tưởng là phân rã vừa btnd vừa bảo toàn pth

• Chỉ những phép phân rã bảo toàn nội dung mới được cài đặt

Page 96: Chuaån hoùa CSDL

Chuẩn hoá dữ liệu và các dạng chuẩn

Định nghĩa: Dạng chuẩn (normal form): Là trạng thái

của một quan hệ có được do áp dụng những quy tắc liên quan đến pth của quan hệ đó.

Chuẩn hoá dữ liệu (data normalization) là quá trình phân rã lược đồ quan hệ chưa chuẩn hoá (có dạng chuẩn thấp) thành các lược đồ quan hệ nhỏ hơn nhưng ở dạng chuẩn cao hơn (có cấu trúc tốt hơn)

Page 97: Chuaån hoùa CSDL

Các bước chuẩn hoá Các bước chuẩn hoá dữ liệu

CSDL chöa chuaån hoùaToàn taïi thuoäc tính ña trò

CSDL ôû daïng chuaån 11NF

2NF

3NF

Boyce Codd Normal FormBCNF

4NF

5NF

Loaïi boû thuoäc tính ña trò

Loaïi boû PTH khoâng ñaày ñuû

Loaïi boû PTH baét caàu

Loaïi boû nhöõng dö thöøa cuûa

PTH

Loaïi boû nhöõng PTH

ña trò

Loaïi boû nhöõng dö thöøa phi

chuaån coøn laïi

Page 98: Chuaån hoùa CSDL

Tổng kết về chuẩn hoá CSDL Mục tiêu của các dạng chuẩn trên quan hệ là

hạn chế những dư thừa trong dữ liệu lưu trữ. Những dư thừa dữ liệu là do phát sinh từ mối

liên quan giữa các mục dữ liệu thể hiện qua các phụ thuộc hàm.

Dư thừa dữ liệu dẫn đến những dị thường khi thêm, xoá, cập nhật dữ liệu.

Page 99: Chuaån hoùa CSDL

Tổng kết về chuẩn hoá CSDL (tt) Trong 2NF và 3NF vẫn còn dư thừa dữ liệu

2NF: loại được sự phụ thuộc riêng phần vào khoá, vẫn tồn tại phụ thuộc bắc cầu vào khoá.

3NF: loại được sự phụ thuộc bắc cầu vào khoá đối với những thuộc tính không nguyên tố.

BCNF: loại bỏ mọi dư thừa dữ liệu mà phụ thuộc hàm có thể tạo ra (không thể suy ra giá trị tại một ô nào trong bảng bằng cách chỉ sử dụng các phụ thuộc hàm cùng với các số liệu đang có trong bảng).

Dạng chuẩn của 1 lược đồ csdl bằng với dạng chuẩn của lược đồ quan hệ có dạng chuẩn thấp nhất

Page 100: Chuaån hoùa CSDL

Tổng kết về chuẩn hoá CSDL (tt) Để đạt được dạng chuẩn cao (ít dư thừa dữ

liệu), một lược đồ quan hệ thường được phân rã thành nhiều lược đồ quan hệ con.

Một lược đồ quan hệ luôn có thể được phân rã thành các lược đồ quan hệ con đạt 3NF vừa bảo toàn nội dung vừa bảo toàn phụ thuộc hàm.

Một lược đồ quan hệ luôn có thể được phân rã thành các lược đồ quan hệ con đạt BCNF bảo toàn nội dung nhưng có thể không bảo toàn được tập phụ thuộc hàm.