Giáo trìn Cơ sở dữ liệu

pdf 237 trang vanle 2160
Bạn đang xem 20 trang mẫu của tài liệu "Giáo trìn 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_trin_co_so_du_lieu.pdf

Nội dung text: Giáo trìn Cơ sở dữ liệu

  1. TR ƯỜNG ĐẠI H ỌC NGÂN HÀNG TP. H Ồ CHÍ MINH KHOA CÔNG NGH Ệ THÔNG TIN GIÁO TRÌNH NHÓM BIÊN SO ẠN: Tr ịnh Hoàng Nam (Ch ủ biên) Nguy ễn Th ị Trà Linh Tạ Th ị Hoàng Mai
  2. MỤC L ỤC LỜI M Ở ĐẦ U 1 CH ƯƠ NG 1: T ỔNG QUAN V Ề H Ệ TH ỐNG C Ơ S Ở D Ữ LI ỆU 3 1.1 Hệ th ống h ướng t ập tin 5 1.2 Hệ th ống h ướng c ơ s ở d ữ li ệu 6 1.3 Mục tiêu c ủa các h ệ c ơ s ở d ữ li ệu 7 1.4 Hệ qu ản tr ị c ơ s ở d ữ li ệu 8 1.5 Ng ười dùng c ơ s ở d ữ li ệu 13 1.6 Ngôn ng ữ và giao di ện ngôn ng ữ dữ li ệu 15 CH ƯƠ NG 2: MÔ HÌNH TH ỰC TH Ể K ẾT H ỢP 22 2.1. Mô hình th ực th ể k ết h ợp 24 2.2. Một ứng d ụng c ủa mô hình th ực th ể k ết h ợp 25 2.3. Các khái ni ệm trong mô hình th ực th ể k ết h ợp 27 2.4. Các v ấn đề khi thi ết k ế mô hình th ực th ể k ết h ợp 40 CH ƯƠ NG 3: MÔ HÌNH TH ỰC TH Ể K ẾT H ỢP M Ở R ỘNG 49 3.1 Nh ững h ạn ch ế c ủa mô hình th ực th ể k ết h ợp 51 3.2 Các khái ni ệm trong mô hình th ực th ể k ết h ợp m ở r ộng 52 3.3 Một ứng d ụng c ủa mô hình th ực th ể k ết h ợp m ở r ộng 63 3.4 Các công c ụ mô hình thi ết k ế c ơ s ở d ữ li ệu 64 CH ƯƠ NG 4: MÔ HÌNH D Ữ LI ỆU QUAN H Ệ 71 4.1 Các khái ni ệm c ơ b ản 73 4.2 Ràng bu ộc toàn v ẹn trên mô hình quan h ệ và l ược đồ d ữ li ệu quan h ệ 80 4.3 Các toán t ử c ập nh ật trên quan h ệ 85 CH ƯƠ NG 5: ĐẠI S Ố QUAN H Ệ VÀ PHÉP TÍNH QUAN H Ệ 94 5.1 Phép toán m ột ng ội 96 5.2 Các phép toán hai ngôi 99 5.3 Các phép toán khác 108
  3. 5.4 Phép tính quan h ệ trên b ộ 112 5.5 Phép tính quan h ệ trên mi ền 120 CH ƯƠ NG 6: THI ẾT K Ế C Ơ S Ở D Ữ LI ỆU QUAN H Ệ 128 6.1 Các giai đoạn thi ết k ế c ơ s ở d ữ li ệu quan h ệ 130 6.2 Thi ết k ế c ơ s ở d ữ li ệu ý ni ệm 133 6.3 Thi ết k ế c ơ s ở d ữ li ệu lu ận lý 139 CH ƯƠ NG 7: NGÔN NG Ữ TRUY V ẤN CÓ C ẤU TRÚC 162 7.1 Định ngh ĩa d ữ li ệu và các ki ểu d ữ li ệu 164 7.2 Các ràng bu ộc c ơ b ản trong SQL 168 7.3 Các câu l ệnh thay đổ i l ược đồ c ơ s ở d ữ li ệu 174 7.4 Các truy v ấn c ơ b ản trong SQL 176 7.5 Các câu truy v ấn ph ức t ạp 185 7.6 Các lệnh c ập nh ật d ữ li ệu trong SQL 196 CH ƯƠ NG 8: LÝ THUY ẾT THI ẾT K Ế C Ơ S Ở D Ữ LI ỆU QUAN H Ệ 206 8.1 Ph ụ thu ộc hàm 208 8.2 Hệ tiên đề các ph ụ thu ộc hàm và phép suy d ẫn logic 211 8.3 Một s ố v ấn đề khi thi ết k ế l ược đồ c ơ s ở d ữ li ệu quan h ệ 223 8.4 Phân tách quan h ệ 224 8.5 Các d ạng chu ẩn c ủa mô hình d ữ li ệu quan h ệ 231 8.6 Các ph ươ ng pháp chu ẩn hóa c ơ s ở d ữ li ệu quan h ệ 237 CH ƯƠ NG 9: T ỐI ƯU HÓA TRUY V ẤN 250 9.1 Tổng quan v ề t ối ưu hóa truy v ấn 252 9.2 Ph ươ ng pháp ước l ượng cây đạ i s ố quan h ệ 253 9.3 Nguyên t ắc t ối ưu hóa 254 9.4 Kỹ thu ật t ối ưu hóa các bi ểu th ức đạ i s ố quan h ệ 256 9.5 Tối ưu hóa b ằng khung nhìn 265
  4. LỜI M Ở ĐẦ U Trong th ời đại bùng n ổ thông tin, vai trò c ủa h ệ th ống thông tin ngày càng tr ở nên quan tr ọng đối v ới m ọi l ĩnh v ực ho ạt động c ủa doanh nghi ệp, đặc bi ệt trong vi ệc nâng cao kh ả năng c ạnh tranh thông qua các ho ạt động phát tri ển s ản ph ẩm, gi ảm giá thành, m ở rộng th ị tr ường, Ph ần l ớn các hệ th ống thông tin trong doanh nghi ệp đều đòi h ỏi ph ải duy trì toàn b ộ dữ li ệu ở quá kh ứ, không ng ừng b ổ sung thêm các d ữ li ệu mới được ghi nh ận ở hi ện t ại, và d ự đoán các k ết qu ả sẽ xu ất hi ện trong tươ ng lai. Các dữ li ệu này không ch ỉ được sử dụng để th ống kê, phân tích, đánh giá t ổ ch ức ở th ời điểm hi ện t ại, mà còn có kh ả năng hỗ tr ợ đư a ra nh ững quy ết định ở nhi ều c ấp quan tr ọng khác nhau. Chính vì l ẽ đó, cơ s ở dữ li ệu tr ở thành m ột b ộ ph ận gắn li ền v ới hệ th ống thông tin của doanh nghi ệp, và được coi là m ột ph ần không th ể tách r ời kh ỏi doanh nghi ệp. Thu ật ng ữ Cơ s ở dữ li ệu gi ờ đây được áp d ụng r ộng rãi trong nhi ều l ĩnh v ực ngoài Công ngh ệ thông tin, nh ư là Tài chính – Ngân hàng, K ế toán – Ki ểm toán, Th ẩm định d ự án, Bản thân môn h ọc C ơ s ở dữ li ệu cũng xu ất hi ện ở các ch ươ ng trình đào t ạo khác nhau với nhi ều trình độ khác nhau t ừ trung c ấp, cao đẳng, đến đại h ọc, và c ả sau đại h ọc. Trên th ị tr ường hi ện nay có khá nhi ều tài li ệu tham kh ảo về Cơ s ở dữ li ệu, nh ưng h ầu h ết đều nh ắm đến đối t ượng ng ười đọc là nh ững sinh viên kh ối ngành Công ngh ệ thông tin ho ặc có nh ững ki ến th ức nh ất định v ề công ngh ệ thông tin. Xu ất phát t ừ th ực t ế đó, chúng tôi b ắt tay biên soạn giáo trình Cơ s ở dữ li ệu với cách ti ếp c ận đơ n gi ản d ễ hi ểu, phù h ợp với m ọi đối t ượng ng ười đọc, k ể cả nh ững ng ười ch ưa từng tham gia b ất k ỳ lớp h ọc nào về công ngh ệ thông tin. 1
  5. Giáo trình t ập trung trình bày nh ững ki ến th ức c ần thi ết v ề cơ s ở dữ li ệu, t ừ nh ững khái ni ệm cơ b ản khi mới bắt đầu làm quen, cho đến nh ững v ấn đề quan tr ọng, có tính quy ết định t ới s ự thành b ại khi xây d ựng m ột c ơ s ở dữ li ệu th ực t ế. V ới các ki ến th ức lý thuy ết được trình bày m ột cách cô đọng, ng ắn g ọn và d ễ hi ểu; các ví d ụ minh h ọa đa d ạng, phong phú, chúng tôi hy v ọng giáo trình này đáp ứng được nhu c ầu nghiên c ứu và h ọc tập c ủa nhi ều đối t ượng ng ười h ọc khác nhau. Mặc dù có r ất nhi ều c ố gắng trong công tác biên so ạn, nh ưng giáo trình ch ắc ch ắn s ẽ có ít nhi ều khi ếm khuy ết. Chúng tôi r ất mong nh ận được các ý ki ến đóng góp để có th ể hoàn thi ện giáo trình trong l ần tái b ản ti ếp theo. TP. H ồ Chí Minh, tháng 07 n ăm 2011 NHÓM BIÊN SO ẠN 2
  6. CCHHƯƯƠƠNNGG 111111 TỔNG QUAN V Ề HỆ TH ỐNG C Ơ S Ở D Ữ LI ỆU Mục tiêu Ch ươ ng này cung c ấp cho ng ười đọ c các khái ni ệm c ơ b ản v ề c ơ s ở d ữ li ệu giúp có cái nhìn ban đầu v ề c ơ s ở d ữ li ệu, h ệ qu ản tr ị c ơ s ở d ữ li ệu và m ối tươ ng quan gi ữa chúng v ới nhau. Nội dung  Hệ th ống h ướng t ệp tin  Hệ th ống h ướng c ơ s ở d ữ li ệu  Hệ qu ản tr ị c ơ s ở d ữ li ệu  Ng ười dùng c ơ s ở d ữ li ệu  Ngôn ng ữ và giao di ện ngôn ng ữ d ữ li ệu Email: namth@buh.edu.vn 3
  7. Gi ới thi ệu Khái ni ệm c ơ s ở d ữ li ệu ra đờ i t ừ r ất s ớm, và k ể t ừ đó, c ơ s ở d ữ li ệu tr ở thành m ột bộ ph ận không th ể tách r ời đối v ới các h ệ th ống thông tin trên máy tính. Cơ s ở d ữ li ệu ra đờ i trong b ối c ảnh hàng lo ạt v ấn đề phát sinh trong các h ệ th ống s ử d ụng tệp tin làm ph ươ ng ti ện để l ưu tr ữ d ữ li ệu. Chúng ta bắt đầ u tìm hi ểu cơ s ở d ữ li ệu bằng vi ệc gi ới thi ệu m ột lo ại công cụ h ỗ tr ợ giao ti ếp v ới cơ s ở d ữ li ệu, đó là h ệ qu ản tr ị cơ s ở d ữ li ệu. Ti ếp theo chúng ta phân lo ại các đố i t ượng ng ười dùng c ơ s ở d ữ li ệu dựa trên quy ền h ạn và trách nhi ệm c ủa h ọ đố i v ới cơ s ở d ữ li ệu. Cu ối cùng, chúng ta làm quen v ới ba nhóm ngôn ng ữ mà qua đó chúng ta t ươ ng tác v ới h ệ qu ản tr ị cơ s ở d ữ li ệu: ngôn ng ữ định ngh ĩa d ữ li ệu, ngôn ng ữ thao tác d ữ li ệu, và ngôn ng ữ điều khi ển d ữ li ệu. Email: namth@buh.edu.vn 4
  8. 1.1 HỆ TH ỐNG H ƯỚNG T ỆP TIN Một t ệp tin có th ể xem là m ột c ặp h ồ s ơ l ưu tr ữ các thông tin liên quan đến t ừng công vi ệc riêng bi ệt. Vi ệc x ử lý để l ấy ra thông tin theo yêu c ầu được th ực hi ện một cách th ủ công. Tuy nhiên, theo th ời gian, kh ối l ượng thông tin ngày càng l ớn, vi ệc x ử lý để l ấy các thông tin theo yêu c ầu ngày càng tr ở nên ph ức t ạp. Do đó, máy tính được đưa vào s ử d ụng. Các c ặp h ồ s ơ được chuy ển thành t ệp trên máy tính và vi ệc x ử lý thông tin được th ể hi ện b ằng cách l ập trình. Hình 1.1. Mô hình ho ạt độ ng h ệ th ống h ướng t ệp tin. Vi ệc áp d ụng h ệ th ống h ướng t ệp tin có m ột s ố ưu điểm nh ư sau:  Việc xây d ựng các ứng d ụng c ũng nh ư các t ệp tin d ữ li ệu đáp ứng cho t ừng công vi ệc riêng bi ệt cho nên v ề c ơ b ản ít t ốn th ời gian, không đòi h ỏi đầ u t ư nhi ều v ề th ời gian, v ật ch ất, đồ ng th ời l ại có th ể nhanh chóng đưa vào s ử dụng.  Thông tin được khai thác chỉ ph ục v ụ cho m ột s ố ít ng ười s ử d ụng v ới m ột số m ục đích c ụ th ể, cho nên tính an toàn cao, kh ả n ăng đáp ứng nhanh chóng, k ịp th ời. Tuy nhiên, các h ệ th ống ki ểu này c ũng có nhi ều nh ược điểm, c ụ th ể nh ư sau:  Dư th ừa thông tin, cùng m ột thông tin được l ưu trữ nhi ều điểm khác nhau. Điều này gây ra vi ệc lãng phí b ộ nh ớ, d ễ dàng gây sai sót trong khi c ập nh ật Email: namth@buh.edu.vn 5
  9. dữ li ệu, d ữ li ệu tr ở nên thi ếu đồ ng b ộ, không nh ất quán, th ậm chí còn xung đột l ẫn nhau.  Sự ph ụ thu ộc ch ặt ch ẽ gi ữa ch ươ ng trình ứng d ụng. M ỗi khi có s ự thay đổi về c ấu trúc t ệp và các d ữ li ệu trong t ệp, ch ươ ng trình ứng d ụng khai thác thông tin trên t ệp đó c ũng ph ải thay đổ i theo. Điều này gây ra khó kh ăn l ớn cho vi ệc b ảo trì h ệ th ống. Để kh ắc ph ục nh ững nh ược điểm nói trên, h ệ th ống h ướng c ơ s ở d ữ li ệu ra đời và không ng ừng phát tri ển cho đế n ngày nay. 1.2 HỆ TH ỐNG H ƯỚNG C Ơ S Ở D Ữ LI ỆU Dữ li ệu là nh ững s ự ki ện có th ể ghi l ại được, và th ường không có ý ngh ĩa. Trong khi đó, thông tin là ý ngh ĩa c ủa d ữ li ệu sau khi đã được ng ười s ử d ụng x ử lý trong một ng ữ c ảnh c ụ th ể nào đó. Cơ s ở d ữ li ệu là h ệ th ống các dữ li ệu có c ấu trúc được l ưu tr ữ trên các thi ết b ị l ưu tr ữ th ứ c ấp để th ỏa mãn nhu c ầu khai thác thông tin c ủa nhi ều ng ười s ử d ụng ho ặc nhi ều ch ươ ng trình ứng d ụng v ới nhi ều m ục đích khác nhau. Trong khái ni ệm này, chúng ta c ần nh ấn m ạnh cơ s ở d ữ li ệu ph ải là m ột t ập h ợp các d ữ li ệu có liên quan về m ặt lu ận lý, ch ứ không ph ải là nh ững d ữ li ệu r ời r ạc, không có m ối quan h ệ v ới nhau. Các d ữ li ệu này ph ải có c ấu trúc, và chúng ph ải có kh ả n ăng đáp ứng các nhu c ầu khai thác thông tin c ủa nhi ều ng ười s ử d ụng. Sự ra đờ i c ủa các h ệ th ống h ướng cơ s ở d ữ li ệu đã gi ải quy ết tri ệt để nh ững v ấn đề mà h ệ th ống h ướng t ệp tin g ặp ph ải tr ước đó, c ụ th ể nh ư sau:  Gi ảm s ự trùng l ặp d ữ li ệu xu ống m ức th ấp nh ất, và do đó đảm b ảo được tính nh ất quán và toàn v ẹn d ữ li ệu.  Đảm b ảo d ữ li ệu có th ể được truy xu ất theo nhi ều cách khác nhau.  Kh ả n ăng chia s ẻ thông tin cho nhi ều ng ười s ử d ụng và nhi ều ứng d ụng khác nhau dùng d ữ li ệu đó. Email: namth@buh.edu.vn 6
  10. 1.3 MỤC TIÊU C ỦA H Ệ TH ỐNG H ƯỚNG CƠ S Ở DỮ LI ỆU Hệ th ống h ướng cơ sở d ữ li ệu với nh ững ưu điểm tuy ệt đố i của nó so v ới h ệ th ống hướng t ệp tin ra đờ i tr ước đó đã nhanh chóng được gi ới chuyên môn ch ấp nh ận và đư a vào tri ển khai. Khi xây d ựng m ột h ệ th ống h ướng cơ s ở d ữ li ệu th ươ ng m ại hay phi th ươ ng m ại, chúng ta đề u h ướng t ới th ực hi ện các m ục tiêu chính y ếu sau đây: a) Đảm b ảo ý ngh ĩa của d ữ li ệu. Dữ li ệu có tính chia s ẻ, nhi ều ng ười có quy ền s ử d ụng, th ậm chí là thay đổi giá tr ị c ủa d ữ li ệu, t ừ đó làm thay đổi ý ngh ĩa c ủa d ữ li ệu. Do đó, d ữ li ệu c ần th ường xuyên được theo dõi, ki ểm tra, rà soát, và c ập nh ật để ph ản ánh đúng giá tr ị mà nó đại di ện. b) Đảm b ảo tính riêng t ư và quy ền khai thác d ữ li ệu c ủa ng ười s ử d ụng . Mặc dù d ữ li ệu có tính chia s ẻ, nh ưng không ph ải t ất c ả d ữ li ệu đề u được chia s ẻ, ho ặc là không ph ải b ất k ỳ ng ười s ử d ụng nào c ũng có quy ền khai thác nh ư nhau đối v ới m ột d ữ li ệu c ụ th ể. Ng ười s ử d ụng không ch ỉ có th ể thi ết l ập các thông s ố liên quan đến vi ệc chia s ẻ d ữ li ệu dùng chung, mà còn có th ể c ấp quy ền và thu h ồi quy ền khai thác d ữ li ệu đố i v ới nh ững ng ười dùng khác trong h ệ th ống. c) Đảm b ảo gi ải quy ết xung đột d ữ li ệu. Xu ất phát t ừ vi ệc d ữ li ệu được chia sẻ, s ự xung độ t v ề quy ền khai thác d ữ li ệu s ẽ xu ất hi ện gi ữa nh ững ng ười dùng khác nhau trong h ệ th ống. Cùng m ột d ữ li ệu đó, cùng lúc có nhi ều yêu cầu th ực hi ện thêm, s ửa, hay xóa. H ệ th ống nhìn chung không th ể x ử lý đồng th ời t ất c ả các yêu c ầu đó cùng lúc. Do đó, chúng ta c ần ph ải duy trì cơ ch ế ưu tiên truy xu ất d ữ li ệu c ũng nh ư c ơ ch ế gi ải quy ết tình tr ạng khóa ch ết trong quá trình khai thác c ạnh tranh. d) Đảm b ảo toàn v ẹn dữ li ệu khi có s ự c ố. Cơ s ở d ữ li ệu th ường được xem là một b ộ s ưu t ập d ữ li ệu trong m ột kho ảng th ời gian dài th ường là vài n ăm, vài ch ục n ăm, th ậm chí c ả tr ăm n ăm. Do đó, để đả m b ảo d ữ li ệu được l ưu Email: namth@buh.edu.vn 7
  11. tr ữ liên t ục, chúng ta c ần ph ải xây d ựng cơ ch ế sao l ưu, ph ục h ồi nh ằm đả m bảo d ữ li ệu được nguyên v ẹn và không b ị gián đoạn trong tr ường h ợp h ệ th ống g ặp s ự c ố. 1.4 HỆ QU ẢN TR Ị C Ơ S Ở D Ữ LI ỆU 1.4.1 Định ngh ĩa Hệ qu ản tr ị cơ s ở d ữ li ệu nhìn chung là m ột h ệ th ống ph ần m ềm h ướng đế n vi ệc th ực hi ện các nhi ệm vụ sau đây:  Định ngh ĩa cơ s ở d ữ li ệu bao g ồm vi ệc đặ c t ả các ki ểu d ữ li ệu, các c ấu trúc, và các ràng bu ộc cho d ữ li ệu s ẽ được l ưu tr ữ trong cơ s ở d ữ li ệu.  Xây d ựng cơ s ở d ữ li ệu bao g ồm vi ệc l ưu tr ữ các d ữ li ệu trên các ph ươ ng ti ện l ưu tr ữ được h ệ qu ản tr ị cơ s ở d ữ li ệu ki ểm soát.  Thao tác cơ s ở d ữ li ệu bao g ồm vi ệc th ực hi ện các ch ức n ăng truy v ấn cơ sở d ữ li ệu để l ấy ra nh ững thông tin c ần thi ết, c ập nh ật cơ s ở d ữ li ệu để ph ản ánh s ự các thay đổ i trong th ế gi ới th ực và t ạo ra các báo cáo t ừ d ữ li ệu trong cơ s ở d ữ li ệu. Nói cách khác, h ệ qu ản tr ị cơ s ở d ữ li ệu là công c ụ giúp ng ười s ử d ụng hay các ch ươ ng trình ứng d ụng t ươ ng tác v ới cơ s ở d ữ li ệu. C ả ba y ếu t ố này hình thành nên m ột h ệ th ống h ướng cơ s ở d ữ li ệu (xem hình 1.2). Hình 1.2. Mô hình ho ạt độ ng của h ệ th ống h ướng cơ s ở d ữ li ệu. Email: namth@buh.edu.vn 8
  12. 1.4.2 Phân lo ại Th ực t ế, có r ất nhi ều tiêu chí có th ể được s ử d ụng để phân lo ại các h ệ qu ản tr ị cơ sở d ữ li ệu. Ở đây, chúng tôi ch ỉ gi ới thi ệu ba tiêu chí quan tr ọng nh ất, đó là mô hình d ữ li ệu, tính đa ng ười dùng, và tính phân tán c ủa h ệ qu ản tr ị cơ s ở d ữ li ệu. a) Dựa trên mô hình d ữ li ệu  Mô hình d ữ li ệu quan h ệ (relational data model): là mô hình d ữ li ệu ch ủ yếu được s ử d ụng trong h ầu h ết các h ệ qu ản tr ị cơ s ở d ữ li ệu th ươ ng m ại hi ện nay.  Mô hình d ữ li ệu phân c ấp ( hierarchical data model)và mô hình d ữ li ệu mạng (network data model): ph ổ bi ến trong quá kh ứ, nh ững ứng d ụng lâu đời v ẫn còn s ử d ụng các mô hình này cho t ới ngày nay.  Mô hình d ữ li ệu đố i t ượng (object oriented data model): được hi ện th ực trong m ột s ố h ệ th ống th ươ ng m ại nh ưng ch ưa được s ử d ụng r ộng rãi.  Mô hình d ữ li ệu đố i t ượng – quan h ệ (object relational data model): ra đời do quá trình phát tri ển các h ệ qu ản tr ị cơ s ở d ữ li ệu có liên quan n ối ti ếp v ới nhau, là s ự k ết h ợp c ủa mô hình quan h ệ và nhi ều khái ni ệm trong cơ sở d ữ li ệu đối t ượng. b) Dựa trên s ố ng ười dùng mà h ệ th ống h ỗ tr ợ  Hệ th ống đơn ng ười dùng (single-user database management system): ch ỉ h ỗ tr ợ m ỗi ng ười dùng t ại m ột th ời điểm. Lo ại này th ường ch ỉ s ử dụng v ới các máy PC.  Hệ th ống đa ng ười dùng (multi-user database management system): hỗ tr ợ nhi ều ng ười dùng đồng th ời, lo ại này chi ếm đa s ố các lo ại h ệ qu ản tr ị cơ s ở d ữ li ệu. c) Dựa trên v ị trí đặ t h ệ th ống  Hệ qu ản tr ị c ơ s ở d ữ li ệu t ập trung (centralized data management system): là hệ qu ản tr ị c ơ s ở d ữ li ệu có d ữ li ệu ch ỉ ch ứa t ại m ột n ơi duy nh ất. Lo ại này v ẫn có th ể h ỗ tr ợ đa ng ười dùng. Email: namth@buh.edu.vn 9
  13.  Hệ qu ản tr ị c ơ s ở d ữ li ệu phân tán (distributed data management system): ch ứa d ữ li ệu và ph ần m ềm hệ qu ản tr ị c ơ s ở d ữ li ệu tại nhi ều nơi khác nhau, k ết n ối v ới nhau thông qua đường truy ền m ạng. 1.4.3 Các ch ức n ăng của m ột h ệ qu ản tr ị cơ s ở d ữ li ệu Một h ệ qu ản tr ị cơ s ở d ữ li ệu được đánh giá là tốt, n ếu th ực hi ện được các ch ức năng c ơ b ản sau đây:  Lưu tr ữ các đị nh ngh ĩa, các mô t ả v ề bản thân cơ s ở d ữ li ệu (siêu d ữ li ệu) trong m ột t ừ điển d ữ li ệu. H ệ qu ản tr ị cơ s ở d ữ li ệu sử d ụng t ừ điển d ữ li ệu để tìm ki ếm các c ấu trúc d ữ li ệu và các m ối liên k ết theo yêu c ầu c ủa ng ười sử d ụng. M ọi s ự thay đổ i trong cơ s ở d ữ li ệu đều được ghi nh ận vào t ừ điển dữ li ệu. Nói cách khác, s ự độ c l ập gi ữa ch ươ ng trình ứng d ụng và d ữ li ệu được đả m b ảo t ối đa.  Tạo ra các c ấu trúc ph ức t ạp theo yêu c ầu để l ưu tr ữ d ữ li ệu. Ng ười s ử d ụng được gi ải phóng kh ỏi vi ệc đị nh ngh ĩa và l ập trình cho các đặc tr ưng v ật lý của d ữ li ệu. Công vi ệc này do h ệ qu ản tr ị cơ s ở d ữ li ệu đảm nhi ệm.  Chuy ển đổ i yêu c ầu ý ni ệm v ề d ữ li ệu c ủa ng ười s ử d ụng thành các câu lệnh xác đị nh v ị trí l ưu tr ữ v ật lý và l ấy ra các d ữ li ệu theo yêu c ầu.  Tạo ra m ột c ơ ch ế phân quy ền và gán quy ền ch ặt ch ẽ, đả m b ảo s ự riêng t ư và an toàn b ảo m ật trong cơ s ở d ữ li ệu.  Hỗ tr ợ c ơ ch ế cho phép nhi ều ng ười s ử d ụng cùng truy c ập đế n cơ s ở d ữ li ệu.  Cung c ấp các ph ươ ng th ức sao l ưu, ph ục h ồi d ữ li ệu nh ằm đả m b ảo s ự an toàn và toàn v ẹn d ữ li ệu.  Cung c ấp các ph ươ ng ti ện ngôn ng ữ h ỗ tr ợ ng ười s ử d ụng th ực hi ện các tác vụ liên quan t ới cơ s ở d ữ li ệu. Email: namth@buh.edu.vn 10
  14. 1.4.4 Cấu trúc t ổng th ể c ủa h ệ qu ản tr ị cơ s ở d ữ li ệu Một h ệ qu ản tr ị cơ s ở d ữ li ệu được phân thành nhi ều phân h ệ, m ỗi phân h ệ th ực hi ện m ột ch ức n ăng trong h ệ th ống t ổng th ể. Hình 1.3 minh h ọa các thành ph ần c ơ bản của một h ệ qu ản tr ị cơ s ở d ữ li ệu. Trong s ố các thành ph ần c ấu thành nên h ệ qu ản tr ị cơ s ở d ữ li ệu, b ản thân cơ s ở d ữ li ệu và t ừ điển d ữ li ệu th ường được lưu tr ữ trên ổ đĩ a c ứng và do h ệ điều hành qu ản lý theo c ơ ch ế input, output. B ộ qu ản lý d ữ li ệu l ưu tr ữ c ấp cao sử d ụng các thông tin v ề h ệ qu ản tr ị cơ s ở d ữ li ệu vốn được l ưu tr ữ trên ở đĩ a c ứng. Đường k ẻ đứt n ối và các điểm đánh d ấu A, B, C, D, E cho bi ết tác độ ng c ủa bộ qu ản lý d ữ li ệu l ưu tr ữ c ấp cao đối v ới ho ạt độ ng c ủa h ệ qu ản tr ị cơ s ở d ữ li ệu. Nhi ệm v ụ chính c ủa bộ qu ản lý d ữ li ệu l ưu tr ữ c ấp cao là đảm b ảo quá trình trao đổi d ữ li ệu gi ữa ổ đĩ a l ưu tr ữ v ới d ữ li ệu c ủa h ệ th ống thông qua vi ệc qu ản lý ho ạt độ ng c ủa các b ộ đệ m trong b ộ nh ớ chính. M ột khi d ữ li ệu n ằm trong các b ộ đệ m c ủa b ộ nh ớ chính, không ch ỉ bản thân hệ qu ản tr ị cơ s ở d ữ li ệu mà c ả nh ững trình ứng d ụng cũng có th ể s ử d ụng d ữ li ệu này. Trình biên d ịch ngôn ng ữ đị nh ngh ĩa d ữ li ệu th ực hi ện các đị nh ngh ĩa l ược đồ được khai báo trong các lệnh đị nh ngh ĩa d ữ li ệu và l ưu gi ữ thông tin v ề các l ược đồ này trong t ừ điển d ữ li ệu c ủa h ệ qu ản tr ị cơ s ở d ữ li ệu. T ừ điển d ữ li ệu v ề c ơ bản là n ơi ch ứa đự ng toàn b ộ thông tin v ề cơ s ở d ữ li ệu nh ư là tên, kích th ước các tệp tin, tên và ki ểu c ủa các th ực th ể d ữ li ệu, thông tin v ề các l ược đồ , các ràng bu ộc trong cơ s ở d ữ li ệu. Các thành ph ần c ủa h ệ qu ản tr ị cơ s ở d ữ li ệu sẽ s ử d ụng các thông tin trong t ừ điển d ữ li ệu m ỗi khi có nhu c ầu. Bộ x ử lý cơ s ở d ữ li ệu ch ịu trách nhi ệm x ử lý các truy c ập cơ s ở d ữ li ệu mỗi khi chúng xu ất hi ện. Nó ti ếp nh ận và th ực thi các yêu c ầu t ừ ng ười s ử d ụng ho ặc trình ứng d ụng thông qua các trình biên d ịch t ươ ng ứng nh ư là trình biên d ịch ngôn ng ữ định ngh ĩa d ữ li ệu, trình biên d ịch ngôn ng ữ thao tác d ữ li ệu, trình biên d ịch truy Email: namth@buh.edu.vn 11
  15. vấn, Các thành ph ần này ph ối h ợp ho ạt độ ng thành m ột th ể th ống nh ất, đả m b ảo th ực hi ện đầ y đủ các ch ức n ăng c ủa m ột h ệ qu ản tr ị cơ s ở d ữ li ệu. Hình 1.3. Cấu trúc t ổng th ể c ủa h ệ qu ản tr ị cơ s ở d ữ li ệu 1.5 NG ƯỜI DÙNG C Ơ S Ở D Ữ LI ỆU Nh ư đã trình bày ở trên, h ệ qu ản tr ị cơ s ở d ữ li ệu là b ộ công c ụ h ỗ tr ợ th ực hi ện các ho ạt độ ng trên m ột (s ố) cơ s ở d ữ li ệu nào đó. Tuy nhiên, không ph ải ng ười s ử dụng nào c ũng được quy ền thao tác tr ực ti ếp ho ặc gián ti ếp (thông qua trình ứng dụng) trên h ệ qu ản tr ị cơ s ở d ữ li ệu. Ở đây, chúng ta s ẽ phân bi ệt m ột s ố nhóm ng ười dùng c ơ s ở d ữ li ệu d ựa trên s ự phân lo ại quy ền th ực hi ện các thao tác trên hệ qu ản tr ị cơ s ở d ữ li ệu. Email: namth@buh.edu.vn 12
  16. 1.5.1 Nhóm qu ản tr ị c ơ s ở d ữ li ệu Qu ản tr ị viên cơ s ở d ữ li ệu là nhóm ng ười dùng được phân quy ền m ạnh nh ất trong hệ th ống h ướng cơ s ở d ữ li ệu, nhóm ng ười dùng này có quy ền th ực hi ện m ọi thao tác trên cơ s ở d ữ li ệu, h ệ qu ản tr ị cơ s ở d ữ li ệu và các ph ần m ềm có liên quan nh ằm đả m b ảo ho ạt độ ng hi ệu qu ả, chính xác, nhanh chóng và liên t ục c ủa h ệ th ống. C ụ th ể, nhóm qu ản tr ị cơ s ở d ữ li ệu có quy ền th ực hi ện các ho ạt độ ng sau đây:  Phân quy ền truy c ập cơ s ở d ữ li ệu.  Giám sát quá trình v ận hành cơ s ở d ữ li ệu.  Sao l ưu, khôi ph ục cơ s ở d ữ li ệu.  Phân b ổ tài nguyên ph ần c ứng, phần m ềm khi h ệ th ống có nhu c ầu.  Ch ịu trách nhi ệm trong tr ường h ợp h ệ th ống có l ỗ h ổng b ảo m ật ho ặc th ời gian đáp ứng ch ậm. 1.5.2 Nhóm thi ết k ế c ơ s ở d ữ li ệu Nhóm thi ết k ế c ơ s ở d ữ li ệu là nhóm ng ười ch ịu trách nhi ệm v ề vi ệc phân tích và thi ết k ế cơ s ở d ữ li ệu, đảm b ảo cơ s ở d ữ li ệu được thi ết k ế đúng đắ n, chính xác, hi ệu qu ả, an toàn, đáp ứng t ất c ả các yêu c ầu v ề d ữ li ệu trong hi ện t ại và t ươ ng lai. Cụ th ể, nhóm thi ết k ế cơ s ở d ữ li ệu th ực hi ện các công vi ệc sau đây:  Lựa ch ọn các c ấu trúc phù h ợp để bi ểu di ễn và l ưu tr ữ d ữ li ệu.  Làm vi ệc v ới nh ững ng ười dùng cơ s ở d ữ li ệu ti ềm n ăng để n ắm b ắt được yêu c ầu c ủa h ọ nh ằm đảm b ảo các b ản thi ết k ế phù h ợp v ới yêu c ầu.  Liên h ệ v ới t ừng nhóm ng ười dùng để xây d ựng các khung nhìn d ữ li ệu cho phù h ợp v ới c ấu trúc cơ s ở d ữ li ệu và yêu c ầu c ủa m ỗi nhóm. B ản thi ết k ế cu ối cùng ph ải th ỏa mãn yêu c ầu c ủa t ất c ả các nhóm. Thông th ường, nhóm thi ết k ế cơ s ở d ữ li ệu được x ếp chung v ới nhóm qu ản tr ị cơ sở d ữ li ệu. Email: namth@buh.edu.vn 13
  17. 1.5.3 Nhóm ng ười dùng cu ối Ng ười dùng cu ối là nhóm ng ười có nhu c ầu truy c ập cơ s ở d ữ li ệu để th ực hi ện các thao tác khai thác hay qu ản lý n ội dung c ủa cơ s ở d ữ li ệu. cơ s ở d ữ li ệu tồn t ại chính là để đáp ứng nhu c ầu d ữ li ệu c ủa nhóm ng ười dùng này. Cụ th ể, nhóm ng ười dùng cu ối có nhu c ầu th ực hi ện các thao tác sau đây:  Truy xu ất d ữ li ệu ph ục v ụ nhu c ầu t ươ ng tác ho ặc th ống kê v ới nhi ều khung nhìn khác nhau.  Cập nh ật d ữ li ệu theo hình th ức tr ực tuy ến ho ặc theo phiên. Tùy t ừng s ự phân quy ền, gán quy ền c ụ th ể, ng ười dùng cu ối có th ể t ươ ng tác tr ực ti ếp v ới cơ s ở d ữ li ệu thông qua h ệ qu ản tr ị cơ s ở d ữ li ệu, ho ặc t ươ ng tác gián ti ếp với cơ s ở d ữ li ệu thông qua các ch ươ ng trình ứng d ụng có khai báo s ử d ụng cơ s ở dữ li ệu. 1.5.4 Nhà phân tích h ệ th ống và nhân viên l ập trình ứng d ụng Nhà phân tích h ệ th ống có nhi ệm v ụ xác đị nh yêu c ầu c ủa nh ững ng ười dùng cu ối để xây d ựng đặ c t ả các giao tác đáp ứng nhu c ầu c ủa h ọ. Sau đó, nhân viên l ập trình ứng d ụng sử d ụng nh ững đặ c t ả này để hi ện th ực ch ươ ng trình, và h ọ ti ến hành th ử nghi ệm, x ử lý l ỗi, l ập tài li ệu c ũng nh ư b ảo trì nh ững giao tác được xây dựng s ẵn này. Cả hai lo ại ng ười dùng này th ường được g ọi chung là k ỹ s ư ph ần mềm. H ọ c ần ph ải th ật quen thu ộc với c ấu trúc c ủa hệ qu ản tr ị cơ s ở d ữ li ệu để hoàn thành công vi ệc c ủa mình. 1.5.5 Nhân viên b ảo trì h ệ th ống Nhóm ng ười dùng cu ối cùng, nh ưng không kém ph ần quan tr ọng đố i v ới h ệ th ống hướng cơ s ở d ữ li ệu đó là nhóm nhân viên b ảo trì h ệ th ống. Nh ững ng ười này tuy không tr ực ti ếp làm vi ệc v ới cơ s ở d ữ li ệu nh ưng công vi ệc c ủa h ọ nh ằm giúp cho hệ th ống ho ạt độ ng liên t ục 24/24. Nhi ệm v ụ chính c ủa nhóm ng ười dùng này bao: thi ết k ế, phát tri ển và v ận hành hệ qu ản tr ị cơ s ở d ữ li ệu. Nhóm nhân viên b ảo trì hệ th ống được phân lo ại nh ư sau: Email: namth@buh.edu.vn 14
  18.  Nhân viên thi ết k ế/ hi ện th ực h ệ th ống: làm nhi ệm v ụ thi ết k ế và hi ện th ực giao di ện và các ch ức n ăng c ủa h ệ qu ản tr ị cơ s ở d ữ li ệu nh ằm cung c ấp cho ng ười s ử d ụng một ph ần m ềm đóng gói hoàn ch ỉnh.  Nhân viên phát tri ển công c ụ: làm nhiệm v ụ thi ết k ế và hi ện th ực các gói ph ần m ềm đi kèm v ới h ệ qu ản tr ị cơ s ở d ữ li ệu nh ằm nâng cao hi ệu su ất trong thi ết k ế và s ử d ụng cơ s ở d ữ li ệu. Chúng bao g ồm các gói ph ần m ềm hỗ tr ợ vi ệc thi ết k ế cơ s ở d ữ li ệu, theo dõi hi ệu su ất, giao di ện ngôn ng ữ t ự nhiên, đồ h ọa, gi ả l ập, mô ph ỏng, và th ử nghi ệm d ữ li ệu. Nh ững công c ụ đi kèm này th ường được các nhà cung c ấp phát tri ển và đư a vào th ị tr ường. 1.6 NGÔN NG Ữ VÀ GIAO DI ỆN NGÔN NG Ữ D Ữ LI ỆU Hệ qu ản tr ị cơ s ở d ữ li ệu về c ơ b ản là m ột ph ần m ềm cung c ấp nhi ều ti ện ích h ỗ tr ợ ng ười dùng th ực hi ện các thao tác qu ản lý, thi ết k ế, c ập nh ật và truy v ấn d ữ li ệu. Tuy nhiên, c ũng nh ư nhi ều h ệ th ống khác, để có th ể thao tác được v ới h ệ qu ản tr ị cơ s ở d ữ li ệu, ng ười dùng c ần ph ải th ực hi ện đúng các c ơ ch ế, n ắm rõ các quy t ắc do h ệ qu ản tr ị cơ s ở d ữ li ệu đặt ra. Nói cách khác, để h ệ qu ản tr ị cơ s ở d ữ li ệu th ực hi ện đúng ý đồ , ng ười s ử d ụng c ần ph ải truy ền đạ t m ệnh l ệnh theo đúng cách mà h ệ qu ản tr ị cơ s ở d ữ li ệu quy định. Hệ th ống các h ướng d ẫn th ực hi ện m ệnh l ệnh do h ệ qu ản tr ị cơ s ở d ữ li ệu quy định được th ể hi ện thông qua t ập ngôn ng ữ và các giao di ện dành riêng cho t ừng nhóm đối t ượng ng ười dùng. Ch ỉ nh ững m ệnh l ệnh được quy đị nh trong t ập ngôn ng ữ này m ới được h ệ qu ản tr ị cơ s ở d ữ li ệu th ực thi, ng ược l ại, ng ười s ử d ụng s ẽ nh ận được thông báo l ỗi t ươ ng ứng. Trong ph ần này, chúng ta s ẽ l ần l ượt tìm hi ểu ba ngôn ng ữ d ữ li ệu ph ổ bi ến nh ất được h ệ qu ản tr ị cơ s ở d ữ li ệu hỗ tr ợ ng ười s ử d ụng:  Ngôn ng ữ đị nh ngh ĩa d ữ li ệu.  Ngôn ng ữ thao tác d ữ li ệu. Email: namth@buh.edu.vn 15
  19.  Ngôn ng ữ điều khi ển d ữ li ệu. 1.6.1 Ngôn ng ữ đị nh ngh ĩa d ữ li ệu Ngôn ng ữ đị nh ngh ĩa d ữ li ệu là lo ại ngôn ng ữ được s ử d ụng để đị nh ngh ĩa c ấu trúc của các thành ph ần trong c ơ s ở d ữ li ệu. Khi đó h ệ qu ản tr ị cơ s ở d ữ li ệu đóng vai trò là m ột trình biên d ịch chuyên x ử lý các câu l ệnh định ngh ĩa dữ li ệu nh ằm xác định đặ c t ả c ấu trúc các l ược đồ và l ưu tr ữ các đặ c t ả này trong danh m ục c ủa cơ sở d ữ li ệu. Thông qua ngôn ng ữ đị nh ngh ĩa d ữ li ệu, chúng ta có th ể t ạo m ới, ch ỉnh s ửa, và xóa các l ược đồ trong cơ s ở d ữ li ệu. Do vai trò quan tr ọng c ủa mình, cho nên ngôn ng ữ đị nh ngh ĩa d ữ li ệu được dành riêng cho nhóm qu ản tr ị và thi ết k ế cơ s ở d ữ li ệu. 1.6.2 Ngôn ng ữ thao tác d ữ li ệu Khi các l ược đồ đã được hi ện th ực thành các cơ s ở d ữ li ệu, ng ười s ử d ụng có nhu cầu th ực hi ện các thao tác nh ư thu th ập, chèn, s ửa, và xóa d ữ li ệu. H ệ qu ản tr ị cơ sở d ữ li ệu cung c ấp cho ng ười s ử d ụng ngôn ng ữ thao tác d ữ li ệu nh ư là m ột ph ươ ng ti ện giúp h ọ t ươ ng tác v ới cơ s ở d ữ li ệu. Do tính ph ổ bi ến c ủa mình, ngôn ng ữ này dành cho m ọi đố i t ượng ng ười s ử d ụng. 1.6.3 Ngôn ng ữ điều khi ển d ữ li ệu Ngoài hai lo ại ngôn ng ữ d ữ li ệu nói trên, h ệ qu ản tr ị cơ s ở d ữ li ệu còn cung c ấp cho ng ười dùng ngôn ng ữ điều khi ển d ữ li ệu nh ằm h ỗ tr ợ h ọ th ực hi ện các khai báo b ảo m ật thông tin và c ấp quy ền h ạn khai thác cơ s ở d ữ li ệu cho nh ững ng ười sử d ụng khác trong h ệ th ống. Ngôn ng ữ này dành cho nhóm qu ản tr ị viên cơ s ở d ữ li ệu và m ột s ố ng ười dùng đặc bi ệt khác trong h ệ th ống. Email: namth@buh.edu.vn 16
  20. 1.6.4 Các giao di ện ngôn ng ữ d ữ li ệu Để thu ận ti ện cho ng ười s ử d ụng th ực hi ện các tác v ụ trên cơ s ở d ữ li ệu, h ệ qu ản tr ị cơ s ở d ữ li ệu cung cấp các giao di ện thích h ợp cho t ừng nhóm ng ười s ử d ụng cơ s ở d ữ li ệu cũng nh ư cho t ừng ngôn ng ữ d ữ li ệu. Các lo ại giao di ện được h ệ qu ản tr ị cơ s ở d ữ li ệu hỗ tr ợ hi ện nay bao g ồm:  Giao di ện trình đơ n dùng cho web client hay trình duy ệt: lo ại này th ường gồm các danh m ục l ựa ch ọn g ọi là trình đơ n nh ằm h ướng d ẫn ng ười dùng các b ước t ạo l ập yêu c ầu.  Giao di ện form: để thêm d ữ li ệu vào, ng ười dùng có th ể điền đầ y đủ thông tin vào m ột form h ướng d ẫn. Ngoài ra, h ọ còn có th ể điền ch ỉ m ột vài thông tin vào form rồi yêu c ầu hệ qu ản tr ị c ơ s ở d ữ li ệu thu th ập nh ững d ữ li ệu trùng kh ớp v ới các m ục đã điền. Các form th ường xây d ựng dành cho nh ững dùng thông th ường v ới các giao tác đã được t ạo s ẵn.  Giao di ện ng ười dùng đồ h ọa: hi ển th ị m ỗi l ược đồ cho ng ười dùng d ưới dạng s ơ đồ. Ng ười dùng s ẽ đặ c t ả truy v ấn b ằng vi ệc thao tác v ới các s ơ đồ này. Lo ại giao di ện này th ường bao g ồm c ả trình đơ n và form.  Giao di ện ngôn ng ữ t ự nhiên: lo ại này ch ấp nh ận các yêu c ầu b ằng ti ếng Anh hay m ột ngôn ng ữ khác. M ột giao di ện ngôn ng ữ t ự nhiên th ường có “l ược đồ ” c ủa riêng nó, t ươ ng t ự nh ư l ược đồ ý ni ệm cơ s ở d ữ li ệu, và m ột từ điển các t ừ v ựng chính. Giao di ện này ho ạt độ ng b ằng cách tham kh ảo các t ừ v ựng trong l ược đồ của nó c ũng nh ư trong t ừ điển để thông d ịch các yêu c ầu. N ếu thông d ịch thành công, giao di ện này s ẽ sinh m ột truy v ấn c ấp cao t ươ ng ứng và g ửi đến h ệ qu ản tr ị cơ s ở d ữ li ệu yêu c ầu x ử lý. Ng ược l ại, giao di ện s ẽ phát sinh m ột h ộp tho ại yêu c ầu ng ười dùng hi ệu ch ỉnh yêu c ầu.  Giao di ện dành cho ng ười dùng thông th ường: nh ững lo ại ng ười dùng thông th ường nh ư các giao d ịch viên ngân hàng, th ường ch ỉ có m ột s ố thao tác l ặp đi l ặp l ại trên cơ s ở d ữ li ệu. Các nhà phân tích và thi ết k ế s ẽ t ạo cho Email: namth@buh.edu.vn 17
  21. mỗi nhóm ng ười dùng này m ột lo ại giao di ện đặ c bi ệt bao g ồm các câu l ệnh tắt giúp họ gi ảm b ớt th ời gian mô t ả nh ững tác v ụ th ường xuyên s ử d ụng.  Giao di ện dành cho qu ản tr ị c ơ s ở d ữ li ệu: hầu h ết h ệ qu ản tr ị cơ s ở d ữ li ệu đều ch ứa m ột s ố câu l ệnh c ần quy ền truy c ập đặ c bi ệt mà ch ỉ có qu ản tr ị c ơ sở d ữ li ệu m ới có quy ền th ực hi ện. Nh ững câu l ệnh này bao g ồm vi ệc t ạo tài kho ản, thi ết l ập các thông s ố h ệ th ống, gán thông tin tài kho ản, ch ỉnh sửa l ược đồ và tái t ổ ch ức c ấu trúc l ưu tr ữ c ủa cơ s ở d ữ li ệu. 1.7 TÓM T ẮT Trong ch ươ ng này chúng ta định ngh ĩa c ơ s ở d ữ li ệu nh ư là m ột b ộ s ưu t ập các d ữ li ệu có liên quan v ề m ặt lu ận lý, trong đó d ữ li ệu được hi ểu nh ư là nh ững s ự ki ện có th ể được ghi l ại được và th ường không có ý ngh ĩa. C ơ s ở d ữ li ệu thông th ường ph ản ánh th ế gi ới th ực theo m ột quan điểm c ụ th ể h ướng t ới ph ục v ụ cho m ột s ố nhóm ng ười vì m ột ho ặc nhi ều m ục đích c ụ th ể nào đó. Hệ qu ản tr ị cơ s ở d ữ li ệu là m ột ph ần m ềm th ực hi ện ch ức n ăng hi ện th ực và duy trì cơ s ở d ữ li ệu trên máy tính. B ản thân cơ s ở d ữ li ệu và h ệ qu ản tr ị cơ s ở d ữ li ệu là hai thành ph ần c ấu thành nên h ệ th ống h ướng cơ s ở d ữ li ệu. Ti ếp theo chúng ta tìm hi ểu nhi ệm v ụ, quy ền h ạn c ụ th ể cho t ừng nhóm ng ười s ử d ụng cơ s ở d ữ li ệu để cu ối cùng, chúng ta nghiên c ứu các ngôn ng ữ d ữ li ệu và giao di ện ngôn ng ữ d ữ li ệu h ỗ tr ợ ng ười dùng t ươ ng tác v ới h ệ qu ản tr ị cơ s ở d ữ li ệu. Email: namth@buh.edu.vn 18
  22. CCHHƯƯƠƠNNGG 222222 MÔ HÌNH TH ỰC TH Ể K ẾT H ỢP Mục tiêu Ch ươ ng này t ập trung nghiên c ứu một ph ươ ng pháp dùng để xác đị nh c ấu trúc c ủa cơ s ở d ữ li ệu. Ph ươ ng pháp này được xây d ựng d ựa trên mô hình th ực th ể k ết h ợp. Đây được xem nh ư là nhi ệm v ụ quan tr ọng đầ u tiên mà nhân viên thi ết k ế d ữ li ệu ph ải th ực hi ện trong quy trình phát tri ển cơ s ở d ữ li ệu cho h ệ th ống thông tin. Nội dung  Tổng quan v ề mô hình th ực th ể k ết h ợp.  Các thành ph ần c ủa mô hình th ực th ể k ết h ợp.  Các v ấn đề liên quan đến ho ạt độ ng thi ết k ế mô hình thực th ể k ết h ợp. Email: namth@buh.edu.vn 22
  23. Giới thi ệu Mô hình th ực th ể k ết h ợp t ừ khi được ra đờ i đã được xem nh ư là n ền t ảng c ủa các ph ươ ng pháp phân tích và thi ết k ế h ệ th ống. Nó được s ử d ụng r ộng rãi trong các công c ụ h ỗ tr ợ công ngh ệ ph ần m ềm (computer-aided software engineering, vi ết tắt là CASE), và trong các hệ th ống c ơ s ở d ữ li ệu. Mô hình này được xem là n ền tảng c ủa mô hình chu trình phát tri ển ứng d ụng và ph ần m ềm h ệ qu ản tr ị cơ s ở d ữ li ệu DB2 cùng c ủa IBM. Mặc dù hi ện nay, trong thi ết k ế cơ s ở d ữ li ệu ng ười ta th ường ưu tiên s ử d ụng ngôn ng ữ mô hình hóa h ợp nh ất (unified modelling language, vi ết t ắt là UML), nh ưng mô hình th ực th ể k ết h ợp t ỏ ra thích h ợp h ơn đối v ới nh ững ng ười m ới b ắt đầu nghiên c ứu v ề cơ s ở d ữ li ệu và tìm cách xây d ựng cơ s ở d ữ li ệu đầu tiên cho bản thân mình. Chính vì lý do đó, chúng tôi ch ọn mô hình th ực th ể k ết h ợp làm đối t ượng nghiên cứu trong giáo trình này nh ằm t ạo điều ki ện thu ận l ợi để ng ười đọ c có th ể d ễ dàng ti ếp c ận và th ực hi ện thành th ạo các thao tác đặ c t ả d ữ li ệu b ằng ngôn ng ữ mô hình hóa theo h ướng th ực th ể k ết h ợp. Email: namth@buh.edu.vn 23
  24. 2.1 MÔ HÌNH TH ỰC TH Ể K ẾT H ỢP Nh ư chúng ta đã bi ết, h ầu h ết các ứng d ụng công ngh ệ thông tin hi ện nay đề u c ần sử d ụng đế n cơ s ở d ữ li ệu cho dù v ới nh ững m ục đích khác nhau. Hai h ệ th ống ph ần m ềm có cùng ch ức n ăng nh ững được áp d ụng t ại hai t ổ ch ức khác nhau thì không ch ỉ khác nhau v ề m ặt t ổ ch ức, mà còn có th ể khác nhau v ề m ặt d ữ li ệu. Nói cách khác, cơ s ở d ữ li ệu luôn ph ản ánh đúng th ực tr ạng c ủa t ổ ch ức đang s ử d ụng nó. Làm th ế nào để chúng ta có th ể đạ t được m ột cơ s ở d ữ li ệu th ể hi ện nguyên vẹn tình tr ạng hi ện t ại c ủa t ổ ch ức và đáp ứng đầ y đủ m ọi nhu c ầu v ề d ữ li ệu c ủa ng ười s ử d ụng? Chúng ta nh ất thi ết c ần ph ải xây d ựng b ản thi ết k ế cơ s ở d ữ li ệu cho t ổ ch ức. Mô hình th ực th ể k ết h ợp (entity relationship model) được xây d ựng d ựa trên s ự đặc t ả th ế gi ới th ực bao g ồm m ột t ập các đố i t ượng c ơ s ở có tên g ọi là t ập th ực th ể, và m ột t ập các liên k ết gi ữa các đố i t ượng này v ới nhau. Mô hình này còn được gọi là mô hình ý ni ệm hay là mô hình khái ni ệm vì nó được xây d ựng ch ủ y ếu trên nền t ảng các khái ni ệm trong t ổ ch ức, và th ực t ế, nó được dùng để bi ểu di ễn c ấu trúc t ổng th ể c ủa t ổ ch ức. Mô hình th ực th ể k ết h ợp là m ột trong hai ph ươ ng pháp thi ết k ế cơ s ở d ữ li ệu ph ổ bi ến nh ất hi ện nay (ph ươ ng pháp còn l ại s ử d ụng ngôn ng ữ mô hình hóa h ợp nh ất UML). Mục đích c ủa vi ệc xây d ựng mô hình th ực th ể k ết h ợp là cung c ấp cho chúng ta một b ức tranh t ổng th ể v ề k ết c ấu d ữ li ệu c ủa h ệ th ống, mà không quan tâm đến vi ệc s ẽ hi ện th ực d ữ li ệu đó ra sao. Nh ư v ậy, mô hình th ực th ể k ết h ợp s ẽ giúp chúng ta tr ả l ời câu h ỏi trong cơ s ở d ữ li ệu có nh ững d ữ li ệu gì và chúng liên quan với nhau ra sao, ch ứ không cho bi ết làm sao để đạ t được cơ s ở d ữ li ệu đó. Email: namth@buh.edu.vn 24
  25. 2.2 MỘT ỨNG D ỤNG C ỦA MÔ HÌNH TH ỰC TH Ể KẾT H ỢP Để thu ận l ợi cho ng ười đọ c, trong toàn b ộ giáo trình này chúng tôi s ử d ụng duy nh ất m ột cơ s ở d ữ li ệu để minh h ọa cho m ọi ví d ụ. Cơ s ở d ữ li ệu này xây d ựng dựa trên nhu c ầu th ực t ế c ủa m ột công ty chuyên v ề công ngh ệ thông tin, c ụ th ể nh ư sau:  Công ty được t ổ ch ức thành nhi ều đơn v ị v ới các thông tin bao g ồm: tên đơ n v ị, s ố hi ệu đơn v ị. M ỗi đơn v ị có th ể có nhi ều v ăn phòng đại di ện t ại nh ững đị a điểm khác nhau. Đơ n v ị được qu ản lý b ởi m ột nhân viên gi ữ ch ức v ụ tr ưởng đơn v ị. H ệ th ống c ũng yêu c ầu ph ải duy trì thông tin v ề ngày ký quy ết đị nh bổ nhi ệm cho t ừng tr ưởng đơn v ị.  Mỗi đơn v ị điều hành nhi ều d ự án. Thông tin v ề d ự án bao g ồm: tên d ự án, số hi ệu, và địa điểm th ực hi ện d ự án.  Công ty duy trì thông tin v ề nhân viên bao g ồm: h ọ và tên, mã s ố, mức lươ ng, gi ới tính, ngày sinh và ngày ký h ợp đồ ng làm vi ệc v ới công ty. M ỗi nhân viên thu ộc biên ch ế m ột đơn v ị nh ưng có th ể tham gia nhi ều d ự án khác nhau. Các d ự án này không nh ất thi ết ph ải do cùng m ột đơn v ị qu ản lý. Công ty c ũng theo dõi th ời gian (tính b ằng s ố gi ờ làm vi ệc trong tu ần) tham gia t ừng d ự án c ủa m ỗi nhân viên. Ngoài ra, m ỗi nhân viên còn ch ịu sự giám sát c ủa một nhân viên khác.  Cu ối cùng, công ty có ch ế độ b ảo hi ểm dành cho ng ười thân c ủa nhân viên. Thông tin v ề ng ười thân bao g ồm tên, gi ới tính, ngày sinh và m ối liên h ệ với nhân viên. Do h ầu h ết các hệ qu ản tr ị cơ s ở d ữ li ệu cũng nh ư các công c ụ phát tri ển ph ần mềm được xây d ựng trên n ền ngôn ng ữ ti ếng Anh, cho nên chúng ta c ũng c ần ánh xạ t ất c ả thông tin được yêu c ầu trên đây sang ngôn ng ữ ti ếng Anh để thu ận ti ện trong quá trình cài đặt và s ử d ụng sau này. Từ b ản đặ c t ả nói trên, chúng ta nh ận Email: namth@buh.edu.vn 25
  26. th ấy trong cơ s ở d ữ li ệu COMPANY có b ốn nhóm đố i t ượng c ơ s ở (cùng các thông tin đi kèm) được li ệt kê sau đây: Đơ n v ị Department Tên đơ n v ị DName Số hi ệu đơn v ị DNumber Các địa điểm DLocation Dự án Project Tên d ự án PName Số hi ệu d ự án PNumber Địa điểm PLocation Nhân viên Employee Họ và tên EName Mã s ố ESSN Gi ới tính ESex Mức l ươ ng ESalary Ngày sinh EBirthdate Ngày b ắt đầ u EStartdate Thân nhân Dependent Tên DName Gi ới tính DSex Ngày sinh DBirthdate Mối liên h ệ DRelationship Bên c ạnh đó, sau khi phân tích b ản đặ c t ả, chúng ta c ũng phát hi ện ra được các mối liên quan gi ữa các đố i t ượng c ơ s ở v ới nhau. Chúng được này được trình bày theo tên theo sau là các đối t ượng c ơ s ở. C ụ th ể nh ư sau: Qu ản lý Manage Đơ n v ị Department Nhân viên Employee Email: namth@buh.edu.vn 26
  27. Điều hành Control Đơ n v ị Department Dự án Project Biên ch ế Works for Đơ n v ị Department Nhân viên Employee Tham gia Works on Nhân viên Employee Dự án Project Giám sát Supervise Nhân viên Employee Nhân viên Employee Ph ụ thu ộc Belong to Nhân viên Employee Thân nhân Dependent Ti ếp theo, để làm quen v ới mô hình th ực th ể k ết h ợp, chúng ta tìm hi ểu các thành ph ần c ơ b ản t ạo nên mô hình này và các định ngh ĩa khác có liên quan t ới vi ệc thi ết kế mô hình th ực th ể k ết h ợp. 2.3 CÁC KHÁI NI ỆM 2.3.1 Th ực th ể và thu ộc tính Đối t ượng trung tâm c ủa mô hình th ực th ể k ết h ợp chính là th ực th ể. Th ực th ể là nh ững đố i t ượng d ữ li ệu c ơ b ản ch ứa n ội dung các thông tin c ần thu th ập. Do đó, th ực th ể có th ể là m ột s ự v ật ho ặc m ột hi ện t ượng t ồn t ại độ c l ập trong th ế gi ới th ực; nó c ũng có th ể là m ột đố i t ượng t ồn t ại d ưới d ạng v ật lý (nh ư là con ng ười, cu ốn sách, ) ho ặc ở d ạng ý ni ệm (nh ư là công ty, lớp h ọc, ). Các th ực th ể được phân bi ệt v ới nhau nh ờ các đặ c tr ưng c ủa nó. Hai th ực th ể khác nhau thì ph ải có ít nh ất m ột đặ c tr ưng có giá tr ị khác nhau. Ng ười ta g ọi m ỗi đặc Email: namth@buh.edu.vn 27
  28. tr ưng c ủa th ực th ể là m ột thu ộc tính c ủa th ực th ể đó. Khi xác định thu ộc tính cho một ki ểu th ực th ể, chúng ta c ần ph ải l ựa ch ọn mi ền giá tr ị cho thu ộc tính đó. Mi ền giá tr ị c ủa m ột thu ộc tính th ực ch ất là t ập h ợp các giá tr ị mà thu ộc tính đó có th ể nh ận được. Mi ền giá tr ị có th ể là t ập các s ố nguyên, các s ố th ực, các xâu ký t ự, ho ặc là t ập li ệt kê m ột s ố giá tr ị c ụ th ể. Mi ền giá trị c ũng có th ể là m ột tích Decartes c ủa nhi ều t ập giá tr ị khác nhau. Tập th ực th ể là t ập h ợp các th ực th ể có cùng ki ểu th ực th ể. VÍ D Ụ 2.1: Mi ền giá tr ị c ủa thu ộc tính. Trong CSDL COMPANY trình bày ở trên, m ỗi th ực th ể DEPARTMENT có ba thu ộc tính, l ần l ượt là DName , DNumber , và DLocation , trong khi m ỗi th ực th ể DEPENDENT có t ới b ốn thu ộc tính, l ần l ượt là DName , DSex , DBirthdate , và DRelationship . Mi ền giá tr ị c ủa DNumber có th ể là t ập các s ố nguyên, c ủa DBirthdate là t ập các giá tr ị ngày tháng, c ủa DSex có th ể là t ập li ệt kê g ồm hai giá tr ị {‘ F’,’ M’} ứng v ới hai gi ới tính Nữ và Nam .  Đối v ới m ỗi th ực th ể chúng ta c ần ph ải xác đị nh giá tr ị c ụ th ể cho t ừng thu ộc tính của nó. Các giá tr ị thu ộc tính đó sau này s ẽ là nh ững thành ph ần d ữ li ệu được l ưu tr ữ trong CSDL. VÍ D Ụ 2.2: Giá tr ị c ủa th ực th ể. Th ực th ể DEPARTMENT được mô t ả trong ví d ụ 2.1 có các giá tr ị l ần l ượt cho các thu ộc tính DName , DNumber , DLocation là ‘ Phòng Ph ần m ềm trong n ước’, 1, và {‘ TP. Hà N ội’, ‘ TP. H ồ Chí Minh ’}.  2.3.1.1 Thu ộc tính đơn và thu ộc tính t ổ h ợp Trong mô hình th ực th ể k ết h ợp m ỗi thu ộc tính bi ểu di ễn m ột đặ c tr ưng riêng c ủa tập th ực th ể và m ỗi th ực th ể có m ột giá tr ị t ại t ừng thu ộc tính này. Thu ộc tính t ổ hợp là thu ộc tính có th ể phân thành nhi ều thu ộc tính nh ỏ h ơn. Trong khi đó, thu ộc tính không th ể phân rã được n ữa g ọi là thu ộc tính đơn. Thu ộc tính t ổ h ợp có lúc Email: namth@buh.edu.vn 28
  29. được dùng nh ư m ột thu ộc tính đơ n, tuy nhiên, trong nhi ều tr ường h ợp chúng ta l ại quan h ệ t ới t ừng thành ph ần riêng l ẻ c ủa nó. VÍ D Ụ 2.3: Thu ộc tính đơn và thu ộc tính t ổ h ợp. Trong t ập th ực th ể EMPLOYEE , thu ộc tính ESSN là m ột thu ộc tính đơn, vì chúng ta không th ể phân rã thu ộc tính này thành nhi ều thu ộc tính khác. Trong khi đó, chúng ta có th ể xem thu ộc tính EName (h ọ tên nhân viên) là thu ộc tính t ổ h ợp, nó có th ể được phân rã thành hai thu ộc tính đơn khác là EFName , ELName với ý ngh ĩa l ần l ượt là h ọ và tên nhân viên.  2.3.1.2 Thu ộc tính đơn tr ị và đa tr ị Một th ực th ể t ại m ỗi thu ộc tính có m ột giá tr ị t ươ ng ứng. Trong nhi ều tr ường h ợp, giá tr ị này là m ột giá tr ị đơn, và chúng ta g ọi là thu ộc tính đơn tr ị. Tuy nhiên, c ũng có tr ường h ợp, giá tr ị c ủa m ột thu ộc tính không ph ải là giá tr ị đơn, mà là m ột t ập hợp c ủa nhi ều giá tr ị đơn. Khi đó, thu ộc tính được g ọi là đa tr ị. Mỗi thu ộc tính đa tr ị có th ể có gi ới h ạn trên và gi ới h ạn d ưới để ràng buộc s ố giá tr ị t ối đa và t ối thi ểu c ủa thu ộc tính đó trong t ừng th ực th ể. VÍ D Ụ 2.4: Thu ộc tính đơn tr ị và thu ộc tính đa tr ị Trong t ập th ực th ể DEPARTMENT , thu ộc tính DNAME là thu ộc tính đơn tr ị, trong khi thu ộc tính DLocation lại là thu ộc tính đa tr ị, nó cho bi ết các đị a điểm mà th ực th ể đang xét có v ăn phòng đại di ện. Trong tr ường h ợp chúng ta ch ỉ cho phép một đơn v ị có t ối đa 5 v ăn phòng đại di ện, gi ới h ạn trên c ủa thu ộc tính này là 5.  2.3.1.3 Thu ộc tính l ưu tr ữ và thu ộc tính d ẫn xu ất Nh ư đã trình bày ở trên, thu ộc tính cho bi ết đặ c tr ưng c ủa th ực th ể, giá tr ị c ủa thu ộc tính dùng để phân bi ệt các th ực th ể v ới nhau, và được l ưu tr ữ trong cơ s ở d ữ li ệu. Thu ộc tính l ưu tr ữ là thu ộc tính mà giá tr ị c ủa nó không ph ụ thu ộc vào b ất c ứ thu ộc tính nào khác. Trong khi đó, thu ộc tính d ẫn xu ất là thu ộc tính mà giá tr ị có Email: namth@buh.edu.vn 29
  30. được là do k ết qu ả c ủa phép tính toán d ựa trên các thu ộc tính khác. Đôi khi, ng ười ta còn g ọi thu ộc tính l ưu tr ữ là thu ộc tính độ c l ập còn thu ộc tính d ẫn xu ất là thu ộc tính ph ụ thu ộc. VÍ D Ụ 2.5: Thu ộc tính lưu tr ữ và thu ộc tính d ẫn xu ất. Gi ả s ử t ập th ực th ể EMPLOYEE được m ở r ộng b ằng m ột thu ộc tính EAge với ý ngh ĩa bi ểu di ễn độ tu ổi hi ện t ại c ủa nhân viên. Rõ ràng, giá tr ị c ủa thu ộc tính này có th ể được tính t ừ giá tr ị c ủa thu ộc tính EBirthdate tươ ng ứng. Do đó, thu ộc tính EAge gọi là thu ộc tính d ẫn xu ất. Thu ộc tính EBirthdate không ph ụ thu ộc vào b ất kỳ thu ộc tính nào khác nên g ọi là thu ộc tính l ưu tr ữ.  2.3.1.4 Giá tr ị null Nói đến m ột th ực th ể c ụ th ể, t ức là chúng ta nói đến giá tr ị t ại các thu ộc tính c ủa th ực th ể đó. Tuy nhiên, v ới m ột s ố thu ộc tính c ủa th ực th ể, chúng ta có th ể không bi ết giá tr ị c ủa chúng có t ồn t ại hay không, ho ặc n ếu t ồn t ại thì không bi ết c ụ th ể là gì, hay không th ể s ử d ụng các giá tr ị đó ở th ời điểm hi ện t ại, Khi đó, chúng ta có th ể s ử d ụng m ột giá tr ị đặ c bi ệt, đó là giá tr ị null với nhi ều cách di ễn gi ải khác nhau: giá tr ị không bi ết, giá tr ị t ồn t ại nh ưng không xác định , ho ặc thu ộc tính tươ ng ứng không áp d ụng cho th ực th ể đang xem xét. VÍ D Ụ 2.6: Giá tr ị NULL. Gi ả s ử m ột th ực th ể EMPLOYEE có giá tr ị null tại thu ộc tính EBirthdate . Điều này ch ỉ có th ể được gi ải thích là do chúng ta không bi ết thông tin v ề ngày sinh c ủa nhân viên đó.  2.3.1.5 Tập th ực th ể Trong mô hình th ực th ể k ết h ợp, chúng ta không bi ểu di ễn các th ực th ể riêng l ẻ. Có ngh ĩa là, gi ả s ử chúng ta có 5 th ực th ể phân bi ệt có cùng các thu ộc tính là Name , Number , Location , thì không nh ất thi ết chúng ta ph ải th ể hi ện c ả 5 th ực th ể Email: namth@buh.edu.vn 30
  31. đó trên mô hình. Thay vào đó, chúng ta ch ỉ c ần bi ểu di ễn m ột khái ni ệm đạ i di ện cho c ả 5 th ực th ể gi ống nhau đó. Khái ni ệm này được g ọi là t ập th ực th ể DEPARTMENT . T ập th ực th ể được đị nh ngh ĩa nh ư là m ột nhóm các th ực th ể có các thu ộc tính gi ống nhau. Để bi ểu di ễn t ập th ực th ể, chúng ta c ần cung c ấp tên gọi (duy nh ất) và danh sách các thu ộc tính c ủa t ập th ực th ể đó. VÍ D Ụ 2.7: Tập th ực th ể trong c ơ s ở d ữ li ệu COMPANY. Nh ư v ậy trong COMPANY ứng v ới m ỗi nhóm đố i t ượng c ơ s ở chúng ta có m ột tập th ực th ể cùng tên kèm theo các thu ộc tính c ủa chúng. Ví d ụ nh ư t ập th ực th ể DEPARTMENT có các thu ộc tính DName , DNumber , và DLocation . T ươ ng t ự nh ư th ế đố i v ới các t ập th ực th ể EMPLOYEE , PROJECT , và DEPENDENT .  Để bi ểu di ễn t ập th ực th ể và các thu ộc tính kèm theo trên mô hình th ực th ể k ết h ợp chúng ta s ử d ụng hai lo ại hình v ẽ là hình ch ữ nh ật và hình elip. Hình 2.8 sau đây sẽ cho chúng ta hình ảnh v ề mô hình th ực th ể k ết h ợp đố i v ới ứng d ụng m ẫu được trình bày trong m ục 2.2. Hình 2.1. Bi ểu di ễn các t ập th ực th ể trong CSDL COMPANY . 2.3.1.6 Thu ộc tính khóa Nh ư đã trình bày, t ập th ực th ể là t ập h ợp các th ực th ể có cùng các thu ộc tính. Theo khái ni ệm t ập h ợp, hai ph ần t ử trong cùng t ập h ợp thì không th ể gi ống nhau. Do Email: namth@buh.edu.vn 31
  32. đó, hai th ực th ể trong m ột t ập th ực th ể c ũng không th ể gi ống nhau. M ỗi th ực th ể được phân bi ệt b ởi m ột b ộ giá tr ị ứng v ới các thu ộc tính c ủa nó. Vì th ế, hai th ực th ể trong một t ập th ực th ể ph ải có ít nh ất m ột giá tr ị khác nhau trong hai b ộ giá tr ị tươ ng ứng c ủa chúng. Nói cách khác, hai th ực th ể này ph ải khác nhau ở t ại ít nh ất một thu ộc tính (g ọi là thu ộc tính phân bi ệt). Nếu trong t ập th ực th ể có m ột thu ộc tính có kh ả n ăng phân bi ệt t ất c ả các th ực th ể trong t ập th ực th ể đó, thì thu ộc tính đó được gọi là khóa của t ập th ực th ể. Tuy nhiên, không ph ải lúc nào trong t ập th ực th ể c ũng t ồn t ại m ột thu ộc tính nh ư th ế. Khi đó, chúng ta ph ải tìm ki ếm m ột t ập h ợp g ồm nhi ều thu ộc tính có kh ả n ăng phân bi ệt hai th ực th ể b ất k ỳ, và cũng gọi chúng là khóa của t ập th ực th ể. Một cách khái quát, trong m ột t ập th ực th ể, luôn t ồn t ại m ột t ập h ợp g ồm ít nh ất một thu ộc tính có kh ả n ăng phân bi ệt hai th ực th ể b ất k ỳ trong t ập th ực th ể đó. T ập hợp các thu ộc tính này được gọi là khóa của t ập th ực th ể đang xét. VÍ D Ụ 2.8: Thu ộc tính khóa của t ập th ực th ể. Trong t ập th ực th ể EMPLOYEE , không có hai th ực th ể nào có th ể có giá tr ị gi ống nhau t ại thu ộc tính ESSN . Do đó, { ESSN } là khóa c ủa EMPLOYEE . N ếu chúng ta gi ả đị nh r ằng, t ại m ột đị a điểm không th ể có hai d ự án cùng tên, thì { PName , PLocation } là m ột khóa c ủa t ập th ực th ể PROJECT .  Một t ập th ực th ể có th ể có nhi ều khóa, các khóa này không nh ất thi ết có s ố thu ộc tính gi ống nhau, th ậm chí, m ột thu ộc tính c ũng có th ể xu ất hi ện trong nhi ều khóa. Chúng ta ch ọn m ột trong s ố các khóa c ủa t ập th ực th ể, th ường là khóa có ít thu ộc tính nh ất, làm khóa chính, nh ững khóa còn l ại được g ọi là khóa ph ụ. Chú ý r ằng, trong tr ường h ợp khóa có m ột thu ộc tính, chúng ta ch ỉ c ần ghi tên thu ộc tính mà bỏ qua ký hi ệu t ập h ợp đi kèm. Email: namth@buh.edu.vn 32
  33. VÍ D Ụ 2.9: Khóa chính và khóa ph ụ của t ập th ực th ể. Trong t ập th ực th ể PROJECT , v ới gi ả đị nh nh ư trong ví d ụ 2.8, t ập các thu ộc tính {PName , PLocation } là m ột khóa. Ngoài ra, trong t ập th ực thể này, không th ể có hai th ực th ể có giá tr ị b ằng nhau t ại thu ộc tính PNumber , PNumber là m ột khóa khác c ủa PROJECT . Chúng ta ch ọn PNumber là khóa chính, trong khi { PName , PLocation } là khóa ph ụ c ủa t ập th ực th ể PROJECT .  2.3.2 Các liên k ết 2.3.2.1 Định ngh ĩa Trong định ngh ĩa v ề cơ s ở d ữ li ệu chúng ta có phát bi ểu r ằng cơ s ở d ữ li ệu là m ột tập h ợp nhi ều d ữ li ệu có m ối liên quan v ề m ặt ý ngh ĩa v ới nhau. M ặt khác, mô hình th ực th ể k ết h ợp ph ản ánh th ế gi ới th ực mà cơ s ở d ữ li ệu mu ốn l ưu tr ữ. V ậy, làm th ế nào để mô hình th ực th ể k ết h ợp có th ể ph ản ánh được các m ối liên quan về m ặt ý ngh ĩa c ủa các d ữ li ệu, mà c ụ th ể là m ối liên quan gi ữa các t ập th ực th ể? Các liên k ết được s ử d ụng để th ực hi ện nhi ệm v ụ đó. Theo đó, m ột liên k ết là m ột s ự k ết h ợp gi ữa m ột s ố th ực th ể. Các th ực th ể này có th ể thu ộc các t ập th ực th ể khác nhau, ho ặc thu ộc cùng m ột t ập th ực th ể. Một ki ểu liên k ết gi ữa các t ập th ực th ể được đị nh ngh ĩa nh ư là t ập h ợp các liên k ết gi ữa các th ực th ể thu ộc các t ập th ực th ể nói trên. Xét theo quan điểm toán h ọc, kiểu liên k ết R gi ữa các t ập th ực th ể E1, E2, , En th ực ch ất là m ột quan h ệ toán h ọc trên E1, E2, , En và được ký hi ệu là R⊆E1×E2× ×En. Trong đó, m ỗi liên k ết ri ⊆ R kết h ợp n th ực th ể e1, e2, , en với nhau ( ei ∈ Ei) và được g ọi là một th ể hi ện c ủa ki ểu liên kết R. Vì ki ểu liên k ết R có sự tham gia c ủa n tập th ực th ể, nên R còn g ọi là liên k ết b ậc n. Nói cách khác, b ậc của ki ểu liên k ết chính là s ố t ập th ực th ể tham gia trong liên k ết đó. Email: namth@buh.edu.vn 33
  34. VÍ D Ụ 2.10: Liên k ết hai ngôi. Trong COMPANY ứng v ới m ỗi m ối liên quan gi ữa các đố i t ượng c ơ s ở chúng ta tạo m ột ki ểu liên k ết cùng tên kèm theo các t ập th ực th ể tham gia trong ki ểu liên kết đó. Ví d ụ, chúng ta có ki ểu liên k ết MANAGES gi ữa hai t ập th ực th ể DEPARTMENT và EMPLOYEE . Đây là ki ểu liên k ết b ậc hai (còn g ọi là hai ngôi) do có hai t ập th ực th ể tham gia trong liên k ết.  2.3.2.2 Phân lo ại Để đả m b ảo m ối liên h ệ v ề m ặt ng ữ ngh ĩa c ủa các ki ểu th ực th ể, chúng ta c ần ph ải ch ọn l ựa ki ểu liên k ết c ũng nh ư các ki ểu th ực th ể tham gia trong các ki ểu liên k ết đó. Ng ười ta ti ến hành phân lo ại các ki ểu liên k ết ch ủ y ếu d ựa trên s ố l ượng các tập th ực th ể tham gia trong m ột liên k ết: liên k ết b ậc 2 (liên k ết hai ngôi) và liên kết b ậc cao (t ừ 3 tr ở lên). Th ực t ế liên k ết b ậc 2 là lo ại liên k ết ph ổ bi ến nh ất, trong khi m ột liên k ết b ậc cao có th ể được phân tách thành nhi ều liên k ết b ậc 2 mà vẫn đả m b ảo đầ y đủ ý ngh ĩa c ủa liên k ết. Ví d ụ sau đây s ẽ cho chúng ta th ấy cách th ức chuy ển đổ i m ột liên k ết b ậc 3 thành 3 liên k ết b ậc 2. VÍ D Ụ 2.11: Phân rã liên k ết nhi ều ngôi thành nhi ều liên k ết hai ngôi. Gi ả s ử trong COMPANY chúng ta định ngh ĩa thêm t ập th ực th ể REPORT nh ằm mục đích th ể hi ện các báo cáo mà m ỗi nhân viên đã th ực hi ện theo đị nh k ỳ cho từng d ự án mà h ọ tham gia. Rõ ràng trong tr ường h ợp này, ki ểu liên k ết WORKS ON có s ự tham gia c ủa ba t ập th ực th ể là EMPLOYEE , PROJECT , và REPORT . Chúng ta có th ể phân tách ki ểu liên k ết 3 ngôi này thành các ki ểu liên kết 2 ngôi b ằng cách thay th ế ki ểu liên k ết WORKS ON bằng t ập th ực th ể WORKS ON , sau đó, t ạo 3 liên k ết 2 ngôi gi ữa WORKS ON với l ần l ượt EMPLOYEE , PROJECT , và REPORT . Email: namth@buh.edu.vn 34
  35. Hình 2.2. Bi ến đổ i liên k ết ba ngôi thành các liên k ết hai ngôi  Ti ếp theo, chúng ta tìm cách phân lo ại các ki ểu liên k ết 2 ngôi d ựa trên s ố l ượng các th ực th ể tham gia trong m ột liên k ết. Giá tr ị này được th ể hi ện b ằng m ột con số được bi ểu di ễn ngay trên mô hình th ực th ể k ết h ợp. Chúng ta có ba tr ường h ợp phân bi ệt: liên k ết m ột – một, liên k ết m ột – nhi ều và liên k ết nhi ều – nhi ều: a) Liên k ết m ột – một là d ạng liên k ết đơn gi ản nh ất c ủa ki ểu liên k ết hai ngôi. Nó di ễn t ả m ối quan h ệ gi ữa m ột th ực th ể trong t ập th ực th ể này v ới nhi ều nh ất một th ực th ể trong t ập th ực th ể kia và ng ược l ại. VÍ D Ụ 2.12: Bi ểu di ễn liên k ết m ột – một. Trong COMPANY ki ểu liên k ết MANAGES là ki ểu liên k ết m ột – một n ếu chúng ta có gi ả đị nh nh ư sau: tại m ỗi th ời điểm m ột đơn v ị có duy nh ất m ột tr ưởng đơn vị; ng ược l ại, m ỗi nhân viên có th ể là tr ưởng c ủa (nhi ều nh ất) m ột đơn v ị nào đó mà thôi Hình 2.3. Bi ểu di ễn liên k ết m ột – một trong CSDL COMPANY  Email: namth@buh.edu.vn 35
  36. b) Liên k ết m ột – nhi ều là lo ại liên k ết mà trong đó m ột th ực th ể trong t ập th ực th ể E2 được k ết h ợp v ới nhi ều th ực th ể trong t ập th ực th ể E1, nh ưng m ỗi th ực th ể trong t ập th ực th ể E1 ch ỉ k ết h ợp v ới nhi ều nh ất m ột th ực th ể trong t ập th ực th ể E2. Lo ại liên k ết này được g ọi là liên k ết nhi ều – một t ừ E1 đến E2. VÍ D Ụ 2.13: Bi ểu di ễn liên k ết m ột – nhi ều. Trong COMPANY ki ểu liên k ết WORKS FOR là ki ểu liên k ết nhi ều – một t ừ EMPLOYEE đến DEPARTMENT với ý ngh ĩa m ột đơn v ị qu ản lý nhi ều nhân viên, m ột nhân viên thu ộc biên ch ế c ủa nhi ều nh ất m ột đơn v ị. Hình 2.4. Bi ểu di ễn liên k ết m ột – nhi ều trong CSDL COMPANY  c) Liên k ết nhi ều – nhi ều là lo ại liên k ết mà trong đó không có s ự gi ới h ạn v ề s ố lượng th ực th ể trong m ỗi t ập th ực th ể tham gia. Nói cách khác, v ới ki ểu liên kết nhi ều – nhi ều gi ữa hai t ập th ực th ể E1 và E2, chúng ta có th ể hi ểu là m ỗi th ực th ể trong t ập th ực th ể E1 có th ể k ết h ợp v ới nhi ều th ực th ể trong t ập th ực th ể E2 và ng ược l ại. VÍ D Ụ 2.14: Bi ểu di ễn liên k ết nhi ều – nhi ều. Trong COMPANY ki ểu liên k ết WORKS ON là ki ểu liên k ết nhi ều – nhi ều gi ữa EMPLOYEE và PROJECT với ý ngh ĩa m ột nhân viên có th ể tham gia nhi ều d ự án, và ng ược l ại, m ột d ự án có nhi ều nhân viên cùng tham gia. Hình 2.5. Bi ểu di ễn liên k ết nhi ều – nhi ều trong CSDL COMPANY  Email: namth@buh.edu.vn 36
  37. 2.3.2.3 Thu ộc tính c ủa liên k ết và vai trò c ủa t ập th ực th ể trong liên k ết Khi th ể hi ện ki ểu liên k ết trong mô hình th ực th ể k ết h ợp, để ng ười đọ c có th ể hi ểu chính xác v ề nhi ệm v ụ c ủa t ừng t ập th ực th ể trong liên k ết chúng ta xác đị nh vai trò c ủa t ừng t ập th ực th ể tham gia trong liên k ết đó. VÍ D Ụ 2.15: Vai trò c ủa th ực th ể trong liên k ết. Xét ki ểu liên SUPERVISES gi ữa hai th ực th ể cùng thu ộc t ập th ực th ể EMPLOYEE . Để th ể hi ện rõ vai trò c ủa t ừng th ực th ể trong liên k ết (nhân viên nào là qu ản lý tr ực ti ếp cho nhân viên kia), chúng ta c ần th ể hi ện rõ vai trò c ủa chúng ngay trên liên k ết này. C ụ th ể nh ư sau: Hình 2.6. Bi ểu di ễn vai trò c ủa t ập th ực th ể trong liên k ết Rõ ràng, v ới vai trò supervisor , m ột nhân viên là lãnh đạo tr ực tr ực ti ếp c ủa không ho ặc nhi ều nhân viên khác. Ng ược l ại, v ới vai trò supervisee , m ột nhân viên ch ịu sự qu ản lý c ủa nhi ều nh ất m ột nhân viên khác.  Trong mô hình th ực th ể k ết h ợp, thu ộc tính không ch ỉ được dùng để th ể hi ện đặ c tr ưng c ủa t ập th ực th ể, mà nó còn được dùng để b ổ sung thông tin cho ki ểu liên kết. Trong tr ường h ợp sau, thu ộc tính được g ọi là thu ộc tính c ủa ki ểu liên k ết, thu ộc tính g ắn v ới liên k ết. Ví d ụ 2.16 sẽ cho chúng ta bi ết t ại sao ph ải s ử d ụng thu ộc tính c ủa ki ểu liên k ết mà không ph ải là thu ộc tính c ủa t ập th ực th ể. VÍ D Ụ 2.16: Thu ộc tính c ủa liên k ết. Trong COMPANY ki ểu liên kết WORKS ON cho chúng ta bi ết m ỗi nhân viên tham gia nhi ều d ự án, và ng ược l ại, m ột d ự án có nhi ều nhân viên tham gia. Tuy nhiên, nhu c ầu thông tin v ề tham gia các d ự án c ủa nhân viên không ch ỉ có th ế. Chúng ta mu ốn bi ết chi ti ết v ề s ố gi ờ lao độ ng mà m ỗi nhân tham gia t ừng d ự án. Thông tin này ch ỉ có th ể là m ột thu ộc tính (v ới tên g ọi là Hours ). V ấn đề đặ t ra là Email: namth@buh.edu.vn 37
  38. thu ộc tính này g ắn li ền v ới t ập th ực th ể nào, EMPLOYEE hay PROJECT ? N ếu đây là thu ộc tính c ủa EMPLOYEE , ngh ĩa là m ỗi nhân viên có m ột giá tr ị duy nh ất t ại thu ộc tính Hours . Ph ải ch ăng m ọi nhân viên đều tham gia các d ự án v ới s ố gi ờ lao độ ng b ằng nhau và b ằng chính giá tr ị t ại thu ộc tính Hours ? Điều này là không th ực t ế. T ươ ng t ự, n ếu Hours là thu ộc tính c ủa PROJECT , ch ẳng l ẽ m ọi nhân viên tham gia một d ự án đề u có s ố gi ờ lao độ ng b ằng nhau và b ằng chính giá tr ị t ại thu ộc tính Hours của d ự án đó? Điều này c ũng phi lý. Nh ư v ậy, thu ộc tính Hours không là thu ộc tính c ủa EMPLOYEE , mà c ũng không là thu ộc tính c ủa PROJECT . Nó là thu ộc tính c ủa ki ểu liên k ết WORKS ON , nó b ổ sung thông tin cho liên k ết này v ới đúng ý ngh ĩa c ủa liên k ết này: m ỗi liên k ết trong ki ểu liên k ết WORKS ON cho bi ết s ự k ết h ợp gi ữa m ột nhân viên và m ột d ự án. Hình 2.7. Bi ểu di ễn thu ộc tính c ủa liên k ết WOKRSON trong CSDL COMPANY.  2.3.3 Tập th ực th ể y ếu Trong quá trình định danh các t ập th ực th ể và các ki ểu liên k ết gi ữa các t ập th ực th ể, chúng ta nh ận th ấy có tr ường h ợp t ập th ực th ể E1 ph ụ thu ộc ch ặt ch ẽ vào t ập th ực th ể E2 thông qua ki ểu liên k ết R. S ự ph ụ thu ộc này có th ể được di ễn t ả nh ư sau: mỗi th ực th ể e2 trong E2 kết h ợp v ới nhi ều th ực th ể e1 trong E1 theo các liên kết r trong R. Khi th ực th ể e2 bị xóa ra kh ỏi E2, t ất c ả các th ực th ể e1 và các liên kết r nói trên đều l ần l ượt b ị xóa ra kh ỏi E1 và R mà không có b ất k ỳ s ự l ựa ch ọn nào khác. Khi đó, ng ười ta g ọi E1 là t ập th ực th ể y ếu, R là ki ểu liên k ết h ỗ tr ợ, và E2 là t ập th ực th ể h ỗ tr ợ. Ví d ụ sau đây minh h ọa chi ti ết m ột t ập th ực th ể y ếu trong COMPANY . Email: namth@buh.edu.vn 38
  39. VÍ D Ụ 2.17: Tập th ực th ể y ếu. Trong COMPANY , t ập th ực th ể DEPENDENT cho bi ết thông tin v ề ng ười thân của m ỗi nhân viên thông qua ki ểu liên k ết BELONG TO. Rõ ràng, m ỗi nhân viên có nhi ều ng ười thân, ng ược l ại, m ỗi ng ười thân ch ỉ có quan h ệ gia đình v ới m ột nhân viên nào đó. Gi ả s ử m ột nhân viên tên An có hai ng ười thân tên g ọi l ần lượt là Bình và Lành . Điều gì x ảy ra v ới hai th ực th ể ứng v ới hai ng ười thân tên Bình và Lành nếu th ực th ể ứng v ới nhân viên tên An bị xóa kh ỏi t ập th ực th ể EMPLOYEE ? Rõ ràng, lúc này ng ười tên An không còn là nhân viên c ủa công ty, và nh ư v ậy, không có lý do gì để công ty duy trì thông tin v ề nh ững ng ười thân của anh ta. K ết qu ả, hai th ực th ể ứng v ới hai ng ười thân tên Bình và Lành bị xóa ra kh ỏi t ập th ực th ể DEPENDENT . Chính vì s ự ph ụ thu ộc ch ặt ch ẽ này, cho nên t ập th ực th ể DEPENDENT được g ọi là t ập th ực th ể y ếu, còn HAS và EMPLOYEE có tên g ọi l ần l ượt là ki ểu liên k ết h ỗ tr ợ, và t ập th ực th ể h ỗ tr ợ. Hình 2.8. Bi ểu di ễn t ập th ực th ể yếu DEPENDENT trong CSDL COMPANY  Nh ư v ậy, t ập th ực th ể E1 được g ọi là y ếu khi nó ph ụ thu ộc vào t ập th ực th ể E2 thông qua một ki ểu liên k ết h ỗ tr ợ có tên là R. Các điều ki ện sau đây xác đị nh E1 là tập th ực th ể y ếu và R là ki ểu liên k ết h ỗ tr ợ:  Ki ểu liên k ết R là lo ại liên k ết hai ngôi nhi ều – một t ừ E1 đến E2  Tập th ực th ể E1 không có khóa, nó ph ải nh ận khóa t ừ t ập th ực th ể E2 về làm khóa cho nó. Email: namth@buh.edu.vn 39
  40. VÍ D Ụ 2.18: Khóa c ủa t ập th ực th ể y ếu. Tập th ực th ể DEPENDENT không có khóa, do đó nó ph ải nh ận khóa t ừ t ập th ực th ể EMPLOYEE về làm khóa. Nh ư v ậy, khóa c ủa DEPENDENT là { ESSN , DName }.  2.4 CÁC V ẤN ĐỀ KHI THI ẾT K Ế MÔ HÌNH TH ỰC TH Ể K ẾT H ỢP 2.4.1 Các ký hi ệu s ử d ụng trong mô hình th ực th ể k ết h ợp Khi thi ết k ế mô hình th ực th ể k ết h ợp, chúng ta chú tr ọng bi ểu di ễn c ấu trúc c ủa dữ li ệu thông qua các t ập th ực th ể, các thu ộc tính, các ki ểu liên k ết h ơn là bi ểu di ễn nh ững th ể hi ện c ụ th ể c ủa d ữ li ệu. Sở d ĩ chúng ta làm nh ư th ế là b ởi vì c ấu trúc d ữ li ệu sau khi đã được cài đặt thành cơ s ở d ữ li ệu và đư a vào s ử d ụng thì r ất ít b ị thay đổ i. Nh ững s ự thay đổ i liên quan đến c ấu trúc c ủa cơ s ở d ữ li ệu th ường rất t ốn kém c ả v ề th ời gian l ẫn chi phí. Bảng 2.1 tóm t ắt l ại toàn b ộ ký hi ệu được s ử d ụng trong mô hình th ực th ể k ết h ợp và ý ngh ĩa c ủa chúng. 2.4.2 Quy t ắc đặ t tên trong mô hình th ực th ể k ết h ợp Trong quá trình thi ết k ế cơ s ở d ữ li ệu nói chung và mô hình th ực th ể k ết h ợp nói riêng, vi ệc xác đị nh tên g ọi cho các t ập th ực th ể, thu ộc tính, ki ểu liên k ết và các vai trò không ph ải lúc nào c ũng thu ận l ợi. B ản thi ết k ế c ủa chúng ta ph ải v ừa rõ ràng, m ạch l ạc, đầ y đủ ý ngh ĩa vì không ph ải ch ỉ chúng ta, nh ững ng ười thi ết k ế, sử d ụng nó, mà còn nhi ều nhóm ng ười dùng khác c ũng có nhu c ầu tham kh ảo nó. Chúng ta có xu h ướng đặ t tên cho các thành ph ần trong mô hình th ực th ể k ết h ợp bằng các t ừ ng ữ có ý ngh ĩa, càng đơ n gi ản càng t ốt. Chúng ta nên ch ọn tên t ập th ực th ể là các danh t ừ s ố ít, b ởi vì tên t ập th ực th ể th ường áp dụng cho t ừng th ực th ể riêng l ẻ c ủa t ập th ực th ể đó. Ngoài ra, chúng ta quy ước s ử d ụng ch ữ in hoa để Email: namth@buh.edu.vn 40
  41. bi ểu di ễn tên t ập th ực th ể và tên ki ểu liên k ết, ch ữ in th ường để th ể hi ện các vai trò; v ới thu ộc tính, ký t ự đầ u tiên ghi hoa, các ký t ự khác ghi th ường. Th ực t ế, khi đọ c m ột b ản đặ c t ả yêu c ầu d ữ li ệu c ủa h ệ th ống, chúng ta hoàn toàn có đầy đủ c ơ s ở để xây d ựng được mô hình th ực th ể k ết h ợp đáp ứng đầ y đủ các yêu c ầu đặ t ra. Nhìn chung, các danh t ừ chung ch ỉ s ự v ật, hi ện t ượng c ần được ghi nh ận chính là các t ập th ực th ể; các tính t ừ, ho ặc các danh t ừ di ễn t ả tính ch ất, ho ặc đặc tr ưng th ường là các thu ộc tính; các độ ng t ừ th ể hi ện m ối liên quan gi ữa các t ập th ực th ể chính là ki ểu liên k ết. Bảng 2.1. Tóm t ắt các ký hi ệu trong mô hình th ực th ể k ết h ợp KÝ HI ỆU Ý NGH ĨA VÍ D Ụ MINH H ỌA Tập th ực th ể Tập th ực th ể y ếu Ki ểu liên k ết Ki ểu liên k ết h ỗ tr ợ Thu ộc tính Thu ộc tính khóa Thu ộc tính đa tr ị Thu ộc tính t ổ h ợp Thu ộc tính d ẫn xu ất Email: namth@buh.edu.vn 41
  42. Một nguyên t ắc quan tr ọng khi trình bày mô hình th ực th ể k ết h ợp đó là các mô hình c ủa chúng ta được thi ết k ế để có th ể đọ c được t ừ trái sang ph ải, t ừ trên xu ống dưới theo chi ều h ướng c ủa các ki ểu liên k ết. Chính vì v ậy, đôi khi chúng ta ph ải đặt l ại tên cho ki ểu liên k ết để có th ể đáp ứng được yêu c ầu này. Nh ư v ậy, sau khi t ổng h ợp t ất c ả các v ấn đề đã trình bày ở trên, chúng ta có mô hình th ực th ể k ết h ợp hoàn ch ỉnh cho cơ s ở d ữ li ệu COMPANY gi ới thi ệu ở m ục 2.2. Hình 2.9. Bi ểu di ễn cơ s ở d ữ li ệu COMPANY bằng mô hình th ực th ể k ết h ợp. 2.5 TÓM T ẮT Trong ch ươ ng này chúng ta trình bày m ột mô hình được được s ử d ụng để thi ết k ế cấu trúc c ủa cơ s ở d ữ li ệu: mô hình th ực th ể k ết h ợp. Mô hình này t ập trung bi ểu di ễn c ấu trúc c ủa d ữ li ệu và các ràng bu ộc c ấu trúc trên d ữ li ệu ch ứ không quan tâm đến các thao tác trên d ữ li ệu. Chúng ta l ần l ượt tìm hi ểu các thành ph ần c ơ b ản của mô hình th ực th ể k ết h ợp: t ập th ực th ể, thu ộc tính, và ki ểu liên k ết. T ập th ực th ể ph ản ánh các s ự v ật, hi ện t ượng trong th ế gi ới th ực c ần được th ể hi ện trong cơ Email: namth@buh.edu.vn 42
  43. sở d ữ li ệu. Chúng ta phân bi ệt các th ực th ể trong t ập th ực th ể b ởi các giá tr ị t ại các thu ộc tính c ủa chúng. Trong khi thu ộc tính bi ểu di ễn các đặ c tr ưng, tính ch ất c ủa tập th ực th ể, ki ểu liên k ết l ại được s ử d ụng để mô t ả m ối liên quan gi ữa các t ập th ực th ể v ới nhau. Tùy theo s ố l ượng các t ập th ực th ể tham gia trong ki ểu liên k ết mà chúng ta xác định b ậc c ủa ki ểu liên k ết. Riêng đối v ới ki ểu liên k ết hai ngôi, chúng ta còn xác định được l ực l ượng c ủa t ừng t ập th ực th ể tham gia trong liên kết. Nh ờ đó, chúng ta phân bi ệt ba lo ại ki ểu liên k ết hai ngôi: m ột – một, m ột – nhi ều, và nhi ều – nhi ều. Cu ối cùng, chúng ta định ngh ĩa m ột ki ểu liên k ết hai ngôi nhi ều – một đặ c bi ệt, ki ểu liên k ết h ỗ tr ợ. M ột ki ểu liên k ết g ọi là h ỗ tr ợ khi nó th ể hi ện m ối quan h ệ ph ụ thu ộc gi ữa hai t ập th ực th ể: các th ực th ể trong t ập th ực th ể này t ồn t ại hay không là do m ột th ực th ể trong t ập th ực khác quy ết đị nh. Email: namth@buh.edu.vn 43
  44. CCHHƯƯƠƠNNGG 333333 MÔ HÌNH TH ỰC TH Ể K ẾT H ỢP M Ở R ỘNG Mục tiêu Ng ười đọ c được trang b ị các ki ến th ức v ề mô hình th ực th ể k ết h ợp m ở r ộng v ới các khái ni ệm v ề s ự k ế th ừa, quá trình khái quát hóa và chuyên bi ệt hóa, các lo ại ràng bu ộc không trùng l ắp, ràng bu ộc toàn ph ần, nh ằm gi ải quy ết m ột l ớp yêu cầu d ữ li ệu mà mô hình th ực th ể k ết h ợp không th ể đáp ứng được. Nội dung  Nh ững h ạn ch ế c ủa mô hình th ực th ể k ết h ợp.  Các thành ph ần c ủa mô hình th ực th ể k ết h ợp mở r ộng.  Ngôn ng ữ mô hình hóa h ợp nh ất. Email: namth@buh.edu.vn 49
  45. Giới thi ệu Mô hình th ực th ể k ết h ợp m ở r ộng, đúng khi tên g ọi c ủa nó, là m ột s ự m ở r ộng t ừ mô hình th ực th ể k ết h ợp v ới các khái ni ệm có liên quan đến m ối liên k ết cha/con gi ữa các t ập th ực th ể. M ối liên k ết này được th ể hi ện thông qua hai quá trình: chuyên bi ệt hóa và khái quát hóa. Hai quá trình này được ti ến hành ng ược nhau, nếu quá trình chuyên bi ệt hóa t ạo các l ớp con t ừ m ột l ớp cha, thì quá trình khái quát hóa t ạo l ớp cha t ừ các l ớp con. Các quá trình này có th ể d ựa trên các ràng bu ộc trên thu ộc tính ho ặc do ng ười sử d ụng t ự đị nh ngh ĩa. Ngoài ràng bu ộc trên thu ộc tính, trong chuyên bi ệt hóa còn có hai ràng bu ộc khác, đó là ràng bu ộc không trùng l ắp và ràng bu ộc toàn ph ần. Các ràng bu ộc này quy ết đị nh hành vi thêm m ới hay xóa b ỏ th ực th ể ra kh ỏi các l ớp trong m ối liên k ết cha/con. Với mô hình th ực th ể k ết h ợp m ở r ộng, chúng ta có th ể gi ải quy ết các v ấn đề phát sinh khi s ử d ụng mô hình th ực th ể k ết h ợp để thi ết k ế d ữ li ệu cho các h ệ th ống l ớn, ph ức t ạp, nhi ều t ầng nhi ều l ớp. Email: namth@buh.edu.vn 50
  46. 3.1 NH ỮNG HẠN CH Ế C ỦA MÔ HÌNH TH ỰC TH Ể KẾT H ỢP Mô hình th ực th ể k ết h ợp được xem là ph ươ ng pháp đơ n gi ản nh ất để thi ết k ế c ấu trúc d ữ li ệu d ựa trên yêu c ầu c ủa ng ười s ử d ụng. Ph ươ ng pháp này được s ử d ụng rộng rãi trong quá kh ứ khi chúng ta có nhu c ầu thi ết k ế cơ s ở d ữ li ệu cho các h ệ th ống s ử d ụng cơ s ở d ữ li ệu đơ n gi ản, m ột c ấp. Tuy nhiên, có nh ững v ấn đề phát sinh khi áp d ụng ph ươ ng pháp này trong vi ệc xây d ựng các cơ s ở d ữ li ệu ph ức t ạp, đa c ấp. Ở ph ần cu ối ch ươ ng hai, chúng ta đã đề xu ất m ột b ản thi ết k ế cơ s ở d ữ li ệu sử dụng mô hình th ực th ể kết h ợp cho ví d ụ m ẫu được trình bày trong m ục 2.2. Bây gi ờ, chúng ta b ổ sung thêm m ột s ố yêu c ầu cho ph ần đặ c t ả d ữ li ệu, và tìm cách hi ện th ực hóa các yêu c ầu đó b ằng mô hình th ực th ể k ết h ợp:  Nhân viên trong công ty được phân chia làm nhi ều nhóm khác nhau, d ựa vào nhi ệm v ụ mà t ừng nhân viên đảm nh ận trong công ty. Chúng ta có ba nhóm nhân viên: nhân viên văn phòng, nhân viên k ỹ thu ật và nhân viên lái xe. M ỗi nhóm nhân viên ngoài nh ững đặ c tr ưng chung c ủa m ột nhân viên, còn có các đặc tr ưng riêng.  Công ty duy trì thông tin v ề ng ười thân đố i v ới nhân viên trong nhóm k ỹ s ư thay vì đối v ới toàn b ộ nhân viên trong công ty. Ch ỉ v ới hai yêu c ầu đặ c t ả t ươ ng đối đơn gi ản trên đây, mô hình th ực th ể k ết h ợp đã b ộc l ộ m ột s ố nh ược điểm c ủa nó:  Để mô t ả các nhóm nhân viên v ới nh ững đặ c tính khác nhau, chúng ta c ần tạo nh ững t ập th ực th ể khác nhau (1). C ụ th ể ở đây, ngoài t ập th ực th ể EMPLOYEE , chúng ta c ần ph ải s ử d ụng thêm ba t ập th ực th ể khác l ần lượt là SECRETARY , ENGINEER và DRIVER . Ba t ập th ực th ể có các thu ộc tính c ủa riêng nó và các thu ộc tính chung t ươ ng t ự nh ư EMPLOYEE . Ti ếp theo, v ới m ối quan h ệ được mô t ả gi ữa các t ập th ực th ể Email: namth@buh.edu.vn 51
  47. này v ới nhau, chúng ta nh ận th ấy, m ỗi nhân viên ch ỉ có th ể đả m nhi ệm m ột công vi ệc trong công ty mà thôi, n ếu ng ười này là nhân viên kỹ thu ật thì không th ể là nhân viên hành chính hay nhân viên lái xe được. Do đó, m ỗi th ực th ể trong EMPLOYEE ch ỉ có th ể xu ất hi ện duy nh ất m ột l ần ở đâu đó trong SECRETARY , ENGINEER , và DRIVER . Mô hình th ực th ể k ết hợp không th ể bi ểu di ễn được các m ối quan hệ d ạng nh ư th ế này.  Để mô t ả các nhóm nhân viên v ới nh ững đặ c tính khác nhau, chúng ta t ạo một t ập th ực th ể EMPLOYEE duy nh ất ch ứa t ất c ả thu ộc tính c ủa các nhóm nhân viên nói trên (2). Khi đó, thu ộc tính riêng c ủa nhóm s ẽ giúp xác định m ột th ực th ể trong EMPLOYEE thu ộc nhóm nào. Tuy nhiên, trong tr ường h ợp này, chúng ta không th ể di ễn gi ải trên mô hình m ối quan h ệ gi ữa hai t ập th ực th ể EMPLOYEE và DEPENDENT . Công ty ch ỉ mu ốn duy trì thông tin v ề ng ười thân c ủa k ỹ s ư mà thôi. Từ (1) và (2) chúng ta th ấy r ằng, mô hình th ực th ể k ết h ợp ch ỉ thích h ợp đố i v ới nh ững d ữ li ệu ngang hàng và đơ n gi ản. Mô hình này không th ể bi ểu di ễn được d ữ li ệu phân c ấp, m ột trong nh ững đặ c điểm c ơ b ản c ủa h ầu h ết các cơ s ở d ữ li ệu ứng dụng hi ện nay. Mô hình th ực th ể k ết h ợp m ở r ộng là s ự lựa ch ọn cần thi ết, giúp gi ải quy ết các v ấn đề mà mô hình th ực th ể k ết h ợp (c ổ điển) không th ể gi ải quy ết. 3.2 CÁC KHÁI NI ỆM TRONG MÔ HÌNH TH ỰC TH Ể K ẾT H ỢP M Ở R ỘNG Để kh ắc ph ục nh ững h ạn ch ế nói trên c ủa mô hình th ực th ể k ết h ợp, hay nói cách khác để cải ti ến mô hình th ực th ể k ết h ợp nh ằm m ở r ộng l ớp bài toán được gi ải quy ết b ởi mô hình này, ng ười ta xây d ựng mô hình th ực th ể k ết h ợp m ở r ộng. Đúng nh ư tên g ọi, mô hình m ới này được phát tri ển t ừ mô hình th ực th ể k ết h ợp với s ự m ở r ộng thêm m ột s ố khái niệm: l ớp con, l ớp cha, khái quát hóa, chuyên bi ệt hóa, và s ự k ế th ừa. Email: namth@buh.edu.vn 52
  48. 3.2.1 Lớp con, l ớp cha và s ự k ế th ừa Một trong nh ững khái ni ệm quan tr ọng nh ất c ủa mô hình th ực th ể k ết h ợp m ở r ộng đó là khái ni ệm v ề l ớp con c ủa m ột t ập th ực th ể. Nh ư chúng ta đã định ngh ĩa ở ch ươ ng tr ước, t ập th ực th ể là m ột t ập h ợp các th ực th ể được xác đị nh b ởi các thu ộc tính gi ống nhau được l ưu tr ữ trong cơ s ở d ữ li ệu. Trong nhi ều tr ường h ợp, một t ập th ực th ể có th ể được phân chia làm nhi ều nhóm th ực th ể khác nhau, t ừng thành viên trong m ỗi nhóm đề u thu ộc t ập th ực th ể ban đầ u. Sự phân nhóm này d ựa trên m ột s ố đặ c tr ưng nào đó, và c ần được bi ểu di ễn m ột cách t ường minh. Ng ười ta gọi m ỗi nhóm được phân tách là l ớp con, còn t ập th ực th ể ban đầ u được g ọi là lớp cha trong phép phân nhóm nói trên. Mối liên k ết t ừ l ớp cha đế n t ừng l ớp con được g ọi là m ối liên k ết l ớp cha/l ớp con hay g ọi t ắt là liên k ết cha/con. Lo ại liên kết này còn có tên g ọi khác là liên k ết ISA (is a part of). VÍ D Ụ 3.1: Liên k ết cha/con trong mô hình th ực th ể k ết h ợp m ở r ộng. Các th ực th ể trong t ập th ực th ể EMPLOYEE được trình bày trong cơ s ở d ữ li ệu COMPANY có th ể được phân bi ệt thành nhi ều nhóm khác nhau d ựa vào đặc thù của công vi ệc được giao, nh ư là ENGINEER (k ỹ s ư), SECRETARY (th ư ký), và DRIVER (lái xe). Trong tr ường h ợp này EMPLOYEE gọi là l ớp cha, còn các t ập th ể ENGINEER , SECRETARY và DRIVER có chung tên g ọi là l ớp con trong phép phân nhóm d ựa trên đặc thù công vi ệc được giao. Trong ví d ụ này, chúng ta có ba m ối liên k ết cha/con gi ữa EMPLOYEE và ENGINEER , gi ữa EMPLOYEE và SECRETARY , gi ữa EMPLOYEE và DRIVER . Hình 3.1. Các m ối liên k ết cha/con trong CSDL COMPANY Email: namth@buh.edu.vn 53
  49.  Một điều quan tr ọng mà chúng ta c ần ph ải ghi nh ớ là trong m ối liên k ết cha con, mỗi th ực th ể của l ớp con bi ểu di ễn cùng m ột s ự v ật trong th ế gi ới th ực v ới m ột th ực th ể nào đó c ủa l ớp cha. Nếu trong l ớp con ENGINEER có m ột th ực th ể với giá tr ị t ại thu ộc tính EName là ‘ Lê Duy Anh ’, thì trong l ớp cha EMPLOYEE cũng có m ột th ực th ể có giá tr ị t ươ ng t ự t ại thu ộc tính EName . Vì v ậy, m ỗi th ực th ể của lớp con là m ột thực th ể trong l ớp cha, nh ưng v ới m ột vai trò đặc bi ệt. Nói cách khác, vai trò đặc bi ệt này chính là đặc tr ưng được dùng để phân chia các th ực th ể của l ớp cha thành nhi ều l ớp con. Ngoài ra, một th ực th ể c ủa l ớp cha, có th ể xu ất hi ện trong nhi ều l ớp con ho ặc không thu ộc l ớp con nào c ả, nh ưng m ột th ực th ể xu ất hi ện trong l ớp con, thì ch ắc ch ắn ph ải m ột thành viên c ủa l ớp cha. VÍ D Ụ 3.2: Mối liên k ết cha/con trong mô hình th ực th ể k ết h ợp m ở r ộng. Chúng ta có m ột k ỹ s ư nh ưng đang làm công tác v ăn phòng. Do đó, nhân viên này là m ột th ực th ể c ủa EMPLOYEE , và đồng th ời c ũng thu ộc c ả SECRETARY lẫn ENGINEER . Ng ược l ại, n ếu m ột ng ười được xem là nhân viên lái xe trong công ty (thu ộc DRIVER ) thì ch ắc ch ắn anh ta ph ải là nhân viên c ủa công ty (t ức là m ột thành viên c ủa EMPLOYEE ).  Một khái ni ệm quan tr ọng khác có liên quan t ới m ối liên k ết cha/con đó là s ự k ế th ừa. Chúng ta đã bi ết m ột t ập th ực th ể được xác đị nh b ởi các thu ộc tính và các mối liên k ết mà nó tham gia trong đó. B ởi vì mỗi th ực th ể trong l ớp con bi ểu di ễn cùng m ột s ự vi ệc trong th ế gi ới th ực v ới m ột th ực th ể nào đó c ủa l ớp cha, cho nên chúng s ẽ có cùng giá tr ị t ại các thu ộc tính c ủa mình. Chúng ta nói r ằng, các th ực th ể trong l ớp con k ế th ừa t ất c ả các thu ộc tính c ủa l ớp cha và các ki ểu liên k ết mà lớp cha tham gia trong đó. Ngoài các thu ộc tính và các ki ểu liên k ết được k ế th ừa từ l ớp cha, b ản thân l ớp con c ũng có các thu ộc tính và các ki ểu liên k ết riêng mà lớp cha không có. Nh ư v ậy, l ớp con v ới các thu ộc tính và các ki ểu liên k ết mà nó tham gia trong đó c ũng có th ể được xem là m ột t ập th ực th ể. Email: namth@buh.edu.vn 54
  50. VÍ D Ụ 3.3: Các l ớp con có th ể có thu ộc tính riêng. Các l ớp con trong m ối liên k ết cha/con v ới l ớp cha EMPLOYEE có th ể có các thu ộc tính và các ki ểu liên k ết riêng. Ch ẳng h ạn nh ư, l ớp con SECRETARY có thu ộc tính riêng là TypingSpeed (t ốc độ đánh máy), l ớp con ENGINEER có thu ộc tính riêng là EngType (l ĩnh v ực chuyên môn), ho ặc l ớp DRIVER cũng có thu ộc tính riêng là Vehicle (lo ại xe). Các thu ộc tính này được th ể hi ện trong hình sau đây. Hình 3.2. Bên c ạnh các thu ộc tính được k ế th ừa t ừ l ớp cha, lớp con còn có th ể có các thu ộc tính riêng  3.2.2 Chuyên bi ệt hóa Với đị nh ngh ĩa v ề m ối liên k ết cha/con nh ư ở trên, chúng ta có th ể d ễ dàng nh ận th ấy có hai quá trình liên quan đến m ối liên k ết này: quá trình chuyên bi ệt hóa và quá trình khái quát hóa. Chuyên bi ệt hóa là quá trình xác định m ột t ập các l ớp con c ủa m ột t ập th ực th ể. Tập th ực th ể đang xét được g ọi là l ớp cha c ủa quá trình này. T ập các l ớp con được hình thành trong quá trình chuyên bi ệt hóa được đị nh ngh ĩa d ựa trên m ột s ố đặ c điểm phân bi ệt gi ữa th ực th ể này v ới th ực th ể khác trong l ớp cha. Email: namth@buh.edu.vn 55
  51. VÍ D Ụ 3.4: Chuyên bi ệt hóa d ựa trên thu ộc tính. Quá trình chuyên bi ệt hóa l ớp cha EMPLOYEE thành nhi ều l ớp con ENGINEER , SECRETARY , DRIVER dựa vào đặc thù c ủa công vi ệc được giao. Chúng ta đặt tên cho thu ộc tính này JobType . M ột s ự chuyên bi ệt hóa khác có th ể th ực hi ện trên l ớp cha EMPLOYEE thành nhi ều l ớp con FULLTIME (làm vi ệc toàn th ời gian), EXPERIENCED (có kinh nghi ệm), và QUALIFICATION (có b ằng c ấp). Hình sau đây minh h ọa chi ti ết hai phép chuyên bi ệt hóa c ủa t ập th ực th ể EMPLOYEE . Hình 3.3. Chuyên bi ệt hóa l ớp cha thành nhi ều l ớn con  Bây gi ờ chúng ta hãy xét m ột m ối liên k ết cha/con gi ữa hai t ập th ực th ể P (vi ết t ắt của Parent, t ức là cha) và C (vi ết t ắt c ủa Children, t ức là con). Rõ ràng, v ới m ỗi th ực th ể xu ất hi ện trong C, thì ph ải có m ột th ực th ể t ươ ng ứng trong P, sao cho chúng cùng ph ản ánh m ột s ự v ật trong th ế gi ới th ực. Ng ược l ại, c ứ m ỗi th ực th ể trong P, chúng ta ho ặc tìm th ấy m ột, ho ặc không tìm th ấy th ực th ể nào trong C để chúng cùng ph ản ánh m ột s ự v ật trong th ế gi ới th ực. Rõ ràng, đây có th ể xem nh ư là m ột ki ểu liên k ết hai ngôi m ột – một gi ữa hai t ập th ực th ể P và C. Có điều khác bi ệt duy nh ất, v ới ki ểu liên k ết hai ngôi m ột – một trong mô hình th ực th ể k ết h ợp được trình bày ở ch ươ ng tr ước, hai th ực th ể tham gia trong liên k ết v ề c ơ b ản là hai th ực th ể khác nhau, ph ản ánh hai s ự v ật khác nhau trong th ế gi ới th ực, còn trong ki ểu liên k ết cha/con, hai th ực th ể tham gia cùng ph ản ánh m ột s ự v ật trong th ế gi ới th ực. Email: namth@buh.edu.vn 56
  52. Cùng v ới s ự t ươ ng đồng nói trên, hai nguyên nhân sau đây lý gi ải t ại sao ng ười ta lại đưa khái ni ệm v ề m ối liên k ết cha/con và các quá trình chuyên bi ệt hóa/khái quát hóa vào trong mô hình d ữ li ệu:  Lớp con có th ể có các thu ộc tính riêng mà l ớp cha không có. Khi đó l ớp con s ẽ được t ạo ra để nhóm các th ực th ể có chung nh ững thu ộc tính này l ại với nhau. Thành viên c ủa l ớp con này v ẫn ti ếp t ục chia s ẻ v ới các thành viên c ủa l ớp con khác nh ững thu ộc tính c ủa l ớp cha.  Lớp con có th ể có các ki ểu liên k ết riêng mà lớp cha không có. Thành viên của l ớp con v ẫn k ế th ừa các ki ểu liên k ết có liên quan t ới l ớp cha. Nh ư v ậy, quá trình chuyên bi ệt hóa c ần tr ải qua các giai đoạn sau đây: 1) Định ngh ĩa m ột t ập các l ớp con c ủa m ột t ập th ực th ể. 2) Xác định các thu ộc tính riêng c ủa lớp con. 3) Xác định các ki ểu liên k ết riêng c ủa l ớp con v ới các t ập th ực th ể khác ho ặc với các l ớp con khác. 3.2.3 Khái quát hóa Ng ược l ại v ới chuyên bi ệt hóa, t ừ m ột l ớp cha xác đị nh các l ớp con d ựa trên m ột số thu ộc tính phân lo ại, khái quát hóa là quá trình xây dựng m ột t ập th ực th ể m ới dựa trên k ết qu ả phân tích đặ c điểm gi ống và khác nhau c ủa m ột s ố t ập th ực th ể. Các t ập th ực th ể tham gia quá trình khái quát hóa được g ọi là các l ớp con, còn t ập th ực th ể m ới được t ạo ra có tên g ọi là l ớp cha. Đây c ũng là m ột m ối liên k ết cha/con gi ữa các t ập th ực th ể v ới nhau. VÍ D Ụ 3.5: Khái quát hóa d ựa trên các thu ộc tính dùng chung. Quá trình khái quát hóa các t ập th ực th ể ENGINEER , SECRETARY , DRIVER để phát hi ện nh ững thu ộc tính chung c ủa chúng. Các thu ộc tính chung này l ần l ượt là ESSN , EName , ESex , ESalary , EBirthdate , và EStartdate . Để không lặp l ại các thu ộc này tính, chúng ta t ạo m ột t ập th ực th ể có tên g ọi là EMPLOYEE với các Email: namth@buh.edu.vn 57
  53. thu ộc tính nêu trên. Các t ập th ực th ể ban đầ u s ẽ có m ối liên k ết cha/con v ới EMPLOYEE để k ế thừa các thu ộc tính c ủa nó.  3.2.4 Ràng bu ộc trong chuyên bi ệt hóa và khái quát hóa Nhìn chung, chúng ta có th ể áp d ụng nhi ều phép chuyên bi ệt hóa khác nhau lên cùng m ột t ập th ực th ể. Ví d ụ 3.3 trên đây minh h ọa cho hai phép chuyên bi ệt hóa lên cùng t ập th ể EMPLOYEE . Với đị nh ngh ĩa v ề chuyên bi ệt hóa, chúng ta th ấy r ằng m ột th ực th ể b ất k ỳ trong lớp cha có th ể thu ộc v ề nhi ều l ớp con khác nhau trong m ỗi phép chuyên bi ệt hóa. Số l ượng các l ớp con được t ạo ra ph ụ thu ộc vào đặc điểm c ủa phép chuyên bi ệt hóa được áp dụng. S ố l ớp con do m ột phép chuyên bi ệt hóa t ạo ra có th ể là m ột hay nhi ều h ơn m ột. Đồ ng th ời, để có th ể xác đị nh chính xác m ột th ực th ể n ằm trong m ột l ớp con nào đó, chúng ta có th ể s ử d ụng một điều ki ện phân nhóm d ựa trên giá tr ị c ủa m ột s ố thu ộc tính trong l ớp cha. Các l ớp con được xác đị nh nh ư th ế này được g ọi là l ớp con đị nh ngh ĩa tr ước. Nếu t ất c ả các l ớp con đề u có điều ki ện phân nhóm trên cùng m ột thu ộc tính, thì phép chuyên bi ệt hóa được g ọi là được định ngh ĩa theo thu ộc tính, và thu ộc tính đó có tên g ọi là thu ộc tính phân nhóm. Ví dụ sau đây là m ột phép chuyên bi ệt hóa theo thu ộc tính. VÍ D Ụ 3.6: Chuyên bi ệt hóa theo thu ộc tính. Với thu ộc tính JobType trong t ập th ực th ể EMPLOYEE , chúng ta có th ể xác đị nh ba l ớp con d ựa trên điều ki ện liên quan đến thu ộc tính này, mà c ụ th ể là ba giá tr ị ‘Secretary’ , ‘ Driver , và ‘ Engineer’ . Điều ki ện này nói r ằng, n ếu m ột th ực th ể trong EMPLOYEE mà có giá tr ị t ại JobType là ‘ Secretary’ thì nó s ẽ thu ộc l ớp con SECRETARY . T ươ ng t ự nh ư v ậy đố i v ới hai giá trị ‘ Driver và ‘ Engineer’ . Email: namth@buh.edu.vn 58
  54. Hình 3.4. Chuyên bi ệt hóa l ớp EMPLOYEE theo thu ộc tính JobType.  Khi không có điều ki ện phân nhóm, l ớp con là do ng ười dùng t ự đị nh ngh ĩa. Ng ười dùng xác định các thành viên c ủa l ớp con b ằng cách thêm l ần l ượt t ừng th ực th ể c ủa l ớp cha vào m ột ho ặc m ột s ố l ớp con nào đó. Quá trình này di ễn ra cho đến khi các l ớp con được xây d ựng xong m ới thôi. Quan sát ví d ụ 3.6, chúng ta có th ể nh ận th ấy r ằng, m ột th ực th ể trong l ớp cha EMPLOYEE không th ể xu ất hi ện trong nhi ều h ơn m ột l ớp con. Điều này có ngh ĩa là, trong phép chuyên bi ệt hóa d ựa trên m ột thu ộc tính đơn tr ị, các l ớp con luôn không trùng l ắp, hay luôn không có ph ần t ử chung. Người ta đặ t tên cho lo ại ràng bu ộc này là ràng bu ộc không trùng l ắp (ký hi ệu là d, vi ết t ắt c ủa disjoint ) trong phép chuyên bi ệt hóa. Trong tr ường h ợp phép chuyên bi ệt hóa không duy trì ràng bu ộc không trùng l ắp, m ột th ực th ể trong l ớp cha có th ể xu ất hi ện trong nhi ều lớp con. Nói cách khác, các l ớp con có th ể trùng l ắp. Chúng ta ký hi ệu phép chuyên bi ệt hóa được phép trùng l ắp là o (vi ết t ắt c ủa overlap ). Lo ại ràng bu ộc cu ối cùng được đị nh ngh ĩa trong phép chuyên bi ệt hóa, đó là ràng bu ộc đầ y đủ . Ràng bu ộc này giúp chúng ta phân bi ệt phép chuyên bi ệt hóa là toàn ph ần hay m ột ph ần. Ràng bu ộc toàn ph ần phát bi ểu r ằng m ọi th ực th ể c ủa l ớp cha ph ải là thành viên c ủa ít nh ất m ột l ớp con. Trong khi đó, ràng bu ộc t ừng ph ần l ại cho bi ết m ột th ực th ể c ủa l ớp cha có th ể không n ằm trong b ất k ỳ l ớp con nào c ả. Email: namth@buh.edu.vn 59
  55. Ví d ụ 3.7 giúp chúng ta th ể hi ện đồ ng th ời hai lo ại ràng bu ộc này trên mô hình th ực th ể k ết h ợp. VÍ D Ụ 3.7: Ràng bu ộc toàn ph ần và ràng bu ộc t ừng ph ần. Nếu nh ư t ồn t ại m ột th ực th ể thu ộc EMPLOYEE mà không thu ộc b ất k ỳ l ớp con SECRETARY , DRIVER , và ENGINEER , thì chúng ta g ọi phép chuyên bi ệt hóa tươ ng ứng là t ừng ph ần. Còn trong tr ường h ợp m ỗi th ực th ể thu ộc EMPLOYEE bắt bu ộc ph ải thu ộc ít nh ất m ột trong ba l ớp con FULLTIME (nhân viên toàn th ời gian), EXPERIENCED (có kinh nghi ệm th ực t ế), QUALIFICATION (có b ằng cấp chuyên môn), thì phép chuyên hóa này g ọi là toàn ph ần. Hình 3.5. Ràng bu ộc trong chuyên bi ệt hóa và khái quát hóa  Một điểm c ần l ưu ý là ràng bu ộc không trùng l ắp và ràng bu ộc đầ y đủ là hai ràng bu ộc hoàn toàn độc l ập. Vì v ậy, m ỗi phép chuyên bi ệt hóa s ẽ thu ộc m ột trong b ốn tr ường h ợp sau đây:  Ràng bu ộc không trùng lắp và toàn ph ần  Ràng bu ộc không trùng l ắp và t ừng ph ần  Ràng bu ộc có th ể trùng l ắp và toàn ph ần  Ràng bu ộc có th ể trùng l ắp và t ừng ph ần Từ các ràng bu ộc nêu trên, chúng ta có th ể suy ra m ột s ố quy t ắc áp d ụng cho tr ường hợp thêm và lo ại b ỏ th ực th ể ra kh ỏi lớp cha, l ớp con:  Xóa m ột th ực th ể ở l ớp cha d ẫn t ới vi ệc th ực th ể này s ẽ t ự độ ng b ị xóa ra kh ỏi t ất c ả các l ớp con (mà nó là thành viên). Email: namth@buh.edu.vn 60
  56.  Thêm m ột th ực th ể vào l ớp cha d ẫn t ới vi ệc th ực th ể này s ẽ t ự độ ng được thêm vào các l ớp con mà nó th ỏa mãn điều ki ện thành viên ( đối v ới phép chuyên bi ệt hóa theo thu ộc tính).  Thêm m ột th ực th ể vào l ớp cha trong phép chuyên bi ệt hóa toàn ph ần d ẫn đến vi ệc th ực th ể này s ẽ t ự độ ng được thêm vào ít nh ất m ột l ớp con trong phép chuyên bi ệt hóa đang xét. 3.2.5 Cây phân c ấp và l ưới phân c ấp Nh ư đã trình bày ở ph ần tr ước, b ản ch ất c ủa quá trình chuyên bi ệt hóa và khái quát hóa và s ự k ế th ừa. Trong khái ni ệm v ề s ự k ế th ừa, chúng ta phân bi ệt đơn th ừa k ế và đa th ừa k ế. M ột l ớp cha có th ể có nhi ều l ớp con, và m ột l ớp con c ũng có th ể có nhi ều l ớp cha. T ừ đó, chúng ta có th ể t ạo ra cây phân c ấp ( đơn th ừa k ế), hay l ưới phân c ấp ( đa th ừa k ế). Một cách t ươ ng t ự, vì m ối liên k ết cha/con trong m ỗi phép chuyên bi ệt hóa là m ột dạng liên k ết cha/con trong phép k ế th ừa, cho nên chúng ta c ũng có th ể dùng cây phân c ấp hay l ưới phân c ấp để th ể hi ện m ối liên k ết cha/con trong các phép chuyên bi ệt hóa trên cùng m ột t ập các th ực th ể khác nhau. Sự phân c ấp th ể hi ện trong tr ường h ợp này có ý ngh ĩa nh ư sau: m ột l ớp con trong phép chuyên bi ệt hóa này có th ể là l ớp cha c ủa phép chuyên bi ệt hóa khác. Ví d ụ 3.8 minh h ọa l ưới phân cấp đố i v ới t ập th ực th ể EMPLOYEE . VÍ D Ụ 3.8: Cây phân c ấp và l ưới phân c ấp. Từ ví d ụ 3.7 chúng ta đị nh ngh ĩa m ột l ớp KEY_MAN với điều ki ện m ột th ực th ể thu ộc l ớp này ph ải đồ ng th ời là thành viên c ủa hai l ớp ENGINEER và FULLTIME với ý ngh ĩa: k ỹ s ư chính ph ải là m ột k ỹ s ư ký h ợp đồ ng làm vi ệc toàn th ời gian v ới công ty. Email: namth@buh.edu.vn 61
  57. Hình 3.6. Lưới phân c ấp đố i v ới t ập th ực th ể EMPLOYEE  Để bi ểu di ễn s ự k ế th ừa b ằng cây phân c ấp hay l ưới phân c ấp, chúng ta c ần chú ý các đặc điểm sau đây. Các đặ c điểm này được áp d ụng v ới c ả chuyên bi ệt hóa l ẫn khái quát hóa.  Trong cây hay l ưới phân c ấp, l ớp con không ch ỉ th ừa k ế t ất c ả các thu ộc tính c ủa l ớp cha tr ực ti ếp c ủa nó mà còn th ừa k ế t ất c ả l ớp cha khác cao hơn (duy ệt theo nhánh t ừ nó lên đến g ốc).  Một th ực th ể có th ể là thành viên c ủa nhi ều nút lá trong cây phân c ấp. Ở đây chúng ta định ngh ĩa nút lá là l ớp không có l ớp con.  Một l ớp con có nhi ều h ơn m ột l ớp cha được g ọi là nút con chung. Khi đó, lớp con chung sẽ th ừa k ế t ất c ả thu ộc tính t ừ các lớp cha c ủa nó.  Xét tr ường h ợp l ớp con chung được k ế th ừa t ừ nhi ều l ớp cha, các l ớp cha này l ại là l ớp con c ủa m ột l ớp cha khác. Các thu ộc tính c ủa l ớp cha khác này ch ỉ được xu ất hi ện duy nh ất m ột l ần trong l ớp con chung. Email: namth@buh.edu.vn 62
  58. 3.3 MỘT ỨNG D ỤNG C ỦA MÔ HÌNH TH ỰC TH Ể KẾT H ỢP M Ở R ỘNG Để minh h ọa vi ệc ứng d ụng mô hình th ực th ể k ết h ợp m ở r ộng để gi ải quy ết bài toán th ực t ế, chúng ta ti ếp t ục ví d ụ m ẫu được trình bày ở m ục 2.2 v ới m ột s ố b ổ sung nh ư sau:  Các nhân viên trong công ty được chia làm ba nhóm phân bi ệt, d ựa trên đặc điểm công vi ệc mà h ọ th ực hi ện t ại công ty: kỹ s ư, th ư ký, và nhân viên ph ục v ụ.  Công ty áp d ụng m ột s ố ch ỉ tiêu để đánh giá nhân viên: th ời gian làm vi ệc, kinh nghi ệm th ực t ế, và b ằng c ấp chuyên môn.  Công ty thực hi ện ch ế độ b ảo hi ểm y t ế đố i v ới ng ười thân c ủa các k ỹ s ư làm vi ệc toàn th ời gian t ại công ty. Với nh ững s ự b ổ sung nói trên, chúng ta có th ể c ải ti ến l ại mô hình được trình bày trong hình 2.4 thành mô hình th ực th ể k ết h ợp m ở r ộng sau đây: Hình 3.6. Mô hình th ực th ể k ết h ợp m ở r ộng của c ơ s ở d ữ li ệu COMPANY  Email: namth@buh.edu.vn 63
  59. 3.4 CÁC CÔNG C Ụ THI ẾT K Ế MÔ HÌNH C Ơ S Ở DỮ LI ỆU Thi ết k ế mô hình cơ s ở d ữ li ệu gi ữ vai trò quan tr ọng trong vi ệc qu ản lý và khai thác d ữ li ệu sau khi cơ s ở d ữ li ệu đã được tri ển khai. Nh ằm h ỗ tr ợ ng ười s ử d ụng trong vi ệc thi ết k ế cơ s ở d ữ li ệu, đặc bi ệt là ở m ức độ ý ni ệm nh ư mô hình th ực th ể kết h ợp (m ở r ộng), m ột s ố công ty ph ần m ềm đã được ra các s ản ph ẩm th ươ ng m ại lẫn phi th ươ ng m ại. M ột s ố s ản ph ẩm tiêu bi ểu trong l ĩnh v ực này: StarUML, Jude, Rational Rose, Altova, Visio, Các s ản ph ẩm này có m ột đặ c điểm chung là được xây d ựng trên ngôn ng ữ mô hình hóa h ợp nh ất (Unified Modelling Languages, vi ết t ắt là UML). Trong ph ạm vi giáo trình, chúng ta không nghiên cứu chi ti ết v ề UML và các ứng d ụng c ủa nó trong l ĩnh v ực công ngh ệ ph ần m ềm. Chúng ta ch ỉ gi ới h ạn n ội dung trình bày ở vi ệc ứng d ụng UML để mô hình hóa ki ến trúc c ủa cơ s ở d ữ li ệu. Thành ph ần c ơ b ản c ủa UML là l ớp v ới các khai báo v ề các tr ạng thái và hành vi mà đối t ượng c ủa l ớp đó được phép th ực hi ện. Chính vì lý do này mà UML được sử d ụng làm ngôn ng ữ chính trong các ho ạt độ ng phân tích và thi ết k ế các h ệ th ống thông tin h ướng đố i t ượng. Lớp trong UML t ươ ng ứng v ới t ập th ực th ể trong mô hình th ực th ể k ết h ợp. Các thu ộc tính c ủa t ập th ực th ể được xem nh ư là thu ộc tính của l ớp t ươ ng ứng trong UML. Liên k ết trong UML được xác đị nh gi ữa hai l ớp, t ươ ng ứng v ới m ột ki ểu liên k ết hai ngôi gi ữa hai t ập th ực th ể trong mô hình th ực th ể k ết h ợp. Đặ c bi ệt, UML không cho phép liên k ết nhi ều ngôi. Đó c ũng chính là lý do t ại sao trong ch ươ ng 2, chúng ta đã tìm cách phân tách ki ểu liên k ết nhi ều ngôi thành nhi ều ki ểu liên k ết hai ngôi. Email: namth@buh.edu.vn 64
  60. Hình 3.7. Lược đồ UML ứng v ới mô hình th ực th ể k ết h ợp của cơ s ở d ữ li ệu COMPANY được trình bày trong hình 2.4 Cu ối cùng, UML h ỗ tr ợ cấu trúc phân c ấp b ằng các m ối liên k ết cha/con t ươ ng t ự nh ư đối v ới s ự chuyên bi ệt hóa và khái quát trong mô hình th ực th ể k ết h ợp m ở rộng. Hình 3.8. Lược đồ UML ứng v ới cây phân c ấp được trình bày trong ví d ụ 3.8 Email: namth@buh.edu.vn 65
  61. 3.5 TÓM T ẮT Để có được m ột b ản thi ết k ế cơ s ở d ữ li ệu tốt, ph ản ánh đúng th ế gi ới th ực mà nó cần th ể hi ện, nhân viên thi ết k ế c ần ph ải được cung c ấp m ột ph ươ ng pháp lu ận đúng đắn. Trong nhi ều tr ường h ợp mô hình th ực th ể k ết h ợp là m ột ph ươ ng pháp lu ận nh ư th ế. Tuy nhiên, v ới tính ph ức t ạp ngày càng cao c ủa các h ệ th ống thông tin, có m ột s ố yêu c ầu v ề c ấu trúc d ữ li ệu mà mô hình này không th ể đáp ứng được. Mô hình th ực th ể k ết h ợp m ở r ộng theo đúng tên g ọi c ủa nó là m ột s ự m ở r ộng c ủa mô hình th ực th ể k ết h ợp v ới các khái ni ệm v ề chuyên bi ệt hóa, khái quát hóa, hai th ể hi ện chính c ủa s ự k ế th ừa trong h ướng đố i t ượng c ủa m ột h ệ th ống thông tin. Chuyên bi ệt hóa được xem nh ư là quá trình phân tách các l ớp con t ừ m ột l ớp cha. Vi ệc phân tách có th ể d ựa trên giá tr ị c ủa m ột (s ố) thu ộc tính phân nhóm, ho ặc do ng ười dùng t ự đị nh ngh ĩa. M ột s ố ràng bu ộc khác liên quan đến quá trình chuyên bi ệt hóa bao g ồm: ràng bu ộc không trùng l ắp và ràng bu ộc đầ y đủ (ràng bu ộc toàn ph ần). Ràng bu ộc không trùng l ắp nói r ằng m ột th ực th ể thu ộc l ớp cha ch ỉ có th ể thu ộc nhi ều nh ất m ột l ớp con c ủa phép chuyên bi ệt hóa. Trong khi đó, ràng bu ộc toàn ph ần đả m b ảo m ọi th ực th ể thu ộc l ớp cha ph ải thu ộc ít nh ất m ột l ớp con c ủa phép chuyên bi ệt hóa. Trên th ị tr ường hi ện nay có r ất nhi ều s ản ph ẩm mô hình hóa cơ s ở d ữ li ệu, đa s ố các s ản ph ẩm này đều được xây d ựng trên ngôn ng ữ mô hình hóa h ợp nh ất UML. Do đó, trong ph ần cu ối ch ươ ng này, chúng tôi gi ới thi ệu m ột phép bi ến đổ i đơn gi ản t ừ mô hình th ực th ể k ết h ợp (m ở rộng) sang ngôn ng ữ UML. Để tìm hi ểu chi ti ết hơn v ề UML, đọ c gi ả có th ể xem thêm các tài li ệu tham kh ảo ở cu ối giáo trình này. Email: namth@buh.edu.vn 66
  62. CCHHƯƯƠƠNNGG 444444 MÔ HÌNH D Ữ LI ỆU QUAN H Ệ Mục tiêu Ch ươ ng này t ập trung nghiên c ứu mô hình d ữ li ệu quan h ệ ở ba khía c ạnh: t ổ ch ức dữ li ệu quan h ệ, các thao tác trên d ữ li ệu quan h ệ, và ràng bu ộc toàn v ẹn trên d ữ li ệu quan h ệ. Từ đó, ng ười đọ c được trang b ị các ki ến th ức n ền t ảng v ề mô hình d ữ li ệu được s ử d ụng ph ổ bi ến nh ất hi ện nay. Nội dung  Các khái ni ệm c ơ b ản.  Ràng bu ộc toàn v ẹn trên mô hình d ữ li ệu quan h ệ.  Các toán t ử c ập nh ật trên quan h ệ. Email: namth@buh.edu.vn 71
  63. Giới thi ệu Lịch s ử hình thành và phát tri ển c ủa các h ệ c ơ sở d ữ li ệu đã b ước sang trang m ới kể t ừ khi Ted Codd công b ố công trình nghiên c ứu c ủa mình vào n ăm 1970. Theo Codd, để phát huy t ối đa kh ả n ăng sáng t ạo c ủa ng ười s ử d ụng, các h ệ c ơ s ở d ữ li ệu nên cung c ấp cho h ọ m ột cái nhìn đơ n gi ản, d ễ hi ểu v ề d ữ li ệu mà họ có nhu cầu. Codd đề xu ất s ử d ụng b ảng d ữ li ệu hai chi ều – với tên g ọi là quan h ệ – để mô tả d ữ li ệu trong các h ệ c ơ s ở d ữ li ệu. Vi ệc mô t ả này s ẽ làm cho hệ c ơ s ở d ữ li ệu tr ở nên ph ức t ạp h ơn, th ậm chí, b ản thân các yêu c ầu x ử lý d ữ li ệu c ũng tr ở nên rắc rối h ơn. Tuy nhiên, đối v ới ng ười s ử d ụng, h ọ không c ần quan tâm t ới việc d ữ li ệu được l ưu tr ữ nh ư th ế nào trong b ộ nh ớ, h ọ c ũng không c ần bi ết yêu c ầu c ủa h ọ được th ực thi ra sao; h ọ ch ỉ quan tâm t ới vi ệc làm sao xây d ựng được các câu truy vấn, và chúng cho ra kết qu ả đúng nh ư h ọ mong mu ốn mà thôi. Do v ậy, v ới đề xu ất c ủa Codd, các câu truy v ấn tr ở nên r ất đơn gi ản, có th ể được bi ểu di ễn ở m ức tr ừu t ượng cao, và gần g ũi v ới ng ười s ử d ụng. Trên n ền t ảng ứng d ụng quan h ệ trong vi ệc xây d ựng h ệ c ơ s ở d ữ li ệu, ngôn ng ữ mô t ả truy v ấn m ới được ra đờ i, đó chính là ngôn ng ữ truy v ấn có c ấu trúc SQL. Các s ản ph ẩm th ươ ng m ại đầ u tiên c ủa mô hình d ữ li ệu quan h ệ được công b ố đầu nh ững n ăm 1980, với hai s ản ph ẩm tiêu bi ểu là Oracle DBMS và h ệ th ống SQL/DS trên h ệ điều hành MVS c ủa IBM. T ừ đó đế n nay, trên th ị tr ường xu ất hi ện nhi ều h ệ qu ản tr ị c ơ s ở d ữ li ệu có tên tu ổi ứng d ụng mô hình dữ li ệu này, tiêu bi ểu nh ư là DB2 và Informix Dynamic Server (c ủa IBM), Oracle và RBD (c ủa Oracle), SQLServer và Access (c ủa Microsoft), Đã g ần n ửa th ế k ỷ t ừ khi khái ni ệm mô hình d ữ li ệu quan h ệ ra đờ i, mô hình này vẫn gi ữ vai trò ch ủ đạ o, v ẫn là n ền t ảng cho h ầu h ết các h ệ c ơ s ở d ữ li ệu đang t ồn tại trên th ị tr ường. Chính vì v ậy, mô hình d ữ li ệu quan h ệ là n ội dung b ắt bu ộc đố i với m ọi sinh viên theo h ọc các ch ươ ng trình đào t ạo về công ngh ệ thông tin, và hệ th ống thông tin. Email: namth@buh.edu.vn 72
  64. 4.1 CÁC KHÁI NI ỆM C Ơ B ẢN Mô hình quan h ệ bi ểu di ễn c ơ s ở d ữ li ệu nh ư là t ập h ợp các quan h ệ, m ỗi quan h ệ có th ể được coi là một bảng dữ li ệu hai chi ều g ồm nhi ều c ột và nhi ều hàng. M ỗi hàng trong b ảng (tr ừ hàng tiêu đề) bi ểu di ễn m ột sự v ật tươ ng ứng v ới m ột th ực th ể ho ặc m ột liên k ết trong th ế gi ới th ực. Tên b ảng và tên các c ột (t ức hàng tiêu đề) được dùng để di ễn gi ải ý ngh ĩa c ủa các giá tr ị t ại m ỗi hàng. Tất c ả giá tr ị trong cùng m ột c ột (ngo ại tr ừ tiêu đề c ột) có cùng ki ểu d ữ li ệu. Để b ắt đầ u với mô hình dữ li ệu quan h ệ, chúng ta l ần l ượt tìm hi ểu các khái ni ệm c ơ b ản c ủa mô hình này. 4.1.1 Các khái ni ệm 4.1.1.1 Lược đồ quan h ệ Lược đồ quan h ệ R, th ường được ký hi ệu là R(A 1,A 2, ,A n), trong đó R là tên quan hệ và A1,A 2, ,A n là danh sách các thu ộc tính. Lược đồ quan h ệ được dùng để mô tả quan h ệ, và R được g ọi là tên c ủa quan h ệ được mô t ả. B ậc c ủa quan h ệ là s ố lượng các thu ộc tính có trong l ược đồ quan h ệ. VÍ D Ụ 4.1: Lược đồ quan h ệ EMPLOYEE. Xét quan h ệ EMPLOYEE có l ược đồ nh ư sau: EMPLOYEE (ESSN, EName, ESalary, ESex, EBirthdate, EStartdate, DNum, supervisorSSN) Quan h ệ này có tên là EMPLOYEE gồm tám thu ộc tính, ch ứa thông tin v ề nhân viên trong công ty.  4.1.1.2 Thu ộc tính và mi ền giá tr ị c ủa thu ộc tính Mỗi thu ộc tính là m ột tính ch ất riêng bi ệt c ủa đối t ượng c ần được l ưu tr ữ trong c ơ sở d ữ li ệu. Các thu ộc tính được xác đị nh b ởi m ột tên g ọi, ki ểu giá tr ị và mi ền giá tr ị c ủa chúng. M ỗi thu ộc tính đề u ph ải thu ộc m ột ki ểu d ữ li ệu c ơ b ản nào đó. Ki ểu dữ li ệu có th ể là vô h ướng (String, Text, Character, Number, Logical, ) hoặc các ki ểu d ữ li ệu có c ấu trúc được đị nh ngh ĩa d ựa trên các ki ểu d ữ li ệu đã có s ẵn. Mỗi Email: namth@buh.edu.vn 73
  65. thu ộc tính ch ỉ có th ể nh ận nh ững giá tr ị trong m ột t ập con c ủa ki ểu d ữ li ệu. T ập hợp các giá tr ị mà thu ộc tính A có th ể nh ận được g ọi là mi ền giá tr ị của thu ộc tính A, và được ký hi ệu là dom(A) . VÍ D Ụ 4.2: Mi ền giá tr ị c ủa thu ộc tính. Mỗi thu ộc tính trong quan h ệ EMPLOYEE (ví d ụ 4.1) có tên riêng, th ể hi ện ý ngh ĩa thông tin được thu ộc tính l ưu tr ữ và có mi ền giá tr ị riêng. Do đó l ược đồ quan h ệ EMPLOYEE có th ể được vi ết l ại nh ư sau: EMPLOYEE (ESSN:int, EName:string, ESalary:int, ESex:int, EBirthdate:date, EStartdate:date, DNum:int,supervisorSSN:int)  4.1.1.3 Bộ Các hàng trong quan h ệ, ngo ại tr ừ hàng tiêu đề ch ứa tên các thu ộc tính, được g ọi là các b ộ c ủa quan h ệ. M ỗi thành ph ần trong b ộ ch ứa giá tr ị t ươ ng ứng v ới t ừng thu ộc tính c ủa quan h ệ. 4.1.1.4 Th ể hi ện quan h ệ Th ể hi ện quan h ệ tại m ột th ời điểm bao g ồm m ột s ố h ữu h ạn các b ộ bi ểu di ễn tr ạng thái cụ th ể c ủa th ế gi ới th ực, và khi tr ạng thái c ủa th ế gi ới th ực thay đổ i, th ể hi ện quan h ệ c ũng thay đổ i theo, và tr ở thành m ột th ể hi ện quan h ệ m ới. Nói cách khác, th ể hi ện c ủa quan h ệ luôn luôn bi ến đổ i. Trong khi đó, lược đồ quan h ệ R rất ít khi b ị thay đổ i, ngo ại tr ừ nh ững tr ường h ợp đặ c bi ệt – ví d ụ nh ư khi chúng ta cần thêm thu ộc tính mới để th ể hi ện m ột thông tin m ới ch ưa có trong quan h ệ. Vi ệc thay đổ i l ược đồ quan h ệ có th ể phát sinh nhi ều v ấn đề , b ởi vì chúng ta c ần ph ải thay đổ i tất c ả các b ộ hi ện có trong quan h ệ. VÍ D Ụ 4.3: Th ể hi ện c ủa quan h ệ EMPLOYEE. Hình 4.1 minh h ọa m ột th ể hi ện c ủa quan h ệ EMPLOYEE . M ỗi b ộ trong quan h ệ (m ỗi hàng trong b ảng) bi ểu di ễn m ột th ực th ể nhân viên c ụ th ể. Chúng ta bi ểu di ễn Email: namth@buh.edu.vn 74
  66. quan h ệ nh ư là b ảng, với m ỗi b ộ được bi ểu di ễn nh ư là m ột hàng, và m ỗi thu ộc tính t ươ ng ứng v ới tiêu đề c ột. Hình 4.1. Một th ể hi ện c ủa quan h ệ EMPLOYEE  4.1.1.5 Lược đồ c ơ s ở d ữ li ệu quan h ệ Trong mô hình quan h ệ, c ơ s ở d ữ li ệu bao g ồm nhi ều quan h ệ. T ập h ợp các l ược đồ quan h ệ c ủa c ơ s ở d ữ li ệu được g ọi là l ược đồ c ơ s ở d ữ li ệu, hay ng ắn g ọn là lược đồ c ơ s ở d ữ li ệu. 4.1.1.6 Cơ s ở d ữ li ệu m ẫu Hình 4.2 minh ho ạ l ược đồ c ơ s ở d ữ li ệu COMPANY với các l ược đồ quan h ệ được mô t ả chi ti ết nh ư sau: DEPARTMENT Quan h ệ này l ưu tr ữ thông tin v ề phòng ban trong công ty bao g ồm mã s ố phòng ban, tên phòng ban, mã s ố tr ưởng phòng ban và th ời điểm được b ổ nhi ệm. EMPLOYEE Quan h ệ l ưu tr ữ thông tin v ề nhân viên trong công ty bao g ồm mã s ố nhân viên, h ọ tên, m ức l ươ ng, gi ới tính. M ỗi nhân viên thu ộc biên ch ế của một phòng ban, và ch ịu s ự giám sát chéo c ủa m ột nhân viên khác. DEPENDENT Quan h ệ l ưu tr ữ thông tin v ề thân nhân c ủa nhân viên trong công ty, bao g ồm tên thân nhân, mã s ố nhân viên t ươ ng ứng, gi ới tính, ngày sinh, và m ối quan h ệ gia đình v ới nhân viên. PROJECT Email: namth@buh.edu.vn 75