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:
SINHVIÊN (Mã_SV, Tài), và H5INGDJN ( Tài, GVHư ngD,n)
4.1.7S% d ng các tr ng công th c (calculated fields)
Trong mô hình d li u, nhi u thu c tính (trư(ng) có quan h toán h c v i các trư(ng khác, ch ng h n m t hóa n có t ng s ti n c a t#ng m c trên hóa n. M t trư(ng có th ư c tính toán t# các
trư(ng khác trong c s d li u ư c g i là trư(ng công th c. Nh( v y, b ng d li u súc tích h n và d qu n lý h n. Trư(ng công th c s+ ư c cài *t b-ng 3 cách:
• Tính toán giá tr c a nó cho m$i m,u tin trong b ng b-ng chư ng trình (công th c tính ư c lưu c nh trong chư ng trình). Giá tr c a trư(ng c n ph i ư c tính toán m$i khi c n.
• Lưu tr giá tr ã tính như bình thư(ng, kèm v i công th c tính không c n ph i tính toán l i khi s d ng. Trư(ng này ch' ư c tính l i khi các trư(ng có liên quan b c p nh t l i.
• Khai báo công th c tính trong h qu n tr c s d li u. H qu n tr c s d li u ch' lưu công th c và tính toán n u c n. ây là cách hi u qu nh&t, vì nó òi h%i ít không gian lưu tr nh&t và th(i gian tính toán ít nh&t tùy theo *c tính c a vi c truy xu&t và c p nh t các trư(ng công th c.
4.1.8Mã hóa d" li u
Trong khi thi t k b ng, ôi khi chúng ta c n quan tâm n kích thư c mà b ng s+ ư c cài *t th c t trên máy tính, nh-m tránh lãng phí không gian lưu tr . Ví d , lưu tr m t s nguyên 9999 d ng ký t (CHARACTER) c n 4 byte, trong khi ó n u nó ư c lưu tr b-ng s nguyên (INTEGER) thì ch' c n 2 byte là di!n t các giá tr t# 0 n 65536. Vi c l a ch n ki u d li u nào cho phù h p
ư c mô t trong m c 4.3.
Ngoài ra, chúng ta có th ti t ki m áng k không gian lưu tr ng th(i t ng tính toàn v3n d li u b-ng b ng tìm ki m (lookup table). Ví d , b ng quan h NHÂNVIÊN (Mã_NV, Tên_NV, ư(ng, T.Ph , Bang, Vùng) trong hình 4.1 có trư(ng a ch' dài c n thi t lưu s li u là 40 ký t . Như v y nh ng nhân viên trên cùng m t tuy n ư(ng (ví d , Plainfield Ave) s+ có chung m t tên ư(ng trong b ng. i u này làm t n c không gian lưu tr cho các tên ư(ng trùng nhau l,n công s c b o ãm r-ng tên c a m t con ư(ng u ph i gi ng nhau ( *c bi t là khi có m t vài con ư(ng ư c chính quy n *t tên m i).
Ví d minh h a cách s d ng b ng tìm ki m v+ trong hình 4.9. K thu t này s d ng 1 trư(ng mã hóa lo i s nguyên INTEGER (St_code như trong ví d ) thay cho trư(ng d li u lo i CHARACTER trong b ng (Street). dài c a St_code ph thu c vào s ư(ng t i a có th có trong danh sách (ho*c trong nư c), gi s là 2000 u(ng thì dài c n thi t c a St_code là 2 byte (0-65535).
Tuy có nhi u l i ích áng k (ví d n u tên ư(ng b thay i thì ch' c n s a m t m,u tin trong b ng tìm ki m), b ng tìm ki m có m t vài khuy t i m là ngư(i c p nh t d li u ph i dùng chu ng trình tr giúp phiên d ch các mã (Mã_ ư(ng) thành d ng quen thu c (Tên ư(ng), và b ng tìm ki m ph i
ư c nh p d li u trư c khi nh p d li u cho b ng chính.
Mã_NV Tên_NV Mã ư(ng Mã ư(ng Tên ư(ng
2 bytes 2 bytes 40 bytes
20 bytes 3 bytes 100 150 190 Magaret Simpson Susan Martin Lorenzo Davis 251 145 251 251 145 Plainfield Ave Englewood Cliffs NHÂNVIÊN TÊN 57NG
4.2 THIDT K3 CƠ SE D! LI U 4.2.1Cơ s d" li u
C s d li u (CSDL) là m t c&u trúc lưu tr d li u m c v t lý trên các phư ng ti n lưu tr d li u có dung lư ng l n và t c nhanh, như d a c ng c a máy tính. CSDL là m t lo i t p tin (file) *c bi t trên d a c ng c a máy tính, ư c thi t k c&u trúc (b ng d li u, m,u tin, trư(ng và các ki u d li u) khai thác d li u lưu trong ó m t cách có hi u qu nh&t (truy c p nhanh, ít t n ch lưu tr , an toàn khi có s c k thu t và b o m t i v i các truy c p không h p l ). Các k thu t này ph thu c vào mô hình thi t k cho CSDL. Cho n ngày nay có 4 lo i mô hình cho CSDL: mô hình phân c&p, mô hình m ng, mô hình quan h và mô hình hư ng i tư ng.
1) Mô hình phân c p: các b ng ư c t ch c phân c&p t# trên xu ng theo d ng cây, b ng trên cùng g i là g c, các b ng dư i cùng g i là các lá c a cây. Mô hình này ch' phù h p v i các lo i d li u quan h v i nhau theo d ng phân c&p (gi ng như cây thư m c trên máy tính), và r&t ít s d ng trong h th ng thông tin qu n lý vì c&u trúc này h n ch kh n ng liên k t d li u ph c v cho các truy v&n a d ng.
2) Mô hình m ng. Trong mô hình này, m$i b ng d li u liên k t v i các b ng khác m t cách t do b-ng con tr% (pointer). M*c dù r&t linh ho t cài *t các quan h gi a các b ng t o ra kh n ng áp ng cao cho nhi u lo i truy v&n khác nhau (v t c l,n ph m vi truy v&n d li u), nhưng nó c.ng tiêu t n khá nhi u không gian lưu tr cho các c&u trúc qu n lý (hi u qu lưu tr d li u th&p), nên nó ch' ư c dùng trên các máy tính l n (mainframe computer) và ít ph bi n do cách thi t k c s d li u khá ph c t p.
3) Mô hình quan h . ây là mô hình ph bi n nh&t hi n nay, nó nh ngh a thành d ng b ng quan h cho các b d li u có liên quan v i nhau. Khóa ư c dùng liên k t các b ng mô t cho các quan h . C s d li u lo i này ư c thư ng m i hóa khá nhi u và có nhi u s n ph)m r&t n i ti ng như Oracle Enterprise Server c a ORACLE, SQL Server c a Microsoft, DB2 c a IBM, MySQL Enterprise Server (dùng mã ngu n m ) c a MySQL AB, …
4) Mô hình i t ng. Trong mô hình này, thu c tính mô t i tư ng và các hành vi ng x c a i tư ng ư c óng gói vào trong m t c&u trúc g i là l p i tư ng. Quan h gi a các i tư ng ư c mô t b-ng c&u trúc l ng nhau ( óng gói) l p i tư ng này vào bên trong l p i tư ng khác, ho*c k t t p (aggregation) các l p i tư ng có chung vai trò trong h th ng. ây là m t mô hình r&t lý tư ng di!n t th gi i th c và ang ư c phát tri n. Không gi ng như l p trình hư ng i tư ng là l nh v c ng d ng r&t thành công c a mô hình hư ng i tư ng, CSDL hư ng i tư ng l i ít thành công vì có r&t nhi u v&n k thu t mà hư ng i tư ng *t ra cho CSDL i tư ng chưa gi i quy t u c, như che gi&u thông tin (ch' s d ng i tư ng qua d ch v c a nó) thay vì chia s+ thông tin (cho phép v&n áp tr c ti p trên các b ng có c&u trúc ã nh ngh a s1n).
Cơ s d" li u quan h . CSDL quan h d a trên các b ng quan h và các quan h gi a các b ng ư c c p trong ph n 4.2:
• M t b ng quan h tư ng ng v i 1 b ng d li u (Table) trong CSDL. • M t c t c a b ng quan h tư ng ư ng v i 1 trư(ng (Field) trong CSDL. • M t dòng c a b ng quan h tư ng ng v i m t m,u tin (Record) trong CSDL. • M t quan h gi a 2 b ng ư c cài *t b-ng khóa liên k t (khóa ngo i).
CSDL s d ng ki u d li u t ch c lưu tr d li u. Ki u d li u ư c cài *t khác nhau trên t#ng c s d li u. Dư i ây là m t s ki u d li u thông d ng trên MS Access:
• Text(n): lưu tr chu i ký t có chi u dài n, t i a là 255 bytes. • DateTime: lưu tr ngày tháng n m và gi( phút giây.
• Yes/No: lưu tr ch' m t trong hai giá tr úng ho*c sai.
• Number: lưu tr s , bao g m Decimal (s th p phân trong kho ng -1028 n 1028), Integer (s nguyên trong kho ng -32767 n 32768), và Long Integer (s nguyên trong kho ng –2147483648
n 2147483647).
• Memo: lưu tr n i dung m t o n v n b n dài t i a là 65535 ký t .
M$i trư(ng d li u có m t ki u d li u tư ng ng. Ngoài vi c th hi n úng b n ch&t c a d li u, s d ng ki u d li u úng còn tr giúp b o ãm cho tính toàn v3n c a d li u: M$i trư(ng d li u ư c g"n kèm v i o n mã ki!m tra tính h p l các giá tr nh p vào cho phù h p v i ki u và các ràng bu c toàn v3n d li u c a trư(ng d li u; o n mã này thư(ng thi t k s1n trong h qu n tr CSDL, ho*c
ư c thi t k thêm thành các hàm/th t c (stored procedures) ư c kích ho t b i h qu n tr CSDL. l n c a trư(ng (ho*c mi n giá tr h p l ) c n ph i phù h p v i yêu c u lưu tr d li u trong su t chu k s ng c a nó. Ví d : trư(ng “Unit_price” c a m t lo i nguyên li u có th c n ph i m r ng thêm n u như nguyên li u này s+ t ng giá g&p nhi u l n sau nhi u n m.
4.2.2H qu n tr cơ s d" li u quan h (Relational DBMS)
H qu n tr c s d li u là h th ng nh ngh a, thao tác và chia s+ d li u ư c lưu tr trong c s d li u cho các i tư ng c n s d ng d li u (bao g m ngư(i s d ng ho*c các ph n m m ư c phân quy n s d ng d li u). M t h qu n tr CSDL g m 3 thành ph n:
1. C s d li u. M$i h qu n tr CSDL có cách lưu tr d li u khác nhau và quy ư c tên khác nhau cho t p tin CSDL. Ví d : MS Access s d ng ph n m r ng là “.MDB” (ví d : QLVT.MDB), i v i MS SQL Server ó là “.MDF” và “.LDF”, i v i Oracle Database, t p tin này có ph n m r ng là “.DAT”.
2. B máy i u khi n. ây là m t ph n m m “thư(ng trú” trên h i u hành i u khi n t&t c các
x lý trên c s d li u, k c phân quy n và ki!m soát quy n truy c p vào c s d li u. Nó cung c&p các c ch truy c p b-ng ngôn ng l nh (Commands) trên các d ch v c&p th&p c a h i u hành và m ng máy tính (Remote Procedure Call, Pipeline, TCP/IP,..), biên d ch, th c hi n l nh và g i k t qu v cho ngư(i s d ng.
3. Ngôn ng l nh. H u h t các h qu n tr CSDL quan h ch&p nh n ngôn ng l nh r&t ph bi n g i
là Ngôn ng V&n áp có C&u trúc (Structured Query Language, SQL). Các câu l nh SQL là m t o n v n b n (text) có c&u trúc r&t n gi n và g n v i ngôn ng t nhiên, ví d “Select all from table Student”, nh-m giúp cho ngư(i s d ng c m th&y quen thu c. B l nh v&n áp c a các h qu n tr CSDL thư(ng ư c chia làm 3 ph n:
• Ngôn ng nh ngh a d li u (Data Definition Language, DDL). DDL g m các l nh mô t c&u
trúc c a b ng, khai báo (ki u, lo i) các thành t d li u, nh ngh a các ràng bu c (constraints/stored procedures/relationships) và c p nh t cho các c&u trúc này, như:
ALTER – Thay i c&u trúc c a m t i tư ng trong c s d li u
DROP – Xóa m t i tư ng ra kh%i c s d li u
• Ngôn ng thao tác d li u (Data Manipulation Language, DML). DML g m các l nh tr c ti p
thao tác trên n i dung c a d li u:
SELECT – l&y d li u t# c s d li u
INSERT – Chèn thêm m,u tin m i vào m t b ng
UPDATE – C p nh t d li u ang có trong b ng
DELETE – Xóa m t s m,u tin ra kh%i b ng
• Ngôn ng i u khi n d li u (Data Control Language, DCL). DCL g m các l nh i u khi n
các thao tác trên c s d li u, và gán quy n truy c p.
GRANT – Gán quy n truy c p trên m t i tư ng cho ngư(i s d ng (d a trên username)
REVOKE – Rút l i quy n truy c p ã c&p phát
COMMIT – Xác nh n các thay i d li u trư c ó ã ch"c ch"n úng.
ROLLBACK – Khôi ph c l i tr ng thái d li u ban u cho các thành t d li u v#a m i b thay i (tính t# th(i i m th c hi n l nh COMMIT sau cùng).
4.2.3S% d ng h qu n tr cơ s d" li u quan h
Trong ph n 4.2 chúng ta bi t r-ng các b ng quan h là d ng th hi n khái quát hóa c a các b ng d li u trong c s d li u, chúng ư c dùng mô t cho n i dung d li u c a toàn b h th ng. T# các b ng d li u này, chúng ta có th cài *t các b ng d li u v t lý tư ng ng trên các h qu n tr c s d li u c th c a h th ng.
a) T o m i b ng d" li u
Ví d 7. Gi s ta có 2 b ng quan h NHÂNVIÊN(Mã_NV, Tên_NV, ư(ng, TPh , Bang, Vùng) và KENFNGNV(Mã_NV, K N ng) liên k t v i NHÂNVIÊN b-ng khóa ngo i Mã_NV như ví d 1 trong ph n 4.1. cài *t quan h này trên h qu n tr c s d li u lo i quan h , chúng ta th c hi n các công vi c sau:
1. Xác nh lo i, ki u, và dài cho các trư(ng. B ng quan h NHÂNVIÊN có: “Mã_NV”: là khóa chính, ki u s nguyên (int), không r$ng
“Tên_NV”: là trư(ng d li u, ki u ký t (Char), dài 40 ký t “ ư(ng”: là trư(ng d li u, ki u Char, dài 40 ký t
“TPh ”: là trư(ng d li u, ki u Char, dài 20 ký t “Bang”: là trư(ng d li u, ki u Char, dài 5 ký t