Ví d 3. Quan h b ôi 1:M cho 2 th c th KHÁCHHÀNG và ƠNHÀNG (hình 4.3a). M t khách hàng có th g i nhi u n *t hàng n công ty (0, M). M$i m t n *t hàng mà công ty nh n ư c ph i có ch nhân, t c là nó ph i thu c v m t khách hàng nào ó (1,1).
di!n t cho quan h này b-ng b ng quan h , chúng ta chuy n i hai th c th KHÁCHHÀNG và ƠNHÀNG thành 2 b ng quan h và xác nh vai trò “master/detail” c a 2 b ng: b ng ƠNHÀNG
Mã_KH aCh'_KH Tên_KH KHÁCHHÀNG N p Mã_ H ƠNHÀNG Ngày 1,1 0,M
Hình 4.3a Lư c ERD cho quan h b 2 KHÁCHHÀNG và ƠNHÀNG Mã_NV NHÂNVIÊN Tên_nt, NgàySinh_nt, QuanH
NGƯ+ITHÂN Mã_NV Tên NgàySinh QuanH
Mã_NV Tên_NV ư(ng T.Ph Bang Vùng
NHÂNVIÊN
Hình 4.2b B ng quan h di!n t nhóm thu c tính l*p l i
mô t chi ti t *t hàng (“detail”) cho khách hàng (“master”); nó cho bi t m$i n *t hàng trong b ng ƠNHÀNG thu c v khách hàng nào trong b ng KHÁCHHÀNG. Do ó, khóa Mã_KH c a b ng KHÁCHHÀNG ư c g"n thêm vào b ng ƠNHÀNG liên k t 2 b ng (Hình 4.3b).
Ví d 4. Quan h b ôi N:M gi a NGUYÊNLIBU và NHÀCUNGC8P
M t nhà cung c&p nguyên li u có th cung c&p nhi u lo i nguyên li u khác nhau (1,N) và m$i m t lo i nguyên li u có th ư c cung c&p t# nhi u nhà cung c&p (1,M). M$i m t nhà cung c&p cho m t lo i nguyên v t li u s+ quy nh giá bán i v i nguyên li u ó.
Khác v i quan h b ôi 1:N, quan h b ôi N:M c n có b ng quan h CUNGC8P i di n cho quan h CUNGC8P m t cách công khai.
tránh trư(ng h p d li u b l*p l i trên m$i nguyên li u ư c cung c&p (g m GiáG c, nV o) và m$i nhà cung c&p (Tên_NCC, aCh'_NCC), b ng quan h CUNGC8P s d ng 2 khóa Mã_NL và Mã_NCC l&y t# 2 b ng NGUYÊNLIBU và NHÀCUNGC8P. Các khóa này ư c dùng liên k t v i các b ng tư ng ng, và ư c v+ như trong hình 4.4b.
Theo cách này, các quan h b ba c.ng có th ư c chuy n i tư ng t .
Mã_KH Tên_KH aCh'_KH KHÁCHHÀNG (1) Mã_KH Mã_ H Ngày ƠNHÀNG (M)
Hình 4.3b B ng quan h mô t cho quan h KHÁCHHÀNG - ƠNHÀNG
Hình 4.4a ERD di!n t quan h N:M gi a 2 th c th MATERIALS và VENDORS
Mã_NL GiáG c nV o NGUYÊNLIBU C.C8P Mã_NCC NHÀCUNGC8P Tên_NCC 1,N 1,M aCh'_NCC GiáBán
Ví d 5. Quan h quy 1:N trên th c th NHÂNVIÊN (hình 4.5a): M t nhân viên có th là ngư(i qu n lý nhi u nhân viên khác ho*c không qu n lý ai, và m t nhân viên b qu n lý (tr c ti p) b i 1 ngư(i.
Các quan h quy 1:N như trên có th bi u di!n b-ng m t b ng quan h có thêm khóa ngo i (Ng_Qu nLý) l&y t# khóa chính c a th c th (Mã_NV) như hình 4.5b. Ng_Qu nLý g"n kèm v i m$i nhân viên ch' ra r-ng m$i ngư(i nhân viên (có mã s Mã_NV) có m t ngư(i qu n lý (có mã s Ng_Qu nLý).
Mã_NV TênNV Ng.Sinh Ng_Qu nLý
001 … … 100
002 … … 100
003 … … 110
004 … … None
Ví d 6. Quan h quy N:M trên th c th V9TT5 (hình 4.6a). Quan h này có tên là “Bill of Material” mô t cho các thành ph n bên trong m t thành ph n khác, ví d : m t s n ph)m là bánh mì ư c làm t# b t, mu i, b ; bánh Flan ư c làm t# ư(ng, s a, tr ng; bánh bông lan có b t, ư(ng, s a, tr ng,… c nguyên li u l,n s n ph)m u là i tư ng qu n lý trong kho c a nhà hàng, m$i i tư ng ư c g i chung là m t “V ttư”. M$i nguyên v t li u có th ư c dùng cho nhi u thành ph n và m$i thành ph n s d ng nhi u nguyên li u khác nhau, do ó quan h trên th c th V9TT5 là quan h N:M. Mã_NL GiáG c nV o NGUYÊNLIBU (1) Mã_NCC Tên_NCC aCh'_NCC NHÀCUNGC8P (1) Mã_NL Mã_NCC GiáBán CUNGC8P (M) (N)
Hình 4.4b. B ng quan h di!n t quan h N:M trong ví d 4
Hình 4.5a Quan h quy 1:N c a ví d 5
Hình 4.5b B ng quan h cho quan h quy 1:N Mã_NV
TênNV NgàySinh
Qu nLý NHÂNVIÊN
1 0, N
Mã_NV TênNV NgàySinh Ng_Qu nLý (1) (N)
Chúng ta c n t o ra m t b ng quan h THÀNHPHGN di!n t m i quan h thành ph n c a 2 món b&t k trong kho. B ng THÀNHPHGN có 2 khóa ngo i: Mã_VT và Mã_TP u ư c l&y t# Mã_VT c a b ng V9TT5. Mã_TP di!n t các thành ph n c a v t tư chính. M t Mã_TP có th liên k t v i nhi u Mã_VT trong b ng THÀNHPHGN. Mã_VT Mã_TP S Lư ng Bánh Flan S a 2 Bánh Flan Tr ng 2 B. Bông lan S a 1 B. Bông lan Tr ng 1 B. Bông lan B t 2 4.1.4Ràng bu c toàn vCn d" li u
Các ràng bu c toàn v3n d li u là nh ng i u ki n ki!m tra trên d li u khi chúng ư c c p nh t trong h th ng, d li u không b “hư h%ng” do thao tác c p nh t.
Ràng bu c trên mi n giá tr .M$i thu c tính c a th c th ư c quy nh m t mi n gía tr h p l . Các giá tr n-m ngoài mi n giá tr này là các giá tr vô ngh a i v i th c th , c n ph i lo i b%. Ví d : thu c tính Lo i-H c a nhân viên ch' có th là “S” (Salary based payment, tr lư ng), ho*c “H” (Hourly based payment, tr công theo gi().
Ràng bu c trên liên k t. Vì d li u trong h th ng ư c t ch c liên k t v i nhau (như các b ng quan h và quan h gi a các b ng) theo m t logic ư c thi t k s1n, n u các liên k t này b m&t thì các th c th ã ư c mô hình hóa s+ tr thành r(i r c, không mô t ư c y cho th gi i th c. Ràng bu c toàn v3n cho các liên k t bao g m:
• Không có khóa chính nào b r$ng. Khóa chính c a b ng quan h ph i có giá tr khác nhau, liên k t d li u các b ng có quan h v i nhau.
• Không gây trùng l*p d li u. N u d li u l*p l i 10 l n trên 10 dòng thì khi c n s a d li u, h th ng ph i c p nh t 10 dòng này. i u này thư(ng gây ra s không nh&t quán trên d li u, t n công th c hi n và t n không gian lưu tr .
• Không làm hư d li u liên quan khi thêm, xóa, s a d li u. Ví d : trong ví d 3, n u xóa m t khách hàng trong b ng KHÁCHHÀNG thì các n *t hàng c a khách hàng này trong b ng ƠNHÀNG s+ b vô th#a nh n (rác). Khi thêm m t hàng vào b ng thì t&t c các ô ch a d li u c a nó c ng ph i có d li u (ho*c mang giá tr m*c nh có ý ngh a trong h th ng).
Hình 4.6a Quan h quy N:M c a ví d 6 Mã_VT TênVT nGiá Ch a V9TT5 0,M 0, N S Lư ng V9TT5
Item_ID Tên_VT nGiá
(M) (1) (N) Mã_VT Mã_TP S Lu ng THÀNHPHGN (1)
4.1.5Chu-n hóa b ng quan h
Là x lý phân rã các b ng quan h t o ra các b ng quan h có c&u trúc t t (Well Structured Relation): là b ng quan h ch' ch a t i thi u d li u dư th#a và ch' cho phép thêm, xóa, s a d li u c a b ng m t cách có quy t"c th%a mãn các ràng bu c toàn v3n d li u.
Vi c chu)n hóa các b ng d a trên khái ni m ph thu c hàm (Functional Dependency). M t thu c tính B ư c g i là ph thu c hàm vào thu c tính A n u v i m$i th hi n trong b ng, giá tr c a thu c tính A xác nh duy nh&t (theo logic nào ó, không ch' là tính toán) giá tr c a thu c tính B. Ví d : Trong b ng quan h NHÂNVIÊN (Mã_NV, Tên_NV, M cLư ng), vì giá tr c a tên nhân viên (Tên_NV) và lu ng nhân viên (M cLư ng) g"n v i t#ng nhân viên (xác nh b i Mã_NV) nên ta nói r-ng Tên_NV và M cLư ng ph thu c hàm vào Mã_NV. M t thu c tính có th ph thu c hàm vào c hai thu c tính khác, hay nhi u h n n a. Ví d trong hình 4.4b, n giá c a nguyên li u là m t thu c tính ph thu c hàm vào c mã s c a nguyên li u l,n mã s c a nhà cung c&p. Ph thu c hàm này ư c ký hi u là Mã_NL, Mã_NCC H nGiá. Ví d trên cho chúng ta m t quy t"c: thu c tính không khóa
ph thu c hàm vào khóa.
D ng chu-n 1 (The First Normal Form, 1NF). B ng quan h thu c d ng chu)n 1 là b ng quan h không ch a nhóm (thu c tính/c t) b l*p l i (repeated group): Không có c t nào ư c thi t k lưu nhi u giá tr trong m t ô, và không có nhi u c t mang m t ý ngh a như nhau (ví d : S T1,S T2,..). Ví d b ng NHÂNVIÊN sau ây là m t b ng quan h d ng chu)n 1:
Mã_NV Tên_NV Phòng M cL ng MônH&c NgàyHoànT t
100 Magaret Simpson Marketing 42,000 SPSS 19/06/1999 100 Magaret Simpson Marketing 42,000 Surveys 07/10/1999 150 Susan Martin Marketing 38,500 SPSS 19/06/1999 150 Susan Martin Marketing 38,500 TQM 12/08/1999 190 Lorenzo Davis Finance 38,000 Investments 07/05/1999
B ng quan h thu c d ng chu)n 1 v,n có nhi u n i dung d li u b trùng l*p gi a các dòng. Trong ví d trên, d li u trong các c t Mã_NV, Tên_NV, Phòng và M cLư ng b l*p l i khi m t nhân viên h c nhi u h n 1 môn (như Magaret Simpson h c 2 môn SPSS và Surveys).
D ng chu-n 2 (The Second Normal Form, 2NF). B ng quan h thu c d ng chu)n 2 là b ng quan h thu c d ng chu)n 1, và m i thu c tính không ph i là khóa thì ph thu c hàm y vào toàn b khóa chính (không có thu c tính không khóa ph thu c hàm vào ch' m t ph n c a khóa chính). Như v y, b ng có khóa chính ch' ch a m t thu c tính nguyên t , ho*c b ng không có thu c tính không khóa,
u d ng chu)n 2.
Trong b ng NHÂNVIÊN trên, các thu c tính không ph i là khóa như Tên_NV, Phòng và M cLư ng ph thu c hàm vào Mã_NV mà không ph thu c hàm vào MônH c, trong khi ó NgàyHoànT&t môn h c ph thu c hàm y vào Mã_NV, MônH c
chu)n hóa b ng d ng chu)n 1 thành d ng chu)n 2, chúng ta th c hi n 3 bu c sau:
1) Thi t l p b ng quan h ch' ch a các thu c tính không khóa ph thu c hàm y vào khóa chính. Trong b ng NHÂNVIÊN ch' có thu c tính NgàyHoànT&t ph thu c hàm y vào khóa chính, như v y ta có b ng quan h R1 (Mã_NV, MônH c, NgàyHoànT&t) là m t b ng d ng chu)n 2. 2) Thi t l p (các) b ng quan h ch' ch a các thu c tính không khóa ph thu c hàm vào t#ng ph n
c a khóa. Trong b ng NHÂNVIÊN có các thu c tính không khóa Tên_NV, Phòng và M cLư ng ch' ph thu c hàm vào Mã_NV, như v y ta thi t l p ư c b ng quan h R2(Mã_NV, Tên_NV, Phòng, M cLư ng) là b ng thu c d ng chu)n 2.
3) Thi t l p khóa liên k t gi a các b ng m i. B ng R1 có ch a khóa Mã_NV, MônH c, trong khi b ng R2 ch' có khóa nguyên t Mã_NV, do ó khóa chính Mã_NV c a b ng R2 s+ ư c dùng làm khóa ngo i cho b ng R1 (giá tr Mã_NV c a R1 ư c l&y t# Mã_NV c a R2).
T# 3 bư c trên ta có b ng quan h ư c v+ như hình bên. Các b ng R1 và R2 u d ng chu)n 2.
D ng chu-n 3 (The Third Normal Form, 3NF). B ng quan h thu c d ng chu)n 3 là b ng quan h thu c d ng chu)n 2, và nó không ch a ph thu c hàm b"t c u (Transitive Dependency). N u m t thu c tính C ph thu c hàm vào thu c tính B, mà thu c tính B l i ph thu c hàm vào thu c tính A thì ta nói gi a A, B và C có ph thu c hàm b"c c u, ký hi u là A H B H C.
Ví d , ta hãy xem b ng quan h BÁNHÀNG như sau:
Mã_KH Tên_KH NhânViênPh Trách KhuV c
8023 Anderson Smith South
7924 Hobbs Smith South
9167 Bancroft Hicks West
8596 Eckersley Hicks West
6837 Tucker Hernandez East
7018 Arnold Fauld North
B ng này là m t b ng quan h d ng chu)n 2 (vì khóa là 1 thu c tính nguyên t ). M t khách hàng có duy nh&t m t ngư(i ph trách bán hàng (Mã_KH H NhânViênPh Trách). M$i nhân viên s+ ph trách
Mã_NV MônH c Tên_NV Phòng M cLư ng NgàyHoànT&t
Hình 4.7 Các ph thu c hàm trong b ng quan h NHÂNVIÊN
Mã_NV Tên_NV Phòng M cLư ng
MãNV MônH c NgàyHoànT&t R1
bán hàng m t khu v c duy nh&t: NhânViênPh Trách H KhuV c. Theo các quy t"c này thì b ng có 2 ph thu c hàm:
1. Mã_KH H Tên_KH, NhânViênPh Trách, KhuV c (ph thu c hàm do khóa chính) 2. NhânViênPh Trách H KhuV c (ph thu c hàm t# quy t"c)
Như v y b ng có ch a ph thu c hàm b"c c u Mã_KH H NhânViênPh Trách H KhuV c. Vì có ch a ph thu c hàm b"c c u nên b ng có m t s khuy t i m như sau:
• N u m t nhân viên bán hàng m i ư c giao nhi m v ph trách khu v c phía b"c (North region), h th ng không th nh p li u cho n khi anh ta tìm ư c m t khác hàng nào ó phía b"c (vì khóa Mã_KH c n ph i có giá tr không r$ng).
• N u xóa khách hàng 6837 ra kh%i b ng, chúng ta s+ b m&t thông tin v ngư(i ph trách bán hàng Hernandez ang ph trách khu v c phía ông (East region).
• N u ngư(i ph trách bán hàng Smith chuy n sang ph trách khu v c khác, nhi u dòng s+ ph i c p nh t l i (dòng 1, 2).
b% ph thu c hàm b"c c u, chúng ta chia b ng thành 2 b ng nh%: BÁNHÀNG1 (Mã_KH, Tên_KH, NhânViênPT) và NHÂNVIÊNBH (NhânViênPT, KhuV c) tách riêng các thu c tính b ph thu c hàm b"c c u ra kh%i b ng. NhânViênPT KhuV c Smith South Smith South Hicks West Hicks West Hernandez East Fauld North Chúng ta c n ph i b% b t các dòng b trùng l*p trong b ng SPERSON các dòng là duy nh&t, và l&y khóa là Salesperson cho b ng như hình bên. Hai b ng ư c liên k t v i nhau b-ng khóa Salesperson.
4.1.6Tr n các b ng quan h
Sau khi th c hi n chu)n hóa, m t s b ng quan h và d li u c a chúng có th b dư th#a vì cùng mô t cho m t i tư ng gi ng nhau. Tr n các b ng quan h là g p các lo i d li u cùng chung ch c n ng mô t cho m t i tư ng nào ó vào trong m t b ng, truy c p d li u m c v t lý ư c nhanh h n vì h th ng không c n ph i ghép các b ng quan h l i. Ví d , ta có 2 b ng quan h sau: Mã_KH Tên_KH NhânViênPT 8023 Anderson Smith 7924 Hobbs Smith 9167 Bancroft Hicks 8596 Eckersley Hicks 6837 Tucker Hernandez 7018 Arnold Fauld NhânViênPT KhuV c Smith South Hicks West Hernandez East Fauld North NhânViênPT KhuV c NHÂNVIÊNB H Mã_KH Tên_KH NhânViênPT BÁNHÀNG1
NHÂNVIÊN1(Mã_NV, Tên_NV, aCh', S T)
NHÂNVIÊN2(Mã_NV, Tên_NV, aCh', Ch cDanhCôngVi c)
“Tên_NV” và “ aCh'” u là các thu c tính mô t cho nhân viên, nhưng l i ư c lưu tr 2 b ng khác nhau. Chúng ta có th g p 2 b ng này l i thành 1 b ng NHÂNVIÊN:
NHÂNVIÊN(Mã_NV, Tên_NV, aCh', S T, Ch cDanhCôngVi c)
Tuy nhiên, vi c tr n các b ng quan h c n ph i b o toàn ý ngh a c a d li u, ó là tránh các trư(ng h p thi u sót do ng ngh a, sai sót do ng âm d ngh a và có th c n ph i lo i b% ph thu c b"c c u sau khi tr n các b ng.
1) Tr ng h$p ng ngh a. ng ngh a là nh ng thu c tính có n i dung gi ng nhau nhưng mang nhi u tên khác nhau. Ví d :
SINHVIÊN1 (MãS , Tên_SV)
SINHVIÊN 2 (S CMND, Tên, aCh')
N u mã s c a sinh viên c.ng ư c l&y t# s CMND, hai b ng này có th tr n l i và s d ng khóa m i là Mã_SV:
SINHVIÊN (Mã_SV, Tên_SV, aCh')
2) Tr ng h$p ng âm, d ngh a. ng âm d ngh a là nh ng thu c tính tuy có tên g i gi ng nhau nhưng l i mang ý ngh a hoàn toàn khác nhau. Ví d :
SINHVIÊN 1 (Mã_SV, Tên_SV, aCh') // a ch' c a sinh viên trong khuôn viên trư(ng. SINHVIÊN 2 (Mã_SV, Tên_SV, S T, aCh') // a ch' nhà riêng c a sinh viên.
Vì aCh' 2 b ng mang 2 ý ngh a khác nhau, nên khi tr n 2 b ng này, chúng ta c n chú ý *t l i tên cho 2 thu c tính này tránh hi u l m như sau:
SINHVIÊN (Mã_SV, Tên_SV, aCh'N iTrú, aCh'Thư(ngTrú)
3) Có ph thu c hàm b.c c u. Sau khi tr n các b ng quan h , m t vài b ng quan h ư c tr n phát sinh ra ph thu c hàm b"c c u như ví d sau:
SINHVIÊN 1 (Mã_SV, Tài)
SINHVIÊN 2 (Mã_SV, GVHư ngD,n) N u tr n 2 b ng ta có b ng quan h m i:
SINHVIÊN (Mã_SV, Tài, GVHư ngD,n)
Gi s m$i tài thu c m t chuyên ch' có m t giáo sư hư ng d,n. Trong trư(ng h p này b ng có ph thu c hàm: tài H GVHư ngD,n, b ng SINHVIÊN l i tr thành b ng d ng chu)n 2, c n ph i b% ph thu c hàm b"c c u m t l n n a thành 2 b ng m i: