Giáo trình môn học Cơ sở dữ liệu

pdf 96 trang phuongnguyen 6520
Bạn đang xem 20 trang mẫu của tài liệu "Giáo trình môn học Cơ sở dữ liệu", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pdfgiao_trinh_mon_hoc_co_so_du_lieu.pdf

Nội dung text: Giáo trình môn học Cơ sở dữ liệu

  1. Giáo trình môn Cơ sở dữ liệu
  2. MỘ T S Ố KÝ HI Ệ U VÀ QUY ƯỚ C A, B, C , . là tên các thuộ c tính đ ơ n. X, Y, Z, . là tậ p h ợ p các thu ộ c tính. t, t1, t2, là các bộ giá tr ị . t.[A]: giá trị t ạ i b ộ t ứ ng v ớ i thu ộ c tính A. t.A: giá trị t ạ i b ộ t ứ ng v ớ i thu ộ c tính A. F: là tậ p các ph ụ thu ộ c hàm. f: là kí hiệ u c ủ a m ộ t ph ụ thu ộ c hàm U : Tậ p h ữ u h ạ n các thu ộ c tính R, S : Ký hiệ u các quan h ệ r, s : Ký hiệ u l ượ c đ ồ quan h ệ ho ặ c s ơ đ ồ quan h ệ . R(f) : Ta nói quan hệ R tho ả mãn ph ụ thu ộ c hàm f PTH : Phụ thu ộ c hàm F ├ f: ta gọ i f là m ộ t ph ụ thu ộ c hàm đ ượ c suy d ẫ n logic t ừ F X →Y : Y phụ thu ộ c hàm vào X X! →Y : Y không phụ thu ộ c hàm vào X Sơ đ ồ quan h ệ (l ượ c đ ồ quan h ệ ). 1
  3. DANH SÁCH CÁC HÌNH VẼẢỮỆ VÀ CÁC B NG D LI U Hình 1.1 :Các thành phầ n c ủ a m ộ t h ệ c ơ s ở d ữ li ệ u Hình 1.2: Cấ u trúc c ủ a m ộ t h ệ c ơ s ở d ữ li ệ u Hình 1.3: Hệ c ơ s ở d ữ li ệ u: a) Personal DB; b) Central DB Hình 1.4: Client/Server Database Hình 1.5: Hệ c ơ s ở d ữ li ệ u phân tán Bả ng 1.1: Khách hàng Bả ng 1.2: Hàng hoá Bả ng 1.3: Hàng bán Bả ng 2.1: Ch ứ a thông tin v ề h ọ c sinh Bả ng 2.2: Quan h ệ LOPHOC Bả ng 2.3: Quan h ệ SINHVIEN Bả ng 2.4: Quan h ệ MONHOC Bả ng 2.5: Quan h ệ DIEMTHI Bả ng 3.1: S ổ theo dõi vi ệ c bán hàng Bả ng 3.2: Ch ứ a thông tin v ề hàng hoá Bả ng 3.3 Ch ứ a thông tin v ề khách hàng Bả ng 3.4: Ch ứ a thông tin v ề hoá đ ơ n bán hàng Bả ng 3.5 : Chứ a thông tin v ề chi ti ế t hoá đ ơ n bán hàng Bả ng 3.6: Ch ứ a thông tin v ề sinh viên Bả ng 3.7: B ả ng ch ứ ng minh đ ị nh lý c ủ a phép tách Bả ng 3.7: B ả ng đăng ký h ọ c c ủ a sinh viên Bả ng 4.1: Các ki ể u d ữ li ệ u 2
  4. Chươ ng 1 NHẬƠỞỮỆ P MÔN C S D LI U 1.1 Giớ i thi ệ u v ề h ề th ố ng qu ả n lý t ệ p truy ề n th ố ng Hệ th ố ng qu ả n lý t ệ p truy ề n th ố ng th ườ ng đ ượ c t ổ ch ứ c riêng r ẽ , ph ụ c vụ cho m ộụ t m c đích c ủộơịặộơị a m t đ n v ho c m t đ n v con tr ựộụể c thu c c th . Hệ th ố ng qu ả n lý t ệ p truy ề n th ố ng cho phép ta t ạ o các t ệ p, truy c ậ p và xử lý thông tin trong các t ệ p thông qua các ch ươ ng trình ứ ng d ụ ng. Các ph ầ n mề m ứ ng d ụ ng này đ ượ c vi ế t b ằ ng các ngôn ng ữ l ậ p trình đa năng nh ư PASCAL, C - Ư u đi ể m: • Việ c xây d ự ng h ệ th ố ng các t ệ p tin riêng t ạ i t ừ ng đ ơ n v ị qu ả n lý ít tố n th ờ i gian b ở i kh ố i l ượ ng thông tin c ầ n qu ả n lý và khai thác là nh ỏ , không đòi hỏ i đ ầ u t ư v ậ t ch ấ t và ch ấ t xám nhi ề u, do đó tri ể n khai ứ ng dụ ng nhanh. • Thông tin đượ c khai thác ch ỉ ph ụ c v ụ m ụ c đích h ẹ p nên kh ả năng đáp ứ ng nhanh chóng, k ị p th ờ i. - Nhượ c đi ể m: • Thông tin đượ c t ổ ch ứ c riêng r ẽ ở nhi ề u n ơ i nên vi ệ c c ậ p nh ậ t d ễ làm mấ t tính nh ấ t quán d ữ li ệ u. • Hệ th ố ng thông tin đ ượ c t ổ ch ứ c thành các h ệ th ố ng file riêng l ẻ nên thiế u s ự chia s ẻ thông tin gi ữ a các n ơ i. • Có sựưừữệấớ d th a d li u r t l n qua vi ệ c trùng l ặ p các t ệ p tin trong các ứ ng dụ ng khác nhau. • Không gian đĩa bị lãng phí, khó khăn trong vi ệ c b ả o trì h ệ th ố ng. • Khó khăn trong việ c truy xu ấ t d ữ li ệ u. Mộụể t ví d đi n hình v ềự s trùng l ắữệư p d li u nh trong H ệả qu n lý ngu ồ n nhân lự c bao g ồ m ba h ệ chính: 3
  5. 1. Hệ l ươ ng, h ệ này duy trì ngày công và l ươ ng cho t ấ t c ả nhân viên. 2. Hệ nhân s ự , h ệ này duy trì lý l ị ch cá nhân, d ữ li ệ u v ề t ổ ch ứ c, công vi ệ c đào tạ o và v ị trí thăng ti ế n. 3. Hệưệ h u, h này qu ảị n tr các qui t ắ c liên quan đ ếỉưạỉư n ngh h u, lo i ngh h u. Chi tiế t v ề h ư u c ủ a t ừ ng nhân viên. Vấ n đ ề b ấ t l ợ i là H ệ qu ả n lý l ươ ng thông th ườ ng đ ượ c qu ả n lý b ở i phòng Tài chính, trong khi Hệ qu ả n lý nhân s ự và H ệ qu ả n lý h ư u đ ượ c qu ả n lý bở i phòng T ổ ch ứ c cán b ộ . Rõ ràng, có nhi ề u d ữ li ệ u v ề nhân viên là chung cho cả ba h ệ . Th ườ ng nh ữ ng h ệ này th ự c hi ệ n và l ư u tr ữ riêng bi ệ t nên chúng t ạ o ra sự trùng l ặ p d ữ li ệ u. Qua phân tích trên, chúng ta nhậ n th ấ y vi ệ c t ổ ch ứ c d ữ li ệ u theo h ệ thố ng t ệ p hoàn toàn không phù h ợ p v ớ i nh ữ ng h ệ th ố ng thông tin l ớ n. Vi ệ c xây dự ng m ộ t h ệ th ố ng thông tin đ ả m b ả o đ ượ c tính nh ấ t quán d ữ li ệ u, đáp ứ ng đượ c nhu c ầ u khai thác đ ồ ng th ờ i c ủ a nhi ề u ng ườ i là th ự c s ự c ầ n thi ế t. 1.2. Hệ c ơ s ở d ữ li ệ u 1.2.1 Các thành phầ n c ủ a h ệ c ơ s ở d ữ li ệ u. Ngườ i dùng Các ứ ng d ụ ng Hệ qu ả n tr ị c ơ s ở d ữ li ệ u Phầ n c ứ ng Cơ s ở d ữ li ệ u Hình 1.1 : Các thành phầ n c ủ a m ộ t h ệ c ơ s ở d ữ liệ u 4
  6. Các thành phầ n trong h ệ CSDL g ồ m: - Ngườ i dùng (User), g ồ m có 4 đ ố i t ượ ng s ử d ụ ng: + Ngườ i qu ả n tr ị c ơ s ở d ữ li ệ u: Trong nhữ ng t ổ ch ứ c có nhi ề u ng ườ i cùng sử d ụ ng chung m ộ t ngu ồ n d ữ li ệ u thì nh ấ t thi ế t ph ả i có m ộ t ng ườ i đ ứ ng đầ u qu ả n lý, ch ị u trách nhi ệ m đ ố i v ớ i ngu ồ n d ữ li ệ u này. Đó chính là ng ườ i quả n tr ị c ơ s ở d ữ li ệ u (Database Administrators - DBA ). DBA có nhi ệ m v ụ t ổ chứộ c n i dung c ủơởữệạ a c s d li u, t o và c ấ p quy ề n truy c ậơởữệ p c s d li u cho ngườ i dùng, đ ư a ra yêu c ầ u v ề ph ầ n c ứ ng và ph ầ n m ề m n ế u c ầ n thi ế t. DAB cũng phả i ch ị u trách nhi ệ m b ả o v ệ an toàn, Backup thông tin khi có s ự c ố . + Ngườ i phân tích và thi ế t k ế h ệ th ố ng: Là ngườ i ch ị u trách nhi ệ m: (a) xác địữữệ nh nh ng d li u nào c ầưữ n l u tr trong CSDL; (b) l ựọữấ a ch n nh ng c u trúc thích hợ p đ ể bi ể u di ễ n và l ư u tr ữ ; (c) ph ỏ ng v ấ n t ấ t c ả nh ữ ng ng ườ i s ử dụ ng CSDL sau này đ ể hi ể u đ ượ c nh ữ ng yêu c ầ u c ủ a h ọ đ ố i v ớ i CSDL; (d) tiế n hành phân tích thi ế t k ế h ệ th ố ng sau khi th ố ng nh ấ t đ ượ c t ấ t c ả các yêu cầ u c ủ a ng ườ i s ử d ụ ng. + Ngườ i vi ế t ch ươ ng trình ứ ng d ụ ng: Là ngườ i vi ế t ph ầ n m ề m ph ụ c v ụ cho việựệ c th c hi n các ch ứ c năng c ủệốằữ a h th ng b ng nh ng ngôn ng ữợ phù h p, ngoài ra còn có các nhiệ m v ụ : (a) ch ạ y th ử ch ươ ng trình (test); (b) ch ữ a l ỗ i và gỡ r ố i ch ươ ng trình (debug); (c) vi ế t tài li ệ u, h ướ ng d ẫ n s ử d ụ ng; (d) b ả o trì hệ th ố ng + Ngườ i dùng cu ố i (EndUser): Ngườ i dùng cu ố i là nh ữ ng ng ườ i truy c ậ p CSDL để : (a) c ậ p nh ậ t d ữ li ệ u; (b) cruy v ấ n d ữ li ệ u; (c) th ố ng kê, báo cáo. M ỗ i EndUse chỉ có m ộềạ t quy n h n trong ph ạ m vi nh ấịỗớơởữệ t đ nh đ i v i c s d li u như quy ề n đ ọ c, ghi, copy ) - Các ứ ng d ụ ng: Các thao tác cầ n thi ế t truy c ậ p vào c ơ s ở d ữ li ệ u nh ư t ạ o l ậ p, xử lý, c ậ p nh ậ t d ữ li ệ u. - Hệ qu ả n tr ị c ơ s ở d ữ li ệ u: Hệ qu ả n tr ị c ơ s ở d ữ li ệ u là ph ầ n m ề m cho phép đị nh nghĩa các c ấ u trúc đ ể l ư u tr ữ d ữ li ệ u và các thao tác trên d ữ li ệ u sao cho đảảự m b o s an toán và bí m ậủữệệ t c a d li u. Hi n nay có m ộốệảịơ t s h qu n tr c sở d ữ li ệ u thông d ụ ng nh ư FOXPRO, ACCESS, SQL SERVER, ORACLE - Phầ n c ứ ng: Phầ n c ứ ng là các thi ế t b ị và các ph ươ ng ti ệ n đ ượ c s ử d ụ ng đ ể lư u tr ữ và truy c ậ p vào c ơ s ở d ữ li ệ u. 5
  7. - Cơ s ở d ữ li ệ u: Cơ s ở d ữ li ệ u là m ộ t h ệ th ố ng các thông tin có c ấ u trúc đ ượ c lưữ u tr trên các thi ếịưữ t b l u tr thông tin (nh ưừừểể băng t , đĩa t ), đ có th thoả mãn yêu c ầ u khai thác thông tin đ ồ ng th ờ i c ủ a nhi ề u ng ườ i s ử d ụ ng hay nhiề u ch ươ ng trình ứ ng d ụ ng v ớ i nh ữ ng m ụ c đích s ử d ụ ng khác nhau. 1.2.2. Kiế n trúc c ủ a m ộ t h ệ c ơ s ở d ữ li ệ u USER Khung nhìn 1 CSDL CSDL Khung nhìn 2 USER 2 mứ c khái mứ c niệ m trong USER k Khung nhìn k Mứ c lô gic Mứ c v ậ t lý Mứ c ngoài Hình 1.2: Cấ u trúc c ủ a m ộ t h ệ c ơ s ở d ữ li ệ u Cấ u trúc m ộ t h ệ c ơ s ở d ữ li ệ u g ồ m ba m ứ c: + Mứ c ngoài: Là mứ c sát v ớ i ng ườ i s ử d ụ ng nh ấ t, là cách nhìn, là quan niệ m c ủ a t ừ ng ng ườ i s ử d ụ ng đ ố i v ớ i c ơ s ở d ữ li ệ u m ứ c khái ni ệ m. Kh ả năng truy nhậ p tuỳ thu ộ c vào quy ề n h ạ n t ừ ng USER. + Mứ c logic (CSDL m ứ c khái ni ệ m): Là tậ p các d ữ li ệ u đ ượ c bi ể u di ễ n dướ i d ạ ng tr ừ u t ượ ng c ủ a c ơ s ở d ữ li ệ u v ậ t lý. + Mứ c v ậ t lý: Là tậ p các d ữ li ệ u đ ượ c bi ể u di ễ n theo m ộ t c ấ u trúc nào đó, đượ c l ư u trên các thi ế t b ị nh ớ th ứ c ấ p (nh ư đĩa t ừ , băng t ừ ). 1.3. Phân loạ i các h ệ c ơ s ở d ữ li ệ u 1.3.1. Các hệ t ậ p trung Hệ c ơ s ở d ữ li ệ u t ậ p trung là h ệ trong đó CSDL đ ượ c l ư u tr ữ t ạ i m ộ t v ị trí nhấ t đ ị nh, g ồ m các h ệ c ơ s ở d ữ li ệ u sau: - Hệ c ơ s ở d ữ li ệ u cá nhân (Personal Database): Mô hình này là mộ t h ệ c ơ s ở dữ li ệ u nh ỏ ch ỉ g ồ m m ộ t máy tính cá nhân v ớ i m ộ t vài ng ườ i s ử d ụ ng làm nhiệ m v ụ đ ơ n l ẻ v ớ i quy mô nh ỏ . 6
  8. - Hệ c ơ s ở d ữ li ệ u trung tâm (Central Database): Hệ c ơ s ở d ữ li ệ u trung tâm là mộ t h ệ đa ng ườ i dùng t ừ thi ế t b ị đ ầ u cu ố i (terminal) t ạ i đó có màn hình và phím để trao đ ổ i thông tin. M ọ i x ử lý, tính toán đ ượ c th ự c hi ệ n t ạ i trung tâm vớ i m ộ t máy tính m ạ nh có th ể x ử lý nhi ề u yêu c ầ u. Mộ t h ệ nh ư v ậ y khi máy tính trung tâm có s ự c ố , thì toàn b ộ h ệ th ố ng s ẽ ngừ ng ho ạ t đ ộ ng. User (a) (b) Hình 1.3: Hệ c ơ s ở d ữ li ệ u; (a) Cá nhân; (b) Trung tâm - Hệ c ơ s ở d ữ li ệ u Client/Server (Client/Server Database): Cơ s ở d ữ li ệ u đ ượ c lư u tr ữ t ạ i máy ch ủ (Server) và nhi ề u máy tr ạ m (Client) k ế t n ố i s ử d ụ ng chung cơ s ở d ữ li ệ u này. LAN, WAN, INTERNET Hình 1.4 Kiế n trúc Client/Server Database 1.3.2. Các hệ c ơ s ở d ữ li ệ u phân tán Hệ c ơ s ở d ữ li ệ u phân tán là h ệ CSDL trong đó c ơ s ở d ữ li ệ u đ ượ c t ổ chứ c phân b ố thành nhi ề u c ơ s ở d ữ li ệ u đ ị a ph ươ ng, đ ượ c l ư u tr ữ trên các máy tính ởịị các v trí đ a lý khác nhau nh ưẫ ng v n cùng thu ộộệố c m t h th ng. Các c ơở s 7
  9. dữ li ệ u này đ ượ c liên k ế t v ớ i nhau qua m ạ ng máy tính ph ụ c v ụ nhu c ầ u ng ườ i dùng ở nhi ề u đ ị a đi ể m khác nhau ở m ứ c trong su ố t. Mạ ng máy tính Hình 1.5: Hệ c ơ s ở d ữ li ệ u phân tán Hệ c ơ s ở d ữ li ệ u phân tán đ ượ c phân thành hai lo ạ i + Hệ thu ầ n nh ấ t: Trong các hệ CSDL đ ị a ph ươ ng bi ể u di ễ n theo nh ữ ng mô hình giố ng nhau ph ươ ng th ứ c truy c ậ p gi ố ng nhau. + Hệ không thu ầ n nh ấ t: Ngượ c l ạ i v ớ i mô hình h ệ thu ầ n nh ấ t là h ệ không thuầ n nh ấ t. 1.4. Nhữưểủệ ng u đi m c a vi c xây d ự ng m ộệơởữệ t h c s d li u - Đả m b ả o s ự đ ộ c l ậ p d ữ li ệ u: D ữ li ệ u đ ộ c l ậ p v ớ i ch ươ ng trình làm cho d ữ liệ u đ ượ c s ử d ụ ng r ộ ng rãi và thu ậ n l ợ i h ơ n. - Giả m thi ểệưừữệ u vi c d th a d li u: Khác v ớệốệệốơởữ i h th ng t p, h th ng c s d liệổứ u t ch c theo c ấ u trúc th ố ng nh ấợ t, h p lý h ạếệưữạề n ch vi c l u tr t i nhi u nơ i. 8
  10. - Đả m b ả o tính nh ấ t quán và toàn v ẹ n d ữ li ệ u: Do ít d ư th ừ a nên h ạ n ch ế đượ c s ự d ị th ườ ng khi thay đ ổ i, c ậ p nh ậ t. - Tăng tính dùng chung: Cơ s ở d ữ li ệ u có kh ả năng cho nhi ề u ng ườ i truy c ậ p s ử dụ ng m ỗ i ng ườ i nhìn vào c ơ s ở d ữ li ệ u nh ư nó là c ủ a riêng mình không b ị ả nh hưở ng b ở i ng ườ i khác. - Tăng khả năng phát tri ể n các ứ ng d ụ ng: Do có s ự m ở r ộ ng giao l ư u nên kh ả năng sáng tạ o c ả i ti ế n thu ậ n l ợ i h ơ n. - Tính chuẩ n hoá cao. - Chấ t l ượ ng d ữ li ệ u đ ượ c c ả i thi ệ n. - Giả m b ớ t chi phí b ả o trì h ệ th ố ng. 1.5. Tính độ c l ậ p d ữ li ệ u Tính độ c l ậ p d ữ li ệ u là s ự b ấ t bi ế n c ủ a ch ươ ng trình ứ ng d ụ ng đ ố i v ớ i các thay đổ i trong c ấ u trúc l ư u tr ữ và chi ế n l ượ c truy nh ậ p vào c ơ s ở s ữ li ệ u. Tính độ c l ậ p d ữ li ệ u ở đây có hai m ặ t: - Độ c l ậ p v ề v ậ t lý: Là s ự đ ộ c l ậ p trong l ư u tr ữ , ch ươ ng trình ứ ng d ụ ng không phụ thu ộ c vào vi ệ c d ữ li ệ u đ ượ c l ư u gi ữ ở đâu hoặc lư u gi ữ nh ư th ế nào trên thiế t b ị nh ớ th ứ c ấ p. - Độậề c l p v lôgic: S ự thay đ ổ i, thêm b ớ t thông tin v ềựểởứ các th c th m c quan niệ m không đòi h ỏ i thay đ ổ i các khung nhìn c ủ a ng ườ i s ử d ụ ng d ẫ n t ớ i không cầ n thay đ ổ i ch ươ ng trình ứ ng d ụ ng. 1.6 Hệ qu ả n tr ị c ơ s ở d ữ li ệ u 1.6.1 Các chứ c năng c ủ a m ộ t h ệ qu ả n tr ị CSDL Mộ t h ệ qu ả n tr ị CSDL th ự c hi ệ n các ch ứ c năng sau: + Tạ o c ấ u trúc d ữ li ệ u t ươ ng ứ ng v ớ i mô hình d ữ li ệ u đ ượ c ch ọ n. + Đả m b ả o tính đ ộ c l ậ p d ữ li ệ u. + Cho phép cậ p nh ậ t d ữ li ệ u. + Kế t xu ấ t ra đ ượ c các báo cáo t ừ các d ữ li ệ u trong CSDL. + Đả m b ả o tính an toàn và toàn v ẹ n d ữ li ệ u trong CSDL. + Cung cấ p các ti ệ n ích sao l ư u ph ụ c h ồ i d ữ li ệ u. + Cung cấ p các th ủ t ụ c đi ề u khi ể n t ươ ng tranh. 1.6.2. Các thành phầ n c ủ a m ộ t h ệ QTCSDL 9
  11. Mộ t h ệ qu ả n tr ị thông th ườ ng có các thành ph ầ n chính sau: + Ngôn ngữ đ ị nh nghĩa d ữ li ệ u (Data Definition Language). + Ngôn ngữ thao tác d ữ li ệ u (Data Manipulation Language). + Ngôn ngữ h ỏ i đáp d ữ li ệ u (Query Language). + Bộ vi ế t báo cáo. + Từ đi ể n d ữ li ệ u. + Bộ phát sinh đ ồ ho ạ . 1.7. Các mô hình dữ li ệ u. Mô hình dữ li ệ u cho phép ng ườ i dùng bi ể u di ễ n c ơ s ở d ữ li ệ u d ướ i c ấ u trúc thuậữễểộ t ng d hi u. M t mô hình d ữệộ li u là m t hình th ứả c mô t toán h ọ c bao gồ m: + Mộ t h ệ th ố ng các ký hi ệ u đ ể mô t ả d ữ li ệ u. + Tậ p các phép toán đ ể thao tác trên c ơ s ở d ữ li ệ u. Vào nhữ ng năm đ ầ u c ủ a th ậ p k ỷ 60 (th ế k ỷ 20), mô hình m ạ ng và mô hình phân cấếệầ p là th h đ u tiên c ủọ a h các mô hình d ữệ li u. Sang đ ầậỷ u th p k 70. E.F. Codd đề xu ấ t mô hình quan h ệ m ớ i, đó chính là th ế h ệ th ứ hai. Mô hình quan hệ này có c ấ u trúc ch ặ t ch ẽ , sáng s ủ a, nh ấ t quán và có tính tr ự c quan cao. 1.6.1 Khái niệ m v ề th ự c th ể và liên k ế t. a) Thự c th ể Thự c th ể (entity) là đ ố i t ượ ng c ụ th ể hay tr ừ u t ượ ng mà ta c ầ n quan tâm trong công tác quả n lý. Tên th ự c th ể là danh t ừ . Thí dụ 1.1: Qu ả n lý th ư vi ệ n ta có các th ự c th ể nh ư : “Sách”, “Đ ộ c gi ả ” là các đố i t ượ ng c ụ th ể . Các đ ố i t ượ ng tr ừ u t ượ ng có th ể là: Khoa công ngh ệ thông tin, Ngành toán ứ ng d ụ ng . b) Kiể u th ự c th ể Kiể u th ự c th ể là t ậ p h ợ p các th ự c th ể (đ ố i t ượ ng) cùng đ ượ c mô t ả b ằ ng nhữ ng đ ặ c tr ư ng, tính ch ấ t gi ố ng nhau. Thí dụ 1.2: M ộ t nhân viên là m ộ t th ự c th ể , t ậ p h ợ p các nhân viên c ủ a cùng mộ t h ệ th ố ng t ạ o thành m ộ t ki ể u th ự c th ể . 10
  12. Biể u di ễ n m ộ t ki ể u th ự c th ể : Là m ộ t hình ch ữ nh ậ t bên trong ghi tên c ủ a kiể u th ự c th ể . Thí dụ 1.3: Bi ể u di ễ n các th ự c th ể « Nhân viên », « Sách », « Độ c gi ả »: Nhân viên Sách Độ c gi ả Ghi chú: Thểệủểựể hi n c a ki u th c th là m ộựể t th c th , nó là m ộầử t ph n t trong tậợ p h p hay l ớủểựểậ p c a ki u th c th . Vì v y trong các ứụể ng d ng đ tránh s ử dụ ng nhi ề u khái ni ệ m ta đ ồ ng nh ấ t th ự c th ể và ki ể u th ự c th ể . c) Thuộ c tính (Attribute) Thuộ c tính là d ữệ li u dùng đ ểảộặưủựểỗ mô t m t đ c tr ng c a th c th . M i thự c th ể có m ộ t t ậ p các thu ộ c tính. Tên thu ộ c tính ph ả i là danh t ừ . Thí dụ 1.4: Th ự c th ể “Sách” có các thu ộ c tính: Tên sách, tên tác gi ả , nhà xuấ t b ả n 1.6.2. Liên kế t và ki ể u liên k ế t Liên kế t: Là mộự t s ghép n ốữ i gi a hai hay nhi ềựểả u th c th ph n ánh m ộựế t th c t quả n lý. Thí dụ 1.5: Ông Nguy ễ n Văn H ư ng làm việ c ở phòng Đào t ạ o; Hoá đ ơ n s ố 60 gử i cho khách hàng Trầ n Văn Hùng; Sinh viên D ươ ng Văn Vi ệ t thuộ c l ớ p CNTT1A Phân loạ i liên k ế t: + Liên kế t 1-1 (liên k ế t m ộ t - m ộ t): Hai ki ể u th ự c th ể A và B có m ố i liên k ế t 1-1 nế u m ộ t th ự c th ể ki ể u A t ươ ng ứ ng v ớ i m ộ t th ự c th ể ki ể u B và ng ượ c l ạ i. Kí hiệ u: A B Thí dụ 1.7: Nhân viên Bả n s ơ y ế u lý l ị ch 11
  13. Ghi chú: Trong biể u đ ồ c ấ u trúc d ữ li ệ u hai ki ể u th ự c th ể có m ố i liên k ế t 1-1 có thể đ ượ c đ ồ ng nh ấ t thành m ộ t ki ể u th ự c th ể . + Liên kế t 1-n (m ộ t - nhi ề u): Hai ki ể u th ự c th ể A và B có m ố i liên k ế t 1-n n ế u mộ t th ự c th ể ki ể u A t ươ ng ứ ng v ớ i nhi ề u th ự c th ự c th ể ki ể u B và ng ượ c l ạ i mộ t th ự c th ể ki ể u B t ươ ng ứ ng v ớ i duy nh ấ t m ộ t th ự c th ể ki ể u A. Kí hiệ u: A B Thí dụ 1.8: Khách hàng Hoá đơ n + Liên kế t n-n (nhi ề u - nhi ề u): Hai ki ể u th ự c th ể A và B có m ố i liên k ế t n - n nế u m ộ t th ự c th ể ki ể u A t ươ ng ứ ng v ớ i nhi ề u th ự c th ể ki ể u B và ng ượ c l ạ i. Kí hiệ u: A B Thí dụ 1.9: Nhân viên Dự án Ghi chú: Trong biểồấ u đ c u trúc d ữệếồạố li u n u t n t i m i liên k ế t n-n gi ữ a các kiểựểầẩ u th c th , ta c n chu n hoá nó đ ưềạ a v d ng liên k ếộề t m t-nhi u: Dạ ng nhi ề u- nhi ề u A B Đư a v ề d ạ ng mộ t - nhi ề u A A/B B Thí dụ 1.10: Nhân viên Tham gia Dự án 12
  14. 1.6.3. Các mô hình dữ li ệ u - Mô hình dữ li ệ u phân c ấ p: Mô hình dữ li ệ u phân c ấ p (Hierachical Data Model) - đượ c g ọ i t ắ t là mô hình phân c ấ p đ ượ c đ ư a ra vào nh ữ ng năm 60, trong mô hình dữ li ệ u này d ữ li ệ u đ ượ c t ổ ch ứ c thành c ấ u trúc cây, trong đó các nút (node) củ a cây bi ể u di ễ n các b ả n ghi, gi ữ a các b ả n ghi liên k ế t v ớ i nhau theo mố i quan h ệ cha con: • Mộ t cha có nhi ề u con. • Mộ t con ch ỉ có m ộ t cha. Ưu đi ể m: • Thể hi ệ n d ễ dàng quan h ệ 1-n. • Việ c phân chia d ữ li ệ u d ễ th ể hi ệ n, đ ả m b ả o an toàn d ữ li ệ u • Tính độ c l ậ p c ủ a ch ươ ng trình và các d ữ li ệ u đ ượ c đ ả m b ả o Nhượ c đi ể m: • Không thể hi ệ n đ ượ c m ố i quan h ệ n-n • Trong mộ t h ệ th ố ng phân c ấ p, d ữ li ệ u đ ượ c t ổ ch ứ c nh ư trên d ẫ đ ế n khó sử a đ ổ i d ữ li ệ u. • Lặạữệ p l i d li u, lãng phí b ộớốề nh và t n nhi u công s ứạậ c t o l p. - Mô hình dữ li ệ u m ạ ng: Mô hình dữ li ệ u m ạ ng (Network Data Model) đ ượ c g ọ i t ắ t là mô hình mạ ng (Network Model) là mô hình d ữ li ệ u đ ượ c bi ể u di ễ n b ở i m ộ t đ ồ th ị có hướ ng. Trong mô hình m ạ ng ng ườ i ta dùng hai y ế u t ố là b ả n ghi và liên k ế t. Khái niệ m b ả n ghi gi ố ng nh ư mô hình phân c ấ p, liên k ế t là t ậ p các con tr ỏ v ậ t lý thiếậ t l p quan h ệủởữữậả ch s h u gi a t p b n ghi này v ớậả i t p b n ghi khác. So sánh hai mô hình ta thấ y b ả n ghi “đ ơ n hàng” liên k ế t v ớ i b ả n ghi “ s ố l ượ ng” bả n ghi “s ố l ượ ng” cũng có liên k ế t v ớ i b ả n ghi “ m ặ t hàng” và b ả n ghi “s ố lượ ng “ là thành viên c ủ a hai b ả n ghi ch ủ khác nhau. Mô hình mạ ng ng ườ i ta đã kh ắ c ph ụ c đ ượ c vi ệ c d ư th ừ a d ữ li ệ u c ủ a mô hình phân cấ p. Tuy v ậ y c ấ u trúc h ệ th ố ng ph ứ c t ạ p ngoài n ộ i dung thông tin, 13
  15. mỗ i b ả n ghi còn có thêm thông tin n ữ a là đ ị a ch ỉ đ ể truy nh ậ p t ớ i b ả n ghi thành viên. Vớ i m ỗ i liên k ế t ph ả i có nhãn đ ể xác đ ị nh liên k ế t. Ưu đi ể m: • Dễ th ể hi ệ n m ố i liên k ế t n-n • Kiể u truy c ậ p d ữ li ệ u m ề m d ẻ o h ơ n ki ể u phân c ấ p Nhượ c đi ể m: • Việ c s ử a đ ổ i s ố li ệ u khó khăn. • Vớ i nh ữ ng l ậ p trình viên, vi ệ c thi ế t k ế CSDL khó. - Mô hình quan hệ : Mô hình cơ s ở d ữ li ệ u Quan h ệ (g ọ i t ắ t là mô hình Quan h ệ ) do E.F Codd đ ề xuấ t năm 1971. Mô hình này bao g ồ m: - Mộ t h ệ th ố ng các ký hi ệ u đ ể mô t ả d ữ li ệ u d ướ i d ạ ng dòng và c ộ t nh ư quan hệ , b ộ , thu ộ c tính, khóa chính, khoá ngo ạ i, - Mộ t t ậ p h ợ p các phép toán thao tác trên d ữ li ệ u nh ư phép toán t ậ p h ợ p, phép toán quan hệ . Vì tính chấ t ch ặ t ch ẽ c ủ a toán h ọ c v ề lí thuy ế t t ậ p h ợ p nên mô hình này đã mô tả d ữ li ệ u m ộ t cách rõ ràng, uy ể n chuy ể n và tr ở thành r ấ t thông d ụ ng. Ngày nay hầ u h ế t các HQTCSDL đ ề u t ổ ch ứ c d ữ li ệ u theo mô hình d ữ liệ u quan h ệ . Thí dụ 1.11: Xét mộ t h ệ thông tin phân ph ố i hàng, h ệ này qu ả n lý ho ạ t đ ộ ng bán hàng cho khách. Các kiể u th ự c th ể chính c ủ a h ệ th ố ng bao g ồ m: Kiể u th ự c th ể Khách Hàng gồ m các thu ộ c tính: Mã khách hàng (MaKH), Tên khách hàng (TenKH), tuổ i (Tuoi), Đ ị a ch ỉ khách hàng (DiaChi) Kiể u th ự c th ể Hàng Hoá gồ m các thu ộ c tính: Mã hàng hoá (MaHang), Tên hàng hoá (TenHang), Giá (Gia), Màu sắ c c ủ a m ặ t hàng (Mau), Đ ơ n v ị tính (DVT) Kiể u th ự c th ể Bán Hàng gồ m các thu ộ c tính: MaKH, MaHang, s ố l ượ ng (SoLuong) Ứng v ớ i m ỗ i ki ể u th ự c th ể ta có m ộ t b ả ng d ữ li ệ u sau: 14
  16. Bả ng Khách Hàng Bả ng 1.1: Khách hàng Mã Khách Tên Khách Tuổ i Đị a Ch ỉ KH1 A 20 Hà nộ i KH2 B 21 Hà tây KH3 C 19 Thái Nguyên Bả ng Hàng Hoá Bả ng 1.2: Hàng hoá Mã Hàng Tên Hàng Giá ĐVT Màu MH1 Bóng rổ 500 Quả Vàng MH2 Bóng đá 150 Quả Đỏ MH3 Bóng chuyề n 100 Quả Xanh Bả ng Bán Hàng Bả ng 1.3 Hàng bán Mã Khách Mã Hàng Số L ượ ng KH1 MH2 50 KH1 MH3 40 KH2 MH3 60 KH2 MH1 90 KH3 MH 3 80 Mộơởữệ t c s d li u theo mô hình quan h ệựấộậ th c ch t là m t t p các b ả ng mà: • Mỗ i b ả ng g ọ i là m ộ t quan h ệ / ki ể u th ự c th ể / t ệ p. • Mỗ i hàng g ọ i là m ộ t b ộ / th ự c th ể / b ả n ghi. 15
  17. • Mỗ i c ộ t g ọ i là m ộ t thu ộ c tính/ tr ườ ng. 1.6.4 Đánh giá các mô hình -Về cách bi ể u di ễ n d ữ li ệ u: • Mô hình 1: Tậ p các cây quá l ớ n n ế u d ữ li ệ u nhi ề u và ph ứ c t ạ p • Mô hình 2: Tậ p các đ ồ th ị có h ướ ng ph ứ c t ạ p • Mô hình 3: Tậ p các b ả ng d ễ quan sát vì các b ả ng đ ộ c l ậ p v ớ i nhau -Thao tác trên các mô hình: + Thao tác bổ sung thêm m ộ t b ả n ghi • Mô hình 1, 2: Không thể b ổ sung thêm các b ả n ghi thành viên mà không có bả n ghi ch ủ . Ví d ụ thêm m ặ t hàng 5 thì ph ả i thu ộ c đ ơ n hàng nào?. • Môhình 3: Có thể b ổ sung vào b ả ng “hàng hoá” d ễ dàng + Xoá mộ t b ả n ghi • Mô hình 1: Phả i xoá toàn b ộ cây mà nó là g ố c, s ử a l ạ i cây mà nó là nhánh • Mô hình 2: Phả i xoá các b ả n ghi thành viên c ủ a nó, s ử a l ạ i dây chuy ề n mà nó là thành viên • Mô hình 3: Đơ n gi ả n ta ch ỉ xoá dòng có b ả n ghi đó và các b ả n ghi ở bả ng có liên k ế t v ớ i nó + Tìm kiế m b ả n ghi • Mô hình 1: Tìm trên các nhánh củ a cây • Mô hình 2 : Tìm trên toàn bộ dây chuy ề n • Mô hình 3: Tìm trên các bả ng Như v ậ y so sánh các thao tác ta th ấ y v ớ i mô hình quan h ệ đ ơ n gi ả n thu ậ n tiệ n h ơ n so v ớ i các mô hình trên. BÀI TẬỎ P VÀ CÂU H I CHƯƠ NG 1 1. Đị nh nghĩa c ơ s ở d ữ li ệ u. 2. Nêu các thành phầ n c ủ a m ộ t h ệ c ơ s ở d ữ li ệ u. 3. Nêu kiế n trúc c ủ a m ộ t h ệ c ơ s ở d ữ li ệ u. 4. Phân loạ i các h ệ c ơ s ở d ữ li ệ u 16
  18. 5. Nêu ư u đi ể m c ủ a vi ệ c thi ếếộệơởữệ t k m t h c s d li u. 6. Nêu tính độ c l ậ p d ữ li ệ u. 7. Trình bày khái niệ m v ềệảịơởữệ h qu n tr c s d li u? Các h ệảịơởữ qu n tr c s d liệ u hi ệ n nay đang đ ượ c s ử d ụ ng. 8. Nêu các chứ c năng và các thành ph ầủộệảịơởữệ n c a m t h qu n tr c s d li u. 9. Thế nào là mô hình d ữ li ệ u ? Các mô hình dữ li ệ u. 17
  19. Chươ ng 2 MÔ HÌNH DỮỆỆ LI U QUAN H 2.1. Thuộ c tính -Thuộ c tính (Attribute): Thu ộ c tính là d ữ li ệ u dùng đ ể mô t ả m ộ t đ ặ c tr ư ng c ủ a thự c th ể . (Các thu ộ c tính đ ơ n th ườ ng ký hi ệ u là các ch ữ cái A,B,C, T ậ p thuộ c tính th ườ ng ký hi ệ u là các ch ữ cái X, Y, Z ). Các thu ộ c tính đ ượ c phân biệ t qua tên g ọ i và ph ảộểữệấịểữệ i thu c 1 ki u d li u nh t đ nh (ki u d li u là ki ể u đơ n). Tên nên đ ặ t sát v ớ i ý nghĩa c ủ a nó, mang tính g ợ i nh ớ và không nên quá dài. -Miề n thu ộ c tính: Là t ậ p h ợ p các thu ộ c tính c ủ a th ự c th ể , các th ự c th ể th ườ ng có rấềộ t nhi u thu c tính, tuy v ậểả y đ qu n lý ta ch ỉầả c n qu n lý m ộốộ t s thu c tính cầ n thi ế t cho thông tin v ề th ự c th ể . -Miề n tr ị c ủ a thu ộ c tính (Domain): Là m ộ t t ậ p h ợ p các giá tr ị c ủ a thu ộ c tính, ký hiệ u là DOM(Ai) vớ i i=1, ,n. Ví dụ 2.1: Thu ộ c tính GIOITINH có mi ề n tr ị là DOM(GIOITINH) = {nam, n ữ } 2.2. Quan hệ Đị nh nghĩa: G ọ i U = {A1, A2, A3, An} là tậ p h ữ u h ạ n c ủ a các thu ộ c tính, m ỗ i thuộ c tính Ai vớ i i=1, ,n có mi ề n giá tr ị t ươ ng ứ ng là DOM(Ai). Quan hệ R xác đị nh trên t ậ p thu ộ c tính U là t ậ p con c ủ a tích Đ ề – Các. R(U) ⊆ DOM(A1) x DOM(A2) x xDOM(An) Ký hiệ u quan h ệ R xác đ ị nh trên t ậ p thu ộ c tính U là R(U) ho ặ c R(A1, A2, , An). Hay có thể vi ế t dướ i d ạ ng sau: R (U) = A1 A2 An 1 1 1 a 1 a 2 a n 2 2 2 a 1 a 2 a n m bộ m m m a 1 a 2 a n n thuộ c tính 18
  20. Trong đó: A1, A2, An: Gọ i là mi ề n thu ộ c tính c ủ a quan h ệ R 1 2 m DOM(A1) = {a 1, a 1, a 1}: Gọ i là mi ề n tr ị c ủ a thu ộ c tính A1 n: Gọ i là b ậ c c ủ a quan h ệ R m: Gọ i là l ự c l ượ ng c ủ a quan h ệ R Ta thấ y so v ớ i m ộ t b ả ng thì: • Mỗ i quan h ệ t ươ ng ứ ng v ớ i m ộ t b ả ng d ữ li ệ u (là m ộ t t ệ p d ữ li ệ u) • Mỗ i thu ộ c tính t ươ ng ứ ng v ơ i m ộ t c ộ t d ữ li ệ u trong b ả ng (là m ộ t trườ ng) • Mỗ i b ộ t ươ ng ứ ng v ớ i m ộ t hàng c ủ a b ả ng d ữ li ệ u (là m ộ t b ả n ghi) Ví dụ 2.2 : Cho tậ p thu ộ c tính U g ồ m có các thu ộ c tính: TÊN, Gi ớ i tính và tu ổ i Ta có mi ề n trị c ủ a chúng nh ư sau: DOM(Tên) = {Mai, Trung, Hoa, Anh} DOM(Giớ i tính) = {Nam, N ữ } DOM(Tuổ i) = {15,16,17} Từ đó, ta xây d ự ng đ ượ c quan h ệ họ c sinh là mộ t t ậ p con Tích Đ ề các c ủ a miề n tr ị các thu ộ c tính trên nh ư sau: Bả ng 2.1: Ch ứ a thông tin v ề h ọ c sinh Tên Giớ i Tính Tuổ i Mai Nữ 15 Anh Nam 16 Trung Nam 15 Mai Nữ 16 Anh Nữ 15 Trung Nam 17 2.3. Khoá củ a m ộ t quan h ệ Cho quan hệ R xác đ ị nh trên t ậ p thu ộ c tính U, K là mộ t t ậ p thu ộ c tính K⊆U. Gọ i K là khoá c ủ a quan h ệ R n ế u v ớ i ∀ bộ ti, tj ∈ R; ti ≠ tj thì ti[K] ≠ tj[K] (tứ c 19
  21. là giá trị trên K c ủ a m ộ t b ộ nào đó khác giá tr ị trên K c ủ a m ọ i b ộ còn l ạ i, hay nói cách khác bộ đó là xác đ ị nh duy nh ấ t ). Xét thêm rằ ng n ế u v ớ i ∀ ti, tj ∈ R; i ≠ j sao cho ti[K] = tj[K] thì ti ≡ tj thì K là khóa củ a quan h ệ R Ví dụ 2.3 : Xét quan hệ R có d ạ ng sau R A B C D t1= a1 b1 c1 d1 t2= a2 b2 c2 d2 t3= a3 b3 c2 d2 t4= a1 b2 c2 d2 Xét thấ y: K1=U, K2=ABC, K3=AB, là các khoá củ a quan h ệ R. Như ng X=BC không ph ả i là t ậ p khoá c ủ a quan h ệ R vì t2.X = t4.X như ng t2 ≠ t4 2.4 Các phép toán củ a đ ạ i s ố quan h ệ 2.4.1 Quan hệ kh ả h ợ p Hai quan hệ R, S g ọ i là kh ả h ợ p n ế u chúng có cùng b ậ c (s ố các thu ộ c tính bằ ng nhau) và mi ềịủộ n tr c a thu c tính th ứủ i c a quan h ệằềị này b ng mi n tr củ a thu ộ c tính th ứ i trong quan h ệ kia. Ví dụ 2.4 : Cho hai quan hệ R = { A1, A2, A n} và S= { A’1, A’2, A’n} nế u tho ả mãn DOM(Ai) = DOM(A’i), vớ i i=1, ,n thì R và S g ọ i là hai quan hệ kh ả h ợ p. Chú ý: Nế u hai quan h ệ có cùng b ậ c và tên thu ộ c tính th ứ i trong quan h ệ này khác tên vớ i thu ộ c tính th ứ i trong quan h ệ kia nh ư ng chúng có cùng mi ề n trị thì hai quan h ệ này cũng là hai quan h ệ kh ả h ợ p. 2.4.2 Các phép toán (1) Phép hợ p Hợ p c ủ a hai quan h ệ R và S kh ả h ợ p là t ậ p các b ộ thu ộ c R ho ặ c thu ộ c S. Ký hiệ u phép h ợ p là R ∪ S. Biể u di ễ n hình th ứ c phép h ợ p có d ạ ng: 20
  22. R ∪ S = { t | t ∈ R hoặ c t ∈ S } Ví dụ 2.5: Cho hai quan h ệ R và S có d ạ ng sau: R A B C S A B C a1 b1 c1 a1 b1 c1 a1 b2 c2 a2 b2 c2 Ta có : R ∪ S = A B C a1 b1 c1 a1 b2 c2 a2 b2 c2 Ví dụ 2.6: Cho hai quan h ệ R và S có d ạ ng sau: R A B C S A’ B’ C a1 2 c1 a1 2 c1 a1 3 c2 a2 4 c2 a2 4 c2 a3 5 c3 Ta có : R ∪ S = A B C a1 2 c1 a1 3 c2 a2 4 c2 a3 5 c3 (2) Phép giao Giao củ a hai quan h ệ R và S kh ả h ợ p là t ậ p các b ộ thu ộ c c ả quan h ệ R và S. Ký hiệ u phép giao là R ∩ S Biể u di ễ n hình th ứ c phép giao có d ạ ng: R ∩ S = { t | t ∈ R và t ∈ S } 21
  23. Ví dụ 2.7: Cho hai quan h ệ R và S có d ạ ng sau : R A B C S A B C a1 b1 c1 a1 b1 c1 a1 b2 c2 a2 b2 c2 a2 b2 c2 Ta có : R ∩ S = A B C a1 b1 c1 a2 b2 c2 Ví dụ 2.8: Cho hai quan h ệ R và S có d ạ ng sau : R A B C S A’ B’ C’ a1 2 c1 a1 2 c1 a1 3 c2 a2 4 c2 a2 4 c2 a3 5 c3 Ta có : R ∩ S = A B C a1 2 c1 a2 4 c2 (3) Phép trừ Hiệ u c ủ a hai quan h ệ R và S kh ả h ợ p là t ậ p các b ộ thu ộ c R nh ư ng không thuộ c S. Ký hi ệ u phép t ừ là R - S . Biể u di ễ n hình th ứ c phép tr ừ có d ạ ng: R - S = { t| t ∈ R và t ∉ S } Ví dụ 2.9: Cho hai quan h ệ R và S có d ạ ng sau : R A B C S A B C a1 b1 c1 a1 b1 c1 a1 b2 c2 a2 b2 c2 22
  24. a2 b2 c2 Ta có : R - S = A B C a1 b2 c2 Ví dụ 2.10: Cho hai quan hệ R và S có d ạ ng sau : R A B C S A’ B’ C’ a1 2 c1 a1 2 c1 a2 4 c2 a2 4 c2 a3 5 c3 a1 3 c2 Ta có : S - R = A’ B’ C’ a3 5 c3 a1 3 c2 Chú ý: Ta thấ y R - S = R - (R ∩ S) (4) Phép chiế u Phép chiế u c ủ a quan h ệ R trên t ậ p thu ộ c tính X (X⊆ U), ký hiệ u ΠX(R ) là mộ t t ậ p các b ộ , đ ượ c xây dung b ằ ng cách lo ạ i b ỏ đi t ừ các b ộ t trong quan h ệ R nhữ ng thu ộ c tính không n ằ m trong X. Để thu ậ n ti ệ n cho vi ệ c bi ể u di ễ n hình th ứ c phép chi ế u, quy ướ c m ộ t s ố ký hiệ u nh ư sau: G ọ i t là m ộ t b ộ thu ộ c R, A là m ộ t thu ộ c tính (A⊆ U), t[A] là giá trị c ủ a b ộ t t ạ i thu ộ c tính A. Gi ả s ử X⊆ U vớ i X={B1, B2, , Bm}khi đó t[X] =(t[B1], t[B2], , t[Bm] ). Vậ y ta có ΠX (R ) = { t [X] | t ∈ R} Ví dụ 2.11: Cho quan hệ R và t ậ p thu ộ c tính X (v ớ i X=AB) R A B C a b c 1 23 1 1 a2 b2 c2 a1 b2 c2
  25. Vậ y phép chi ế u trên t ậ p thu ộ c tính X c ủ a quan h ệ R có d ạ ng sau: ΠX (R ) = A B (5) Phép chọ n a1 b1 -Phép chọ n là a2 b2 phép toán lọ c ra trong a1 b2 mộ t quan h ệ m ộ t t ậ p con các bộ tho ả mãn các đi ề u ki ệ n c ủ a bi ể u th ứ c ch ọ n F. -Biể u th ứ c ch ọ n F: là m ộ t t ổ h ợ p Boolean c ủ a các toán h ạ ng, m ỗ i toán hạ ng là m ộ t phép so sánh đ ơ n gi ả n gi ữ a hai bi ế n là hai thu ộ c tính ho ặ c gi ữ a mộếộộ t bi n là m t thu c tính và m ộằ t h ng, cho giá tr ị đúng ho ặốớỗ c sai đ i v i m i bộ d ữ li ệ u. Các phép so sánh: >, >, =, Các phép logic là: ∧ (và ), ∨ (hoặ c), ⌐ (ph ủ đ ị nh) -Biể u di ễ n hình th ứ c c ủ a phép ch ọ n: σ F(R) = {t / t∈R và t(F)=True} Ví dụ 2.12: Cho quan hệ R có d ạ ng sau: R A B C a1 b1 c1 a2 b2 c2 a3 b3 c3 Vớ i bi ể u th ứ c ch ọ n F: B = “b1”, ta có 24
  26. σ F ( R) = A B C a1 b1 c1 Vớ i bi ể u th ứ c ch ọ n F: B <> “b1”, ta có σ F ( R) = A B C a2 b2 c2 a3 b3 c3 Vớ i bi ể u th ứ c ch ọ n F: (A = “b2”) ˄ (C = “c2”) σ F ( R) = A B C a2 b2 c2 (6) Phép tích Đề - các Cho R là mộ t quan h ệ xác đ ị nh trên t ậ p thu ộ c tính (A1, A2, An) và quan hệ S xác đ ị nh trên t ậ p thu ộ c tính ( B1, B2, B m). Tích Đề - các c ủ a R và S là mộ t quan h ệồ g m (n+m) thu ộ c tính và m ỗộủ i b c a quan h ệếảạ k t qu có d ng n thành phầ n đ ầ u là m ộ t b ộ thu ộ c R và m thành ph ầ n sau là m ộ t b ộ thu ộ c S R x S = { t | t có dạ ng (a1, a2, an, b1, b2, , bm) trong đó {a1, a2, , an} ∈ R; {b1, b2, , bm} ∈ S} Ví dụ 2.13: Cho hai quan h ệ R và S có d ạ ng sau: R A B C S D E F a1 b1 c1 d e f ’ ’ ’ a1 b2 c2 d e f Ta có kế t qu ả c ủ a phép tích Đ ề các: R x S = A B C D E F 25
  27. a1 b1 c1 d e f ’ ’ ’ a1 b1 c1 d e f a1 b2 c2 d e f ’ ’ ’ a1 b2 c2 d e f Ví dụ 2.14: Cho hai quan hệ R và S có d ạ ng sau: R A B S B C D α 1 α 4 d1 β 2 β 5 d2 β 3 d3 γ 7 d4 Ta có phép Tích Đề Các c ủ a R và S là: RxS= A R.B S.B C D α 1 α 4 d1 α 1 β 5 d2 α 1 β 3 d3 α 1 γ 7 d4 β 2 α 4 d1 β 2 β 5 d2 β 2 β 3 d3 β 2 γ 7 d4 (7) Phép kế t n ố i Phép kế t n ố i là phép toán v ớ i hai quan h ệ d ự a trên các đi ề u ki ệ n đ ể liên kế t v ớ i nhau: -Gọ i θ là mộ t trong các phép so sánh: >; =; <>; = -Biể u th ứ c k ế t n ố i có d ạ ng: F = A θ B 26
  28. Từ đó ta có phép k ế t n ố i đ ượ c xác đ ị nh nh ư sau: R S = { t(u,v) /u ∈ R; v ∈ S và thoả mãn bi ể u th ứ c ch ọ n F } F Ví dụ 2.15: Cho hai quan h ệ R và S có d ạ ng sau: R A B C S E D a1 b1 1 1 d1 a2 b2 2 2 d2 a3 b3 3 Gọ i F là bi ể u th ứ c k ế t n ố i hai quan h ệ R và S ( F = C ≥ E) Ta có R S = ( A B C E D ) F a1 b1 1 1 d1 a2 b2 2 1 d1 a2 b2 2 2 d2 a3 b3 3 1 d1 a3 b3 3 2 d2 Chú ý: -Hai quan hệ mu ố n k ế t n ố i đ ượ c thì mi ề n thu ộ c tính k ế t n ố i A c ủ a quan hệ R ph ả i so sánh đ ượ c v ớ i mi ề n thu ộ c tính B c ủ a quan h ệ S -Nế u T’ = R x S mà T =R S thì T ⊆ T’. Như v ậ y phép k ế t n ố i có thể coi là phép ch ọ n c ủ a phép tích Đ ề các. -Nế u phép k ế t n ố i θ là “ = ” thì gọ i là k ế t n ố i b ằ ng. N ế u k ế t n ố i b ằ ng qua hai thuộ c tính cùng tên và m ộ t trong hai thu ộ c tính đ ượ c lo ạ i b ỏ thì g ọ i là kế t n ố i t ự nhiên, ký hi ệ u “*” Ví dụ 2.16: Cho hai quan h ệ R và S có d ạ ng sau: R A B C S C D a1 b1 1 1 d1 a2 b2 2 2 d2 a3 b3 3 27
  29. Gọ i F là bi ể u th ứ c k ế t n ố i t ự nhiên gi ữ a R và S, (F có d ạ ng: R.C=S.C) Vậ y phép k ế t n ố i t ự nhiên gi ữ a R và S là: R*S= A B C D a1 b1 1 d1 a2 b2 2 d2 (8) Phép chia Cho R là quan hệ xác đị nh trên t ậ p thu ộ c tính U, v ớ i U={A1,A2, ,An} và quan hệ S xác đ ị nh trên t ậ p thu ộ c tính V v ớ i V ={ B1,B2, ,Bm }sao cho n > m, S ≠ ∅ và U⊂ V. Phép chia R ÷ S là mộ t quan h ệ P(M) có d ạ ng sau: P(M)=R ÷ S ={t.M vớ i t∈R, (t.M) x S⊆R và M=U-V} Ví dụ 2.17: Cho hai quan h ệ R và S có d ạ ng sau: R A B C D S C D a b c d c d a b e f e f b c e f c d c d c d e f a b d e Ta có phép chia củ a R và S là: R÷ S= A B a b c d Nhậ n xét: -Nế u P x S= R thì phép chia không d ư -Nế u P x S ⊂ R thì phép chia có dư 28
  30. (9) Mộ t s ố hàm ti ệ n ích: 1. Hàm SUM(R,A) cho tổ ng cá giá tr ị s ố trong c ộ t A c ủ a R SUM(R,A) = Σ {t.A | t∈R} 2. Hàm AVG(R,A) 3. Hàm MAX(R,A) 4. Hàm (MIN(R,A) 2.4.3 Mộ t s ố ví d ụ Cho cơ s ở d ữ li ệ u cung c ấ p hàng g ồ m các b ả ng d ữ li ệ u sau: Bả ng Công Ty (CONGTY) g ồ m các thu ộ c tính: Mã công ty (MaCongTy), Tên công ty (TenCongTy), Ngân sách (NganSach), Đị a ch ỉ (DiaChi). Bả ng Hàng Hoá (HANGHOA) g ồ m các thu ộ c tính: Mã hàng (MaHang), Tên hàng (TenHang), Mầ u s ắ c (Mau), Đ ơ n v ị tính (DonViTinh). Bả ng Cung C ấ p hàng (CUNGCAP) g ồ m các thu ộ c tính: MaCongTy, MaHang, Số l ượ ng (SoLuong), Đ ơ n giá (DonGia). Hãy viêt biể u th ứ c đ ạ i s ố quan h ệ đ ể th ự c hi ệ n các câu h ỏ i sau: . Cho biế t danh sách các m ặ t hàng màu đ ỏ σ Mau = “ Đỏ ”(HANGHOA) . Cho biế t mã các công ty cung c ấ p m ặ t hàng H1 ΠMaCongTy (σ MaHang = “H1”(CUNGCAP)) . Cho biế t tên các công ty cung c ấ p m ặ t hàng H1 ΠTenCongTy ((σ MaHang =”H1”(CUNGCAP)) * CONGTY) MaCongTy . Cho biế t nh ữ ng công ty cung c ấ p c ả hai m ặ t hàng H1 và H2 ΠTenCongTy [(CONGTY * (σ MaHang=”H1” (CUNGCAP)) ∩ MaCongTy ∩ ((CONGTY * (σ MaHang=”H2” (CUNGCAP)] MaCongTy Câu hỏ i t ố i ư u h ơ n: 29
  31. ΠTenCongTy {CONGTY * [ ΠMaCongTy (σ MaHang=”H1”(CUNGCAP))∩ MaCongTy ∩ ΠMaCongTy (σ MaHang=”H2”(CUNGCAP))]} . Cho biế t tên các công ty cung c ấ p ít nh ấ t m ộ t m ặ t hàng màu đ ỏ ΠTenCongTy(CONGTY * CUNGCAP * (σmàu=”Đổ ”(HANGHOA)) MaCongTy MaCongTy . Cho biế t tên nh ữ ng công ty cung c ấ p t ấ t c ả các m ặ t hàng ΠTenCongTy { CONGTY * [ ΠMaCongTy, ,MaHang CUNGCAP) ÷Π MaHang(HANGHOA)] CÂU HỎ I VÀ BÀI T Ậ P CH ƯƠ NG 2 1. Đị nh nghĩa quan h ệ . Cho ví d ụ minh ho ạ . 2. Đị nh nghĩa khoá c ủ a m ộ t quan h ệ . Cho ví dụ minh ho ạ . 3. Trình bày các phép toán củ a đ ạ i s ố quan h ệ . Cho các ví d ụ minh ho ạ . 4. Cho các quan hệ R, S và P có d ạ ng sau: R A B C S D E F P A B D a1 b1 c1 d1 e1 f1 a1 b1 d1 a2 b2 c2 d2 e2 f2 a2 b2 d2 a3 b3 c3 d3 e3 f3 a1 b3 d3 a2 b1 d2 a2 b2 d1 a3 b3 d3 a2 b3 d3 Hãy tính giá trị c ủ a các bi ể u th ứ c đ ạ i s ố quan h ệ sau: a) Π(AB)(P) b) R*Π(AB)(P) c) σF(R*Π(AB)(P)) vớ i F có d ạ ng D=’d1’ a.d) R * S * T b.e) ∏CE(σC=’c2’ ^ F=’f2’(R x S)) 5. Cho các quan hệ R, S và P có d ạ ng sau: R A B C S D E P A B D H 30
  32. a1 b1 c1 d1 e1 a1 b1 d1 h1 a2 b2 c2 d2 e2 a2 b2 d1 h2 a3 b3 c3 d3 e3 a2 b2 d2 h3 a2 b2 d3 h4 Hãy tính kế t qu ả c ủ a các bi ể u th ứ c đ ạ i s ố quan h ệ sau: a) S x P 1. b) σS.D=P.D (S x P) 2. c) R*(σS.D=P.D (S x P)) 3. d) R*S*P 6. Cho quan hệ R, S và P có dạ ng sau: R A B C S D E P B D a1 b1 c1 1 e1 b1 1 a2 b2 c2 2 e2 b2 2 3 e3 b2 2 Hãy tính kế t qu ả c ủ a các phép toán đ ạ i s ố quan h ệ sau: . a) S*P . b) R*S*P . c) σD=2 (S* P) . d) R * (σD=2 (S* P)) 7. Cho các quan hệ R, S và Q có d ạ ng sau: R A B C S B C D Q D E F a2 b2 c1 b2 C1 d1 d1 e1 f1 a1 b2 c1 b2 C1 d2 d2 e1 f2 a2 b3 c2 b1 C2 d3 d2 e2 f3 Hãy tính kế t qu ả c ủ a các phép toán đ ạ i s ố quan h ệ sau: . δ A=a2(R*S) e. R x S . ΠABC(R*S*Q) f. R * δ B = b1(S) . ΠBC(R) ∪ ΠBC(S) g. ΠB(δ B=b2(R*S)) 31
  33. . ΠBC(R) ∩ ΠBC(S) h. δ D=d1(ΠBCD(S*Q)) 8. Cho các quan hệ LOPHOC, SINHVIEN, DIEMTHI và MONHOC l ầ n l ượ t như sau: +Bả ng 2.2: Quan h ệ LOPHOC MALOP TENLOP L01 ĐHCQK2C L02 ĐHCQK2C L03 ĐHCQK2B L04 ĐHCQK2B + Bả ng 2.3 Quan h ệ SINHVIEN MASV HOTEN GIOITINH DIACHI MALOP CQK21001 Lê Hồ ng Vân 1 Thái Nguyên L01 CQK21002 Nguyễ n Văn Hà 1 Bắ c giang L01 CQK21003 Hoàng Thị G ấ m 0 Hà Nộ i L02 CQK21004 Lê Thị Thao 0 Thái Nguyên L02 +Bả ng 2.4: Quan h ệ MONHOC MAMH TENMH SOTINCHI M01 Pascal 3 M02 Ngôn ngữ C 3 M03 Cơ s ở d ữ li ệ u 2 + Bả ng 2.5: Quan h ệ DIEMTHI 32
  34. MASV MAMH KYHOC DIEMLAN1 DIEMLAN2 CQK21001 M01 1 4 7 CQK21001 M02 3 8 CQK21001 M03 3 4 6 CQK21003 M01 1 8 CQK21004 M02 3 2 6 Hãy viế t các bi ể u th ứ c đ ạ i s ố quan h ệ đ ể th ự c hi ệ n các yêu c ầ u sau: c. Cho biế t mã sinh viên, h ọ tên, gi ớ i tính c ủ a các sinh viên có đ ị a ch ỉ tạ i Thái Nguyên? d. Cho biế t mã sinh viên, h ọ tên, đ ị a ch ỉ c ủ a các sinh viên có gi ớ i tính bằ ng 1? e. Cho biế t mã và tên c ủ a các môn h ọ c có s ố tín ch ỉ b ằ ng3? f. Cho biế t mã c ủ a các môn h ọ c có s ố tín ch ỉ <=2? g. Cho biế t mã sinh viên, h ọ tên, đi ể m thi l ầ n 1 c ủ a các sinh viên đã họ c môn h ọ c có mã là ‘M01’ trong h ọ c kỳ 1? h. Cho biế t mã sinh viên, h ọ tên, đi ể m thi l ầ n 1 c ủ a các sinh viên đã họ c môn h ọ c có tên môn là ‘c ơ s ở d ữ li ệ u’? i. Cho biế t mã c ủ a các sinh viên đã tích lu ỹ đ ượ c t ấ t c ả các môn h ọ c có ? j. Cho biế t mã c ủ a các môn h ọ c ch ư a có sinh viên nào đăng ký h ọ c? 33
  35. k. Cho biế t mã, h ọ tên, mã l ớ p c ủ a các sinh viên ph ả i thi l ạ i môn h ọ c có mã môn là ‘M01’? l. Cho biế t mã, h ọ tên, mã l ớ p c ủ a các sinh viên ph ả i h ọ c l ạ i môn h ọ c có tên môn là ‘Ngôn ngữ C’? m.Cho biế t mã, h ọ tên, mã l ớ p c ủ a các sinh viên ph ả i thi l ạ i môn h ọ c có tên môn là ‘Pascal’? n. Cho biế t mã sinh viên, mã môn h ọ c, đi ể m thi l ầ n 1 c ủ a các sinh viên họ c trong h ọ c kỳ 3? 34
  36. Chươ ng 3 LÝ THUYẾẾẾƠỞỮỆ T TH T K C S D LI U 3.1. Giớ i thi ệ u 3.1.1. Vấ n đ ề thi ế t k ế c ơ s ở d ữ li ệ u Mộơởữệ t c s d li u quan h ệồậ g m t p các quan h ệố . Mu n xây d ựộơ ng m t c sởữệ d li u quan h ệầ c n xác đ ị nh trong c ơởữệ s d li u đó có nh ữ ng quan h ệ gì, mỗ i quan h ệ có nh ữ ng thu ộ c tính nào, s ự liên k ế t gi ữ a các quan h ệ nh ư th ế nào? Từ c ơ s ở phân tích chúng ta m ớ i xây d ự ng nên s ơ đ ồ th ự c th ể liên k ế t, xác đị nh các quan h ệ và các liên k ế t c ầ n thi ế t, ch ỉ nh s ử a chu ẩ n hoá các quan h ệ trong hệ th ố ng c ơ s ở d ữ li ệ u Bướ c cu ố i cùng là nh ậ p d ữ li ệ u theo dõi b ả o trì c ậ p nh ậ t, hoàn thi ệ n các quan hệ , các liên k ế t trong h ệ th ố ng theo yêu c ầ u c ủ a ng ườ i dùng 3.1.2 Bài toán ví dụ Giả s ử m ộ t c ử a hàng bán buôn/l ẻ các nhân viên m ở s ổ theo dõi vi ệ c bán hàng hàng ngày là mộ t b ả ng (quan h ệ ) nh ư sau: Bả ng 3.1: S ổ theo dõi vi ệ c bán hàng Số Mã Tên Đị a Mã Tên Đơ n Thành Ngày SL HĐ KH KH chỉ hàng hàng giá tiề n 15/01/09 HD01 1 Anh TN A1 Xe đạ p 800 3 2.400 15/01/09 HD01 1 Anh TN A2 Xe máy 1.200 2 2.400 17/01/09 HD02 2 Hùng BG A2 Xe máy 1.200 1 1.200 18/01/09 HD03 3 Hươ ng TB A1 Xe đạ p 800 2 1.600 18/01/09 HD03 3 Hươ ng TB A2 Xe máy 1.200 4 4.800 35
  37. Nhậ n xét: Quan hệ trên đ ượ c thi ế t k ế ch ư a t ố i ư u vì t ồ n t ạ i m ộ t s ố d ị th ườ ng về d ữ li ệ u, c ụ th ể nh ư : -Dư th ừ a d ữ li ệ u (Redundancy): Thông tin v ề khách hàng và hàng hoá b ị lặ p l ạ i nhi ề u l ầ n. N ế u khách hàng có mã 1 mua 15 m ặ t hàng thì thông tin v ề khách hàng này bị l ặ p l ạ i 15 l ầ n, t ươ ng t ự đ ố i v ớ i m ặ t hàng n ế u m ặ t hàng có mã A1, nế u có 2000 khách hàng mua thì thông tin v ề m ặ t hàng đó cũng l ặ p l ạ i 2000 lầ n -Không nhấ t quán (Inconsistency): Là h ệ qu ả c ủ a d ư th ừ a d ữ li ệ u. Gi ả sử s ử a b ả n ghi th ứ nh ấ t, tên khách hàng đ ượ c ch ữ a thành An thì d ữ li ệ u này l ạ i không nhấ t quán v ớ i b ả n ghi th ứ 2 (v ẫ n có tên là Anh). -Dị th ườ ng khi thêm b ộ (Insertion anomalies): N ế u mu ố n thêm thông tin về m ộ t m ặ t hàng m ớ i nh ậ p (ch ư a bán cho b ấ t kỳ khách nào) vào quan h ệ thì không đượ c vì khoá chính c ủ a quan h ệ trên g ồ m 2 thu ộ c tính S ố hoá đ ơ n, Mã hàng. -Dị th ườ ng khi xoá b ộ (Deletion anomalies): Gi ả s ử mu ố n xoá thông tin về m ặ t hàng có mã là A1 thì ta ph ả i rò t ấ t c ả các dòng trong b ả ng có liên quan đế n m ặ t hàng này đ ể xoá, ng ượ c l ạ i thông tin v ề m ặ t hàng đó v ẫ n t ồ n t ạ i. Qua phân tích trên, chúng ta nên tìm cách tách quan hệ trên thành các quan hệ nh ỏ h ơ n. Vậ y ta tách quan h ệ trên thành 4 quan h ệ sau: Bả ng 3.2: Ch ứ a thông tin v ề hàng hoá Mã hàng Tên hàng Đơ n giá A1 Xe đạ p 800000 A2 Xe máy 12000000 Bả ng 3.3 Ch ứ a thông tin v ề khách hàng Mã khách Tên khách Đị a ch ỉ 1 Anh TN 2 Hùng BG 3 Hươ ng TB 36
  38. Bả ng 3.4: Ch ứ a thông tin v ề hoá đ ơ n bán hàng Số hoá đ ơ n Ngày Mã khách HD01 15/01/09 1 HD02 17/01/09 2 HD03 18/01/09 2 Bả ng 3.5 : Chứ a thông tin v ề chi ti ế t hoá đ ơ n bán hàng Số hoá đ ơ n Mã hàng Số l ượ ng HD01 A1 3 HD01 A2 2 HD02 A2 1 HD03 A1 2 HD03 A2 4 Vớ i cách t ổ ch ứ c này ta th ấ y: • Cơ s ở d ữ li ệ u g ồ m 4 b ả ng. • Trong mỗ i quan h ệ không có s ự d ư th ừ a d ữ li ệ u. 3.1.3. Kế t lu ậ n Cách tổ ch ứ c d ữ li ệ u th ứ hai (tách thành 4 quan hệ ) t ố t h ơ n thu ậ n l ợ i h ơ n cho việ c áp d ụ ng máy tính vào x ử lý, kh ắ c ph ụ c nh ữ ng d ị th ườ ng v ề d ữ li ệ u khi cậ p nh ậ t, s ử a ch ữ a d ữ li ệ u nh ư : -Dư th ừ a d ữ li ệ u -Không nhấ t quán v ề d ữ li ệ u Cơởể s đ tách các quan h ệự d a trên s ựụộữ ph thu c gi a các thu ộ c tính (g ọ i là phụ thu ộ c hàm) nghĩa là t ừ thu ộ c tính này có th ể suy ra thu ộ c tính kia: Ví dụ 3.1: T ừ mã hàng ta có th ể suy ra tên hàng Mã hàng là “A1” thì “tên hàng” phả i là xe đ ạ p Mã hàng là “A2” thì “tên hàng” phả i là xe máy 37
  39. Việ c tách các quan h ệ thành các quan h ệ con ta g ọ i là phép chu ẩ n hoá 3.2. Sơ đ ồ quan h ệ 3.2.1 Phụ thu ộ c hàm (Functional Dependencies) Cho quan hệ R(U); X, Y là 2 t ậ p thu ộ c tính (X,Y⊆U) và mộ t PTH f: X →Y Ta nói quan hệ R tho ả PTH f và vi ế t R(f) n ế u v ớ i m ọ i 2 b ộ b ấ t kỳ ti, tj ∈ R giố ng nhau trên X thì chúng cũng gi ố ng nhau trên Y. Hay ta vi ế t: R(X →Y) ⇔ (∀u,v ∈R): u.X=v.X ⇒ u.Y = v.Y. Trong đó u, v là hai bộ b ấ t kỳ thu ộ c quan h ệ R. Nế u f:X →Y là mộ t ph ụ thu ộ c hàm xác đ ị nh trên R(U) thì ta nói r ằ ng t ậ p thuộ c tính Y ph ụ thu ộ c hàm vào t ậ p thu ộ c tính X, (hay t ậ p thu ộ c tính X xác đị nh hàm t ậ p thu ộ c tính Y. Nế u Y không ph ụ thu ộ c hàm vào X ta có th ể vi ế t X! →Y Ví dụ 3.2: Cho bả ng (quan h ệ ) SINH VIÊN sau: Bả ng 3.6: Ch ứ a thông tin v ề sinh viên Mã SinhViên Họ Tên Giớ iTính Ngày Sinh Quê Quán SV01 Lan Nữ 14/07/86 Hà Nộ i SV02 Mai Nữ 02/05/87 Thái Nguyên SV04 Anh Nam 12/05/85 Nam Đị nh SV05 Hoa Nữ 20/01/86 Hà Nộ i - Ký hiệ u m ộ t ph ụ thu ộ c hàm là f. Ký hi ệ u m ộ t t ậ p ph ụ thu ộ c hàm là F. Ví d ụ trong bả ng 3.6 ta có các ph ụ thu ộ c hàm sau: -Tên sinh viên phụ thu ộ c vào mã sinh viên (MãSinhViên → Họ Tên ) - Quê quán phụ thu ộ c hàm vào mã sinh viên (MãSinhViên → QuêQuán) - Giớ i tính ph ụ thu ộ c hàm vào mã sinh viên (MãSinhViên → Giớ iTính) - Ngày Sinh phụ thu ộ c hàm vào mã sinh viên (MãSinhViên → NgàySinh) Vậ y ta có t ậ p ph ụ thu ộ c hàm: F={MãSinhViên→Họ Tên; MãSinhViên→QuêQuán; MãSinhViên→Giớ iTính; Mã Sinh Viên → Ngày Sinh} 38
  40. Ghi chú: - Phụ thu ộ c hàm là c ơ s ở cho vi ệ c chu ẩ n hoá l ượ c đ ồ quan h ệ . - Phụ thu ộ c hàm là những ràng buộc dữ liệ u được suy ra từ ý nghĩa và các mối liên quan giữa các thuộc tính. 3.2.2. Lượ c đ ồ quan h ệ (s ơ đ ồ quan h ệ ) Lượ c đ ồ quan h ệ r là m ộ t c ặ p g ồ m hai thành ph ầ n (U,F) trong đó U là t ậ p hữ u h ạ n các thu ộ c tính, F là t ậ p các ph ụ thu ộ c hàm xác đ ị nh trên U. Ký hiệ u là: r(U,F) Ví dụ 3.3: Cho l ượ c đ ồ quan h ệ r(U,F), v ớ i U = {A,B,C,D,E} và F = {A→BC, B →D, AD → E} Ghi chú: . Thể hi ệ n c ủ a l ượ c đ ồ quan h ệ là quan h ệ (b ả ng d ữ li ệ u) . Quan hệ luôn xác đ ị nh trên m ộ t l ượ c đ ồ quan h ệ . Thể hi ệ n c ủ a m ộ t l ượ c đ ồ quan h ệ có th ể khác nhau t ạ i m ỗ i th ờ i điể m . Mộ t l ượ c đ ồ quan h ệ có th ể t ươ ng đ ươ ng v ớ i m ộ t t ậ p l ượ c đ ồ quan hệ nh ỏ h ơ n nh ư ng có c ấ u trúc t ố t h ơ n trong vi ệ c áp d ụ ng các thao tác dữ li ệ u. 3.3 Hệ tiên đ ề cho t ậ p ph ụ thu ộ c hàm 3.3.1. Đặ t v ấ n đ ề Ta thấ y v ớ i các bài toán qu ả n lý khác nhau thì ta ph ả i làm vi ệ c v ớ i các loạ i d ữ li ệ u khác nhau, nh ư v ậ y s ẽ không có m ộ t ph ươ ng pháp t ổ ng quát cho mọ i lo ạ i d ữ li ệ u. Hay nói cách khác s ẽ không có m ộ t lý thuy ế t mà có th ể áp dụ ng cho m ọơởữệ i c s d li u. Đi ề u đó d ẫế n đ n bài toán t ổứơởữệ ch c c s d li u chỉ là m ộ t bài toán th ủ công không th ể áp d ụ ng các công c ụ toán h ọ c và quá trình xử lý trên máy tính đ ượ c. Từ đó ng ườ i ta tìm m ộ t gi ả i pháp sao cho có th ế khái quát hoá các c ơ s ở dữ li ệ u b ằ ng mô hình toán h ọ c và có th ể áp d ụ ng đ ượ c các công c ụ toán h ọ c. Trong cơ s ở d ữ li ệ u khái quát đó, các thu ậ t toán x ử lý không ph ụ thu ộ c vào ý nghĩa củ a các thu ộ c tính c ụ th ể mà ch ỉ ph ụ thu ộ c vào các ràng bu ộ c đã xác đ ị nh qua tậ p thu ộ c tính và t ậ p ph ụ thu ộ c hàm. 39
  41. Ví dụ 3.4: Ta có l ượ c đ ồ quan h ệ r(U, F) vớ i U là t ậ p h ữ u h ạ n các thu ộ c tính U = {A, B, C}, F là tậ p các PTH F = {A →BC} Ta có thể coi A là s ố báo danh; B là tên; C là tu ổ i Cũng có thể coi A là tên hàng; B đ ơ n giá; C là kh ố i l ượ ng Dù tên cụ th ể c ủ a A, B, C là gì thì t ậ p U và F cũng v ẫ n đúng không ph ụ thuộ c vào tên c ụ th ể c ủ a các thu ộ c tính. Từ v ấ n đ ề trên Armstrong đã nghiên c ứ u và đ ư a ra mô hình bài toán khái quát vớ i các tiên đ ề áp d ụ ng cho m ọ i c ơ s ở d ữ li ệ u 3.3.2. Hệ tiên đ ề Armstrong Cho lượ c đ ồ quan h ệ r(U,F) v ớ i U={A1, A2, , An} là tậ p các thu ộ c tính và F là tậ p PTH. Gi ả s ử X, Y, Z ∈ U, ta có hệ tiên đ ề Armstrong sau: 1. Tiên đề ph ả n x ạ Nế u Y ⊆ X thì X → Y (Mọ i t ậ p con c ủ a X thì đ ề u ph ụ thu ộ c hàm vào X) 2. Tiên đề tăng tr ưở ng Nế u X → Y và Z ∈ U thì XZ → YZ 3. Tiên đề b ắ c c ầ u Nế u X → Y và Y → Z thì X → Z Từ các tiên đ ề ta có các tính ch ấ t trên s ơ đ ồ quan h ệ r(U,F); X,Y,Z,W ⊆ U 1. Tính phả n x ạ ch ặ t Nế u X → X 2. Tính tự a b ắ c c ầ u: Nế u X → Y và YZ → W thì XZ → W 3. Tính mở r ộ ng v ế trái và thu h ẹ p v ế ph ả i Nế u X → Y thì XZ →Y\W 4. Tính cộ ng đ ầ y đ ủ Nế u X → Y và Z → W thì XZ → YW 5. Tính mở r ộ ng v ế trái Nế u X →Y thì XZ → Y 40
  42. 6. Tính cộ ng ở v ế ph ả i (Luậ t h ợ p) Nế u X → Y và X → Z thì X → YZ 7. Tính bộ ph ậ n ở v ế ph ả i (Luậ t tách) Nế u X → YZ thì X → Y và X → Z 8. Tính tích luỹ Nế u X → Y Z, Z → W thì X → YZW Khi giả i quy ế t các bài toán ta có th ể áp d ụ ng các tiên đ ề Amstrong và các tính chấ t trên. 3.3.3. Bài toán áp dụ ng Cho lượ c đ ồ quan h ệ R(U,F) v ớ i U={ A, B, C} F = { AB → C; C → A}. Chứ ng minh BC → ABC Giả i: Từ C → A (gt) Theo tiên đề tăng tr ưở ng thêm vào hai v ế B ta có: BC → AB (1) Từ AB → C (gt) Thêm AB vào hai vế ta có: AB → ABC (2) Từ (1) và (2) theo tiên đ ề b ắ c c ầ u ta có: BC → ABC đó là điề u ph ả i ch ứ ng minh 3.3.4. Kiể m tra tính đúng đ ắ n c ủ a h ệ tiên đ ề Amstrong Giả s ử có b ả ng DS cán b ộ : MãCB, TênCB, MãLươ ng, B ậ cL ươ ng Trong đó: MãCB →TênCB, MãLươ ng, B ậ cL ươ ng MãLươ ng → Bậ cL ươ ng Mô hình hoá bằ ng các thu ộ c tính sau: Cho lượ c đ ồ quan h ệ R(U,F). Trong đó U = {A,B,C,D} F = { A → B,C,D; C → D} a). Kiể m tra tiên đ ề 1 Nế u đ ặ t X = AB rõ ràng A ⊆ AB 41
  43. Vớ i hai b ộ b ấ t kỳ t1, t2 ta đề u có Nế u t1.[AB] = t2.[AB] Thì t1.[A] = t2.[A] Hiể n nhiên ta th ấ y AB → A b) Kiể m tra tiên đ ề 2 Đặ t X = AB và XC = ABC Đặ t Y = D và YC = DC Vớ i hai b ộ b ấ t kỳ t1, t2 ta thấ y Nế u t1.[ABC]= t2.[ABC] Thì t1.[DC] = t2.[DC] Như v ậ y tiên đ ề th ứ hai là đúng đ ắ n c). Kiể m tra tiên đ ề 3 Theo tiên đề 3 ta th ấ y A →C ; C → D thì có thể suy ra A → D Vớ i hai b ộ b ấ t kỳ t1, t2 Nế u t1.[A] = t2.[A] Thì t1.[D] = t2.[D] Vậ y tiên đ ề này hoàn toàn đúng 3.4 Bao đóng củ a t ậ p ph ụ thu ộ c hàm Cho lượ c đ ồ quan h ệ r(U,F), Trong đó U là tậ p h ữ u h ạ n các thu ộ c tính và F là tậ p ph ụ thu ộ c hàm. X,Y là các t ậ p thu ộ c tính (X,Y ⊆ U). Nói rằ ng ph ụ thu ộ c hàm X →Y đượ c suy d ẫ n logíc t ừ F n ế u quan h ệ R xác đị nh trên r(U,F) tho ả mãn t ấ t c ả các ph ụ thu ộ c hàm c ủ a F thì cũng tho ả mãn phụ thu ộ c hàm X →Y . Bao đóng củ a t ậ p ph ụ thu ộ c hàm F (kí hi ệ u là F+) là tậ p t ấ t c ả các ph ụ thuộ c hàm đ ượ c suy d ẫ n logíc là F F+ = {f:X → Y| X,Y ∈ U F ⊦f} Nế u có F = F+ thì F là họ đ ầ y đ ủ c ủ a các ph ụ thu ộ c hàm. Ví dụ 3.5: Cho l ượ c đ ồ quan h ệ r(U,F), v ớ i U = { A,C,B}và F = { A →B, B →C} ta có thể suy ra A → C. Rõ ràng phụ thu ộ c hàm A → C đượ c suy di ễ n ra t ừ F. 42
  44. Ta có F+ = { A →B, B →C, A → C} 3.5. Phép tách mộ t quan h ệ 3.5.1. Đị nh nghĩa Cho lượ c đ ồ quan h ệ r xác đ ị nh trên t ậ p thu ộ c tính U và F là t ậ p các ph ụ thuộ c hàm. Phép tách l ượ c đ ồ quan h ệ r(U,F) là vi ệ c thay th ế l ượ c đ ồ quan h ệ r(U,F) bằ ng các t ậ p l ượ c đ ồ r1(U1), r2(U2), , rm(Um) , sao cho U = U1 ∪ U2 ∪ ∪Um Trong đó Ui ⊆ U và ri(Ui) =ΠUi(R) vớ i i=1, , m Ký hiệ u phép tách c ủ a r(U,F) là ρ. Vậ y ρ = {r1(U1), r2(U2), , rm(Um)} Nói rằ ng ρ là phép tách – kế t n ố i không m ấ t mát thông tin đ ố i v ớ i F n ế u vớ i m ỗ i quan h ệ R xác đ ị nh trên r(U,F) thì R = ΠU1(R)* ΠU2(R)* ΠU3(R)* * ΠUm(R). Đị nh lý 3.1: Cho lượ c đ ồ quan h ệ r(U,F) n ế u ρ= {R1(U1), R2 (U2)} là mộ t phép tách củ a r thì ρ là phép tách không mấ t mát thông tin đ ố i v ớ i F khi và ch ỉ khi: U1∩U2 → U1 \ U2 Hoặ c U1∩U2 → U2 \ U1 Chứ ng minh: Ta phả i ch ứ ng minh hai v ấ n đ ề : -U1∩U2 ≠ φ -Và R(U) = R(U1) * R(U2) theo tính chấ t trên ♦ Giả s ử xét b ả ng d ữ li ệ u sau: Tên Phách Điể m Nam 01 7 Bắ c 02 6 Nam 03 4 U = {tên, phách, điể m} Nế u tách U1 = {tên}; U2 = {phách, điể m} Thì U1∩ U2 = φ Rõ ràng ta thấ y d ữ li ệ u không còn chính xác. Minh ho ạ b ằ ng b ả ng sau ta th ấ y: R (U ) R( U) R (U ) 1 1 2 2 43
  45. ♦ Giả s ử ch ọ n b ộ t nào đó thu ộ c R. Khi tách thành R1, R2 ta đượ c t1, t2 Ta thấ y t = t1 * t2 hay R ⊆ R1 * R2 Mặ t khác ∀ t1 ∈ R1 ; và ∀ t2 ∈ R2 ta có: t1[U1∩ U2] = t2[U1∩ U2] Theo tính chấ t phép toán k ế t n ố i t ự nhiên ta có: t1 * t2 = t Hay R1* R2 ⊆ R Như v ậ y ta có R1* R2 = R Đị nh lý đ ượ c ch ứ ng minh Nhậ n xét: Nế u ta tách m ộ t l ầ n đ ượ c hai quan h ệ , tách hai l ầ n đ ượ c 3 quan h ệ vậ y mu ố n tách m quan hệ ph ả i tách (m-1) lầ n. 3.5.3. Kiể m tra phép tách không m ấ t mát thông tin Cho lượ c đ ồ quan h ệ r(U,F), Trong đó, t ậ p các thu ộ c tính U ={A1,A2, , An} và tậ p các ph ụ thu ộ c hàm F; phép tách ρ. Hãy kiể m tra phép tách ρ: ρ = (r1, r2, rm ) có mấ t mát thông tin không? Thuậ t toán 1: Bướ c 1: Lậ p m ộ t b ả ng g ồ m có n c ộ t, m hàng. C ộ t th ứ j ứ ng v ớ i thu ộ c tính Aj hàng thứ i ứ ng v ớ i l ượ c đ ồ ri. Tạ i hàng i c ộ t j đi ề n ký hi ệ u aj nế u Aj ∈ ri ; ngượ c l ạ i đi ề n ký hi ệ u bij Bướ c 2: Đồ ng nh ấ t giá tr ị trên b ả ng Áp dụ ng quy trình thay th ế đu ổ i trên b ả ng: Xét các phụ thu ộ c hàm t ừ F : Gi ả s ử xét PTH X →Y ∈F. Ta xét các hàng có giá trị b ằ ng nhau t ạ i thu ộ c tính X thì làm b ằ ng giá tr ị t ạ i thu ộ c tính Y gi ữ a các hàng đó. Chú ý: Khi làm bằ ng giá tr ị trên Y, n ế u m ộ t trong các giá tr ị là aj thì ư u tiên làm bằ ng v ề ký hi ệ u aj ngượ c l ạ i làm b ằ ng chúng b ằ ng m ộ t trong các ký hiệ u bij. 44
  46. Tiế p t ụ c áp d ụ ng các ph ụ th ụ ôc hàm có trong F (k ể c ả vi ệ c l ậ p l ạ i các phụ thu ộ c hàm đã đ ượ c áp d ụ ng) cho t ớ i khi không áp d ụ ng đ ượ c n ữ a hay trên bả ng k ế t qu ả đã xu ấ t hi ệ n ít nh ấ t m ộ t hàng có đ ủ các ký hi ệ u (a1, a2, a3, an ) thì dừ ng và chuy ể n sang bướ c 3. Bướ c 3: Xét bả ng k ế t qu ả n ế u xu ấ t hi ệ n ít nh ấ t m ộ t hàng g ồ m các ký hi ệ u a1, a2, a3, an thì ta kế t lu ậ n phép tách ρ là không mấ t mát thông tin (b ả o toàn thông tin). Ngượ c l ạ i phép tách ρ không bả o toàn thông tin (m ấ t mát thông tin). Ví dụ 3.6: Cho quan hệ : HOCSINH (SBD, TEN, DTOAN, DTIN) Vớ i các ph ụ thu ộ c hàm: SBD → TEN; SBD →DTOAN, DTIN Tách thành hai quan hệ : HS1(SBD, TEN) HS2(SBD, DTOSN,DTIN) + Lậ p b ả ng ki ể m tra nh ư sau: SBD TEN DTOAN DTIN HS1 a1 a2 b13 b14 HS2 a1 b22 a3 a4 + Làm bằ ng các giá tr ị Ta thấ y dòng 2 t ạ i thu ộ c tính TEN có giá tri là a2 và b22 mà SBD củ a hai dòng này có giá trị là a2. Vậ y theo ph ụ thu ộ c hàm SBD → TEN nên ta thay giá trị b22 củ a thu ộ c tính TEN t ạ i dòng 2 là a2 Ta có bả ng: SBD TEN DTOAN DTIN HS1 a1 a2 b13 b14 HS2 a1 a2 a3 a4 Vậ y b ả ng có dòng 2 toàn là giá tr ị aj (j = 1 4), nên phép tách trên là không mấ t mát thông tin 3.6 Chuẩ n hoá l ượ c đ ồ quan h ệ 45
  47. Khi thiế t k ế m ộ t l ượ c đ ồ quan h ệ ph ả i tuân theo m ộ t s ố nguyên t ắ c đ ể khi thao tác trên cơ s ở d ữ li ệ u không d ẫ n đ ế n s ự d ị th ườ ng vê d ữ li ệ u. Công việếếữệ c thi t k d li u theo m ộạ t d ng chu ẩ n nào đó g ọ i là chu ẩ n hoá d ữệ li u. 3.6.1. Các dạ ng chu ẩ n trong l ượ c đ ồ quan h ệ Do việ c c ậ p nh ậ t d ữ li ệ u (qua phép chèn, lo ạ i b ỏ và s ử a đ ổ i ) gây nên nhữ ng d ị thườ ng, cho nên các quan h ệ nh ấ t thi ế t ph ả i đ ượ c bi ế n đ ổ i thành các dạ ng phù h ợ p, quá trình đó g ọ i là quá trình chu ẩ n hoá. Quan hệ đ ượ c chu ẩ n hoá là quan h ệ trong đó m ỗ i mi ề n c ủ a m ộ t thu ộ c tính chỉ ch ứ a nh ữ ng giá tr ị nguyên t ố , t ứ c là không phân nh ỏ đ ượ c n ữ a và do đó mỗ i giá tr ị trong quan h ệ cũng là nguyên t ố . Quan hệ có ch ứ a các mi ề n giá tr ị là không nguyên t ố g ọ i là quan h ệ ch ư a chuẩ n hoá. Chuẩ n hoá d ữ li ệ u 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) và không làm m ấ t mát thông tin. Có các dạ ng chu ẩ n sau: 1NF, 2NF, 3NF, BCNF 3.6.2. Mộ t s ố đ ị nh nghĩa a) Thuộ c tính khoá Cho lượ c đ ồ quan h ệ r(U) v ớ i t ậ p thu ộ c tính U, Ai ∈ U; A gọ i là thu ộ c tính khoá củ a R n ế u t ồ n t ạ i K ⊆ U, Nế u A ∈ K mà K là khoá thì A là thuộ c tính khoá (A có m ặ t trong ít nh ấ t m ộ t tậ p khoá c ủ a r(U,F)). Ngượ c l ạ i A không có m ặ t trong b ấ t kỳ t ậ p khoá nào c ủ a r(U,F) thì A là thu ộ c tính không khoá. b) Phụ thu ộ c hàm đ ầ y đ ủ Cho R(U) X,Y ⊆ U, Y gọ i là ph ụ thu ộ c hàm đ ầ y đ ủ vào X, N ế u X →Y và ∀A ∈X; (X –{A}) ! →Y Phụ thu ộ c hàm đ ầ y đ ủ ký hi ệ u là X+→Y c) Phụ thu ộ c hàm b ắ c c ầ u Cho R(U) X,Y ⊆ U Y gọ i là ph ụ thu ộ c hàm b ắ c c ầ u vào X Nế u ∃ Z ⊆ U: Y-Z ≠ ∅, X →Z, Z!→X, Z →Y, Y!→X 46
  48. Phụ thu ộ c hàm b ắ c c ầ u ký hi ệ u là X%→Y 3.6.3. Dạ ng chu ẩ n 1NF (1st Normal Form) Lượ c đ ồ quan h ệ r g ọ i là ở d ạ ng chu ẩ n m ộ t (1NF) n ế u toàn b ộ các mi ề n trị có m ặ t trong quan h ệ R đ ề u ch ỉ ch ứ a các giá tr ị nguyên t ố . Ví dụ 3.7: Cho thông tin c ủ a b ả ng đăng ký h ọ c c ủ a sinh viên: Bả ng 3.7: B ả ng đăng ký h ọ c c ủ a sinh viên Mã Đăng ký họ c Kỳ sinh Tên SV Ngày sinh Số họ c Mã môn Tên môn viên TC M01 CSDL 2 SV01 Hùng 09/12/1990 1 M02 Tin ĐC 3 M02 Tin ĐC 3 SV02 Trườ ng 07/09/1990 1 M03 Tiế ng Anh 3 Quan hệ này không ph ả i là d ạ ng chu ẩ n 1NF vì giá tr ị trong thu ộ c tính Đăng ký họ c không phả i là nguyên t ố . 3.6.4 Dạ ng chu ẩ n 2NF (2nd Normal Form) Lượ c đ ồ quan h ệ r g ọ i là d ạ ng chu ẩ n hai (2NF) n ế u r ở d ạ ng chu ẩ n 1NF và mọ i thu ộ c tính không khoá c ủ a r đ ề u ph ụ thu ộ c hàm đ ầ y đ ủ vào khoá. 3.6.5 Dạ ng chu ẩ n 3NF (3rd Normal Form) Lượ c đ ồ quan h ệ r g ọ i là d ạ ng chu ẩ n 3NF n ế u đã ở d ạ ng chu ẩ n 2 và m ọ i thuộ c tính không khoá c ủ a r không ph ụ thu ộ c hàm b ắ c c ầ u vào khoá . Ví dụ 3.8 :Xét l ượ c đ ồ quan h ệ : r(SAIP); Trong đó F={SI →P; S →A} Ta thấ y r là d ạ ng chu ẩ n 1 Xét dạ ng chu ẩ n 2: Ta có S → A và SI → S ⇒ SI →A Thuộ c tính A không ph ụ thu ộ c đ ầ y đ ủ vào khoá c ủ a r là SI, nh ư v ậ y r không phả i là 2 NF Ví dụ 3.9: 47
  49. Xét lượ c đ ồ quan h ệ : r(SIDM); F={SI → D; SD →M} -Ta thấ y r là d ạ ng chu ẩ n 2 -Xét dạ ng chu ẩ n 3: SI →D ⇒ SI →SD; (theo luậ t tăng tr ưở ng); Mà SD →M ⇒ SI → M Vậ y M ph ụ thu ộ c b ắ c c ầ u vào SI nên r không là 3 NF 3.6.6 Dạ ng chu ẩ n BCNF (Boye - Code) Lượ c đ ồ quan h ệ r g ọ i là d ạ ng chu ẩ n BCNF n ế u X →A thoả trên r, n ế u A không thuộ c X và X là khoá c ủ a r. Ghi chú: - Các lượ c đ ồ quan h ệ ở d ạ ng chu ẩ n 1NF, 2NF v ẫ n t ồ n t ạ i các d ị th ườ ng v ề d ữ liệ u. - Trong mộ t c ơ s ở d ữ li ệ u t ố t, các quan h ệ ph ả i đ ượ c chu ẩ n hoá v ề 3NF ho ặ c BCNF. - Mộ t l ượ c đ ồ quan h ệ r ở d ạ ng chu ẩ n BCNF thì r là 3NF 3.7. Các thuậ t toán 3.7.1 Bao đóng củ a t ậ p thu ộ c tính Cho lượ c đ ồ quan h ệ r(U,F), v ớ i U={A1, A2, , An} và F là tậ p ph ụ thu ộ c hàm, X là mộ t t ậ p thu ộ c tính (X⊂U). Bao đóng củ a t ậ p thu ộ c tính X đ ố i v ớ i t ậ p phụ thu ộ c hàm F (ký hi ệ u là X +) là tậ p các thu ộ c tính có th ể suy d ẫ n logíc t ừ X qua các phụ thu ộ c hàm có trong F. X+ = { A | A ⊆U; X →A ∈ F+} Thuậ t toán 2: Tìm bao đóng củ a t ậ p thu ộ c tính Cho lượ c đ ồ quan h ệ r(U,F). Trong đó U là t ậ p h ữ u h ạ n các thu ộ c tính và F là tậ p ph ụ thu ộ c hàm. Tìm bao đóng củ a X (X+) Tính liên tiế p các t ậ p X0, X1, X2, theo phươ ng pháp sau: Bướ c 0: Đặ t X0 = X Bướ c i: Lầ n l ượ t xét các ph ụ thu ộ c hàm c ủ a F i-1 i-1 Tính Xi ={ Xi-1 ∪ {A}/ nế u ∃Y →Z ∈F; A ∈ Z và A ∉X ; Y ⊆ X ; loạ i Y →Z khỏ i F} Vì X1 ⊆ X2 ⊆ ⊆ U nên ∃j sao cho Xj = X j-1 (tậ p X không tăng n ữ a) 48
  50. + + Đặ t X = Xj; Gọ i X là bao đóng củ a X Mô tả thu ậ t toán b ằ ng ngôn ng ữ gi ả Pascal: Proc Closure; Input: r=(U,F); Tậ p thu ộ c tính X ⊆ U Output: Y = X+ = {A ∈ U | X → A ∈ F+} Begin Y:= X Repeat Z:=Y; For each f L →R in F do if L ⊆ Y then Y:=Y ∪ R; endif; endfor; Until Y=Z; return Y; End; Ví dụ 3.9: Cho lượ c đ ồ quan h ệ r(U,F) v ớ i U= {A,B,C,D,E,G,H} và F = { A →BC; C →B; D →EH; AD →G}. Tính (AD)+? Bài giả i: Đặ t X1 = (AD) Chọ n các ph ụ thu ộ c hàm có v ế trái là A,D,AD có A →BC nên X2 = X1∪B= AD ∪B=ABD X3 = X2∪C=ADB ∪C=ABCD Vì D →EH nên X4 = X3∪E= ADBC ∪E=ABCDE X5 = X4∪H=ADBCE ∪H=ABCDEH Vì AD →G nên X6 = X5∪G=ABCDEH∪G = ABCDEHG X7=X6= ABCDEHG 49
  51. Kết lu ậ n: (AD)+ = ABCDEFG Bài toán thành viên: Cho lượ c đ ồ quan h ệ r(U,F) v ớ i U là t ậ p h ữ u h ạ n các thuộ c tính và F là t ậ p ph ụ thu ộ c hàm, X, Y là hai t ậ p thu ộ c tính (X,Y⊂U). Hỏ i rằ ng X→Y có là thành viên củ a F hay không? (có nghĩa là X→Y ∈F+ hay không?) Để tr ả l ờ i cho câu h ỏ i này ta có th ể tính F+ rồ i xác đ ị nh xem X→Y có thuộ c F+ hay không. Như ng vi ệ c tính F+ đòi hỏ i th ờ i gian và công s ứ c. Tuy nhiên, thay vì tính F+ chúng ta có thể s ử d ụ ng đ ị nh lý sau: Đị nh lý 3.2: X → Y ∈ F+ Khi và chỉ khi Y ⊆ X+ 3.7.2. Phủ c ủ a t ậ p các ph ụ thu ộ c hàm Cho hai tậ p ph ụ thu ộ c hàm F và G cùng xác đị nh trên t ậ p thu ộ c tính U. Nói rằ ng F và G là t ươ ng đ ươ ng n ế u F+ = G + . Nế u F và G t ươ ng đ ươ ng thì ta có thế nói F là m ộ t ph ủ c ủ a G (ho ặ c G là m ộ t ph ủ c ủ a F) Ký hiệ u: F ≡ G Phủ không d ư th ừ a: Cho tậ p ph ụ thu ộ c hàm F xác đ ị nh trên t ậ p thu ộ c tính U. F đượ c g ọ i là ph ủ không d ư th ừ a n ế u: Không tồ n t ạ i ph ụ thu ộ c hàm X → Y∈G mà (G - { X → Y}) ≡ G Ví dụ 3.10: Cho l ượ c đ ồ quan h ệ r(U,F) v ớ i F = { A → B ; B → C ; A → C} Ta thấ y A → C là thừ a vì F - {A → C} tươ ng đ ươ ng v ớ i F. V ậ y F là ph ủ d ư thừ a. Phủốểọậ t i thi u: G i t p các ph ụộ thu c hàm F là t ốểếả i thi u n u tho mãn ba điề u ki ệ n: (1) Mọ i ph ụ thu ộ c hàm thu ộ c F đ ề u có d ạ ng: {Xi → Ai | i = 1 m} (nói cách khác về ph ả i m ỗ i ph ụ thu ộ c hàm thu ộ c F ch ỉ có m ộ t thu ộ c tính). (2) F là phủ không d ư th ừ a : Có nghĩa là không tồ n t ạ i PTH X → A ∈ F mà F+= (F - { X → A})+ (3) F không dư th ừ a thu ộ c tính nào ở v ế trái, nói cách khác không t ồ n t ạ i mộ t ph ụ thu ộ c hàm X → A ∈ F; Z ⊂ X mà : F+ = (F - {X →A } ∪ {Z →A})+ Định lý 3.3: Mố i ph ụ thu ộ c hàm F đ ề u t ươ ng đ ươ ng v ớ i m ộ t ph ủ t ố i thi ể u F’. Thuậ t toán 3: Cho lượ c đ ồ quan h ệ r(U,F) v ớ i U là t ậ p h ữ u h ạ n các thu ộ c tính và F là tậ p ph ụ thu ộ c hàm. Tìm ph ủ t ố i thi ể u c ủ a F. Bướ c 1: Tách các PTH sao cho vế ph ả i c ủ a m ỗ i PTH ch ỉ có m ộ t thu ộ c tính. 50
  52. Giả s ử xét ph ụ thu ộ c hàm X →Y , vớ i Y = A1A2A3 An Ta có thể tách thành các phụ thu ộ c hàm sau: X → A1 X → A2 X → Am Kế t qu ả ta đ ượ c F1 tươ ng đ ươ ng v ớ i F Bướ c 2: Loạ i b ỏ các ph ụ thu ộ c hàm (PTH) d ư th ừ a. Gả i s ử có Fi có dạ ng Xj → Aj | j = 1,2 m 1 Đặ t F0 = F Fi-1 \ {Xj →Aj } nế u Fi-1 \ {Xj →Aj } tươ ng đ ươ ng v ớ i F i-1 Fi = Fi-1 nế u ng ượ c l ạ i Sau m lầ n ta đ ượ c Fm = Fm-1 2 1 Đặ t F =Fm tươ ng đ ươ ng v ớ i F . Bướ c 3: Loạ i bỏ các thu ộ c tính d ư th ừ a bên trái c ủ a m ỗ i ph ụ thu ộ c hàm 2 Sau bướ c 2 có F = {Xi → Aj | vớ i i =1 n và Xi có dạ ng Xi =A1,A2, An -Đặ t X0 = Xi 2 Xj-1\{Aj} nế u {F2\ (Xi-1 →Ai) ∪ (Xi-1\Aj) →Ai} tươ ng đ ươ ng v ớ i F Xj = Xj-1 nế u ng ượ c l ạ i Lặ p l ạ i quy t ắ c trên n l ầ n thì ta xét xong ph ụ thu ộ c hàm Xi → Aj ( Có nghĩa là đã loạ i b ỏ t ấ t c ả các thu ộ c tính d ư th ừ a bên trái trong ph ụ thu ộ c hàm trên). 3 2 3 Sau bướ c này ta đ ượ c F tươ ng đ ươ ng v ớ i F . F là phủ t ố i thi ể u c ủ a F Ví dụ 3.11: Cho lượ c đ ồ quan h ệ r(U,F) v ớ i U={A,B,C,D,E,G,H,L} và F={A→BC; C→B; D→EL; ADC→G}. Tìm phủ t ố i thi ẻ u c ủ a F? Bướ c 1: Tách các phụ thu ộ c hàm: Ta có F1={A→C;C→B;A→B;D→E;D→L;ADC→G} 51
  53. Bướ c 2: Loạ i b ỏ các ph ụ thu ộ c hàm d ư th ừ a : A→C không dư th ừ a vì C ∉A+ =AB C→B không dư th ừ a vì B ∉C+ =C A→B dư th ừ a vì có B∈ A+ =ABC D→E không dư th ừ a vì có E ∉D+ =D D→Lkhông dư th ừ a vì có L∉D+ =D ADC→G không dư th ừ a vi có G ∉(ADC)+ =(ABCDEL) Ta có F2={C→B;A→C;D→E;D→L;ADC→G} Bướ c 3: Lo ạ i b ỏ các thu ộ c tính d ư th ừ a ở v ế trái: Vì A→C nên phụ thu ộ c hàm ADC→G thừ a thu ộ c tính C nên ta có AD→G Ta có F3={C→B;A→C;D→E;D→F;AD→G} Kế t lu ậ n: Ph ủ t ố i thi ể u c ủ a F là :Ftt=F3={C→B;A→C;D→E;D→F;AD→G} Thuậ t toán 4: Cho hai tậ p ph ụ thu ộ c hàm F và G xác đ ị nh trên t ậ p thu ộ c tính U. Vớ i F và G có d ạ ng sau : F = {Xi → Yi} | i= 1 m; G = {Xj → Yj} | j = 1 n. Hãy kiể m tra F và G có t ươ ng đ ươ ng v ớ i nhau hay không ? + Bướ c 1: Vớ i ∀i = 1 m kiể m tra xem Xi → Yi ∈Fcó thuộ c G hay không. Theo + + + bài toán thành viên ta kiể m tra xem có tho ả Yi ⊆ XJ nế u tho ả thì F ⊆ G + Bướ c 2: Vớ i ∀j = 1 n kiể m tra xem Xj → Yj ∈G có thuộ c F không. Theo bài + + + toán thành viên ta kiể m tra xem có tho ả Yj ⊆ Xi nế u tho ả thì G ⊆ F Nế u tho ả c ả hai đi ề u ki ệ n trên thì G+ = F+ và ta nói F và G tươ ng đ ươ ng, ng ượ c lạ i trong quá trình ki ể m tra n ế u t ồ n t ạ i m ộ t ph ụ thu ộ c hàm không tho ả mãn thì F và G là không tươ ng t ươ ng nhau. 3.7.4. Khoá tố i thi ể u c ủ a s ơ đ ồ quan h ệ . Cho lượ c đ ồ quan h ệ r(U,F), K ⊆ U. K đượ c g ọ i là khoá t ố i thi ể u c ủ a l ượ c đ ồ quan hệ n ế u: (1) K+ = U (2) ∀A ∈K; (K –{A})+ ≠ U Hai điề u ki ệ n trên t ươ ng ứ ng v ớ i: (3) K → U 52
  54. (4) ∀A ∈K; (K –{A})+ ! → U Chú ý: - K chỉ tho ả mãn đi ề u ki ệ n (1) thì K g ọ i là siêu khoá. - Trong mộ t s ố tài li ệ u thu ậ t ng ữ khoá đượ c dùng theo nghĩa siêu khoá và thuậ t ng ữ khoá tố i thi ể u dùng theo nghĩa khoá - Mộ t s ơ đ ồ quan h ệ có ít nh ấ t m ộ t t ậ p khoá. Goi M là giao c ủ a các khoá: M= ∪ (L\R) - L\R là thuộ c tính ch ỉ xu ấ t hi ệ n ở vế trái và không xu ấ t hi ệ n ở v ế ph ả i củ a các ph ụ thu ộ c hàm có trong F - Nế u M + = U thì r có mộ t khoá duy nh ấ t ng ượ c l ạ i M + ≠ U thì r có nhiề u h ơ n m ộ t t ậ p khoá. Thụ ât toán 5: Tìm mộ t khoá t ố i thi ể u c ủ a l ượ c đ ồ quan h ệ Cho lượ c đ ồ quan h ệ r (U, F). v ớ i U={A1, A2, An} và F là tậ p ph ụ thu ộ c hàm. Tìm khoá tố i thi ể u c ủ a r(U,F) Bướ c 1: Đặ t K0 = U + Ki-1 \ Aj nế u (Ki-1 \ Aj) = U, j=1,2 n Bướ c i: Tính Ki = Ki-1 nế u ng ượ c l ạ i Lặ p l ạ i bướ c i n lầ n Kế t lu ậ n: Khoá t ố i thi ể u c ủ a r(U,F) là Ki. Mô tả thu ậ t toán b ằ ng ngôn ng ữ gi ả PASCAl Proc Key; Input: Tậ p thu ộ c tính U; T ậ p F Output: K ⊆ U thoả đi ề u ki ệ n (1) K+ = U (2) ∀A ∈K; (K –{A})+ ≠ U Begin K:=U; For each attribute A in U do if A ∈ (K- A)+ then K:=K-A; endif; endfor; 53
  55. return K; End; Ví dụ 3.12: Cho l ượ c đ ồ quan h ệ r(U,F) có: U = {A,B,C,D,E,L,G,H} F = { A → BC; C → B; D → EL; ADC → G}. Tìm mộ t khoá cho r(U,F)? Bài giả i: Bướ c 0: Đ ặ t K0=U={A,B,C,D,E,L,G,H} + Bướ c 1: K1=K0 \A = {A,B,C,D,E,L,G,H} vì (K0\A) ≠U + Bướ c 2: K2 =K1 \B={A,C,D,E,L,G,H} vì (K1 \B) =U + Bướ c 3: K3 =K2\C ={A,D,E,L,G,H} vì (K2 \C) =U + Bướ c 4: K4 =K3 ={A,D,E,L,G,H} vì (K3 \D) ≠ U + Bướ c 5: K5 = K4 \E ={A,D,L,G,H} vì (K4 \E) =U + Bướ c 6: K6 = K5\L ={A,D,G,H} vì (K5 \L) =U + Bướ c 7: K7 = K6\G ={A,D,H} vì (K6 \G) = U + Bướ c 8: K8 =K7={A,D,H} vì (K7\H) ≠U Vậ y khóa là K ={A,D,H} Thuậ t toán 6: Tìm tấ t c ả các khoá c ủ a l ượ c đ ồ quan h ệ Cho lượ c đ ồ quan h ệ r(U,F) v ớ i U là t ậ p h ữ u h ạ n các thu ộ c tính và F là tậ p ph ụ thu ộ c hàm. Tìm tấ t c ả các khoá cho r(U,F)? Phươ ng pháp: Th ự c hi ệ n theo các b ướ c sau: Bướ c 1: T ạ o các t ậ p thu ộ c tính ngu ồ n (TN) và t ậ p thu ộ c tính trung gian (TG). TN- Chứ a các thu ộ c tính ch ỉấệởế xu t hi n v trái và không xu ấệởề t hi n v phả i c ủ a các ph ụ thu ộ c hàm có trong F. TG- Chứ a các thu ộ c tính v ừấệởế a xu t hi n v trái v ừấ a xu t hiên ởếả v ph i củ a các ph ụ thu ộ c hàm có trong F. Bướ c 2: Nế u TG=∅ thì r(U,F) chỉ có m ộ t khoá K K=TN kế t thúc thu ậ t toán Ngượ c l ạ i Qua bướ c 3 Bướ c 3: Tìm t ấ t c ả các t ậ p con Xi củ a t ậ p trung gian TG. 54
  56. Bướ c 4: Tìm các siêu khoá Si bằ ng cách v ớ i ∀Xi + Nế u (TN∪Xi) =U thì Si= TN∪Xi Bướ c 5: Tìm khoá b ằ ng cách lo ạ i các khoá không t ố i thi ể u Gọ i S là t ậ p siêu khoá xác đ ị nh đ ượ c ở b ướ c 4, S=(S1, S2, , Sn) Nế u Si⊂Sj thì loạ i Sj ra khỏ i t ậ p siêu khoá S S còn lạ i chính là t ậ p khoá c ầ n tìm. Ví dụ 3.13: Cho lượ c đ ồ quan h ệ r(U,F) v ớ i U={CDEKGH} và F={CK→H, C→D, E→C, E→G CK→E}. Tìm tấ t c ả các khoá cho r(U,F) ? Bướ i 1 : Xác đị nh các t ậ p thu ộ c tính TN, TG vớ i TN={K} và TG={CE} Từ bước 2 đ ế n b ướ c 5: Minh ho ạ qua b ả ng d ữ li ệ u sau Gọ i Xi là tậ p con c ủ a TG + Xi TN∪Xi (TN∪Xi) Siêu khoá Khoá φ K K C KC U KC K 55
  57. C E KE U KE KE EC KCE U KCE Kế t lu ậ n : Các khoá củ a r(U,F) là: KC và KE Ví dụ 3.14 : Cho r(U,F) vớ i U=( A, B, C, D, E, I ). Và F={ACD→EBI; CE→AD}. Tìm tấ t c ả các khoá cho r(U,F)? Bài giả i: TN= ; TG= X1 ( TN ) Siêu khóa Khóa C C A AC AC D CD CD AD ACD ABCDEI ACD ACD E CE ABCDEI CE CE AE ACE ABCDEI ACE DE CDE ABCDEI CDE ADE ADCE ABCDEI ACDE Kế t lu ậ n : Tấ t c ả các khoá c ủ a r(U,F) là : CE và ACD 3.7.5 Các bướ c chu ẩ n hoá m ộ t quan h ệ đ ế n 3NF Thuậ t toán 7: Chuẩ n hoá m ộ t quan h ệ thành d ạ ng 3NF 56
  58. Cho lượ c đ ồ quan h ệ r(U,F) v ớ i U là t ậ p h ữ u h ạ n các thu ộ c tính và F là t ậ p ph ụ thuộ c hàm. Hãy chu ẩ n hoá r(U,F) v ề d ạ ng 3NF và phép tách ρ là không mấ t mát thông tin ρ = {r1(U1), r2(U2) rn(Un)}, sao cho ri(Ui) là dạ ng chu ẩ n 3NF Bướ c 1: Tìm khoá củ a r Bướ c 2: Sử d ụ ng thu ậ t toán 2 tìm ph ủ t ố i thi ể u c ủ a F Bướ c 3: Xác đị nh các l ượ c đ ồ con Mỗ i ph ụ thu ộ c hàm thu ộ c F’ tươ ng đ ươ ng v ớ i m ộ t l ượ c đ ồ con. Giả s ử xét Y → Ai ∈ Ftố ithi ể u ta có lượ c đ ồ rj(Uj), vớ i Uj =YAi khoá củ a rj(Uj) là Y vớ i j ⊆ (1, ,n) và Y ⊆ U Lư u ý: Nế u ∃ Xi → Ai1 ; Xi → Ai2 ; ; Xi → Ail thì Ui = (XiA1A2 Ai) và ta có lượ c đ ồ quan hệ ri(Ui) vớ i khoá là Xi , i ⊆ (1,,n) và Xi ⊆ U. Kế t qu ả ta có các l ượ c đ ồ : {r1(U1), r2(U2) rn(Un)} Bướ c 4: Kế t lu ậ n phép chu ẩ n hoá Nế u t ồ n t ạ i ít nh ấ t m ộ t thu ộ c tính khoá không có m ặ t trong các l ượ c đ ồ {r1(U1), r2(U2) rn(Un)} thì kế t lu ậ n phép chu ẩ n hoá r(U,F) v ề 3NF là ρ = {r0(U0), r1(U1), r2(U2) rn(Un)} vớ i r0(U0)=K Ngượ c l ạ i phép chu ẩ n hoá r(U,F) v ề 3NF là ρ = {r1(U1), r2(U2) rn(Un)} Ví dụ 3.15: Cho lượ c đ ồ quan h ệ r(U,F) v ớ i U = {A,B,C,D,E,L,G,H} và F = { A → BC; C → B; D → EL; ADC → G} Chuẩ n hoá r thành d ạ ng 3NF Bướ c 1: Tìm khoá t ố i thi ể u: K0 = U = {A,B,C,D,E,G,H,L} dùng thuậ t toán 4 lo ạ i b ỏ d ầ n ta có K = ADH Bướ c 2: Tìm phủ t ố i thi ể u 2.1 Tách các phụ thu ộ c hàm F = { A → C; C → B; A → B; D → E; D → L; ADC → G} 2.2 Loạ i b ỏ các ph ụ thu ộ c hàm d ư th ừ a: Có A → B thừ a vì có A→C và C →B Ta có F = {C → B; A → C; D → E; D →L; ADC → G} 2.3 Bỏ các thu ộ c tính th ừ a ở v ế trái 57
  59. Vì A → C nên phụ thu ộ c hàm ADC → G thừ a thu ộ c tính C nên ta có: AD → G ⇒ F = {C → B; A → C; D → E; D → L; AD → G} Bướ c 3: Ta có các ri như sau: A → C ⇒ R1(U1) = (AC) khoá K1 = {A} C → B ⇒ R2(U2) = (CB) khoá K2 = {B} D → E; D → L;⇒R3(U3) = (DEL) khoá K3 = {D} AD → G ⇒ R4 (U4) = (ADG) khoá K4 ={AD} Bướ c 4: Kế t qu ả ρ = {r0(ADH), r1(AC), r2(CB), r3(DEL), r4(ADG)} Thoả mãn Ri(Ui) là 3NF Thuậ t toán 8: Chuẩ n hoá m ộ t l ượ c đ ồ quan h ệ v ề d ạ ng chu ẩ n Boye -Code Cho lượ c đ ồ quan h ệ r(U,F) v ớ i U là t ậ p h ữ u h ạ n các thu ộ c tính và F là t ậ p phụ thu ộ c hàm. Hãy chu ẩ n hoá r(U,F) v ề d ạ ng chu ẩ n Boye - Code. Bướ c 1: Goi ρ là phép chuẩ n hoá r(U,F) v ề BCNF, ρ={r(U,F)} Bướ c i: N ế u s là mộ t l ượ c đ ồ thu ộ c ρ, s chư a ở BCNF ch ọ n X → A là mộ t ph ụ thuộ c hàm tho ả trên S mà X không ph ả i là siêu khoá c ủ a S và A∉X thì tách S thành hai lượ c đ ồ quan h ệ : si = X ∪Y = si (XY) Khoá là X si+1 =( U \ Y), Xác đị nh l ạ i khoá và t ậ p ph ụ thu ộ c hàm cho si+1. Quá trình tiế p t ụ c cho t ớ i khi t ấ t c ả các l ượ c đ ồ đ ề u ở BCNF Kế t qu ả đ ượ c phép tách: ρ = {r1(U1), r2(U2), ,rm(Un) } vớ i m ỗ i ri là quan hệ ở d ạ ng BCNF Ví dụ 3.16: Cho l ượ c đ ồ quan h ệ r(U,F) U = {C, T, H, N, S, G} F = { CS → G ;C → T; HT → N;HS →N; HN → C}. Hãy chuẩ n hoá r(U,F) v ề dạ ng chu ẩ n BCNF? Khoá củ a r là HS Bướ c 1: r(U,F) không thoả mãn BCNF Xét CS → G vì CS không là siêu khoá củ a r nên tách: r1 = (CSG); r2 = (CTHNS) và F= {C → T; HT → N; HS →N; HN → C}, khoá củ a r2 là HS. Trong đó r1 thoả mãn BCNF, r2 không thoả mãn BCNF. Bướ c 2: 58
  60. Xét r2 Có C → T mà C không là khoá củ a r2 nên tách: r21 = (CT); r22 = (CHNS) và F= { HC → N ; HS →N; HN → C; }, khoá củ a r22 là HS. Trong đó r21 thoả mãn là BCNF, r22 không thoả mãn BCNF. Bướ c 3: Xét r22: Có HN →C mà CH không là khoá nên tách: r221 = (CHN) ; r222 = (CHS); r221 thoả mãn CBNF; r222 thoả mãn BCNF Thuậ t toán d ừ ng vì ∀ ri thoả mãn BCNF. Cuố i cùng ta có: ρ = {r1(CSG); r21(CT); r221(CHN); r222(CHS)} Trong đó mỗ i ri là BCNF. 3.8 Phụ thu ộ c đa tr ị 3.8.1 Khái niệ m Ta thấ y d ữ li ệ u có m ố i quan h ệ v ớ i nhau đó là ph ụ thu ộ c hàm. Tuy v ậ y cũng có trườ ng h ợ p quan h ệ đó không có s ự ph ụ thu ộ c hàm. ánh x ạ trên các thuộ c tính không ph ả i là đ ơ n tr ị mà có nhi ề u giá tr ị . M ố i quan h ệ đó g ọ i là ph ụ thuộ c đa tr ị (Multivalued Defendency-MVD) Ví dụ : Quan h ệ KHDH (k ế ho ạ ch d ạ y h ọ c) Giáo viên Môn Lớ p A M2 K1 A M1 K2 A M2 K2 A M1 K1 Như v ậ y v ớ i m ộ t giáo viên ta ch ư a h ẳ n đã xác đ ị nh đ ượ c d ạ y l ớ p nào, môn gì cụ th ể 3.8.2 Đị nh nghĩa Cho R là mộ t l ượ c đ ồ quan h ệ X, Y là 2 t ậ p con c ủ a R. Z = R – XY. Quan h ệ r(R) gọ i là ph ụ thu ộ c đa tr ị n ế u v ớ i b ấ t kỳ 2 b ộ t1, t2 ∈ r, vớ i t1[X] = t2[X] t ồ n tạ i m ộ t b ộ t3 ∈ r sao cho: t3[X] = t1[X]; t3[Y] = t1[Y]; t3[Z] = t2[Z]; Ký hiệ u ph ụ thu ộ c đa tr ị 59
  61. X→→Y Ta nói X xác đị nh đa tr ị Y; hay Y ph ụ thu ộ c đa tr ị vào X Ví dụ : Xét quan h ệ KHDH trên là ph ụ thu ộ c đa tr ị Nhậ n xét: -Xét mô hình trên ta còn có: t4[Z] = t1[Z]; t2[Y] = t4[Y] -Nế u Y = φ thì X →→ φ đúng vớ i m ọ i quan h ệ -Nế u X = φ thì φ →→Y đúng khi Y độ c l ậ p v ớ i các thu ộ c tính khác trong r 3.8.3 Hệ tiên đ ề : (1) Tiên đề bù: X →→Y ⇒ Y →→U\Y\X (2) Tiên đề t ư ng tr ưở ng: X →→ Y; V ∈W ⇒ WX →→VY (3) Tiên để b ắ c c ầ u: X →→ Y và Y →→Z ⇒ X →→ Z\Y (4) Tiên đề v ề quan h ệ ph ụ thu ộ c đ ơ n tr ị và đa tr ị : X → Y thì X →→ Y 4. Nế u X →→Y, Z ⊆ Y, W ∩ Y = φ , W →Z thì X → Z 3.8.4 Các luậ t suy di ễ n c ủ a ph ụ thu ộ c đa tr ị Luậ t h ợ p: Nế u X →→Y và X →→ Z thì X →→YZ Luậ t t ự a b ắ c c ầ u Nế u X →→ Y và WY →→Z thì WX →→ Z\WX Luậ t t ự a b ắ c c ầ u h ỗ n h ợ p Nế u X →→ Y và XY →→Z thì X →→ Z\Y Luậ t tách Nế u X →→ Y và X →→ Z thì X →→ Y\Z; X →→ Z\Y; X →→ Y ∩ Z Đị nh lý: Cho r(U) có phép tách ρ = {r1(U1), r2 (U2)} là phép tách hai không mấ t mát thông tin khi và chỉ khi: U1 ∩ U2 →→ U1 \ U2 U1 ∩ U2→→ U2 \ U1 3.8.5 Dạ ng chu ẩ n 4 NF -Mộ t ph ụ thu ộ c hàm đa tr ị X →→ Y gọ i là s ơ c ấ p n ế u v ớ i X, Y ≠ φ X ∪ Y ≠ U mà ∀ X’ < X ⇒ X’ →\→ Y 60
  62. Quan hệ r g ọ i là d ạ ng chu ẩ n 4 n ế u m ọ i ph ụ thu ộ c đa tr ị s ơ c ấ p đ ề u đ ượ c xác đị nh b ở i khoá chính Ví dụ : Quan h ệ KHDH trên Khoá chính: GML Tách: KHDH1: (GM) có G →→ M KHDH2: (GL) có G →→ L CÂU HỎ I VÀ BÀI TẬ P CH ƯƠ NG 3 1. Đị nh nghĩa ph ụ thu ộ c hàm và các khái ni ệ m liên quan. 2. Đị nh nghĩa l ượ c đ ồ quan h ệ và cho ví d ụ minh h ọ a 3. Phát biể u tiên đ ề Armstrong và các h ệ qu ả . 4. Đị nh nghĩa bao đóng c ủ a m ộ t t ậ p thu ộ c tính. 5. Đị nh nghĩa ph ủ c ủ a m ộ t t ậ p ph ụ thu ộ c hàm. Ph ủ t ố i thi ể u. 6. Đị nh nghĩa phép tách m ộ t l ượ c đ ồ quan h ệ . 7. Nêu các dạ ng chu ẩ n 1NF, 2NF, 3NF, BCNF và cho ví d ụ minh ho ạ . 8. Cho lượ c đ ồ quan h ệ r(U,F). T ậ p thu ộ c tính U = {ABDEGIH}. T ậ p ph ụ thuộ c hàm: F ={AB→E, AG→I, BE→I, E→G, GI→H}. Chứ ng minh: AB→GH. 9. Cho lượ c đ ồ quan h ệ r(U,F) v ớ i U={ABCDEGH); F ={AB→C, C→D, CD→E, CE→GH, G→A}.Chứ ng minh : AB→E ; AB→G 10. Cho sơ đ ồ quan h ệ r(U,F) v ớ i U={ABCDEGH}; F={A→D, AB →DE, CE→G, E→H}. Hãy tính (AB)+ 11. Cho sơ đ ồ quan h ệ r(U,F) v ớ i U={ABCDEG); F={A→D, AB →E, BG→E, CD→G,E→C}. Hãy tính (AB)+ 12. Cho sơ đ ồ quan h ệ r(U,F); U={ABCDEH}; F={BC→E, D→A, C→A, AE→D, BE→CH}. Tìm mộ t khoá t ố i thi ể u cho r(U,F) 13. Cho sơ đ ồ quan h ệ r(U,F), v ớ i U={DBIOQS}; F={S→D, I→B, IS→Q, B→O}. Hãy chuẩ n hoá r(U,F) v ề d ạ ng chu ẩ n 3NF. 14. Cho sơ đ ồ quan h ệ r(U,F); U=(ABCDEGH);F={ABC→D, AB→E, BC→DC,C→DE, CE→H, DC→G, CH→G, AD→H}. Hãy chuẩ n hoá r(U,F) về dạ ng chu ẩ n 3NF. 15. Cho lượ c đ ồ quan h ệ r(U,F). U= {C#, I,D,B,K,E,L}; F= { C#→ IBKE, D →B, K →E}. Hãy chuấ n hoá r(U,F) v ề d ạ ng chu ẩ n 3NF. 61
  63. 16. Cho sơ đ ồ quan h ệ r(U,F), U={ABCD}; F={D→B,C→A,B→ACD}. Hãy xác đị nh d ạ ng chu ẩ n cao nh ấ t c ủ a r(U)? Gi ả i thích. 17. Kiể m tra tính k ế t n ố i không m ấ t mát thông tin c ủ a phép tách r(ABCDE) thành các lượ c đ ồ quan h ệ sau: r1=AD; r2=AB; r3=BE; r4=CDE; r5 = AE. V ớ i tậ p ph ụ thu ộ c hàm: F={A→C, B →C; A → B; DE →C; CE →A}. 18. Cho lượ c đ ồ quan h ệ r(U,F); U={ABCDEG}; F ={AB →C; C →B; ABD → E; G→ A}.Chuẩ n hoá r thành d ạ ng BCNF. 19. Kiể m tra tính không m ấ t mát thông tin c ủ a phép tách r(ABCDEG) thành ρ(r) = (BC,AC,ADBE,ADBF). Vớ i t ậ p ph ụ thu ộ c hàm F={AB →C; C →B; ABD → E; G → A} 20. Cho lượ c đ ồ quan h ệ r(U,F) v ớ i U=(ABCDE) F={AB→C; AD→B; B→D}. a) Tìm giao củ a các khoá? b) Tìm tấ t c ả các khoá cho r(U,F)? 21. Cho lượ c đ ồ quan h ệ r(U,F) U=(ABCDEGH) F={ B →AC, DH →AE, AC →BE, E →H, A→D, G→E}. a) Tìm mộ t khoá cho r(U,F). b) Chứ ng minh r ằ ng: CG→EH∈F+ c) Các tậ p thu ộ c tính CGH và ABCG có ph ả i là khoá c ủ a r hay không? 22. Cho lược đ ồ quan h ệ r(U,F): U = {A, B, C, D, E, G} F= {AB →C,D →EG, BE→C,BC →D,CG →BD,ACD→B,CE→ AG}. a). Tìm tấ t c ả các khoá c ủ a r(U,F) b). Tìm giao củ a khoá Tìm phủ t ố i thi ể u c ủ a F Chuẩ n hoá r(U,F) v ề d ạ ng chu ẩ n 3NF 62
  64. Chươ ng 4 NGÔN NGỮỊỮỆ Đ NH NGHĨA VÀ THAO TÁC D LI U 4.1 Ngôn ngữ đ ạ i s ố quan h ệ 4.1.1 Khái niệ m Là ngôn ngữ d ự a trên các phép toán c ủ a đ ạ i s ố quan h ệ mà ta đã đ ề c ậ p t ớ i trong Chươ ng 2. Mỗ i câu h ỏ i đ ượ c bi ể u di ễ n b ằ ng m ộ t t ậ p các phép toán nào đó. 4.1.2 Các câu lệ nh c ủ a ngôn ng ữ đ ạ i s ố quan h ệ 5. Phép hợ p UNION 6. Phép giao INTERSECT 7. Phép trừ MINUS 8. Phép tích Đề - các TIMES 9. Phép chọ n SELECT WHERE 10. Phép chiế u PROJECT OVER 11. Phép kế t n ố i JOIN AND [OVER ] [WHERE ] 12. Phép chia DIVIDE BY OVER [AND ] 13. Đư a ra k ế t qu ả GIVING 4.1.3 Ví dụ minh ho ạ 63
  65. -Bổ xung vào quan h ệ CONGTY m ộ t công ty n ữ a Congty UNION {“CT4”, “Hồ ng Hà”,1200000, “Nam đ ị nh”} GIVING Congty -Xóa tên công ty CT5 Congty MINUS {“CT5”, , , } GIVING CongTy -Sử a đ ị a ch ỉ c ủ a công ty H ồ ng Hà thành Hà n ộ i, th ự c ch ấ t là xoá b ộ cũ thay b ộ mớ i v ớ i n ộ i dung m ớ i Congty MINUS (“CT4”, , , ) GIVING Tgian Tgian UNION ( “CT4”, , “Hà nộ i”) GIVING CongTy Chú ý: Lệ nh này c ầ n đ ề phòng m ấ t d ữ li ệ u -Tìm kiế m thông tin v ề công ty CT1 SELECT CongTy WHERE MaCongTy = “ CT1” GIVING CongTy 4.1.4 Biể u di ễ n m ộ t s ố câu h ỏ i 14. Đư a ra danh sách các m ặ t hàng màu đ ỏ SELECT Hanghoa WHERE Mau = “Đỏ ” GIVING Ketqua 15. Cho biế t mã các công ty cung c ấ p m ặ t hàng H1 SELECT CungCap WHERE MaHang = “H1” GIVING Tgian PROJECT Tgian OVER MaCongTy GIVING Ketqua Hoặ c: PROJECT (SELECT CungCap WHERE MaHang= ”H1”) OVER MaCongTy GIVING Ketqua 16. Cho biế t tên công ty cung c ấ p m ặ t hàng H1 SELECT Cungcap WHERE MaHang = “H1” GIVING Tgian1 JOIN Tgian1 AND Congty OVER MaCongTy GIVING Tgian2 PROJECT Tgian2 OVER TenCongTy GIVING Ketqua 17. Cho biế t tên công ty cung c ấ p c ả hai m ặ t hàng H1 và H2 SELECT CungCap WHERE MaHang= ”H1” GIVING Tgian1 PROJECT Tgian1 OVER MaCongTy GIVING Tgian2 64
  66. SELECT CungCap WHERE MaHang= ”H2” GIVING Tgian1’ PROJECT Tgian1’ OVER MaCongTy GIVING Tgian2’ Tgian2 INTERSECT Tgian2’ GIVING Tgian JOIN Tgian AND Congty OVER MaCongTy GIVING Tgian’ PROJECT Tgian’ OVER TenCongTy GIVING Ketqua 4.2 Ngôn ngữ SQL (Structure Query Language) 4.2.1 Giớ i thi ệ u SQL đượ c phát tri ể n t ừ ngôn ng ữ SEQUEL-2, th ử nghi ệ m và cài đ ặ t t ạ i Trung tâm nghiên cứ u c ủ a hãng IBM ở San Joes (California-US), cho h ệ th ố ng Quả n tr ị c ơ s ở d ữ li ệ u l ớ n đi ể n hình là System - R, SQL v ừ a đóng vai trò là m ộ t ngôn ngữ có th ể thao tác đ ộ c l ậ p c ủ a ng ườ i s ử d ụ ng đ ầ u cu ố i, đ ồ ng th ờ i l ạ i có khả năng là m ộ t ngôn ng ữ con đ ượ c nhúng trong ngôn ng ữ ch ủ . SQL là ngôn ngữ phi th ủụễửụ t c, d s d ng. Do v ậệ y hi n nay r ấềệ t nhi u h quả n tr ị c ơ s ở d ữ li ệ u s ử d ụ ng ngôn ng ữ SQL nh ư ACCESS, ORACLE, DB2 SQL cho phép tạ o l ậ p và th ự c hi ệ n các thao tác truy xu ấ t trên c ơ s ở d ữ liệ u m ộ t cách r ấ t d ễ dàng. 4.2.2 Nhóm lệ nh t ạ o l ậ p c ơ s ở d ữ li ệ u a) Lệ nh t ạ o b ả ng CREATE TABLE ( [ ] [, n ] [, ]) Trong đó: + tên_bả ng, tên_c ộ t: do ng ườ i s ử d ụ ng t ự đ ị nh nghĩa tuân theo quy t ắ c đ ặ t tên . Tên cộ t b ắ t đ ầ u b ằ ng ch ữ hoa, sao cho ng ắ n g ọ n chính xác và đ ầ y đủ . . Không nên đặ t tên b ả ng và tên c ộ t có kho ả ng tr ắ ng. . Không nên đặ t tên b ả ng và tên c ộ t trùng v ớ i các t ừ khóa. + Kiể u_d ữ _li ệ u: Ch ọ n m ộ t ki ể u d ữ li ệ u nào phù h ợ p v ớ i d ữ li ệ u ng ườ i dùng sẽ nh ậ p vào. B ả ng 4.1 cho th ấ y các ki ể u d ữ li ệ u đ ượ c quy đ ị nh: 65
  67. Bả ng 4.1 Các ki ể u d ữ li ệ u Tên kiể u d ữ li ệ u Phạ m vi bi ể u di ễ n Kích thướ c Từ 2^63 (- Kiể u s ố nguyên, bigint 9223372036854775808) đế n 8 byte 2^63-1 (9223372036854775807) Từ -2^31 (-2,147,483,648) đ ế n Kiể u s ố nguyên. int 2^31 - 1 (2,147,483,647) 4 byte Từ 2^15 (-32,768) đ ế n 2^15 - 1 Kiể u s ố nguyên smallint (32,767) 2 byte Kiể u s ố nguyên tinyint Từ 0 đ ế n 255 1 byte bit Biể u di ễ n giá tr ị 0 ho ặ c 1 Kiể u s ố nguyên decimal(n,p) Từ (-10^38 +1) đ ế n (10^38 –1) Kiể u s ố th ự c tĩnh numeric(n,p) Từ (-10^38 +1) đ ế n (10^38 –1) Kiể u s ố th ự c tĩnh Từ -2^63 (-922,337,203,685,477.5808) money Kiể u d ữ li ệ u ti ể n t ệ đế n 2^63 - 1 (+922,337,203,685,477.5807), smallmoney Từ -214,748.3648 Kiể u d ữ li ệ u ti ể n t ệ đế n +214,748.3647 Từ (-1.79E + 308) Kiể u s ố th ự c đ ộ ng float đế n (1.79E + 308) Từ (-3.40E + 38) Kiể u s ố th ự c đ ộ ng real đế n (3.40E + 38) datetime Từ (January 1- 1753), Kiể u d ữ li ệ u đế n (December 31- 9999) ngày giờ smalldatetime Từ (January 1, 1900), Kiể u d ữ li ệ u đế n (June 6, 2079) ngày giờ char(n) Kiể u ký t ự có đ ộ dài c ố đ ị nh, Kiể u ký t ự nmax=8000 ký tự varchar(n) Kiể u ký t ự có đ ộ dài thay đ ổ i, Kiể u ký t ự nmax=8000 ký tự 66
  68. text Kiể u ký t ự có đ ộ dài t ố i đa là Kiể u ký t ự 2^31 - 1 (2,147,483,647) ký tự + Ràng _buộữệc_d _li u: Là m ộố t s quy đ ịụểể nh d ng đ ki m tra d ữệ li u khi th ự c hiệ n các thao tác nh ậ p ho ặ c c ậ p nh ậ t d ữ li ệ u, có các lo ạ i ràng bu ộ c sau: . Null (mặ c đ ị nh): Ch ấ p nh ậ n giá tr ị r ỗ ng . Not Null: Không chấ p nh ậ n giá tr ị r ỗ ng . Unique: giá trị nh ậ p vào ph ả i duy nh ấ t. . Primary key: Ràng buộ c khoá chính dùng đ ể xác đ ị nh duy nh ấ t m ộ t đố i t ượ ng nên giá tr ị c ủ a chúng ph ả i duy nh ấ t, không ch ấ p nh ậ n giá trị Null. + Ràng_buộ c_b ả ng: g ồ m 2 lo ạ i là ràng bu ộ c khoá chính và ràng bu ộ c khoá ngoài Ràng buộ c khóa chính đ ượ c đ ị nh nghĩa theo cú pháp sau: CONSTRAINT PRIMARY KEY (danh_sách_thuộ c_tính_khoá ) Ràng buộ c khóa ngoài: Dùng đ ể ki ể m tra s ự t ươ ng quan v ề d ữ li ệ u gi ữ a khoá chính và khoá ngoài ở hai b ả ng d ữ li ệ u có m ố i quan h ệ v ớ i nhau, đ ượ c đ ị nh nghĩa theo cú pháp sau: CONSTRAINT FOREIGN KEY ( ) REFERENCES ( ) Ví dụ 4.1: Cho c ơ s ở d ữ li ệ u qu ả n lý Thự c t ậ p gồ m các b ả ng d ữ li ệ u sau: + Bả ng LopHoc chứ a thông tin v ề các l ớ p h ọ c (4.2) MaLop TenLop L01 K7A-CNTT L02 K7B-CNTT Trong đó: MaLop là Mã lớ p; TenLop là Tên l ớ p + Bả ng SinhVien chứ a danh sách sinh viên (4.3): MaSV HotenSV NS GT Diachi MaLop 08K7A1 Nguyễ n Văn Dũng 09/11/1989 1 Hà Nộ i L01 67
  69. 08K7A2 Lê Ngọ c D ươ ng 01/09/1989 1 Bắ c Giang L01 08K7A3 Trầ n Th ị H ồ ng 17/06/1989 0 Bắ c K ạ n L02 Trong đó: MaSV là “Mã số sinh viên”; HoTenSV là “H ọ tên sinh viên”; NS là “Ngày sinh”; DiaChi là “Đị a ch ỉ ” c ủ a sinh viên; GT là “Gi ớ i tính”; + Bả ng DeTai chứ a danh sách các đ ề tài th ự c t ậ p (4.4): MaDT TenDT GVHD KP DT01 Pháp triể n ứ ng d ụ ng WEB Nguyễ n H ồ ng An 2000000 DT02 Xây dự ng th ư vi ệ n đi ệ n t ử Trầ n Văn Lâm 2500000 DT03 Truy vấ n d ữ li ệ u Multimedia Ngô Hả i Long 3000000 Trong đó: MaDT là “Mã đề tài”; TenDT là “Tên đ ề tài”; GVHD là “H ọ tên giáo viên hướ ng d ẫ n đ ề tài”; KP là “Kinh phí”. + Bả ng SV_DeTai chứ a thông tin v ề tình hình th ự c t ậ p c ủ a sinh viên (4.5): MaSV MaDT NTT KQ 08K7A1 DT01 Công ty phầ n m ề n CNN 8 08K7A2 DT02 Khoa CNTT 7 08K7A3 DT03 Công ty phầ n m ề m Thanh Niên 9 08K7A1 DT02 Trung tâm họ c li ệ u TN 8 Trong đó: MaDT là “Mã đề tài”; NTT là “N ơ i sinh viên đ ế n th ự c t ậ p”; KQ là “Kế t qu ả th ự c t ậ p” Yêu cầ u: Hãy tạ o c ấ u trúc ba b ả ng d ữ li ệ u trên. Câu lệ nh t ạ o b ả ng c ủ a SQL: Create table LopHoc( MaLop char(6) Primary Key, TenLop Varchar(35) Not Null) Create table SinhVien( MaSV Varchar(30) Primary Key, HoTenSV Varchar(35) Not Null, NS Datetime Not Null, 68
  70. GT Bit Not Null DiaChi Varchar(100) Not Null, MaLop Char(6), Constraint MaLop_FK Foreign key (MaLop) References LopHoc(MaLop)) Create table DeTai( MaDT Char(9) Primary key, TenDT Varchar(100) Not Null, GVHD Varchar(30) Not Null, KP SmallMoney) Create table SV_DeTai( MaDT Char(9) Primary key, MaSV Char(10), NTT Varchar(100) Not Null, KQ Numeric(5,2) Not Null, Constraint MaDT_FK Foreign key (MaDT) References DeTai(MaDT), Constraint MaSV_FK Foreign key (MaSV) References SinhVien(MaSV)) b) Thêm mộ t c ộ t ALTER TABLE ADD [ ] Ví dụ 4.2: Thêm vào b ả ng SinhVien c ộ t s ố đi ệ n tho ạ i ALTER TABLE SinhVien ADD SoDT char(10) c) Xoá cộ t ALTER TABLE DROP COLUMN Ví dụ 4.3: Câu l ệ nh sau s ẽ xoá c ộ t s ố đi ệ n tho ạ i trong b ả ng Sinh viên ALTER TABLE SinhVien DROP COLUMN SoDT d) Xoá ràng buộ c ALTER TABLE DROP CONSTRAINT 69
  71. Ví dụ 4.4: Câu l ệ nh sau s ẽ xoá m ộ t ràng bu ộ c khoá ngoài trong b ả ng SV_DETAI ALTER TABLE SV_DETAI DROP CONSTRAINT MaSV_FK 4.2.3. Nhãm l Önh thao t¸c d÷ l i Öu 4.2.3.1 Lệ nh truy v ấ n d ữ li ệ u - SELECT Việ c truy c ậ p và l ấ y các thông tin t ừ database đ ượ c SQL cho phép th ự c hiệ n qua câu l ệ nh SELECT. Câu l ệ nh SELECT có ph ạ m vi ứ ng d ụ ng r ấ t r ộ ng, có thể truy c ậ p d ữ li ệ u t ừ m ộ t b ả ng (table), hay t ừ nhi ề u b ả ng. Các từ khóa SELECT, FROM, WHERE đ ượ c s ử d ụ ng đ ể t ạ o nên m ộ t câu lệ nh SELECT đ ơ n gi ả n nh ấ t Cú pháp tổ ng quát có d ạ ng sau: SELECT [ ALL | DISTINCT ] FROM [ WHERE ] [ GROUP BY ] [ HAVING ] [ ORDER BY [ ASC | DESC ] [, n]] a) Mệ nh đ ề SELECT Danh sách chọ n trong câu l ệ nh SELECT đ ượ c s ử d ụ ng đ ể ch ỉ đ ị nh các thuộ c tính, các bi ểứấệ u th c xu t hi n trong b ảếảủ ng k t qu c a câu truy v ấử n. S dụ ng danh sách ch ọ n trong câu l ệ nh SELECT bao g ồ m các tr ườ ng h ợ p sau: S1: Chọ n t ấ t c ả các c ộ t trong b ả ng Khi cầ n hi ể n th ị t ấ t c ả các tr ườ ng trong b ả ng, s ử d ụ ng ký t ự * trong danh sách chọ n thay vì ph ả i li ệ t kê t ấ t c ả các c ộ t. Trong tr ườ ng h ợ p này, các cộ t đ ượ c hi ể n th ị trong b ả ng k ế t qu ả c ủ a câu truy v ấ n s ẽ tuân theo th ứ t ự mà chúng xuấ t hi ệ n trong b ả ng c ấ u trúc. Ví dụ 4.7: Câu l ệ nh sau s ẽ li ệ t kê danh sách các sinh viên SELECT * FROM SinhVien Kế t qu ả : 70
  72. MaSV HotenSV NS GT Diachi MaLop 08K7A1 Nguyễ n Văn Dũng 09/11/1989 1 Hà Nộ i L01 08K7A2 Lê Ngọ c D ươ ng 01/09/1989 1 Bắ c Giang L01 08K7A3 Trầ n Th ị H ồ ng 17/06/1989 0 Bắ c K ạ n L02 S2: Liệ t kê tên c ộ t trong danh sách ch ọ n Trong trườ ng h ợ p c ầ n ch ỉ đ ị nh c ụ th ể các c ộ t c ầ n hi ể n th ị trong k ế t qu ả truy vấ n, ta ch ỉ đ ị nh danh sách các tên c ộ t trong danh sách ch ọ n. Th ứ t ự c ủ a các cộ t trong k ế t qu ả truy v ấ n tuân theo th ứ t ự c ủ a các c ộ t trong danh sách ch ọ n. Ví dụ 4.8: Li ệ t kê danh sách sinh viên g ồ m các thu ộ c tính sau: MaSV, HoTenSV, DiaChi Câu lệ nh SELECT MaSV, HoTenSV, DiaChi FROM SinhVien Kế t qu ả : MaSV HotenSV Diachi 08K7A1 Nguyễ n Văn Dũng Hà Nộ i 08K7A2 Lê Ngọ c D ươ ng Bắ c Giang 08K7A3 Trầ n Th ị H ồ ng Bắ c K ạ n Chú ý: Nế u truy v ấ n đ ượ c th ự c hi ệ n trên nhi ề u b ả ng và các b ả ng có các thu ộ c tính trùng tên thì tên củ a nh ữ ng thu ộ c tính này n ế u xu ấ t hi ệ n trong câu truy v ấ n phả i đ ượ c vi ế t d ướ i d ạ ng: . Ví dụ 4.9: Li ệ t kê mã, h ọ và tên, các sinh viên đã tham gia ít nh ấ t m ộ t l ầ n th ự c tậ p SELECT SV.MaSV, HoTenSV FROM SinhVien SV, SV_DeTai TT 71
  73. WHERE MaSV HotenSV 08K7A1 Nguyễ n Văn Dũng 08K7A2 Lê Ngọ c D ươ ng 08K7A3 Trầ n Th ị H ồ ng SV.MaSV=TT.MaSV Kế t qu ả : S3: Hiể n th ị v ớ i vi ệ c thay đ ổ i tiêu đ ề các c ộ t Trong kế t qu ả truy v ấ n, tiêu đ ề c ủ a các c ộ t m ặ c đ ị nh s ẽ là tên c ủ a các thuộ c tính t ươ ng ứ ng trong b ả ng. Tuy nhiên, đ ể tiêu đ ề tr ở thành thân thi ệ n hơ n, ta có th ểổạ đ i l i tên tiêu đ ềủ c a các c ộểặ t. Đ đ t tiêu đ ề cho m ộộ t c t nào đó là mộ t chu ỗ i k ỹ t ự đ ặ t trong d ấ u nháy kép “ “. AS Ví dụ 4.10: Cho bi ế t mã và tên c ủ a các đ ề tài th ự c t ậ p. SELECT MaDT AS “Mã đề tài”, TenDT AS “Tên đ ề tài” FROM DeTai Kế t qu ả : Mã đề tài Tên đề tài DT01 Pháp triể n ứ ng d ụ ng WEB DT02 Xây dự ng th ư vi ệ n đi ệ n t ử DT03 Truy vấ n d ữ li ệ u Multimedia 72
  74. S4: Hằ ng và bi ể u th ứ c trong danh sách ch ọ n Ngoài danh sách thuộ c tính, trong danh sách ch ọ n c ủ a câu l ệ nh SELECT còn có thể s ử d ụ ng các bi ể u th ứ c. M ỗ i bi ể u th ứ c trong danh sách ch ọ n tr ở thành mộ t c ộ t trong k ế t qu ả truy v ấ n. S5: Loạ i b ỏ các b ả n ghi trùng nhau Trong kế t qu ả c ủ a truy v ấ n có th ể xu ấ t hi ệ n các dòng d ữ li ệ u trùng nhau. Để lo ạ i b ớ t các dòng này, ta ch ỉ đ ị nh thêm t ừ khoá DISTINCT ngay sau t ừ khoá SELECT. Ví dụ 4.11: Cho bi ế t thông tin v ề mã c ủ a các sinh viên đã tham gia th ự c t ậ p. SELECT DISTINCT MaSV FROM SV_DeTai Kế t qu ả (không t ồ n t ạ i các b ả n ghi trùng nhau): MaSVMaSV 08K7A108K7A1 08K7A208K7A2 08K7A308K7A3 08K7A1 Nế u ta th ự c hi ệ n câu l ệ nh không có tuỳ ch ọ n DISTINCT nh ư sau: SELECT MaSV FROM SV_DeTai Thì kế t qu ả t ồ n t ạ i c ả các b ả n ghi trùng nhau: 73
  75. b) Mệ nh đ ề FROM Mệ nh đ ề FROM nh ằ m ch ỉ đ ị nh các b ả ng c ầ n truy xu ấ t d ữ li ệ u có liên quan đế n câu truy v ấ n. Sau FROM là danh sách tên c ủ a các b ả ng và khung nhìn tham gia vào truy vấ n. Tên c ủ a các b ả ng và các khung nhìn đ ượ c phân cách nhau bở i d ấ u ph ẩ y. Ví dụ 4.5: Câu l ệ nh d ướ i đây hi ể n th ị mã và tên c ủ a các sinh viên. SELECT MaSV, HoTenSV FROM SinhVien Kế t qu ả : MaSV HotenSV 08K7A1 Nguyễ n Văn Dũng 08K7A2 Lê Ngọ c D ươ ng 08K7A3 Trầ n Th ị H ồ ng Chú ý: Ta có thể s ử d ụ ng các bí danh cho các b ả ng hay khung nhìn trong câu lệ nh truy v ấ n v ớ i cú pháp sau: . Ví dụ 4.6: Câu l ệ nh sau gán bí danh là SV cho b ả ng SinhVien SELECT * FROM SinhVien SV c) Mệ nh đ ề đi ề u ki ệ n WHERE Mệ nh đ ề WHERE trong câu l ệ nh SELECT đ ượ c s ử d ụ ng nh ằ m xác đị nh các đi ềệốớệ u ki n đ i v i vi c truy xu ấữệ t d li u. Sau m ệề nh đ WHERE là m ộ t 74
  76. biể u th ứ c logíc và nh ữ ng dòng d ữ li ệ u nào tho ả mãn đi ề u ki ệ n đ ượ c ch ỉ đ ị nh mớ i đ ượ c hi ể n th ị trong k ế t qu ả truy v ấ n. Ví dụ 4.12: Câu l ệ nh d ướ i đây hi ể n th ị mã s ố c ủ a các sinh viên đã th ự c t ậ p đ ề tài có mã ‘DT02’ SELECT MaSV FROM SV_DeTai WHERE MaDT='DT02' Kế t qu ả : MaSV 08K7A1 08K7A2 Trong mệ nh đ ề WHERE th ườ ng s ử d ụ ng Các toán tử k ế t h ợ p đi ề u ki ệ n (AND, OR) Các toán tử so sánh. Toán tử ph ạ m vi và toán t ử t ậ p h ợ p Các giá trị NULL S1: Các toán tử so sánh Toán tử Ý nghĩa = (Equals) Ngang bằ ng > (Greater Than) Lớ n h ơ n = (Greater Than or Equal To) Lớ n h ơ n ho ặ c b ằ ng (Not Equal To) Không bằ ng != (Not Equal To) Không bằ ng ! (Not Greater Than) Không lớ n h ơ n 75
  77. S2: To¸n tö ph¹m vi (Range Operator): [NO T] BETW EEN a AND b Toán tử này dùng đ ể ki ể m tra xem giá tr ị d ữ li ệ u n ằ m trong (ngoài) m ộ t kho ả ng nào đó, ta sử d ụ ng toán t ử [NOT] BETWEEN nh ư sau: Cách sử d ụ ng Ý nghĩa giá_tri BETWEEN a AND b a ≤ giá_trị ≤ b giá_tri NOT BETWEEN a AND b (giá_trị b Câu lệ nh d ướ i đây cho bi ế t danh sách các đ ề tài có kinh phí n ằ m trong kho ả ng từ 2,5 đ ế n 3 tri ệ u đ ồ ng SELECT * FROM DeTai WHERE KP Between 2500000 And 3000000 Kế t qu ả : MaDT TenDT GVHD KP DT02 Xây dự ng th ư vi ệ n đi ệ n t ử Trầ n Văn Lâm 2500000 DT03 Truy vấ n d ữ li ệ u Multimedia Ngô Hả i Long 3000000 Câu lệ nh d ướ i đây cho bi ế t danh sách các đ ề tài có kinh phí không n ằ m trong khoả ng t ừ 2,5 đ ế n 3 tri ệ u đ ồ ng SELECT * FROM DeTai WHERE KP NOT Between 2500000 And 3000000 76
  78. Kế t qu ả : MaDT TenDT GVHD KP DT01 Pháp triể n ứ ng d ụ ng WEB Nguyễ n H ồ ng An 2000000 S3: Toán tử t ậ p h ợ p IN và NOT IN Toán tử IN đ ượ c s ử d ụ ng khi ta c ầ n ch ỉ đ ị nh đi ề u ki ệ n tìm ki ế m d ữ li ệ u cho câu SELECT là mộ t danh sách các giá tr ị . Sau IN (ho ặ c NOT IN) có th ể là mộ t danh sách các giá tr ị ho ặ c là m ộ t câu l ệ nh SELECT khác. Ví dụ 4.12: Đ ể bi ế t danh sách các đ ề tài có kinh phí b ằ ng 2 ho ặ c 3 tri ệ u đ ồ ng thay vì sử d ụ ng câu l ệ nh: SELECT * FROM DeTai WHERE KP =2000000 OR KP=3000000 Ta có thể s ử d ụ ng câu l ệ nh SELECT * FROM DeTai WHERE KP IN (2000000,3000000) Kế t qu ả : MaDT TenDT GVHD KP DT01 Pháp triể n ứ ng d ụ ng WEB Nguyễ n H ồ ng An 2000000 DT03 Truy vấ n d ữ li ệ u Multimedia Ngô Hả i Long 3000000 S4: Toán tử LIKE và các ký t ự đ ạ i di ệ n Toán tử LIKE (ho ặ c NOT LIKE ) s ử d ụ ng trong câu l ệ nh SELECT nh ằ m mô tả khuôn d ạ ng c ủ a d ữ li ệ u c ầ n tìm ki ế m. Chúng th ườ ng k ế t h ợ p v ớ i các ký tự đ ạ i di ệ n sau đây: Dấ u ph ầ n trăm (%): Ch ỉ m ộ t chu ỗ i các ký t ự b ấ t kỳ. Dấ u g ạ ch d ướ i ( _ ): Ch ỉ m ộ t ký t ự b ấ t kỳ Ví dụ 4.13: Cho bi ế t danh sách các sinh viên có h ọ tên b ắ t đ ầ u là ký t ự ‘L’ 77
  79. SELECT * FROM SinhVien WHERE HoTenSV Like 'L%' Kế t qu ả : MaSV HotenSV NS GT Diachi MaLop 08K7A2 Lê Ngọ c D ươ ng 01/09/1989 1 Bắ c Giang L01 Ví dụ 4.14: Cho bi ế t mã, tên, đ ị a ch ỉ c ủ a các sinh viên có h ọ tên k ế t thúc b ằ ng chữ ‘ng’ SELECT * FROM SinhVien WHERE HoTenSV Like '%ng' Kế t qu ả : MaSV HotenSV Diachi 08K7A1 Nguyễ n Văn Dũng Hà Nộ i 08K7A2 Lê Ngọ c D ươ ng Bắ c Giang 08K7A3 Trầ n Th ị H ồ ng Bắ c K ạ n S5: Giá trị NULL Trong mệ nh đ ề WHERE, đ ể ki ể m tra giá tr ị c ủ a m ộ t c ộ t có giá tr ị NULL hay không ta sử d ụ ng cách vi ế t: WHERE tên_cộ t IS NULL ho ặ c WHERE tên_c ộ t IS NOT NULL d) Sắ p x ế p k ế t qu ả truy v ấ n Mặ c đ ị nh các dòng d ữ li ệ u trong k ế t qu ả c ủ a câu truy v ấ n tuân theo th ứ tự c ủ a chúng trong b ả ng d ữ li ệ u ho ặ c đ ượ c s ắ p x ế p theo ch ỉ m ụ c (n ế u trên bả ng có ch ỉ m ụ c). Trong tr ườ ng h ợ p mu ố n d ữ li ệ u đ ượ c s ắ p x ế p theo chi ề u tăng hoặ c gi ả m c ủ a giá tr ị c ủ a m ộ t ho ặ c nhi ề u tr ườ ng, ta s ử d ụ ng thêm m ệ nh đề ORDER BY trong câu l ệ nh SELECT. 78
  80. Sau ORDER BY là danh sách các cộ t c ầ n s ắ p x ế p (t ố i đa là 16 c ộ t). D ữ liệ u đ ượ c s ắ p x ế p có th ể theo chi ề u tăng (ASC) ho ặ c gi ả m (DESC), m ặ c đ ị nh là sắ p x ế p theo chi ề u tăng d ầ n. Ví dụ 4.15: Câu l ệ nh d ướ i đây hi ể n th ị danh sách các đ ề tài và s ắ p x ế p theo chiề u gi ả m d ầ n kinh phí. SELECT * FROM DeTai ORDER BY KP DESC Kế t qu ả : MaDT TenDT GVHD KP DT03 Truy vấ n d ữ li ệ u Multimedia Ngô Hả i Long 3000000 DT02 Xây dự ng th ư vi ệ n đi ệ n t ử Trầ n Văn Lâm 2500000 DT01 Pháp triể n ứ ng d ụ ng WEB Nguyễ n H ồ ng An 2000000 Chú ý: Nế u sau ORDER BY có nhi ề u c ộ t thì vi ệ c s ắ p x ế p d ữ li ệ u s ẽ đ ượ c ư u tiên theo chiề u t ừ trái qua ph ả i. Ví dụ 4.16: Li ệ t kê danh sách sinh viên và s ắ p x ế p theo tên sinh viên theo Alphabet (tăng dầ n), n ế u trùng tên thì s ắ p theo gi ớ i tính. SELECT * FROM SinhVien ORDER BY HoTenSV, GT e) Phép kế t n ố i Khi cầựệộ n th c hi n m t yêu c ầ u truy v ấữệừ n d li u t hai hay nhi ềả u b ng, ta phả i s ử d ụ ng đ ế n phép k ế t n ố i Để th ự c hi ệ n đ ượ c m ộ t phép n ố i, c ầ n ph ả i xác đ ị nh đ ượ c nh ữ ng y ế u t ố sau: . Nhữ ng c ộ t nào c ầ n hi ể n th ị trong k ế t qu ả truy v ấ n. . Nhữ ng b ả ng nào có tham gia vào truy v ấ n. . Điề u ki ệ n đ ể th ự c hi ệ n phép n ố i gi ữ a các b ả ng d ữ li ệ u là gì? Trong các yế u t ố k ể trên, vi ệ c xác đ ị nh chính xác đi ề u ki ệ n đ ể th ự c hi ệ n phép nố i gi ữ a các b ả ng đóng vai trò quan tr ọ ng nh ấ t. Trong đa s ố các tr ườ ng hợ p, đi ề u ki ệ n c ủ a phép n ố i đ ượ c xác đ ị nh nh ờ vào m ố i quan h ệ gi ữ a các b ả ng 79
  81. cầ n ph ả i truy xu ấ t d ữ li ệ u. Thông th ườ ng, đó là đi ề u ki ệ n b ằ ng nhau gi ữ a khoá chính và khoá ngoài củ a hai b ả ng có quan h ệ v ớ i nhau. Ví dụ 4.17: Câu l ệ nh d ướ i đây hi ể n th ị danh sách các sinh viên v ớ i các thông tin: Mã sinh viên, họ tên, mã l ớ p và tên l ớ p SELECT MaSV, HoTenSV, LopHoc.MaLop, TenLop FROM SinhVien , LopHoc WHERE SinhVien.MaLop = LopHoc.MaLop Kế t qu ả : MaSV HotenSV MaLop TenLop 08K7A1 Nguyễ n Văn Dũng L01 K7A-CNTT 08K7A2 Lê Ngọ c D ươ ng L01 K7A-CNTT 08K7A3 Trầ n Th ị H ồ ng L02 K7B-CNTT Trong câu lệ nh trên, các b ả ng tham gia vào truy v ấ n bao g ồ m: SinhVien và LopHoc. Điềệểựệ u ki n đ th c hi n phép k ếốữ t n i gi a hai b ả ng là đi ềệ u ki n sau: SinhVien.MaLop = LopHoc.MaLop Chú ý: - Tên củ a m ộ t s ố c ộ t nào đó trong các b ả ng có tham gia vào truy v ấ n. Nế u tên c ộ t trong các b ả ng trùng tên nhau thì tên c ộ t ph ả i đ ượ c vi ế t d ướ i d ạ ng: Tên_bả ng.tên_c ộ t - Dấ u sao (*) đ ượ c s ử d ụ ng trong danh sách ch ọ n khi c ầ n hi ể n th ị t ấ t c ả các cộ t c ủ a các b ả ng tham gia truy v ấ n. -Trong trườ ng h ợ p c ầ n hi ể n th ị t ấ t c ả các c ộ t c ủ a m ộ t b ả ng nào đó, ta sử d ụ ng cách vi ế t: tên_bả ng.* Ví dụ 4.18 : Li ệ t kê danh sách các sinh viên đã tham gia th ự c t ậ p đ ề t ạ i có mã số là ‘DT02’ SELECT SinhVien.* FROM SinhVien , SV_DeTai WHERE SinhVien.MaSV = SV_DeTai.MaSV AND MaDT=’DT02’ Kế t qu ả MaSV HotenSV NS GT Diachi MaLop 08K7A1 Nguyễ n Văn Dũng 09/11/1989 1 Hà Nộ i L01 80
  82. 08K7A2 Lê Ngọ c D ươ ng 01/09/1989 1 Bắ c Giang L01 f) Thố ng kê d ữ li ệ u v ớ i GROUP BY Mệ nh đ ề GROUP BY s ử d ụ ng trong câu l ệ nh SELECT nh ằ m phân hoạ ch các dòng d ữ li ệ u trong b ả ng thành các nhóm d ữ li ệ u và trên m ỗ i nhóm dữ li ệ u th ự c hi ệ n tính toán các giá tr ị th ố ng kê nh ư tính t ổ ng, tính giá tr ị trung bình Các hàm nhóm đượ c s ử d ụ ng đ ể tính giá tr ị th ố ng kê cho toàn b ả ng hoặ c trên m ỗ i nhóm d ữ li ệ u. Chúng có th ể đ ượ c s ử d ụ ng nh ư là các c ộ t trong danh sách chọ n c ủ a câu l ệ nh SELECT ho ặ c xu ấ t hi ệ n trong m ệ nh đ ề HAVING, như ng không đ ượ c phép xu ấ t hi ệ n trong m ệ nh đ ề WHERE SQL cung cấ p các hàm nhóm d ướ i đây: Hàm nhóm Chứ c năng SUM(Tên_thuộ c_tính|bi ể u_th ứ c) Tính tổ ng các giá tr ị AVG(Tên_thuộ c_tính|bi ể u_th ứ c) Tính trung bình củ a các giá tr ị COUNT(Tên_thuộ c_tính|bi ể u_th ứ c) Đế m s ố các giá tr ị trong bi ể u th ứ c COUNT(*) Đế m s ố các dòng đ ượ c ch ọ n MAX(Tên_thuộ c_tính|bi ể u_th ứ c) Tính giá trị l ớ n nh ấ t MIN(Tên_thuộ c_tính|bi ể u_th ứ c) Tính giá trị nh ỏ nh ấ t Trong đó: Hàm SUM, AVG chỉ làm vi ệ c v ớ i các bi ể u th ứ c s ố Hàm SUM, AVG, COUNT, MIN và MAX bỏ qua các giá tr ị NULL khi tính toán. Hàm COUNT(*) không bỏ qua các giá tr ị NULL S1: Thố ng kê trên toàn b ộ d ữ li ệ u Khi cầ n tính toán giá tr ị th ố ng kê trên toàn b ộ d ữ li ệ u, ta s ử d ụ ng các hàm nhóm trong danh sách chọ n c ủ a câu l ệ nh SELECT. Trong tr ườ ng h ợ p này, trong danh sách chọ n không đ ượ c s ử d ụ ng b ẩ t kỳ m ộ t tên c ộ t hay bi ể u th ứ c nào ngoài các hàm nhóm. 81
  83. Ví dụ 4.19 : Đ ể tính trung bình kinh phí c ủ a t ấ t c ả các đ ề tài ta s ử d ụ ng câu lệ nh nh ư sau: SELECT AVG(KP) AS TBKP FROM DeTai Kế t qu ả : TBKP 2500000 S2: Thố ng kê d ữ li ệ u trên các nhóm Trong trườ ng h ợ p c ầ n th ự c hi ệ n tính toán các giá tr ị th ố ng kê trên các nhóm dữ li ệ u, ta s ử d ụ ng m ệ nh đ ề GROUP BY đ ể phân ho ạ ch d ữ li ệ u thành các nhóm riêng biệ t. Các hàm nhóm đ ượ c s ử d ụ ng s ẽ th ự c hi ệ n thao tác tính toán trên mỗ i nhóm và cho bi ế t giá tr ị th ố ng kê theo t ừ ng nhóm d ữ li ệ u. Ví dụ 4.20: Câu l ệ nh d ướ i đây cho bi ế t sĩ s ố sinh viên c ủ a m ỗ i l ớ p SELECT LopHoc.MaLop, TenLop, COUNT(MaSV) AS SiSo FROM LopHoc, SinhVien WHERE LopHoc.MaLop = SinhVien. MaLop GROUP BY LopHoc.MaLop, TenLop Kế t qu ả : MaLop TenLop SiSo L01 K7A-CNTT 2 L02 K7B-CNTT 1 Chú ý: Biể u th ứ c nào đi ề u khi ể n vi ệ c phân nhóm d ữ li ệ u thì các bi ể u th ứ c đó ph ả i đượ c li ệ t kê sau m ệ nh đ ề GROUP BY. Trong trườ ng h ợ p danh sách ch ọ n c ủ a câu l ệ nh SELECT có các hàm nhóm và nhữ ng bi ể u th ứ c ho ặ c thu ộ c tính không ph ả i là đ ố i s ố c ủ a các hàm nhóm thì nhữ ng bi ể u th ứ c ho ặ c nh ữ ng thu ộ c tính này ph ả i đ ượ c li ệ t kê đ ầ y đ ủ trong mệ nh đ ề GROUP BY, n ế u không câu l ệ nh s ẽ không h ợ p l ệ . 82