1k likes | 1.1k Views
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. part warehouse quantity warehouse-address. bolt King Bros. 20 Long St. 20
E N D
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 part warehouse quantity warehouse-address bolt King Bros.20 Long St. 20 nut King Bros.40Long St. 20 screw King Bros. 10 Long St. 20 NULL Lucid Ltd. NULL Compton Pl. 10
Chuaå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
Chuaån hoùa CSDL Caùc vaán ñeà trong caùc baûng quan heä Ví duï 2: Institution Employee Department Location Peter ITACS 15.101 Paul ITACS 15.101 KateITACS 15.104 Mike Math 10.001 Jane Math 10.008 NULL Physics 15.78
Chuaå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
Chuaån hoùa CSDL Caùc vaán ñeà trong caùc baûng quan heä Ví duï 3: Insertion test Employee emp# car child 100 TRS200 John 100 TRS200 Kate 100 SWG100 John 100 SWG100 Kate 100 ??? Peter
Chuaå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
Chuaå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ínhcity Supplier Company s# sname salary city 10 Peter 100K Paris 20 Joan 120K Rome cname city Golden Bolts Paris Red Nuts Rome Green Tomatoes Rome
Chuaå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' 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 ?
Chuaå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ínhcity 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
Chuaå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) Employee • 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 emp# car child 100 TRS200 John 100 TRS200 Kate 100 SWG100 John 100 SWG100 Kate 100 ??? Peter
Chuaå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) Institution • 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 Employee Department Location Peter ITACS 15.101 Paul ITACS 15.101 Kate ITACS 15.104 Mike Math 10.001 Jane Math 10.008
Chuaå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) Employee emp# car child • 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 100 TRS200 John 100 TRS200 Kate 100 SWG100 John 100 SWG100 Kate
Chuaå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
Chuaå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á
Chuaå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
Chuaå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æ
Chuaån hoùa CSDL • Phuï thuoäc haøm Employee e# ename dept_name dept_addr class 10Peter Math G16 2nd 20Joan CS G15 1st 30Mike CS G15 1st 40Kate CS G15 1st 50 Peter Law G20 2nd 60 Albert Physics G20 1st Phụ thuộc hàm tầm thường, không bao giờ bị vi phạm e# -> ename
Chuaån hoùa CSDL • Phuï thuoäc haøm Employee e# ename dept_name dept_addr class 10 Peter Math G16 2nd 20 Joan CS G15 1st 30 Mike CS G15 1st 40 Kate CS G15 1st 50 Peter Law G20 2nd 60 Albert Physics G20 1st e# -> dept_name
Chuaån hoùa CSDL • Phuï thuoäc haøm Employee e# ename dept_name dept_addr class 10 Peter Math G16 2nd 20 Joan CS G15 1st 30 Mike CSG15 1st 40 Kate CS G15 1st 50 Peter Law G20 2nd 60 Albert Physics G20 1st e# -> dept_addr
Chuaån hoùa CSDL • Phuï thuoäc haøm Employee e# ename dept_name dept_addr class 10 Peter Math G16 2nd 20 Joan CS G15 1st 30 Mike CS G15 1st 40 Kate CS G15 1st 50 Peter Law G20 2nd 60 Albert Physics G20 1st e# -> class
Chuaån hoùa CSDL • Phuï thuoäc haøm Employee e# ename dept_name dept_addr class 10 Peter Math G16 2nd 20 Joan CS G15 1st 30 Mike CS G15 1st 40 Kate CS G15 1st 50 Peter Law G20 2nd 60 Albert Physics G20 1st dept_name -> class
Chuaån hoùa CSDL • Phuï thuoäc haøm Employee e# ename dept_name dept_addr class 10 Peter Math G16 2nd 20 Joan CS G15 1st 30 Mike CS G15 1st 40 Kate CS G15 1st 50 Peter Law G20 2nd 60 Albert Physics G20 1st e# -> ename, e# -> dept_name, e# -> dept_addr, e# -> class, minimal key -> any other attribute
Chuaån hoùa CSDL • Phuï thuoäc haøm Employee e# ename dept_name dept_addr class 10Peter Math G16 2nd 50 Peter Law G20 2nd 20 Joan CS G15 1st 30 Mike CS G15 1st 40 Kate CS G15 1st 60 Albert Physics G20 1st e# -> ename, but ename -/> e# e# -> dept_name, but dept_name -/> e# e# -> dept_addr, e# -> class, dept_name -> class
Chuaå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
Chuaå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) Taäp tieân ñeà ñaày ñuû vaø toái tieåu
Chuaånhoùa CSDL Caùcquytaécboå 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)
Chuaå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 transitivity axiom
Chuaån hoùa CSDL Daãn xuaát töø caùc phuï thuoäc haøm Ví duï: Given F = {A->BC}, is it true that A->B and A->C ? BC-> B A->BC & BC-> B A-> B Töông töï, suy raA->C reflexivity axiom transitivity axiom
Chuaå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 augmentation axiom augmentation axiom transitivity axiom
Chuaå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 reflexivity axiom transistivity axiom
Chuaån hoùa CSDL • FD vs. entity sid# Student name address Thuộc tính đa trị language sid# -> name sid# -> address sid# -/> language name ? sid# name ? address
Chuaån hoùa CSDL • FD vs. relationship building# cname title dname manages Chairperson Department dname -> building# dname -> cname cname -> dname cname -> title dname -> title cname -> building# dname, cname -> building#, title
Chuaån hoùa CSDL • Functional dependency vs. relationship e# ename budget cdate title Employee works-on Project e# -> ename title -> budget title -> cdate e# -> title e# -> ename, title e# -> budget e# -> cdate
Chuaå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 person_name children cars Peter { Mike Joan}, {PPP777} Paul {} { KGN004, MN3345}
Chuaå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 Khóa dự tuyển là khóa tối tiểu
Chuaå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
Chuaå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á
Chuaå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û
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 Chuaån hoùa CSDL Daïngchuaån 2 (Second Normal Form -2NF) Löôïcñoàquanheäñaïtdaïngchuaån 2 neáumoïithuoäctínhkhoângnguyeântoá A trong Rphuïthuoächaømñaàyñuûvaøokhoùachínhcuûa R Víduï 2: Part,warehouse là khóa FD: warehouse -> warehouse-address Inventory part, warehouse -> quantity part warehousequantitywarehouse-address 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
Chuaå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
Chuaå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 2NF 2NF
Chuaån hoùa CSDL Phuïthuoächaømbaéccaàu (Transitive FD) Phuïthuoächaøm X -> Y ñuùngtrong R laøbaéccaàuneáutoàntaïitaäp con khaùcroãng Z cuûa R, Zøkhoângphaûilaøtaäp con cuûamoätkhoùanaøotrong R, vaøcaùcphuïthuoächaømX->Z vaø Z->Y laøñuùngtrong R Ñoïclaø: “Y phuïthuoäcbaéccaàuvaøo X tronglöôïcñoà R” neáu X->Y laøñuùngtrong R vaø X->Y laøphuïthuoächaømbaéccaàu
Chuaå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
Chuaån hoùa CSDL Daïng chuaån 3 Ví 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
Chuaå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 3NF 3NF
Chuaån hoùa CSDL 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 FDzip-code -> city laø thuoäc tính nguyeân toá
Chuaån hoùa CSDL Daïng chuaån 3 LOCATION ( city, street, zip-code ) Location 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 city street zip-code NY55th484 NY 56th484 LA55th 473 LA56th473 LA 57th 474
Chuaå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
Chuaån hoùa CSDL Daïng chuaån Boyce-Codd Ví 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á