Bài giảng Cơ sở dữ liệu - Hồ Cẩm Hà

pdf 163 trang hapham 2870
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Cơ sở dữ liệu - Hồ Cẩm Hà", để 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:

  • pdfbai_giang_co_so_du_lieu_ho_cam_ha.pdf

Nội dung text: Bài giảng Cơ sở dữ liệu - Hồ Cẩm Hà

  1. C¬ së d÷ liÖu Môc tiªu ¾Cung cÊp nh÷ng kiÕn thøc c¬ b¶n vÒ nguyªn lý tæ chøc vµ khai th¸c ®óng ®¾n mét hÖ CSDL, ®Æc biÖt trong m« h×nh quan hÖ. ¾Cung cÊp vµ rÌn cho sinh viªn kh¶ n¨ng thiÕt kÕ (logic) mét hÖ CSDL quan hÖ. ¾Thùc hµnh cµi ®Æt c¸c rµng buéc toµn vÑn vµ tèi −u hãa biÓu thøc t×m kiÕm trªn SQL Server Hồ Cẩm Hà - ĐH Sư phạm Hà nội1
  2. Tµi liÖu tham kh¶o 1.Hå ThuÇn, Hå CÈm Hµ, C¸c hÖ c¬ së d÷ liÖu: LÝ thuyÕt vµ thùc hµnh, 2 tËp, NXBGD 2004-2005. 2 NguyÔn Kim Anh, Nguyªn lÝ c¸c hÖ CSDL, NXB §¹i häc quèc gia, 2004 3. Jeffrey D. Ullman, Nguyªn lý c¸c hÖ c¬ së d÷ liÖu vµ c¬ së tri thøc, Biªn dÞch : TrÇn §øc Quang tËp 1, tËp 2, NXB Thèng kª, 1999. 4. §ç Trung TuÊn, C¬ së d÷ liÖu quan hÖ, NXB Gi¸o dôc, 1998 Hồ Cẩm Hà - ĐH Sư phạm Hà nội2
  3. Tµi liÖu tham kh¶o 5. Date C.J., “An introduction to database systems”, seventh edition, Addison. Wesley, 2000. 6. Hector Garcia - Monila, Ullman J.D., Jennifer Widom “Database Systems: The complete Book", Prentice Hal, 2002 . 7. Thomas Connolly, Carolyn Begg, Anne Strachan, "Database systems. A Practical Approach to Design, Implementation, and Management", Second Edition, Addison Wesley Longman Limited 1999. 8. Ullman J.D., J. Widom “A first course in Database Systems", Prentice - Hall, 1997. Hồ Cẩm Hà - ĐH Sư phạm Hà nội3
  4. HỆ THỐNG THÔNG TIN
  5. Chương1. Khái quát về các hệ CSDL 1.CSDL là gì? „ tích hợp các dữ liệu phản ánh hoạt động (operational data) của một tổ chức „ lưu trữ trên các thiết bị nhớ „ nhiều người dùng với các mục đích khác nhau Tại sao cần đến các hệ CSDL Hồ Cẩm Hà - ĐH Sư phạm Hà nội5
  6. HÖ qu¶n trÞ c¬ së d÷ liÖu lµ g×? PhÇn mÒm cho phÐp ng−êi dïng giao tiÕp víi CSDL, cung cÊp m«i tr−êng thuËn lîi vµ hiÖu qu¶ ®Ó t×m kiÕm vµ l−u tr÷ th«ng tin cña CSDL
  7. 2. KiÕn tróc ba møc cña mét hÖ CSDL Môc ®Ých : sù t¸ch biÖt quan niÖm vÒ CSDL cña nhiÒu ng−êi sö dông víi nh÷ng chi tiÕt biÓu diÔn vÒ vËt lý cña CSDL
  8. 3. L−îc ®å vµ thÓ hiÖn cña CSDL „ l−îc ®å CSDL (database schema) „ thÓ hiÖn cña CSDL (database instance) Hồ Cẩm Hà - ĐH Sư phạm Hà nội8
  9. 4. §éc lËp d÷ liÖu Lược đồ ngoài Lược đồ ngoài Lược đồ ngoài Ánh xạ mức ngoài / mức khái niệm Độc lập dữ liệu mức logíc Lược đồ khái niệm Ánh xạ mức khái Độc lập dữ liệu mức vật lý niệm / mức trong Lược đồ trong Hồ Cẩm Hà - ĐH Sư phạm Hà nội9
  10. §éc lËp d÷ liÖu „ §éc lËp vËt lý (lµ g×? v× sao ph¶i thay ®æi l−îc ®å vËt lý) „ §éc lËp logic (lµ g×? v× sao ph¶i thay ®æi l−îc ®å logic) Hồ Cẩm Hà - ĐH Sư phạm Hà nội10
  11. The Range of Database Applications „ Personal Database – standalone desktop database „ Workgroup Database – local area network (<25 users) „ Department Database – local area network (25-100 users) „ Enterprise Database – wide-area network (hundreds or thousands of users) Hồ Cẩm Hà - ĐH Sư phạm Hà nội11
  12. Typical data from a personal computer database Hồ Cẩm Hà - ĐH Sư phạm Hà nội12
  13. Workgroup database with local area network Hồ Cẩm Hà - ĐH Sư phạm Hà nội13
  14. An enterprise data warehouse Hồ Cẩm Hà - ĐH Sư phạm Hà nội14
  15. Components of the Database Environment „ CASE Tools – computer-aided software engineering „ Repository – centralized storehouse of metadata „ Database Management System (DBMS) –software for managing the database „ Database – storehouse of the data „ Application Programs – software using the data „ User Interface – text and graphical displays to users „ Data Administrators – personnel responsible for maintaining the database „ System Developers – personnel responsible for designing databases and software „ End Users – people whoHồ C ẩusem Hà - theĐH S ưapplications phạm Hà nội15 and databases
  16. Components of the database environment Hồ Cẩm Hà - ĐH Sư phạm Hà nội16
  17. 5.Nh÷ng c¸ch tiÕp cËn mét CSDL M« h×nh d÷ liÖu lµ mét tËp c¸c kh¸i niÖm vµ ký ph¸p dïng ®Ó m« t¶ d÷ liÖu, c¸c mèi quan hÖ cña d÷ liÖu, c¸c rµng buéc trªn d÷ liÖu cña mét tæ chøc. Hồ Cẩm Hà - ĐH Sư phạm Hà nội17
  18. M« h×nh d÷ liÖu „ phÇn m« t¶ cÊu tróc cña CSDL; „ phÇn m« t¶ c¸c thao t¸c, ®Þnh nghÜa c¸c phÐp to¸n ®−îc phÐp trªn d÷ liÖu; „ phÇn m« t¶ c¸c rµng buéc toµn vÑn ®Ó ®¶m b¶o sù chÝnh x¸c cña d÷ liÖu. Hồ Cẩm Hà - ĐH Sư phạm Hà nội18
  19. M« h×nh d÷ liÖu „ C¸c m« h×nh logic trªn c¬ së ®èi t−îng (Object-Based Data Models) „ C¸c m« h×nh logic trªn c¬ së b¶n ghi (Record-Based Data Models) Hồ Cẩm Hà - ĐH Sư phạm Hà nội19
  20. M« h×nh d÷ liÖu (Object-Based Data Models) „ M« h×nh thùc thÓ - mèi quan hÖ „ M« h×nh h−íng ®èi t−îng „ M« h×nh d÷ liÖu ng÷ nghÜa „ M« h×nh d÷ liÖu chøc n¨ng Hồ Cẩm Hà - ĐH Sư phạm Hà nội20
  21. 6. HÖ qu¶n trÞ c¬ së d÷ liÖu Mét hÖ qu¶n trÞ c¬ së d÷ liÖu ( Database Management System, viÕt t¾t lµ DBMS) lµ mét tËp hîp c¸c ch−¬ng tr×nh cho phÐp ng−êi dïng ®Þnh nghÜa, t¹o lËp, b¶o tr× c¸c CSDL vµ cung cÊp c¸c truy cËp cã ®iÒu khiÓn ®Õn c¸c CSDL nµy (a)Ng«n ng÷ ®Þnh nghÜa d÷ liÖu (Data Definition Language, DDL): (b)Ng«n ng÷ thao t¸c d÷ liÖu (Data Manipulation Language, DML) (c)C¸c kiÓm so¸t, c¸c ®iÒu khiÓn ®èi víi viÖc truy cËp vµo CSDL Hồ Cẩm Hà - ĐH Sư phạm Hà nội21
  22. 6.Database Management System Application #1 Application #2 Database DBMSDBMS containing centralized shared data Application #3 DBMS manages data resources like an operating system manages hardware resources Hồ Cẩm Hà - ĐH Sư phạm Hà nội22
  23. Ng«n ng÷ ®Þnh nghÜa d÷ liÖu (DDL): Cho phÐp ng−êi dïng ®Þnh nghÜa CSDL: cho phÐp ng−êi dïng ®Æc t¶ c¸c kiÓu vµ c¸c cÊu tróc d÷ liÖu, ®Æc t¶ c¸c rµng buéc trªn c¸c d÷ liÖu l−u tr÷ trong CSDL. „ Tõ ®iÓn d÷ liÖu lµ mét tÖp c¸c d÷ liÖu vÒ d÷ liÖu. „ CÊu tróc l−u tr÷ vµ c¸c ph−¬ng ph¸p truy cËp cña hÖ CSDL sÏ ®−îc ®Æc t¶ bëi mét tËp ®Þnh nghÜa viÕt b»ng mét DDL x¸c ®Þnh. Hồ Cẩm Hà - ĐH Sư phạm Hà nội23
  24. Ng«n ng÷ thao t¸c d÷ liÖu (DML) „ T×m kiÕm th«ng tin l−u tr÷ trong CSDL; „ ChÌn thªm th«ng tin míi vµo CSDL; „ Xo¸ bá th«ng tin khái CSDL; „ Söa ®æi th«ng tin ®−îc l−u tr÷ trong CSDL. TÝnh thñ tôc/phi thñ tôc (procedure/nonprocedure) Hồ Cẩm Hà - ĐH Sư phạm Hà nội24
  25. C¸c kiÓm so¸t, c¸c ®iÒu khiÓn ®èi víi viÖc truy cËp vµo CSDL „ hÖ thèng an ninh (security) „ hÖ thèng rµng buéc toµn vÑn duy tr× tÝnh nhÊt qu¸n cña d÷ liÖu „ hÖ thèng ®iÒu khiÓn t−¬ng tranh „ hÖ thèng ®iÒu khiÓn kh«i phôc c¬ së d÷ liÖu „ tõ ®iÓn d÷ liÖu (catalog). Hồ Cẩm Hà - ĐH Sư phạm Hà nội25
  26. ChÊt l−îng DBMS „ VÒ c¬ b¶n hÖ qu¶n trÞ CSDL cung cÊp c¸c ph−¬ng tiÖn nªu trªn, nh−ng c¸c hÖ kh¸c nhau sÏ kh¸c nhau vÒ chÊt l−îng vµ kh¶ n¨ng ®¸p øng nhu cÇu thùc tÕ. „ C¸c hÖ qu¶n trÞ CSDL lu«n ph¸t triÓn theo h−íng ®¸p øng c¸c ®ßi hái ngµy cµng cao h¬n cña ng−êi dïng, bëi vËy c¸c chøc n¨ng cña DBMS ngµy cµng ®−îc më réng h¬n. Hồ Cẩm Hà - ĐH Sư phạm Hà nội26
  27. Vµi nÐt vÒ qu¸ tr×nh ph¸t triÓn DBMSs „ 1960: Mét trong nh÷ng hÖ qu¶n trÞ ®Çu tiªn lµ IMS (Information Management System) cña h·ng IBM (m« h×nh d÷ liÖu ph©n cÊp). „ Gi÷a nh÷ng n¨m 60 (thÕ kû 20), IDS (Integrated Data Store) ra ®êi ®¸nh dÊu sù xuÊt hiÖn ®Çu tiªn cña mét hÖ qu¶n trÞ CSDL dùa trªn m« h×nh d÷ liÖu m¹ng. ThÕ hÖ thø nhÊt. „ N¨m 1976, hÖ qu¶n trÞ CSDL ®Çu tiªn dùa trªn m« h×nh quan hÖ cña h·ng IBM mang tªn System-R ra ®êi. Tõ nh÷ng n¨m 1980 ®Õn nay hµng tr¨m hÖ qu¶n trÞ CSDL kiÓu quan hÖ ra ®êi cho c¶ m«i tr−êng m¸y tÝnh lín vµ c¶ m¸y tÝnh c¸ nh©n. ThÕ hÖ thø hai. „ Tõ nh÷ng n¨m 1990, b¾t ®Çu x©y dùng DBMS kiÓu h−íng ®èi t−îng vµ h−íng ®èi t−îng-quan hÖ. ThÕ hÖ thø ba. Hồ Cẩm Hà - ĐH Sư phạm Hà nội27
  28. Evolution of DB Systems „ Flat files - 1960s - 1980s „ Hierarchical – 1970s - 1990s „ Network – 1970s - 1990s „ Relational – 1980s - present „ Object-oriented – 1990s - present „ Object-relational – 1990s - present „ Data warehousing – 1980s - present „ Web-enabledHồ C–ẩm 1990sHà - ĐH Sư ph-ạmp Hàresent nội28
  29. C¸c chøc n¨ng cña mét hÖ qu¶n trÞ CSDL (1) Cung cÊp cho ng−êi dïng kh¶ n¨ng l−u tr÷, truy xuÊt vµ cËp nhËt d÷ liÖu. (2) Cung cÊp cho ng−êi dïng mét tõ ®iÓn d÷ liÖu (catalog) (3) Hç trî c¸c giao t¸c (transaction) (4) Cung cÊp c¸c dÞch vô ®iÒu khiÓn t−¬ng tranh ®Ó ®¶m b¶o tÝnh nhÊt qu¸n d÷ liÖu khi cã nhiÒu phiªn lµm viÖc víi CSDL (5) Cung cÊp mét c¬ chÕ ®Ó kh«i phôc d÷ liÖu (6) Cung cÊp c¸c dÞch vô b¶n quyÒn (7) Hç trî cho truyÒn th«ng d÷ liÖu (8) Cung cÊp c¸c dÞch vô ®¶mHồ C ẩb¶om Hà tÝnh- ĐH S toµnư phạm vÑn Hà n ộd÷i29liÖu.
  30. C¸c chøc n¨ng cña mét hÖ qu¶n trÞ CSDL (tiÕp) Ngoµi 8 chøc n¨ng trªn ng−êi ta cßn mong muèn hÖ qu¶n trÞ CSDL cung cÊp thªm hai dÞch vô n÷a: (9) Cung cÊp c¸c dÞch vô hç trî cho tÝnh ®éc lËp d÷ liÖu. (10) Cung cÊp mét sè dÞch vô tiÖn Ých gióp DBA. Hồ Cẩm Hà - ĐH Sư phạm Hà nội30
  31. KiÕn tróc cña mét hÖ qu¶n trÞ CSDL Trình ứng dụng Truy vấn Lược đồ cơ sở dữ liệu DBMS Bộ tiền xử lí Bộ xử lí truy vấn Chương trình ngôn ngữ thao dịch ngôn ngữ tác dữ liệu khai báo dữ liệu Mã chương trình Bộ quản lí cơ sở Bộ quản lí từ dữ liệu điển Phương thức Bộ quản lí tệp truy cập Bộ đệm của hệ thống Cơ sở dữ liệu và từ điển dữ liệu Hồ Cẩm Hà - ĐH Sư phạm Hà nội31
  32. Mã đích Bộ xử lý yêu cầu Bộ quản lý chương trình từ điển dữ liệu DM Trình quản lý quyền truy cập Trình kiểm tra Trình xử lý Trình tối ưu hóa tính toàn vẹn câu lệnh câu hỏi Trình quản lý Trình lập lịch các giao tác DM Trình quản lý Trình quản lý khôi bộ nhớ đệm phục dữ liệu Phương pháp truy cập Bộ quản lí tệp Các vùng nhớ đệm của hệ thống Hồ CẩCmơ sHàở dữ -li ệĐu vHà tShưư m phục ạm Hà nội32 hệ thống/ từ điển dữ liệu
  33. Ho¹t ®éng cña mét ch−¬ng tr×nh øng dông th«ng qua c¸c thµnh phÇn cña DBMS Vùng đệm 1àm việc của Lược đồ ngoài chương trình 10 Chương trình (External ứng dụng A ứng dụng A a Scheme) 9 2 8b Hệ quản trị cơ sở dữ liệu Lược đồ khái niệm (logical Vùng đệm 1àm 8a b Scheme) việc của hệ quản trị cơ sơ dữ liệu 3 7 Hệ điều hành 6 c Lược đồ vật lý 4 4 (Physical Scheme) CSDL 5 Hệ quản lí Nhập / xuất (I/O) Hồ Cẩm Hà - ĐH Sư phạm Hà nội33
  34. S¬ l−îc vÒ c¸c kiÕn tróc hÖ qu¶n trÞ CSDL ®a ng−êi dïng H×nh 1.11 KiÕn tróc hÖ xö lý tõ xa (teleprocessing) Hồ Cẩm Hà - ĐH Sư phạm Hà nội34
  35. S¬ l−îc vÒ c¸c kiÕn tróc hÖ qu¶n trÞ CSDL ®a ng−êi dïng Trạm làm việc 2 Trạm làm việc 1 LAN Trạm làm việc 3 Các yêu cầu về dữ Các tệp được gửi về trạm làm việc liệu Cơ sở dữ liệu File-server H×nh 1.12 KiÕn tróc tÖp-m¸y chñ (file - server) File - server l−u gi÷ c¸c tÖp d÷ liÖu mµ c¸c øng dông vµ hÖ QTCSDL cÇn ®Õn. Tuy nhiªn c¸c øng dông vµ hÖ QTCSDL ch¹y trªn mçi tr¹m lµm viÖc (workstation) vµ yªu cÇu c¸c tÖp d÷ liÖu ë file -HsồerverCẩm Hà khi - ĐH cÇnSư ph ạ®Õnm Hà nội35
  36. S¬ l−îc vÒ c¸c kiÕn tróc hÖ qu¶n trÞ CSDL ®a ng−êi dïng Máy khách 2 Máy khách 1 LAN Máy khách 3 Các yêu cầu về dữ liệu Dữ liệu được chọn gửi về máy khách Cơ sở dữ liệu M¸y chñ (với DBMS) C¸c tiÕn tr×nh t−¬ng t¸c víi nhau t¹o nªn hÖ thèng: tiÕn tr×nh m¸y kh¸ch yªu cÇu cung cÊp tµi nguyªn nµo ®ã vµ tiÕn tr×nh m¸y chñ cung cÊp tµi nguyªn ®ã. Hai tiÕn tr×nh nµy kh«ng nhÊt thiÕt ph¶i n»m trªn cïng mét m¸y tÝnh. Hồ Cẩm Hà - ĐH Sư phạm Hà nội36
  37. KiÕn tróc m¸y kh¸ch-m¸y chñ (client - server) „ Kh¶ n¨ng truy cËp réng r·i ®Õn c¸c CSDL. „ N©ng cao kh¶ n¨ng thùc hiÖn: nÕu tiÕn tr×nh server vµ c¸c tiÕn tr×nh client ë trªn c¸c m¸y tÝnh kh¸c nhau th× c¸c CPU kh¸c nhau cã thÓ cïng ch¹y song song, mçi CPU thùc hiÖn tiÕn tr×nh cña nã. „ Chi phÝ cho phÇn cøng cã thÓ ®−îc gi¶m do chØ cÇn server cã cÊu h×nh ®ñ m¹nh ®Ó l−u tr÷ vµ qu¶n trÞ c¬ së d÷ liÖu. „ Chi phÝ cho truyÒn th«ng ®−îc gi¶m do mét phÇn trong c¸c thao t¸c cña øng dông ®−îc gi¶i quyÕt trªn client, truyÒn th«ng trªn m¹ng chØ gåm: yªu cÇu vÒ truy cËp c¬ së d÷ liÖu cña client göi ®Õn server vµ d÷ liÖu kÕt qu¶ tõ server göi cho client. „ N©ng cao ®−îc kh¶ n¨ng ®¶m b¶o tÝnh nhÊt qu¸n cña d÷ liÖu. Server cã thÓ kiÓm so¸t ®−îc tÝnh toµn vÑn bëi c¸c rµng buéc nµy ®−îc ®Þnh nghÜa vµ kiÓm tra chØ t¹i ®ã. „ KiÕn tróc nµy phï hîp víi viÖc x©y dùng c¸c hÖ thèng cã tÝnh më. Hồ Cẩm Hà - ĐH Sư phạm Hà nội37
  38. Vai trß cña con ng−êi trong hÖ CSDL „ Ng−êi qu¶n trÞ CSDL „ Ng−êi thiÕt kÕ CSDL „ Ng−êi lËp tr×nh øng dông „ Ng−êi sö dông ®Çu cuèi Hồ Cẩm Hà - ĐH Sư phạm Hà nội38
  39. Tãm t¾t ch−¬ng 1 „ Kh¸i niÖm CSDL, hÖ qu¶n trÞ CSDL „ Chøc n¨ng, vai trß, kiÕn tróc cña DBMS „ KiÕn tróc cña mét hÖ CSDL „ Kh¸i niÖm m« h×nh d÷ liÖu „ M« h×nh quan hÖ „ KiÕn tróc Clien-Server Hồ Cẩm Hà - ĐH Sư phạm Hà nội39
  40. Xin cảm ơn !
  41. Ch−¬ng 2 CƠ SỞ DỮ LIỆU QUAN HỆ Hồ Cẩm Hà
  42. Các khái niệm cơ bản „ Miền (Domain) Để đặc tả một miền người ta chỉ ra một tên miền, một kiểu dữ liệu và khuôn dạng dữ liệu. Ví dụ 3.2: Miền Ma_Sv là tập hợp các dãy ký tự có độ dài từ 5 đến 8, bắt đầu là một chữ cái. Miền Ho_ten (Họ tên) là tập các dãy chữ cái có độ dài không quá 35. Miền Đien_thoai (Số điện thoại) là tập hợp các dãy 7 chữ số hợp lệ đối với số điện thoại. Hồ Cẩm Hà Chương 2
  43. Các khái niệm cơ bản „ Quan hệ (Relation) Cho một quan hệ r xác định trên tập thuộc tính Ω = {A1, A2, , An }. Khi đór ⊆ Dom(A1) × Dom(A2) × Dom(A3) × × Dom(An) „ Như vậy quan hệ r là một tập hợp các n_bộ có dạng „ r = { (a1, a2 , . . ., an)⎮ ai ∈ Dom(Ai), i = 1, 2, ,n }. Hồ Cẩm Hà Chương 2
  44. Ví dụ Hồ Cẩm Hà Chương 2
  45. Các khái niệm cơ bản „ Lược đồ quan hệ (Relation scheme) R = Ω là tập hữu hạn các thuộc tính của quan hệ, F là tập các điều kiện giữa các thuộc tính(ràng buộc toàn vẹn). Hồ Cẩm Hà Chương 2
  46. Các khái niệm cơ bản „ Với lược đồ quan hệ R, theo thời gian, nhiều quan hệ có cấu trúc và ràng buộc toàn vẹn được mô tả bởi lược đồ này. Mỗi quan hệ như vậy còn được gọi là một thể hiện của lược đồ R. „ ký hiệu r(R) „ ký hiệu t[X], t[Ai] với X ⊆Ω Hồ Cẩm Hà Chương 2
  47. Các tính chất đặc trưng của một quan hệ „ Một quan hệ có một tên phân biệt với tên các quan hệ khác „ Mỗi ô trong bảng (quan hệ) chứa một giá trị nguyên tố „ Mỗi thuộc tính trong quan hệ có một tên phân biệt „ Các giá trị của một thuộc tính thuộc cùng một miền Hồ Cẩm Hà Chương 2
  48. Các tính chất đặc trưng của một quan hệ „ Thứ tự các thuộc tính là không quan trọng vì quan hệ là một tập hợp. „ Các bộ trong quan hệ là phân biệt, nghĩa là không có hai bộ giống hệt nhau trong một quan hệ „ Thứ tự các bộ không quan trọng về mặt lý thuyết Hồ Cẩm Hà Chương 2
  49. Ví dụ Hồ Cẩm Hà Chương 2
  50. Gi¸ trÞ null „ Ch−a biÕt „ Kh«ng c㠄 Kh«ng biÕt cã hay kh«ng Hồ Cẩm Hà Chương 2
  51. Các khái niệm cơ bản „ Khóa của quan hệ Siêu khóa của một lược đồ quan hệ R là một tập hợp gồm một hay nhiều thuộc tính của lược đồ R có tính chất xác định duy nhất một bộ trong mỗi thể hiện của R. „ Khóa của một lược đồ quan hệ là một siêu khóa của lược đồ này sao cho mọi tập con thực sự của nó không là siêu khóa Hồ Cẩm Hà Chương 2
  52. Các khái niệm cơ bản „ Khóa dự tuyển (candidate key) „ Khóa chính (primary key) „ thuộc tính khóa, thuộc tính không khóa „ Khóa ngoài của một lược đồ quan hệ là một tập hợp gồm một hay nhiều thuộc tính là khóa của một lược đồ quan hệ khác. Hồ Cẩm Hà Chương 2
  53. Hồ Cẩm Hà Chương 2
  54. C¸c rµng buéc toµn vÑn „ Rµng buéc thùc thÓ (khãa) „ Rµng buéc tham chiÕu „ Rµng buéc ng÷ nghÜa Hồ Cẩm Hà Chương 2
  55. Các thao tác cập nhật dữ liệu trên các quan hệ „ Phép thêm bộ (Insert) INSERT INSERT Hồ Cẩm Hà Chương 2
  56. Các thao tác cập nhật dữ liệu trên các quan hệ „ Phép xóa (Delete) DELETE DELETE Hồ Cẩm Hà Chương 2
  57. Các thao tác cập nhật dữ liệu trên các quan hệ „ Phép sửa đổi (Update) MODIFY MODIFY Hồ Cẩm Hà Chương 2
  58. Tãm t¾t ch−¬ng 2 „ lược đồ quan hệ (cấu trúc của quan hệ và các ràng buộc) „ quan hệ là một bảng với tất cả các bộ đang tồn tại trong đó, bảng này là một thể hiện của lược đồ quan hệ. „ siêu khóa là một tập thuộc tính xác định các bộ một cách duy nhất trong quan hệ. „ khóa dự tuyển là các siêu khóa nhỏ nhất. „ Khóa chính là một khóa dự tuyển được chọn dùng để nhận diện các bộ. „ Khóa ngoài của một quan hệ là một tập thuộc tính trong một quan hệ có vai trò làm khóa dự tuyển trong một quan hệ khác. „ Ràng buộc toàn vẹn: thực thể, tham chiếu, ngữ nghĩa Hồ Cẩm Hà Chương 2
  59. Xin cảm ơn ! Hồ Cẩm Hà 19
  60. Ch−¬ng 3 Ngôn ngữ thao tác dữ liệu
  61. Ngôn ngữ đại số quan hệ „ Ngôn ngữ đại số quan hệ là cơ sở quan trọng của một ngôn ngữ bậc cao được sử dụng để thao tác trên các quan hệ. „ Các phép toán của đại số quan hệ chia thành hai nhóm (tập hợp và đặc trưng) Hồ Cẩm Hà Chương 3 2
  62. Các phép toán tập hợp „ Phép hợp: r ∪s = {t⏐ t∈r hoặc t∈s} „ Phép giao: r ∩ s = {t⏐ t ∈ r và t ∈ s} „ Phép hiệu: r – s = {t⏐ t ∈ r và t ∉ s} r ∪ (s ∪ t) = (r ∪ s) ∪ t r ∩ (s ∩ t) = (r ∩ s) ∩ t Hồ Cẩm Hà Chương 3 3
  63. Các phép toán tập hợp „ Phép tích Descartes: r × s = {t⏐t=(a1, a2, ,an, b1, b2, ,bm), (a1, a2, ,an) ∈ r và (b1, b2, ,bm)∈s } Như vậy nếu r có k1 bộ, s có k2 bộ thì r × s có k1× k2 bộ. Hồ Cẩm Hà Chương 3 4
  64. Các phép toán tập hợp „ Phép chia: r r÷s ={t⏐t=(am+1,am+2, ,an): ∀(a1, a2, ,am) ∈ s, (a1, a2, ,am, am+1, ,an) ∈ r } Hồ Cẩm Hà Chương 3 5
  65. Các phép toán đặc biệt trên quan hệ Phép chọn σC(r) = {t/ t∈r, C(t) = TRUE} Ví du σ ((MA_DU_AN= D1) ∨ (LUONG ≥ 3500)) (PHAN_CONG) Hồ Cẩm Hà Chương 3 6
  66. Các phép toán đặc biệt trên quan hệ Phép chiếu ΠX(r) = {t[X]/ t ∈ r} Ví du ΠHOTEN, LUONG(PHAN_CONG) Hồ Cẩm Hà Chương 3 7
  67. Các phép toán đặc biệt trên quan hệ Phép kết nối (join) Khái niệm ” xếp cạnh nhau”: Cho bộ p =(p1, p2 , , pn) và bộ q =(q1, q2 , , qm). Xếp cạnh nhau của p và q : (p,q) = {p1, p2 , , pn, q1, q2 , , qm } r ⋈ Ai θ Bj s = {(t, u)/ t ∈ r, u ∈ s và t[Ai] θ u[Bj]} Hồ Cẩm Hà Chương 3 8
  68. Các phép toán đặc biệt trên quan hệ Phép kết nối (join) r ⋈ Ai θ Bj s = {(t, u)/ t ∈ r, u ∈ s và t[Ai] θ u[Bj]} Trường hợp θ là “=” gọi là kết nối bằng kết nối tự nhiên sử dụng kí hiệu r * s (hoặc r ⋈ s ) Ví dụ NHA_CUNG_CAP ⋈DIACHI≠NOI-SXUATSAN_PHAM Hồ Cẩm Hà Chương 3 9
  69. Các phép toán đặc biệt trên quan hệ Phép kết nối (join) kết nối tự nhiên sử dụng kí hiệu r * s (hoặc r ⋈ s ) Ví dụ NHA_CUNG_CAP * CUNG_UNG Hồ Cẩm Hà Chương 3 10
  70. Các phép toán đặc biệt trên quan hệ Phép kết nối nửa (semi join) r ⊲F s = ΠA(r ⋈ F s ) Ví du CUNG_UNG SAN_PHAM ⊲ F với F là điều kiện: (CUNG_UNG.MA_SP = SAN_PHAM.MA_SP) AND (SOLUONG>1500). Hồ Cẩm Hà Chương 3 11
  71. Các phép toán đặc biệt trên quan hệ Phép kết nối ngoài trái (left outer join) kết nối ngoài phải (right outer join) (Đọc tài liệu) Hồ Cẩm Hà Chương 3 12
  72. Các phép toán quan hệ bổ sung (Additional Relational Operations) Các hàm kết tập „ hàm tính tổng (SUM) „ hàm tính trung bình cộng (AVERAGE) „ hàm tính giá trị lớn nhất (MAX) „ hàm tính giá trị nhỏ nhất (MIN) „ hàm đếm các bộ giá trị (COUNT) „ hàm tính tổng (SUM) Hồ Cẩm Hà Chương 3 13
  73. Các phép toán quan hệ bổ sung (Additional Relational Operations) Các phép gộp nhóm f (r) Ví dụ MA_PHONG f COUNT MANV, AVERAGE LUONG (NHAN_VIEN) Hồ Cẩm Hà Chương 3 14
  74. Chú ý (1) Kết quả áp dụng một hàm kết tập là một quan hệ chứ không phải là một đại lượng vô hướng kể cả khi nó chỉ gồm một giá trị. Các bộ trùng lặp trong mỗi nhóm không bị loại bỏ khỏi nhóm khi thực hiện một hàm kết tập. (2) Một số phép toán có thể được biểu diễn theo các phép toán khác. Hồ Cẩm Hà Chương 3 15
  75. Dùng các biểu thức đại số quan hệ biểu diễn câu hỏi „ Câu hỏi 1 Tìm tên của dự án có mã số D4 ΠTEN_DA(σ(MA_DA=”D4” )(DU_AN)) „ Câu hỏi 2 Cho biết họ tên và lương của những nhân viên làm việc ở phòng “Nghiên cứu và phát triển”. ΠHOTEN, LUONG(NHAN_VIEN* (ΠMA-DV(σ(TEN-PHONG=”Nghiên cứu và phát triển )(PHONG)))) Hồ Cẩm Hà Chương 3 16
  76. Dùng các biểu thức đại số quan hệ biểu diễn câu hỏi „ Câu hỏi 3 Với mỗi dự án thực hiện ở “TT khí thượng thủy văn HN” hãy cho biết mã số dự án, đồng thời cho biết họ tên, ngày sinh của trưởng phòng quản lý dự án này. KQTG ← (ΠMA-DA, MA-DV(σ(DIA-DIEM-DA=”TT Khí tượng thủy văn HN’ )(DU_AN)) KETQUA ←ΠMA-DA, HO-TEN, NG-SINH(NHAN_VIEN⋈MA-NV=MA-TP (PHONG*KQTG)) Hồ Cẩm Hà Chương 3 17
  77. Dùng các biểu thức đại số quan hệ biểu diễn câu hỏi „ Câu hỏi 4 Tìm tên những nhân viên làm việc cho tất cả các dự án do phòng có mã số P4 quản lý. ΠHO-TEN((ΠMANV,MA-DA(CHAM_CONG)÷ ΠMA-DA(σ(MA-DV=P4)(DU_AN)))*NHAN_VIEN). Hồ Cẩm Hà Chương 3 18
  78. Dùng các biểu thức đại số quan hệ biểu diễn câu hỏi „ Câu hỏi 5 Tìm mã số những dự án có sự tham gia của một người là lãnh đạo phòng trực tiếp quản lý dự án này. KQTG ←ΠMA-DA, MA-DV(DU_AN) * ΠMA-DV, MA-TP(PHONG) KETQUA ← KQTG ⋈ ((KQTG.MA-DA=CHAM_CONG.MA-DA) AND (KQTG.MA-TP=CHAM_CONG.MA-NV)) CHAM_CONG Hồ Cẩm Hà Chương 3 19
  79. Ngôn ngữ tân từ (Các phép tính quan hệ) „ Cơ sở quan trọng của phần thao tác trong mô hình cơ sở dữ liệu quan hệ. „ Cơ sở toán học của phép tính quan hệ là logic tân từ cấp một. Có hai loại: ngôn ngữ tân từ biến bộ và ngôn ngữ tân từ biến miền. Hồ Cẩm Hà Chương 3 20
  80. Ngôn ngữ tân từ biến bộ (Tuple relational calculus) Một câu hỏi đơn giản trong ngôn ngữ tân từ biến bộ có dạng {t ⏐ ĐK(t) } Hồ Cẩm Hà Chương 3 21
  81. Ngôn ngữ tân từ biến bộ (Tuple relational calculus) {t ⏐ NHÂN_VIÊN (t) AND t.LUONG > 1700 000} {t.HO_TEN, t.MA_DA⏐NHÂN_VIÊN(t) AND t.LUONG > 1700 000} Hồ Cẩm Hà Chương 3 22
  82. Biểu thức của phép tính biến bộ Một cách tổng quát, một biểu thức của phép tính biến bộ có dạng {ti.A1, tj.A2, , tk.An ⏐ ĐK (t1, t2, , tn, tn+1, tn+2, , tn+m)} Hồ Cẩm Hà Chương 3 23
  83. Biểu thức của phép tính biến bộ Công thức của phép tính biến bộ được tạo nên từ các công thức nguyên tố. Một công thức nguyên tố thuộc một trong những dạng sau: (1) r(t) nói một cách khác đólàphát biểu (t ∈ r). (2) ti.A θ tj.B (3) ti.A θ c Mỗi công thức nguyên tố sẽ nhận một trong hai giá trị TRUE và FALSE đối với một tổ hợp các bộ (giá trị chân lý) Hồ Cẩm Hà Chương 3 24
  84. Biểu thức của phép tính biến bộ Các công thức nguyên tố tạo nên công thức của phép tính bộ theo các luật: (L1) Mỗi công thức nguyên tố là một công thức (L2) F, F1, F2 là công thức thì (F1 AND F2), (F1 OR F2), NOT(F) là công thức. (L3) F là một công thức thì (∃ t)(F) với t là một biến bộ cũng là một công thức (L4) F là một công thức thì (∀t)(F) với t là một biến bộ cũng là một công thức Hồ Cẩm Hà Chương 3 25
  85. Ví dụ Câu hỏi 1 Tìm tên của dự án có mã số D4 {t.TEN_DA⏐ (DU_AN(t) AND t.MA_DA=”D4”} Hồ Cẩm Hà Chương 3 26
  86. Ví dụ Câu hỏi 2 Cho biết họ tên và lương của những nhân viên thuộc phòng “Nghiên cứu và phát triển” {t.HO_TEN, t.LUONG ⏐∃u ((NHAN_VIEN(t) AND PHONG(u) AND u.TEN_PHONG = ”Nghiên cứu và phát triển” AND t.MA_DV = u.MA_DV } Hồ Cẩm Hà Chương 3 27
  87. Ví dụ Câu hỏi 3 Với mỗi dự án thực hiện ở “TT khí thượng thủy văn HN” hãy cho biết mã số dự án, đồng thời cho biết họ tên trưởng phòng quản lý dự án này {t.HO_TEN, t.LUONG ⏐∃u ((NHAN_VIEN(t) AND PHONG(u) AND u.TEN_PHONG = ”Nghiên cứu và phát triển” AND t.MA_DV = u.MA_DV } Hồ Cẩm Hà Chương 3 28
  88. Ví dụ Câu hỏi 4 Tìm tên những nhân viên làm việc cho tất cả các dự án do phòng có mã số P4 quản lý {t.HO_TEN ⏐ NHAN_VIEN(t) AND (∀u ((DU_AN(u) AND u.MA_DV = “P4”) ⇒ (∃v (CHAM_CONG(v) AND v.MANV = t.MANV AND t.MA_DA = u.MA_DA)))} Hồ Cẩm Hà Chương 3 29
  89. Ví dụ Câu hỏi 5 Tìm mã số của những dự án có sự tham gia của một người là lãnh đạo của phòng trực tiếp quản lý dự án này. t.MA_DA⏐∃p∃q ((DU_AN(t) AND PHONG(p) AND CHAM_CONG(q) AND (t.MA_DV = p.MA_DV) AND (p.MA_TP = q.MANV) AND (q.MA_DA = t.MA_DA))}. Hồ Cẩm Hà Chương 3 30
  90. Luật chuyển đổi công thức tương đương liên quan đến các lượng từ „ (∀x) (P(x)) ≡ (∃ x))(NOT(P(x))) „ (∃ x) (P(x)) ≡ NOT(∀x)(NOT(P(x))) „ (∀x) (P(x) AND Q(x)) ≡ (∃ x))(NOT(P(x)) OR NOT(Q(x))) „ (∀x) (P(x) OR Q(x)) ≡ (∃ x))(NOT(P(x)) AND NOT(Q(x))) „ (∃ x) (P(x) OR Q(x)) ≡ NOT(∀x) (NOT(P(x)) AND NOT(Q(x))) „ (∃ x) (P(x) AND Q(x)) ≡ NOT(∀x) (NOT(P(x)) OR NOT(Q(x))) „ (∀x) (P(x)) ⇒ (∃ x) (P(x)) „ (∃ x) (P(x))⇒ (∀x)(NOT (P(x))) Hồ Cẩm Hà Chương 3 31
  91. Ngôn ngữ tân từ biến miền Ví dụ Câu hỏi 1 Tìm tên của dự án có mã số D4 {tenX ⏐∃diadiemX ∃ma_dvX (DU_AN(“D4”,tenX, diadiemX, ma_dvX))} Hồ Cẩm Hà Chương 3 32
  92. Ngôn ngữ tân từ biến miền Ví dụ Câu hỏi 2 Cho biết họ tên và lương của những nhân viên thuộc phòng “Nghiên cứu và phát triển” {ho_tenX, luongX⏐ ∃ma_nvX∃ngay_sinhX∃gioi_tinhX ∃ ma_dvX ∃ ma_tpX (PHONG (ma_dvX, “Nghiên cứu và phát triển”, ma_tpX) AND NHAN_VIEN(ma_nvX,ho_tenX,ngay_sinhX,gioi_tinhX,ma_dvX,lu ongX))} Hồ Cẩm Hà Chương 3 33
  93. Ngôn ngữ tân từ biến miền Ví dụ Câu hỏi 3 Với mỗi dự án thực hiện ở “TT khí thượng thủy văn HN” hãy cho biết mã số dự án, đồng thời cho biết họ tên trưởng phòng quản lý dự án này {ma_daX, ho_tenX⏐ ∃ ten_daX ∃ ma_dvX ∃ten_phongX ∃ma_tpX ∃ngay_sinhX ∃gioi_tinhX ∃luongX ( DU_AN (ma_daX, ten_daX, “TT khí tượng thủy văn HN”, ma_dvX) AND PHONG (ma_dvX, ten_phongX, ma_tpX) AND NHAN_VIEN (ma_tpX, ho_tenX, ngay_sinhX, gioi_tinhX, ma_dvX, luongX)) } Hồ Cẩm Hà Chương 3 34
  94. Tính đầy đủ của NN hỏi „ Khả năng biểu thị câu hỏi của đại số quan hệ và ngôn ngữ tân từ là tương đương nhau về mặt này. „ Một ngôn ngữ hỏi L (của mô hình quan hệ) được gọi là đầy đủ nếu với L, chúng ta có thể biểu diễn được bất cứ một câu hỏi nào mà phép tính quan hệ biểu diễn được. „ Tính đầy đủ trở thành một tiêu chuẩn quyết định để so sánh khả năng biểu diễn câu hỏi của các ngôn ngữ hỏi bậc cao Hồ Cẩm Hà Chương 3 35
  95. NGÔN NGỮ SQL „ SQL đang được xem là ngôn ngữ chuẩn của các hệ cơ sở dữ liệu quan hệ. „ Ngôn ngữ SQL gồm nhiều phần. Nó cho phép định nghĩa dữ liệu (gồm DDL), cho phép cập nhật và tìm kiếm dữ liệu (gồm DML). „ cung cấp các khả năng khác như: định nghĩa khung nhìn (view), kiểm soát tính toàn vẹn dữ liệu, cấp phát quyền truy cập, điều khiển các giao tác, thao tác dữ liệu nhúng. Hồ Cẩm Hà Chương 3 36
  96. SQL Phần thao tác dữ liệu sẽ có đông đảo người dùng hơn, do chúng ta xem xét phần này trước phần định nghĩa dữ liệu của SQL. Hồ Cẩm Hà Chương 3 37
  97. SELECT FROM WHERE dùng để truy vấn dữ liệu trong CSDL
  98. NGÔN NGỮ SQL SELECT ten_da, ma_dv FROM du_an SELECT ma_da, ten_da, dia_diem_da, ma_dv FROM du_an hoặc SELECT * FROM du_an 39
  99. NGÔN NGỮ SQL Cho biết họ tên của mỗi nhân viên và lương mới của mỗi người nếu lương họ được tăng 10% SELECT ho_ten, luong + luong*0.10 FROM nhan_vien Trong bảng kết quả, nếu muốn có thể đặt tên cho cột thứ ba, chẳng hạn cột thứ ba được đặt tên là luong_moi, với câu lệnh sau SELECT ho_ten, luong + luong*0.10 AS luong_moi FROM nhan_vien 40
  100. NGÔN NGỮ SQL Cho biết danh sách nhân viên có lương trên 2 300 000, với mỗi nhân viên như vậy các thông tin đưa ra gồm: mã nhân viên, họ tên, mã đơn vị và lương. SELECT manv, ho_ten, ma_dv, luong FROM nhan_vien WHERE luong > 2 300 000 41
  101. NGÔN NGỮ SQL Tìm tên các nhân viên có mã đơn vị là 'P4' và lương thấp hơn 2 500 000. Câu truy vấn đólà SELECT ho_ten, ma_dv, luong FROM nhan_vien WHERE ma_dv = ‘P4’ AND luong < 2 500 000 42
  102. NGÔN NGỮ SQL Có thể tìm biết tên và mã các dự án mà địa điểm có chứa từ ‘UBND’ bằng câu sau: SELECT ma_da, ten_da, dia_diem_da FROM du_an WHERE dia_diem_da LIKE ‘%UBND%’ 43
  103. NGÔN NGỮ SQL Để liệt kê các nhân viên nữ theo thứ tự tăng dần của lương, có thể dùng: SELECT * FROM nhan_vien WHERE gioi_tinh = ’nu’ ORDER BY luong 44
  104. NGÔN NGỮ SQL Ví dụ 4.10 SELECT * FROM cham_cong WHERE ma_da IN (‘D1’, ‘D2’, ‘D4’) ORDER BY so_gio DESC, ma_da ASC 45
  105. NGÔN NGỮ SQL Câu hỏi: “Có bao nhiêu nhân viên lương cao hơn 3 000 000 ?” có thể viết như sau: SELECT COUNT(*) AS vip FROM nhan_vien WHERE luong > 3000 000 46
  106. NGÔN NGỮ SQL Ví dụ 4.13 Câu hỏi: “ Tìm lương cao nhất, lương thấp nhất và trung bình cộng lương các nhân viên” được viết như sau: SELECT MIN(luong)AS min, MAX(luong) AS max, AVG(luong) AS tb FROM nhan_vien 47
  107. NGÔN NGỮ SQL Câu hỏi: “ Cho biết lương cao nhất và tổng lương của mỗi đơn vị”sẽ được viết là SELECT ma_dv, MAX(luong) AS max_dv, SUM(luong) AS tong_dv FROM nhan_vien GROUP BY ma_dv 48
  108. NGÔN NGỮ SQL Để đưa ra lương cao nhất và tổng lương của những đơn vị có tổng lương trên 4 triệu, câu truy vấn là SELECT ma_dv, MAX(luong) AS max_dv, SUM(luong) AS tong_dv FROM nhan_vien GROUP BY ma_dv HAVING SUM(luong) > 4 000 000 49
  109. NGÔN NGỮ SQL Để tìm mã số và tên những nhân viên phòng ‘Kỹ thuật’ có thể dùng câu truy vấn sau SELECT manv, ho_ten FROM nhan_vien WHERE ma_dv = (SELECT ma_dv FROM phong WHERE ten_phong = ‘Kỹ thuật’); 50
  110. NGÔN NGỮ SQL Xét câu hỏi: ‘Tìm tên của những nhân viên có lương đạt trên mức lương trung bình của tất cả các nhân viên, đồng thời cho biết luôn mức chênh lệch này’. Chúng ta có thể dùng truy vấn sau: SELECT ho_ten , luong – (SELECT AVG(luong) FROM nhan_vien) AS hieu FROM nhan_vien WHERE luong > (SELECT AVG(luong) FROM nhan_vien); 51
  111. NGÔN NGỮ SQL Câu ORDER BY không được sử dụng trong một câu truy vấn con mặc dù nó có thể được dùng trong câu truy vấn ngoài cùng. Danh sách các mục được liệt kê bởi câu truy vấn con SELECT phải chứa tên của một cột hoặc một biểu thức trừ phi câu truy vấn con này dùng từ khóa EXISTS. 52
  112. NGÔN NGỮ SQL Theo ngầm định, các tên cột trong câu truy vấn con tham chiếu đến tên bảng trong câu FROM của truy vấn con này, hoặc có thể tham chiếu đến bảng trong câu FROM của truy vấn ngoài bằng việc xác định tên cột đó. Khi một câu truy vấn con là một trong hai toán hạng của một biểu thức so sánh thì truy vấn con này phải xuất hiện ở vế phải của so sánh. 53
  113. NGÔN NGỮ SQL Muốn biết thông tin về những nhân viên làm việc cho đơn vị có địa điểm là ’23 Lý Thường Kiệt’, có thể dùng truy vấn như sau SELECT * FROM nhan_vien WHERE ma_dv IN (SELECT ma_dv FROM dia_diem_dv WHERE dia_diem = ’23 Lý Thường Kiệt); 54
  114. NGÔN NGỮ SQL Cần phân biệt mục đích của câu WHERE và câu HAVING. Mặc dù có cú pháp tương tự: WHERE lọc lấy một số bộ trong bảng đưa vào bảng kết quả, HAVING lọc lấy một số nhóm nào đó để đưa vào bảng kết quả 55
  115. NGÔN NGỮ SQL Điều kiện chọn (lọc) trong câu HAVING luôn chứa ít nhất một hàm gộp, nếu không thì điều kiện này có thể chuyển vào câu WHERE. Nên nhớ rằng hàm gộp không được dùng trong câu WHERE 56
  116. NGÔN NGỮ SQL Trường hợp câu truy vấn có cả câu WHERE và câu HAVING (dĩ nhiên có cả câu GROUP BY), thì trước tiên điều kiện chọn ở câu WHERE được áp dụng. các bộ thỏa điều kiện này được tạo thành các nhóm do câu GROUP BY. Tiếp theo, câu HAVING loại đi những nhóm không thỏa điều kiện đặt sau từ HAVING. Các nhóm còn lại được câu SELECT sử dụng để tạo ra các bộ là kết quả của câu truy vấn. SELECT ma_dv, MAX(luong) AS max_dv, SUM(luong) AS tong_dv FROM nhan_vien GROUP BY ma_dv HAVING SUM(luong) > 4 000 000 57
  117. NGÔN NGỮ SQL Các truy vấn lồng nhau Để tìm mã số và tên những nhân viên phòng ‘Kỹ thuật’ có thể dùng câu truy vấn sau SELECT manv, ho_ten FROM nhan_vien WHERE ma_dv IN (SELECT ma_dv FROM phong WHERE ten_phong = ‘Kỹ thuật’); 58
  118. NGÔN NGỮ SQL Các truy vấn lồng nhau Xét câu hỏi: ‘Tìm tên của những nhân viên có lương đạt trên mức lương trung bình của tất cả các nhân viên, đồng thời cho biết luôn mức chênh lệch này’ SELECT ho_ten , luong – (SELECT AVG(luong) FROM nhan_vien) AS hieu FROM nhan_vien WHERE luong > (SELECT AVG(luong) FROM nhan_vien); 59
  119. NGÔN NGỮ SQL Các truy vấn lồng nhau Câu ORDER BY không được sử dụng trong một câu truy vấn con mặc dù nó có thể được dùng trong câu truy vấn ngoài cùng. Danh sách các mục được liệt kê bởi câu truy vấn con SELECT phải chứa tên của một cột hoặc một biểu thức trừ phi câu truy vấn con này dùng từ khóa EXISTS. 60
  120. NGÔN NGỮ SQL Các truy vấn lồng nhau Theo ngầm định, các tên cột trong câu truy vấn con tham chiếu đến tên bảng trong câu FROM của truy vấn con này, hoặc có thể tham chiếu đến bảng trong câu FROM của truy vấn ngoài bằng việc xác định tên cột đó. Khi một câu truy vấn con là một trong hai toán hạng của một biểu thức so sánh thì truy vấn con này phải xuất hiện ở vế phải của so sánh. 61
  121. NGÔN NGỮ SQL Các truy vấn lồng nhau Muốn biết thông tin về những nhân viên làm việc cho đơn vị có địa điểm là ’23 Lý Thường Kiệt’, có thể dùng truy vấn như sau SELECT * FROM nhan_vien WHERE ma_dv IN (SELECT ma_dv FROM dia_diem_dv WHERE dia_diem = ’23 Lý Thường Kiệt); 62
  122. NGÔN NGỮ SQL Các truy vấn lồng nhau “ Tìm tên và lương của những người có lương cao hơn lương mọi nhân viên thuộc đơn vị mã P2 “. SELECT ho_ten FROM nhan_vien WHERE luong > ALL (SELECT luong FROM nhan_vien WHERE ma_dv = ’P2’); 63
  123. NGÔN NGỮ SQL Các truy vấn lồng nhau Câu hỏi “ Cho biết thông tin về những nhân viên có lương cao hơn ít nhất một nhân viên làm ở phòng kỹ thuật” SELECT ho_ten FROM nhan_vien WHERE luong > SOME (SELECT luong FROM nhan_vien WHERE ma_dv IN (SELECT ma_dv FROM phong WHERE ten_phong = ‘Kỹ thuật’)64 );
  124. NGÔN NGỮ SQL Các truy vấn lồng nhau “Cho biết tên phòng có trung bình lương cao nhất” sẽ được viết là SELECT ten_phong FROM phong WHERE ma_dv IN (SELECT ma_dv FROM nhan_vien GROUP BY ma_dv HAVING AVG(luong) >= ALL (SELECT AVG(luong) FROM nhan_vien GROUP BY ma_dv) ); 65
  125. NGÔN NGỮ SQL Dùng các biến bộ Để tìm thông tin về tên và lương của trưởng phòng nghiên cứu phát triển SELECT nv.ho_ten, nv.luong FROM nhan_vien nv, phong p WHERE nv.manv = p.ma_tp AND p.ten_phong = ‘Nghiên cứu và phát triển’ Các biến bộ rất hữu ích trong việc so sánh hai bộ trong cùng một quan hệ. 66
  126. NGÔN NGỮ SQL Dùng các biến bộ Có thể tìm nhân viên có lương cao hơn ít nhất lương của một nữ nhân viên bằng câu lệnh sau : SELECT DISTINCT nv.ho_ten, nv.luong FROM nhan_vien a, nhan_vien b WHERE a.luong > b.luong AND b.gioi_tinh = ‘nu’ 67
  127. NGÔN NGỮ SQL Các quan hệ được dẫn xuất và khung nhìn SQL-92 cho phép dùng câu hỏi con trong câu FROM, trong đóbảng kết quả của câu hỏi con phải được đặt tên và các cột được phép đổi tên. Một kết quả như vậy được gọi là một quan hệ (bảng) được dẫn xuất. 68
  128. NGÔN NGỮ SQL Các quan hệ được dẫn xuất và khung nhìn “Tìm lương trung bình của các phòng có lương trung bình lớn hơn 2 100 000”, trong SQL (chuẩn 92) có thể viết như sau: SELECT ma_phong, luong_tb FROM (SELECT ma_dv, AVG(luong) FROM nhan_vien GROUP BY ma_dv) AS ket_qua (ma_phong, luong_tb) WHERE luong_tb > 2 100 000 69
  129. Xin cảm ơn !
  130. CHƯƠNG 4 THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ “Làm thế nào để có một cơ sở dữ liệu tốt?” Hồ Cẩm Hà- ĐHSP HN
  131. Quá trình thiết kế CSDL Thế giới thực Tập hợp các yêu cầu và phân tích Các yêu cầu CSDL Thiết kế khái niệm Lược đồ logic Không phụ (trong một mô hình dữ liệu bậc cao) thuộc DBMS Ánh xạ mô hình dữ liệu DBMS cụ thể Lược đồ khái niệm (trong mô hình dữ liệu của một DBMS cụ thể ) Thiết kế vật lý Lược đồHồ trongCẩm Hà- ĐHSP HN (đối với cùng một DBMS cụ thể đó)
  132. Cần loại bỏ dư thừa dữ liệu Khi dư thừa dữ liệu dẫn đến những khó khăn khi cập nhật dữ liệu Hồ Cẩm Hà- ĐHSP HN
  133. Phụ thuộc hàm. Dạng dư thừa dữ liệu thường gặp Có X→Ytrên R(U): ∀r(R) ∀ t1, t2 ∈ r, t1[X] = t2[X] ⇒ t1[Y]=t2[Y]. Hồ Cẩm Hà- ĐHSP HN
  134. Hệ qui tắc suy diễn Amstrong A1. Phản xạ (Reflexivity). Nếu Y ⊆ X thì X→Y A2. Tăng trưởng (Augmentation). Nếu X→Y thì mọi Z⊆U, XZ→YZ A3. Bắc cầu (Transitivity). Nếu X→Y và Y→Z thì X→Z Hồ Cẩm Hà- ĐHSP HN
  135. Hệ tiên đề Armstrong là đúng và đủ Hồ Cẩm Hà- ĐHSP HN
  136. Các qui tắc suy diễn bổ sung Quy tắc hợp (the union rule) Nếu {X→Y, X→Z} đúng thì X→YZ đúng Quy tắc giả bắc cầu (the pseudotransitivity rule) {X→Y, WY→Z} đúng thì WX→Z đúng Quy tắc tách (the decomposition rule) Nếu (X→Y) đúng và Z⊆Y thì X→Z đúng. Hồ Cẩm Hà- ĐHSP HN
  137. Tập phụ thuộc hàm tối tiểu F và G là tương đương nếu F+=G+, ký hiệu F~G. Có thể kiểm tra được F và G, tập nào phủ tập nào và chúng có tương đương hay không (tính X+) Định lí 7.9: Cho tập phụ thuộc hàm F luôn tìm được phủ tối tiểu của F Hồ Cẩm Hà- ĐHSP HN
  138. Tập phụ thuộc hàm tối tiểu Tập PTH F là tối tiểu nếu: 1. Vế phải của mỗi phụ thuộc trong F gồm đúng một thuộc tính. 2. Không thể bỏ đi một phụ thuộc nào trong F mà vẫn thu được một tập phụ thuộc tương đương với nó. 3. Không thể bỏ đi bất kỳ một thuộc tính nào ở vế trái của một phụ thuộc nào trong F mà vẫn thu được một tập phụ thuộc tương đương với nó. Hồ Cẩm Hà- ĐHSP HN
  139. Tập phụ thuộc hàm tối tiểu Cho F = {A→B, B→A, A→C, C→A, B→C}. Có thể tìm được hai tập phụ thuộc tối tiểu tương đương với F F1 = {A→B, B→C, C→A} F2 = {A→B, B→A, A→C, C→A} Hồ Cẩm Hà- ĐHSP HN
  140. Phép tách các lược đồ quan hệ Việc tách một lược đồ quan hệ trước hết là thay thế tập U các thuộc tính bằng những tập con U1, U2, , Uk của nó sao cho U = U1 ∪ U2 ∪ ∪ Uk. Chú ý rằng ở đây, ta không đòi hỏi U1, U2, , Uk phải rời nhau. Hồ Cẩm Hà- ĐHSP HN
  141. Phép tách các lược đồ quan hệ Khi đó, việc thay thế lược đồ R = 〈U, F〉 bằng các lược đồ con R1 = 〈U1, F1〉, R2 = 〈U2, F2〉, , Rk = 〈Uk, Fk〉 được gọi là một phép tách lược đồ quan hệ đã cho 〈U, F〉. ký hiệu là ρ = (R1, R2, , Rk). Đôi khi, kí hiệu ρ = (U1, U2, , Uk). Hồ Cẩm Hà- ĐHSP HN
  142. Phép tách các lược đồ quan hệ Ta sử dụng một số ký hiệu sau: Dấu hoa thị (*) ký hiệu phép kết nối tự nhiên trên giao của hai tập thuộc tính. ρ = (R1, R2, , Rk) hay ρ = (U1, U2, , Uk) là phép tách lược đồ quan hệ trên U thành các lược đồ con tương ứng với các tập con thuộc tính U1, U2, , Uk. ri = là hình chiếu của quan hệ r lên tập con thuộc tính Ui mρ(r) = r1 * r2 * * rk là kết quả của phép kết nối tự nhiên của các hình chiếu của r lên các tập con thuộc tính trong phép tách ρ. Hồ Cẩm Hà- ĐHSP HN
  143. Phép tách các lược đồ quan hệ Phép tách U thành {U1, U2, , Uk} được gọi là kết nối không thất thoát (hay ngắn gọn là LJ) nếu với mỗi quan hệ r của lược đồ này, ta đều có r = r1 * r2 * * rk = mρ(r) Phép tách bảo toàn các phụ thuộc của F Hồ Cẩm Hà- ĐHSP HN
  144. Tách kết nối không mất thông tin Kiểm tra được tính kết nối không thất thoát của một phép tách (thuật toán 3.2) Ví dụ ABCDE U = ABCDE, U1 = AD, U2 = AB, U3 = BE,U 1 a1 b12 b13 a4 b15 U a a b b b U4 = CDE, U5 = AE 2 1 2 23 24 25 U b a b b a Tập các phụ thuộc hàm là: A→C, B→C, 3 31 2 33 34 5 U b b a a a C→D, DE→C, CE→A. 4 41 42 3 4 5 U5 a1 b52 b53 b54 a5 Hồ Cẩm Hà- ĐHSP HN
  145. Tách kết nối không mất thông tin Tập các phụ thuộc hàm là: A→C, B→C, C→D, DE→C, CE→A. ABCDE ABCDE U1 a1 b12 b13 a4 b15 U1 a1 b12 b13 a4 b15 U2 a1 a2 b13 b24 b25 U2 a1 a2 b23 b24 b25 U3 b31 a2 b13 b34 a5 U3 b31 a2 b33 b34 a5 U4 b41 b42 a3 a4 a5 U4 b41 b42 a3 a4 a5 U5 a1 b52 b13 b54 a5 U5 a1 b52 b53 b54 a5 Hồ Cẩm Hà- ĐHSP HN
  146. Tách kết nối không mất thông tin Tập các phụ thuộc hàm là: A→C, B→C, C→D, DE→C, CE→A. ABCDE ABCDE U1 a1 b12 b13 a4 b15 U1 a1 b12 b13 a4 b15 U2 a1 a2 b13 b24 b25 U2 a1 a2 b23 a4 b25 U3 b31 a2 b13 b34 a5 U3 a1 a2 a3 a4 a5 U4 b41 b42 a3 a4 a5 U4 a1 b42 a3 a4 a5 U5 a1 b52 b13 b54 a5 U5 a1 b52 a3 a4 a5 Hồ Cẩm Hà- ĐHSP HN
  147. Phép tách các lược đồ Mặc dù là những tính chất quan trọng của phép tách lược đồ quan hệ nhưng một phép tách có thể thoả mãn tính chất này nhưng lại không thoả mãn tính chất kia. Chẳng hạn, phép tách lược đồ quan hệ 〈ABCD, {A→B, C→D}〉 thành hai lược đồ 〈AB, {A→B}〉 và 〈CD, {C→D}〉 là phép tách bảo toàn phụ thuộc nhưng không phải là phép tách với kết nối không thất thoát. Hồ Cẩm Hà- ĐHSP HN
  148. phép tách các lược đồ Ta xét lược đồ CSZ với ba thuộc tính C (City), S (Street) và Z (Zip code) và tập phụ thuộc hàm F = {CS→Z, Z→C}. Từ phụ thuộc hàm Z→C hay CS∩CZ→CS−CZ suy ra rằng phép tách CSZ thành hai lược đồ CS và CZ có tính chất kết nối không mất thông tin nhưng không có tính chất bảo toàn phụ thuộc. Hồ Cẩm Hà- ĐHSP HN
  149. 1NF Hồ Cẩm Hà- ĐHSP HN
  150. 2NF Cho lược đồ quan hệ R = 〈U, F〉 với khoá K. R được gọi là thuộc dạng chuẩn thứ hai (2NF) nếu nó thuộc dạng chuẩn thứ nhất và mọi thuộc tính A∉K đều phụ thuộc đầy đủ vào K. Hồ Cẩm Hà- ĐHSP HN
  151. 3NF Lược đồ quan hệ R = 〈U, F〉 được gọi là thuộc dạng chuẩn thứ ba (3 NF) nếu không có thuộc tính không khóa phụ thuộc bắc cầu vào khóa Nghĩa là: nếu không tồn tại một khoá X, một tập thuộc tính Y⊆U và một thuộc tính A∉XY làm cho các điều kiện sau được thoả mãn: (X→Y), (Y→A), và không có (Y→X). Hồ Cẩm Hà- ĐHSP HN
  152. BCNF Lược đồ quan hệ R = 〈U, F〉 được gọi là thuộc dạng chuẩn Boyce-Codd (BCNF) nếu từ (X→A) đúng trong R và A∉X kéo theo X là siêu khoá. Định lý 7.12 Nếu lược đồ quan hệ R = 〈U, F〉 thuộc dạng chuẩn Boyce-Codd (BCNF) thì nó thuộc dạng chuẩn thứ ba. Hồ Cẩm Hà- ĐHSP HN
  153. Chuẩn hoá lược đồ quan hệ Bổ đề 7.7: Giả sử R = 〈U, F〉 là một lược đồ quan hệ và ρ = (R1, R2, Ri, Rk) là một phép tách của R, trong đó ∀i, Ri = 〈Ui, Fi〉. Giả sử ρ là kết nối không thất thoát. Khi đó, nếu thay thế lược đồ Ri trong ρ bởi S1, S2, , Sm, với σ = (S1, S2, , Sm) là phép tách kết nối không thất thoát của Ri thì phép tách τ = (R1, R2, , Ri-1, S1, S2, , Sm, Ri+1, , Rk) thu được cũng là kết nối không thất thoát. Giả sử ρ là kết nối không thất thoát. Nếu bổ sung vào ρ một số lược đồ quan hệ trên U (Rk+1, ,Rn) thì phép tách τ = (R1, R2, , Rk, Rk+1, ,Rn) thu được cũng là kết nối không thất thoát. Hồ Cẩm Hà- ĐHSP HN
  154. Chuẩn hoá lược đồ quan hệ Ví dụ Tách để đưa lược đồ về chuẩn BCNF (trang 33) Hồ Cẩm Hà- ĐHSP HN
  155. Ví dụ U = CTHRSG F = {C→T, HR→C, TH→R, CS→G, HS→R} Khãa HS U1 = CSG V1 = CTHRS F1 = {CS→G} FV1 = {C→T, TH→R, HR→C, HS→R} Kho¸ CS Khãa HS U2 = CT V2 = CHRS F2 = {C→T} FV2 = {CH→R, HR→C, HS→R} Kho¸ C Kho¸ HS U3 = CHR U4 = CHS F3 = {CH→R, HR→C} F4 = {HS→C} Khãa CH hoÆc HR Khãa HS Hồ Cẩm Hà- ĐHSP HN
  156. Phép tách bảo toàn phụ thuộc thành 3NF Nếu có những thuộc tính không xuất hiện trong bất kỳ một phụ thuộc hàm nào của F, ở cả vế trái lẫn vế phải thì ta xác định một lược đồ quan hệ gồm những thuộc tính này rồi xoá chúng khỏi U. Nếu một trong các phụ thuộc hàm của F chứa toàn thể các thuộc tính của U thì phép tách cần tìm chỉ gồm R. Trường hợp còn lại, phép tách kết quả gồm các lược đồ ứng với các tập thuộc tính có dạng XA, trong đómỗi phụ thuộc hàm X→A là thuộc F. Tuy vậy, nếu xảy ra tình huống X→A1, X→A2, , X→Ak cùng thuộc F thì thay cho các lược đồ với tập thuộc tính dạng XAi, ta sử dụng lược đồ ứng với tập thuộc tính XA1A2 Ak vì rõ ràng sự thay thế này cho kết quả gọn hơn. Hồ Cẩm Hà- ĐHSP HN
  157. Tách vừa là LJ vừa bảo toàn phụ thuộc §Þnh lý 7.14 Cho R(U) lµ mét l−îc ®å quan hÖ, trong ®ã tËp thuéc tÝnh U = {A1, A2, ,An} vµ F lµ tËp c¸c phô thuéc hµm x¸c ®Þnh trªn R. Kh«ng gi¶m tæng qu¸t, gi¶ sö F lµ mét phñ tèi tiÓu cã d¹ng: F = {Yj → Aij ⏐j=1, 2, , m}. Gäi X lµ mét kho¸ cña l−îc ®å R(U, F). Khi ®ã phÐp t¸ch: ρ = (Y1Ai1, Y2Ai2, , YmAim , X) lµ mét phÐp t¸ch cña R, tháa m·n ba tÝnh chÊt sau: z ρ lµ mét phÐp t¸ch b¶o toµn th«ng tin; z ρ lµ mét phÐp t¸ch b¶o toµn tËp F; z C¸c l−îc ®å con trong ρ ®Òu ë 3NF. Hồ Cẩm Hà- ĐHSP HN
  158. Phụ thuộc đa trị Cho R(U); X vµ Y lµ hai tËp con cña U, Z = U \ XY. X→→Y Khi mäi quan hÖ r ∈ R(U) víi hai bé bÊt kú t1, t2 ∈ r: t1[X] = t2[X] ⇒ ∃ t3 ∈ r sao cho t3[X] = t1[X], t3[Y] = t1[Y] vµ t3[Z] = t2[Z]. (v× t1, t2 b×nh ®¼ng nªn ∃ t4 sao cho t4[X] = t1[X], t4[Y] = t2[Y] vµ t4[Z] = t1[Z] ). Chóng ta cã thÓ kÝ hiÖu X →→ Y | Z. Hồ Cẩm Hà- ĐHSP HN
  159. Phụ thuộc đa trị NÕu X → Y tho¶ trªn r th× X →→ Y còng tho¶ trªn r. Do vËy mỗi phô thuéc hµm ®Òu lµ phô thuéc ®a trÞ. Hồ Cẩm Hà- ĐHSP HN
  160. 4NF L−îc ®å quan hÖ R ®−îc gäi lµ thuéc d¹ng chuÈn thø bèn (4NF) nÕu cã phô thuéc ®a trÞ kh«ng tÇm th−êng X →→ Y ®óng trªn R th× X lµ siªu khãa. Nãi mét c¸ch kh¸c, R lµ 4NF nÕu cã phô thuéc ®a trÞ X →→ Y trªn R , trong ®ã Y ≠ ∅, Y ⊄ X vµ XY kh«ng chøa tÊt c¶ c¸c thuéc tÝnh cña R th× X lµ mét siªu kho¸* cña R Hồ Cẩm Hà- ĐHSP HN
  161. Phụ thuộc đa trị và 4NF VÝ dô 7.20 XÐt l¹i l−îc ®å quan hÖ TBK(CTHRSG) cho ë vÝ dô 7.17 cïng víi tËp D c¸c phô thuéc hµm vµ phô thuéc ®a trÞ nh− sau: C→T Mçi líp häc phÇn do mét gi¶ng viªn chÞu tr¸ch nhiÖm. HR→C T¹i mçi phßng häc, trong mçi giê häc chØ cã mét líp häc phÇn. HT→R T¹i mçi giê häc, mçi gi¶ng viªn chØ cã thÓ d¹y ®−îc ë mét phßng häc. CS→G §èi víi mçi líp häc phÇn, mçi sinh viªn chØ cã mét ®iÓm ®¸nh gi¸. HS→R T¹i mçi giê häc, mçi sinh viªn chØ cã mÆt ë mét phßng häc. C→→HR TËp c¸c cÆp phßng-giê häc ®−îc x¸c ®Þnh theo mçi häc phÇn mµ kh«ng lÖ thuéc g× vµo bÊt cø thuéc tÝnh nµo kh¸c. Hồ Cẩm Hà- ĐHSP HN
  162. VÝ dô t¸ch LJ ®−a vÒ 4NF z XÐt thÊy C →→ HR vi ph¹m 4NF, do vËy t¸ch TBK thµnh (CHR) vµ (CTSG). L−îc ®å con (CHR) cã khãa lµ HR ®· ë d¹ng chuÈn bèn. L−îc ®å (CTSG) cã khãa lµ CS ch−a ë d¹ng chuÈn bèn v× cã C →→ T (suy ratõ C → T) vi ph¹m chuÈn bèn. z T¸ch (CTSG) thµnh hai l−îc ®å con ®Òu ë d¹ng chuÈn bèn lµ (CT) vµ (CSG). z PhÐp t¸ch ρ = {CHR, CT, CSG} lµ phÐp t¸ch - kÕt nèi kh«ng tæn thÊt vµ mçi l−îc ®å trong nã ®Òu ë d¹ng chuÈn bèn. Hồ Cẩm Hà- ĐHSP HN