Your SlideShare is downloading. ×
0
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
13929219602082.ppt
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

13929219602082.ppt

343

Published on

0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
343
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
18
Comments
0
Likes
2
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide
  • fafdsfsfda
  • Dfkaksdf
    skfdsakjfd
  • Định nghĩa khác này tương đương với định nghĩa ban đầu, vì nếu X không là siêu khóa và A là thuộc tính không khóa suy ra sẽ tồn tại một khóa K sao cho KX, XA, khi đó A phụ thuộc bắc cầu vào K qua X.
  • Định nghĩa khác này tương đương với định nghĩa ban đầu, vì nếu X không là siêu khóa và A là thuộc tính không khóa suy ra sẽ tồn tại một khóa K sao cho KX, XA, khi đó A phụ thuộc bắc cầu vào K qua X.
  • Xem cm trang 132/NTDung
  • Transcript

    • 1. Tài liệu tham khảo – [1]. Bài giảng lý thuyết cơ sở dữ liệu – Khoa Tin học – ĐHSP Huế – [2]. Hồ Thuần, Hồ Cẩm Hà, Các hệ cơ sở dữ liệu – lý thuyết và thực hành tập 1, 2, NXBGD 2004-2005 – [3]. Trường ĐH Tôn Đức Thắng, Tóm tắt bài giảng môn Cơ sở dữ liệu. – [4]. Pham Hữu Khang, Lập trình ứng dụng chuyên nghiệp SQL server 2000. – [5]. Date C.J., An introduction to database systems, seventh edition Addison. Wesley, 2000. – [6]. Jeffrey A.Hoffer , Modern Database Management, 2000 – [7]. 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,2, NXB Thống kê, 1999. Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 1
    • 2. Phần I MÔ HÌNH DỮ LIỆU QUAN HỆ Email: ltnkhanh@itam.tdt.edu.vn Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 2
    • 3. Nội dung phần I • Các định nghĩa: – – – – – Mở đầu Các khái niệm: thuộc tính, miền giá trị Mô hình quan hệ Lược đồ quan hệ, lược đồ CSDL Khóa của lược đồ quan hệ • Đại số quan hệ • Bài tập phần I Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 3
    • 4. Các định nghĩa - Mở đầu maSoSV ngaySinh diemTB mucHBg Ti05020 Lê Ngọc Phúc 06-12-1988 9.0 240.000 Ti05023 Nguyễn Mỹ Truyền 20-02-1987 8.2 180.000 Ti05027 Phạm Thu Hoa 23-05-1987 8.5 180.000 Ti05006 • hoTenSV Phạm Thu Hường 23-06-1987 7.8 120.000 Bảng lưu thông tin về xếp loại học bổng của SV. Ở bảng này, ta có: – maSoSV, hoTenSV, ngaySinh, mucHBg được gọi là các thuộc tính, – {9.0, 8.2, 8.5, 7.8…} chính là miền giá trị của thuộc tính diemTB. – Một dòng trong bảng: Ti05020 Lê Ngọc Phúc 06-12-1988 9.0 240.000 đgl một bộ. Bảng có tên là HOCBONG đgl một quan hệ. Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 4
    • 5. Các định nghĩa - Mở đầu (tt) • Cho tập hữu hạn các phần tử U = {A1, A2, … An}. tập U được gọi là tập các thuộc tính. Mỗi phần tử Ai- của tập U có một miền giá trị tương ứng, ta ký hiệu là D(Ai). Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 5
    • 6. Các định nghĩa – Thuộc tính Thuộc tính (attribute, arity) – Là các đặc trưng của đối tượng • Vd: BTQL điểm thi của sinh viên, với đối tượng sinh viên ta cần phải chú ý đến các đặc trưng riêng như: họ tên, ngày sinh, học bổng, tỉnh, lớp mà sinh viên theo học… các thuộc tính. – được phân biệt bằng tên gọi – phải thuộc vào một kiểu dữ liệu nhất định (số, chuỗi, ngày tháng, lôgic, hình ảnh…). Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 6
    • 7. Các định nghĩa – Thuộc tính Thuộc tính (attribute, arity) (tt) – Lưu ý: • trong cùng một đối tượng không được có hai thuộc tính cùng tên. – Thông thường mỗi thuộc tính chỉ chọn lấy giá trị trong một tập con của kiểu dữ liệu  miền giá trị của thuộc tính đó. • Ví dụ điểm thi của sinh viên chỉ là các số nguyên từ 0 đến 10. – Thường dùng các chữ cái hoa A, B, C để biểu diễn các thuộc tính, hoặc A1, …, An để biểu diễn một số lượng lớn các thuộc tính. Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 7
    • 8. Các định nghĩa – Lược đồ quan hệ, Lược đồ cơ sở dữ liệu • Lược đồ quan hệ (Relation) – là tập tất cả các thuộc tính cần quản lý của một đối tượng cùng với những mối liên hệ giữa chúng. – Sau này ta thường nói là cho lược đồ quan hệ R trên tập thuộc tính U, ký hiệu R(U), hoặc R(A1,…,An). – Vd: ta có LĐQH sinh viên (đặt tên là SV) với các thuộc tính như sau: SV(maSoSV, hoTenSV, ngaySinh, diemTB, mucHbg) Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 8
    • 9. Các định nghĩa – Lược đồ quan hệ, Lược đồ cơ sở dữ liệu • Lược đồ quan hệ (Relation) (tt) - Một LĐQH có một ý nghĩa gọi là tân từ của LĐQH - Ví dụ: với lược đồ quan hệ SV trên ta có tân từ như sau: - Mỗi sinh viên có một mã số duy nhất, mỗi mã số xác định tất cả các thuộc tính của sinh viên đó như họ tên, ngày sinh, mức học bổng… Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 9
    • 10. Các định nghĩa – Lược đồ quan hệ, Lược đồ cơ sở dữ liệu (tt) • Nhiều lược đồ quan hệ cùng nằm trong một hệ thống quản lý được gọi là một lược đồ CSDL. • Ví dụ lược đồ CSDL để quản lý điểm của sinh viên có thể gồm những lược đồ quan hệ sau: SV(maSV, hotenSV, ngaySinh, maLop, tinh, hocBong) Lop(maLop, tenLop, siSo, maKhoa) Khoa(maKhoa, tenKhoa, soCB) MonHoc(maMH, tenMH, soTiet) KetQua(maSV, maMH, diemThi) Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 10
    • 11. Các định nghĩa – Lược đồ quan hệ, Lược đồ cơ sở dữ liệu (tt) • Nhận xét: – khi nói cho tập thuộc tính U = {A1, A2…, An} ta coi như cho trước lược đồ quan hệ (LĐQH) và cùng với nó ta có quan hệ rỗng r = ∅. – Khi lược đồ được nạp thêm ít nhất một dòng thì ta có một quan hệ khác rỗng. Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 11
    • 12. Các định nghĩa – Lược đồ quan hệ, Lược đồ cơ sở dữ liệu (tt) • Định nghĩa quan hệ (relation): – Là sự thể hiện của LĐQH ở một thời điểm. – Cụ thể, một quan hệ r trên LĐQH R là một tập con của tích Descartes (Đề các) của các miền giá trị D(Ai) với i = 1…n. – Một cách hình thức, r là một QH trên tập thuộc tính U nếu: r ⊂ D(A1) x D(A2) x … x D(An) với D(Ai) là miền giá trị của thuộc tính Ai. – Ví dụ: • Bảng 2.1 lưu trữ hồ sơ sinh viên là một quan hệ, với U = {maSoSV, hoTenSV, ngaySinh, diemTB, mucHbg}. Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 12
    • 13. Các định nghĩa – Lược đồ quan hệ, Lược đồ cơ sở dữ liệu (tt) • Nhận xét: – Quan hệ r là một bảng hai chiều: • trên cột thứ i là các giá trị của D(Ai), • trên mỗi dòng của bảng là bộ n giá trị của các miền giá trị của các thuộc tính Ai. Một dòng chứa thông tin về một đối tượng và gọi là một bộ (phần tử) của quan hệ. – Trên một LĐQH có thể xây dựng được nhiều QH khác nhau, cứ thay đổi một dòng hoặc một cột ta được một QH mới. – Lưu ý: • Với cách nhìn của tập hợp việc thêm vào một dòng (cột) giống với dòng (cột) đã có thì QH không thay đổi. Đồng thời thứ tự của các dòng (cột) không quan trọng. Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 13
    • 14. Các định nghĩa – Lược đồ QH, Lược đồ CSDL (tt) ma hoten nsinh donvi luong phucap thuong 01 Minh 1965 K.CNTT 800 50 100 02 Đông 1946 K. toán 700 122 48 03 Long 1954 K. lý 1.500 100 90 04 Kiên 1956 K. hóa 1.900 150 75 05 Đại 1958 K. văn 3.000 60 80 • Ví dụ: Cho U = {ma, hoten, donvi, nsinh, luong, phucap, thuong} và quan hệ r trên lược đồ R(U) như trên: – Quan hệ r ở trên có năm phần tử. Mỗi phần tử là một bộ 7 giá trị (còn gọi là 7-bộ) Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 14
    • 15. Các định nghĩa (tt) • Lưu ý: – Về sau không cần quan tâm đến bản chất nội tại của mô hình quan hệ, đôi khi để cho tiện ta ký hiệu các thuộc tính bằng các chữ cái in hoa A, B, C và tập các thuộc tính bằng X, Y, Z, còn các giá trị cụ thể của miền giá trị của chúng bằng các chữ cái thường a, b, c… Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 15
    • 16. Các định nghĩa - Lược đồ và thể hiện của CSDL • Toàn bộ mô tả CSDL được gọi là lược đồ CSDL (database schema). Tương ứng với ba mức trừu xuất dữ liệu nói trên có ba loại lược đồ: – Ở mức cao nhất ta có nhiều lược đồ ngoài (còn gọi là lược đồ con) cho những cách nhìn dữ liệu khác nhau của những người sử dụng khác nhau. – Ở mức logic ta có lược đồ logic. – Ở mức thấp nhất ta có lược đồ vật lý. Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 16
    • 17. Các định nghĩa - Lược đồ và thể hiện của CSDL (tt) • Toàn bộ dữ liệu lưu trữ trong CSDL tại một thời điểm nhất định được gọi là một thể hiện của CSDL (database instance).  Nhiều thể hiện của CSDL có thể tương ứng với cùng một lược đồ CSDL. Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 17
    • 18. Các định nghĩa - Lược đồ và thể hiện của CSDL (tt) Khung nhìn 2 Khung nhìn 1 MaNV Hodem Ten Tuoi Luong MaNV Ngay_sinh Tuoi Ten Ma_chi_nhanh Mức logic MaNV Hodem Ten Luong Ma_chi_nhanh Struct NHANVIEN{ int MaNV; int Ma_chi_nhanh; char Hodem[15]; char Ten[15]; Mức vật lý struct date Ngay_sinh; float Luong; struct NHANVIEN next; /* con trỏ đến bản ghi tiếp của tệp NHANVIEN*/ }; Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 18
    • 19. Đại số quan hệ - Giới thiệu • Đại số quan hệ – là phương pháp để mô hình hóa các phép toán để thao tác trên CSDL quan hệ. – là ưu điểm của mô hình dữ liệu quan hệ (tiếp cận các kết quả của công cụ toán học trong việc xây dựng ngôn ngữ khai thác, xử lý dữ liệu). – các phép toán của đại số quan hệ khá đơn giản, những nó khá mạnh và là một đại số có tính đầy đủ, phi thủ tục. – là một cơ sở cho việc thiết lập các ngôn ngữ con dữ liệu bậc cao hơn. Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 19
    • 20. Đại số quan hệ - Giới thiệu (tt) • Để định nghĩa các phép toán đại số quan hệ, trước hết chúng ta có một số khái niệm sau: – hai quan hệ r1, r2 là tương thích với nhau nếu chúng có cùng tập thuộc tính U. Và r1, r2 được gọi là hai quan hệ rời nhau nếu chúng không có thuộc tính chung. – Khái niệm xếp cạnh nhau: Giả sử cho bộ t = (a1, a2,…, an), u = (b1, b2, …, bm) ta có: 〈t,u〉 = (a1, a2,…, an, b1, b2, …, bm) Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 20
    • 21. Đại số quan hệ - Các phép toán – Phép chọn • Phép chọn (Selection): ký hiệu σ – Phép chọn được dùng để xây dựng một tập con các bộ của quan hệ đã cho thỏa mãn một điều kiện cho trước. Điều kiện C được biểu diễn bởi một biểu thức lôgic trả về giá trị True/False. – Kết quả của phép chọn trên quan hệ r với điều kiện C được ký hiệu là σC(r). σ C(r) = {t / t ∈ r, C(t) = True} Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 21
    • 22. Đại số quan hệ - Các phép toán – Phép chọn (tt) – Biểu thức lôgic C được tạo thành từ các biểu thức có dạng: 〈tên thuộc tính〉 〈toán tử so sánh〉 〈giá trị hằng〉 hoặc 〈tên thuộc tính〉 〈toán tử so sánh〉 〈tên thuộc tính〉, – trong đó ∀ 〈tên thuộc tính〉 là tên của một thuộc tính thuộc R ∀ 〈toán tử so sánh〉 là các toán tử thông thường {=, <, ≤, >, ≥, ≠} ∀ 〈giá trị hằng〉 là một giá trị trong miền thuộc tính. Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 22
    • 23. Đại số quan hệ - Các phép toán – Phép chọn (tt) • Ví dụ: Trên quan hệ HOCBONG, – phép chọn σ (DiemTB≥9.0)(HOCBONG) sau: ta có kết quả như maSoSV hoTenSV Ngaysinh ĐiemTB MucHBg Ti05020 Lê Ngọc Phúc 06-12-1988 9.0 240.000 • Lưu ý: – Toán tử so sánh trong tập {=, <, ≤, >, ≥, ≠} chỉ áp dụng được cho những thuộc tính có MGT có thứ tự. Nếu miền thuộc tính ko có thứ tự, khi đó toán tử so sánh có thể áp dụng chỉ là tập {=, ≠}. – Các toán tử chọn có tính giao hoán, cụ thể: σ <C1>(σ <C2>(R)) = σ <C2>(σ <C1>(R)) Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 23
    • 24. Đại số quan hệ - Các phép toán – Phép chọn (tt) • Cho các lược đồ quan hệ sau: – SINHVIEN (MaSV, Hoten, Namsinh, QQ, Hocluc) • Mỗi sinh viên có Mã số duy nhất, họ tên, quê quán và học lực – DETAI (MaDT, TenDT, Chunhiem, Kinhphi) • Mỗi đề tài có Mã số duy nhất, tên đề tài, chủ nhiệm đề tài, kinh phí thực hiện đề tài (đơn vị tính: triệu đồng) – SV_DT (MaSV, MaDT, NoiAD, KQ) • Mỗi SV có thể thực hiện một hoặc nhiều ĐT: mã số sinh viên, mã đề tài, nơi áp dụng, kết quả thực hiện đề tài • Ta có cơ sở dữ liệu mẫu được cho như sau: Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 24
    • 25. Đại số quan hệ - Các phép toán – Phép chọn (tt) Ví dụ: Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 25
    • 26. Đại số quan hệ - Các phép toán – Phép chọn (tt) Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 26
    • 27. Đại số quan hệ - Các phép toán – Phép chọn (tt) Vd: Tìm những SV sinh trước 1984 và quê ở Đồng Tháp: σ (Namsinh<1984 ^ QQ='Đồng Tháp') Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT (SINHVIEN) 27
    • 28. Đại số quan hệ - Các phép toán – Phép chiếu • Phép chiếu (Projection): Ký hiệu π – Cho r là một quan hệ trên lược đồ quan hệ R(U), X ⊆ U, khi đó πX(r) = {t[X] / t ∈ r} trong đó t[X] là giá trị bộ t trên tập thuộc tính X. Vd: phép chiếu π MasoSV,DiemTB(HOCBONG) ta có kết quả sau: maSoSV diemTb Ti05020 9.0 Ti05023 8.2 Ti05027 8.5 Ti05006 7.8 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 28
    • 29. Đại số quan hệ - Các phép toán – Phép chiếu • Nhận xét: – Để thực hiện phép chiếu 1QH trên một tập thuộc tính thực hiện 2 thao tác: • Giữ lại các thuộc tính trong tập X • Chọn bộ đại diện trong các bộ giống nhau. Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 29
    • 30. Đại số quan hệ - Các phép toán – Phép chiếu • Ví dụ: Xem lại CSDL – Tìm họ tên, năm sinh của những sinh viên có quê quán ở Cần Thơ ∏ Hoten, Namsinh(σ (QQ='Cần thơ')(SINHVIEN)) Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 30
    • 31. Đại số quan hệ - Các phép toán – Phép chiếu • Ví dụ: Xem lại CSDL – Tìm mã số, tên của những đề tài do thầy Lê Đức Phúc chủ nhiệm có kinh phí từ 10tr trở lên.  ∏ MaDT, TenDT(σ (Chunhiem='Lê Đức Phúc' ^ Kinhphi >= 10)(DETAI)) Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 31
    • 32. Đại số quan hệ - Các phép toán • Phép tích Descartes – Tích Descartes của hai quan hệ chỉ xét trên hai LĐQH rời nhau. – Cho hai lược đồ R1, R2 tương ứng với hai tập thuộc tính: U1 = {A1, A2,…,An} U2 = {B1, B2,…,Bm} với U1 ∩ U2 = ∅ – Giả sử r, s là hai QH trên R1, R2 tương ứng, khi đó: • Tích Descartes của r và s ký hiệu r × s là quan hệ gồm các (n+m)_bộ trên lược đồ R1 ∪ R2, theo thứ tự, sao cho mỗi bộ này có n thành phần đầu là một bộ thuộc r và m thành phần sau là bộ thuộc s. r × s = {t/ t = 〈t1, t2〉, t1 ∈ r, t2 ∈ s)} Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 32
    • 33. Đại số quan hệ - Các phép toán Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 33
    • 34. Đại số quan hệ - Các phép toán – Phép kết nối • Phép kết nối – Cho θ là một trong các phép so sánh sau: =, >,<, ≠, ≥, ≤. – r là một quan hệ xác định trên tập thuộc tính (A1, A2, …, An) và s là một quan hệ trên tập thuộc tính (B1, B2,…,Bm). – Kết quả của phép kết nối quan hệ r với quan hệ s theo điều kiện Ai θ Bj được ký hiệu: r ⋈ Ai θ Bj s = {〈t,u〉/ t ∈ r, u ∈ s và t[Ai] θ u[Bj]} • giả thiết mỗi giá trị thuộc dom(Ai) và mỗi giá trị thuộc dom(Bj) có thể so sánh được qua phép θ Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 34
    • 35. Đại số quan hệ - Các phép toán – Phép kết nối (tt) – Nếu θ là “=” thì phép kết nối được gọi là kết nối bằng. – Nếu kết nối bằng tại thuộc tính trùng tên của hai quan hệ r, s  phép kết nối tự nhiên và ký hiệu là r ∗ s (hoặc r ⋈ s) cho kết quả của nó. • một trong hai thuộc tính đó được loại bỏ khỏi kết quả – Ví dụ: Tìm tên những đề tài được áp dụng ở Đồng Tháp và cho biết họ tên của những sinh viên thực hiện tương ứng. π TenDT, Hoten(σ(NoiAD='Đồng Tháp')(SINHVIEN * SV_DT * DETAI)) Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 35
    • 36. Đại số quan hệ - Các phép toán – Phép kết nối (tt) • Ví dụ: r A B C a1 b1 b2 b 2 2 f1 3 f2 3 a3 F 1 a2 s D r ⋈C>=Ds A B C D F a2 b2 3 2 f1 a2 b2 3 3 f2 • Ý nghĩa: a3 b 2 2 f1 – Phép kết nối được dùng để kết hợp hai bộ có liên quan nhau thuộc hai quan hệ khác nhau thành một bộ mới. – nói cách khác, phép kết nối cho phép xử lý mối liên quan giữa các quan hệ trong một CSDL. Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 36
    • 37. Đại số quan hệ - Các phép toán – Phép hợp • Phép hợp – Hợp của hai quan hệ tương thích r1, r2 ký hiệu r1 ∪ r2 là một quan hệ trên U gồm các phần tử thuộc r1 hoặc r2. r1∪ r2 = {t: t ∈ r1 hoặc t ∈ r2} • Ví dụ: Cho 2 LĐQH sau: Canbo(Maso, Hoten, Ngsinh, QQ, Hs_luong) Giangvien(Maso, Hoten, Ngaysinh, QQ, Hs_luong) - In ra danh sách gồm: mã số và họ tên của tất cả các cán bộ và giảng viên: ∏Maso, Hoten(Canbo U Giảngviên) Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 37
    • 38. Đại số quan hệ - Các phép toán – Phép giao • Phép giao – Giao của hai quan hệ tương thích r1, r2 ký hiệu r1 ∩ r2 là một quan hệ trên U gồm các bộ vừa thuộc r1 vừa thuộc r2. r1∩ r2 = {t: t ∈ r1 và t ∈ r2} – Vd: In ra mã sinh viên và họ tên của những sinh viên vừa thực hiện đề tài "DT001" vừa thực hiện đề tài "DT005” ∏MaSV, Hoten(σ(MaDT='DT001')(SINHVIEN * SV_DT )) ∩ ∏MaSV, Hoten(σ(MaDT='DT005')(SINHVIEN * SV_DT )) Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 38
    • 39. Đại số quan hệ - Các phép toán – Phép hiệu • Phép hiệu – Hiệu của hai quan hệ tương thích r và s ký hiệu là r - s, là một quan hệ gồm tất cả các bộ thuộc r nhưng không thuộc s. r – s = {t: t ∈ r và t ∉ s} – Ví dụ: In ra mã sinh viên và họ tên của những sinh viên không thực hiện đề tài có nơi áp dụng ở Vĩnh Long ∏MaSV, Hoten(SINHVIEN) ∏MaSV, Hoten(∏ MaDT(σ(Noi_AD='Vinh Long')(SV_DT))*SINHVIEN* SV_DT) Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 39
    • 40. Đại số quan hệ - Các phép toán Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 40
    • 41. Đại số quan hệ - Các phép toán • Phép chia – Cho lược đồ quan hệ R(A1, A2, …, An), S là lược đồ con của R. Giả sử r và s là các quan hệ trên R và S tương ứng. Phép chia của quan hệ r cho quan hệ s, ký hiệu r ÷ s là quan hệ trên lược đồ R – S gồm các (n-m)_bộ t sao cho tồn tại bộ ts ∈ s mà t ghép với ts ta được bộ thuộc r. r ÷ s = {t: ∃ts ∈ s và 〈t, ts〉 ∈ r} Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 41
    • 42. Bài tập phần I • Cho các lược đồ quan hệ sau: • Hanghoa(MaHG, TenHG, DVT, Dongia, Cohang) – Mỗi mặt hàng có một mã số duy nhất có tên hàng, đơn vị tính, đơn giá và hàng có còn trong kho hay không (Cohang = 0 nếu hết hàng, Cohang = 1 nếu còn hàng) • Khach(MaKH, Hoten, Diachi, Daily) – Mỗi khách hàng có một mã số duy nhất, họ tên, địa chỉ và khách có phải là đại lý hay khách hàng lẻ (Daily = 1 nếu khách là đại lý, Daily = 0 nếu khách là khách mua bán lẻ) • Hoadon(SoHD, Ngaylap, Ngaygiao, Trigia, MaKH) – Mỗi hóa đơn có một số hóa đơn duy nhất, ngày lập, trị giá hóa đơn, ngày giao hàng và giao cho khách hàng nào • Chitiet_HD(SoHD, MaHG, Soluong, Giaban) – Lưu thông tin chi tiết của hóa đơn bao gồm số HĐ, mã hàng, số lượng bán và giá bán của mặt hàng đó. Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 42
    • 43. Bài tập phần I (tt) • Viết các biểu thức đại số quan hệ cho các câu hỏi sau: – – – – Cho biết Mã số và tên của các mặt hàng còn trong kho Cho biết họ tên và địa chỉ của các khách hàng là đại lý Cho biết trị giá của những hóa đơn lập vào ngày 12/05/2007 Cho biết họ tên, địa chỉ của các khách hàng lẻ mua hàng vào ngày 15/01/2007 – In ra thông tin gồm mã số, tên hàng và đơn vị tính của các mặt hàng được các khách hàng ở Đồng Tháp mua vào ngày 15/12/2006 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 43
    • 44. Bài tập phần I (tt) – In ra mã số, tên của các mặt hàng thuộc các hóa đơn có trị giá lớn hơn 1000 – Cho biết tên của những mặt hàng chưa từng được bán – Cho biết mã số, tên của những đại lý không mua hai mặt hàng “H001” và “H002” – Tìm tên của những mặt hàng vừa được mua bởi các đại lý ở Vĩnh Long vừa được mua bởi các khách hàng lẻ ở Trà Vinh. Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 44
    • 45. Phần II NGÔN NGỮ SQL Email: ltnkhanh@itam.tdt.edu.vn Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 45
    • 46. Nội dung chương III • • • Giới thiệu sơ lược HQT CSDL SQL server 2000 Các kiểu dữ liệu trong SQL Câu lệnh định nghĩa dữ liệu – – – – – • Câu lệnh thao tác dữ liệu – – – – • Tạo cơ sở dữ liệu Tạo bảng Câu lệnh cập nhật dữ liệu Câu lệnh thay đổi cấu trúc bảng Xóa bảng Truy vấn dữ liệu cơ bản Truy vấn lồng Hàm kết hợp và gom nhóm Một số dạng truy vấn khác Khung nhìn Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 46
    • 47. Sơ lược về hệ QTCSDL SQL Server 2000 • SQL server 2000: – Là một hệ quản trị cơ sở dữ liệu quan hệ phổ biến hiện nay. – Có thể lưu trữ được dữ liệu rất lớn – Tính bảo mật cao – Hỗ trợ việc sao lưu dữ liệu dự phòng mạnh • Transact - SQL (T-SQL): – Là ngôn ngữ SQL mở rộng dựa trên chuẩn ANSI – T-SQL gồm các nhóm:· • Data Definition Language (DDL): ngôn ngữ định nghĩa dữ liệu • Data Manipulation Language (DML): ngôn ngữ xử lý dữ liệu Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 47
    • 48. Các kiểu dữ liệu trong SQL • Kiểu dữ liệu là một thuộc tính, nó chỉ định kiểu của dữ liệu và dung lượng có thể lưu trữ của một đối tượng • SQL Server hỗ trợ một số kiểu dữ liệu được cài sẵn như sau: Ths.Ths. Lương Thị NgọcKhánh – Khoa CNTT – TUD – ĐH– ĐH TĐT Lương Thị Ngọc Khánh – Khoa CNTT – TUD TĐT 48
    • 49. Các kiểu dữ liệu trong SQL (tt) int - sử dụng 4 byte trong bộ nhớ máy tính. - thường được dùng để lưu trữ giá trị số nguyên smallint -sử dụng 2 byte trong bộ nhớ máy tính. - lưu trữ các số nguyên từ -32768 đến 32767. Tinyint -Chiếm 1byte trong bộ nhớ -Có giá trị từ 0 đến 255 Exact numbers Bigint - Sử dụng 8bytes trong bộ nhớ máy tính -lưu trữ các số nguyên từ -263(-223372036854775807) đến 263-1 numeric(p,d) -Kiểu số với độ chính xác cố định -Biểu diễn số gồm p chữ số và 1 dấu chấm, có d chữ số bên phải dấu chấm thập phân money -sử dụng 8 byte trong bộ nhớ máy tính. -Biểu diễn giá trị dữ liệu tiền tệ từ (-263/10000) đến (263-1). Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 49
    • 50. Các kiểu dữ liệu trong SQL (tt) float(n) - sử dụng 8 byte trong bộ nhớ máy tính. - Biểu diễn các số dấu chấm động từ -1.79E+308 đến 1.79E+308 real - sử dụng 4 byte trong bộ nhớ máy tính. - biểu diễn các số dấu chấm động có độ chính xác từ -3.4E+38 đến 3.4E+38 datetime - Biểu diễn ngày và giờ - Được lưu trữ như là 2 số integer, chiếm 2 bytes, chính xác đến phần trăm của giây. smalldateti me - Biểu diễn ngày và giờ - Chính xác đến phút Approximat e numerics Date time and Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 50
    • 51. Các kiểu dữ liệu trong SQL (tt) char - Lưu trữ dữ liệu ký tự, độ dài có thể thay đổi và không hỗ trợ Unicode - Lưu trữ dữ liệu chuỗi, độ dài lớn và không hỗ trợ Unicode ntext - Lưu trữ dữ liệu ký tự, độ dài lớn và có hỗ trợ Unicode nchar - Lưu trữ dữ liệu ký tự, được cố định kích thước và có nvarchar Unicode Types varchar text Character String - Lưu trữ dữ liệu ký tự, được cố định kích thước và không hỗ trợ Unicode - Lưu trữ dữ liệu ký tự, độ dài có thể thay đổi và có hỗ trợ Unicode Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 51
    • 52. Nội dung chương III • • • Giới thiệu sơ lược HQT CSDL SQL Server Các kiểu dữ liệu trong SQL Câu lệnh định nghĩa dữ liệu – – – – – • Câu lệnh thao tác dữ liệu – – – – • Tạo cơ sở dữ liệu Tạo bảng Câu lệnh cập nhật dữ liệu Câu lệnh thay đổi cấu trúc bảng Xóa bảng Truy vấn dữ liệu cơ bản Truy vấn lồng Hàm kết hợp và gom nhóm Một số dạng truy vấn khác Khung nhìn Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 52
    • 53. Tạo cơ sở dữ liệu • Sử dụng cú pháp sau để tạo một cơ sở dữ liệu trong SQL: – CREATE DATABASE <tên csdl> • Ví dụ: Tạo cơ sở dữ liệu QLHH: – CREATE DATABASE QLHH • Sử dụng câu lệnh sau để mở và sử dụng cơ sở dữ liệu: – USE <tên csdl> – Vd: USE QLHH Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 53
    • 54. Tạo bảng - Khái niệm bảng • Bảng dùng để lưu trữ các thông tin của một đối tượng trong thực tế – Gồm có dòng và cột – Bảng trong CSDL thường có khoá chính – Các bảng thường liên hệ với nhau bằng các mối quan hệ • Bảng trong CSDL SQL Server (2005) có thể có các ràng buộc, trigger Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 54
    • 55. Tạo bảng - các thuộc tính của bảng • Tên bảng • Tên cột • Kiểu dữ liệu – Độ dài dữ liệu – Số ký số lưu trữ – Số số lẻ lưu trữ • Thuộc tính trên cột – Allow null – Identity – Default value Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 55
    • 56. Tạo bảng Cú pháp: CREATE TABLE <tên bảng>( <tên cột 1><kiểu dữ liệu>[CONSTRAINT<tên 1>], ( <tên cột 2><kiểu dữ liệu>[CONSTRAINT<tên 2>], …. ( <tên cột n><kiểu dữ liệu>[CONSTRAINT<tên n>] [,CONSTRAINT <tên 1>][, CONSTRAINT <tên 2>] … [,CONSTRAINT <tên n>] ); Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 56
    • 57. Tạo bảng (tt) • Trong đó, cú pháp khai báo của các ràng buộc toàn vẹn như sau: – [CONSTRAINT <tên RBTV>] NULL|NOT NULL| UNIQUE[(<tên cột i>,<tên cột j>…)]| PRIMARY KEY[(<tên cột i>,<tên cột j>…)]| FOREIGN KEY [[(<tên cột i>,<tên cột j>…)] REFERENCES <tên bảng>(<tên cột i>,<tên cột j>…)| CHECK (<điều kiện>) Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 57 57
    • 58. Tạo bảng (tt) • Ví dụ: Tạo bảng với lược đồ quan hệ sau: HANGHOA (MaHG, TenHG, DVT) • Mã hàng hóa là khóa chính, tên hàng và đơn vị tính. Tất cả không được rỗng. Create Table Hanghoa( MaHG varchar(10) Not Null Primary key, TenHG nvarchar(50) Not Null, DVT varchar(5) Not Null ) Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 58
    • 59. Tạo bảng – Cột được phép null • Đặc trưng về khả năng null của một cột quyết định các hàng trong bảng có thể chứa giá trị null cho cột đó. • Khả năng Null của một cột có thể được định nghĩa khi tạo một bảng. – Từ khóa NULL được sử dụng để chỉ ra rằng giá trị null là được phép trong cột – Từ khóa NOT NULL được sử dụng để chỉ ra rằng giá trị null là không được phép Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 59
    • 60. Tạo bảng – Cột được phép null • Ví dụ: CREATE TABLE Nhanvien( manv char(5) NOT NULL, tennv nvarchar(30), manqly char(5) NULL Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 60
    • 61. Tạo bảng – Định nghĩa DEFAULT • Ràng buộc default có thể được tạo ra tại thời điểm tạo bảng hoặc thêm sau khi bảng được tạo. • Với một cột, chỉ có thể tạo được một giá trị default. • Giá trị default có thể là một hằng, một hàm hệ thống, một biến toàn cục, hoặc một hàm do người dùng định nghĩa. Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 61
    • 62. Tạo bảng - Định nghĩa DEFAULT (tt) • Định nghĩa default trong khi tạo bảng: CREATE TABLE <tên bảng> <tên cột> <KDL> [NULL|NOT NULL] [CONSTRAINT <tên ràng buộc>] DEFAULT <biểu thức> Ví dụ: CREATE TABLE StoreProduct( ProductID int NOT NULL, Name varchar(40) NOT NULL, Price money NOT NULL DEFAULT (100) ) Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 62
    • 63. Tạo bảng - Định nghĩa DEFAULT (tt) • Định nghĩa default đối với một bảng đã tồn tại: ALTER TABLE <tên bảng> ADD [CONSTRAINT <tên ràng buộc>] DEFAULT <biểu thức> FOR <tên cột> Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 63
    • 64. Tạo bảng - Thuộc tính IDENTITY • Thuộc tính IDENTITY của SQL Server được sử dụng để tạo ra các cột nhận dạng, chúng chứa các giá trị tự động phát sinh tuần tự để nhận dạng duy nhất mỗi hàng trong một bảng. • Một thuộc tính nhận dạng có hai thành phần: – Giá trị khởi đầu – Giá trị tăng Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 64
    • 65. Tạo bảng - Thuộc tính IDENTITY (tt) • Cú pháp: • CREATE TABLE <table_name> (column_name data_type [ IDENTITY [(seed_value, increment_value)]] NOT NULL ) – Trong đó, - seed_value là giá trị khởi đầu . – - increment_value là giá trị tăng. • Ví dụ: CREATE TABLE ContactPhone ( Person_ID int IDENTITY(500,1) NOT NULL, MobileNumber bigint NOT NULL ) Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 65
    • 66. Tạo bảng – Ràng buộc • Ràng buộc là thuộc tính được chỉ định cho một cột hoặc một tập hợp các cột trong bảng để ngăn ngừa các giá trị không nhất quán được nhập vào. • SQL Server hỗ trợ các loại ràng buộc sau: – – – – – PRIMARY KEY UNIQUE FOREIGN KEY CHECK NOT NULL Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 66
    • 67. Tạo bảng – Ràng buộc - Primary Key (Khoá chính) • Ràng buộc PRIMARY KEY được sử dụng để tạo một khóa chính và đảm bảo toàn vẹn thực thể bảng. • Cú pháp để thêm một khóa chính trong khi tạo bảng: • CREATE TABLE <tên bảng> ( <tên cột> cột] ) <kiểu dữ liệu> PRIMARY KEY [ds • CREATE TABLE <tên bảng> ( <tên cột> <kdl> [ds cột] CONSTRAINT <tên RB> PRIMARY KEY) Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 67
    • 68. Tạo bảng – Ràng buộc - Primary Key (Khoá chính) (tt) • Ví dụ: Tạo bảng PhongBan với khóa chính là maphong CREATE TABLE PhongBan ( maphong int navarchar(20), PRIMARY KEY,tenphong trphong char(5), diadiem nvarchar(20) ) Hoặc có thể viết như sau: CREATE TABLE PhongBan ( maphong int constraint pk_pb PRIMARY KEY, tenphong nvarchar(20), trphong char(5), diadiem nvarchar(20)) Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 68
    • 69. Tạo bảng – Ràng buộc - UNIQUE - Khóa duy nhất • Ràng buộc khóa duy nhất: – được sử dụng để bảo đảm rằng chỉ các giá trị duy nhất được nhập vào trong cột hoặc một tập hợp các cột ( cho phép nhà phát triển chắc chắn rằng không có các giá trị trùng lặp được nhập vào) – Được sử dụng trong câu lệnh create table để định nghĩa khóa phụ cho bảng – Ràng buộc UNIQUE cho phép null Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 69
    • 70. Tạo bảng – Ràng buộc - UNIQUE - Khóa duy nhất (tt) • Cú pháp: – CREATE TABLE <tên bảng> ([ds cột, ] <tên cột> <kdl> [CONSTRAINT <tên RB>]UNIQUE [,ds cột]) • Ví dụ: CREATE TABLE KhachHang ( makh int PRIMARY KEY, tenkh nvarchar(30), diachi nvarchar(30), sodt char(10) UNIQUE ) Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 70
    • 71. Tạo bảng – Ràng buộc - Khóa ngoại (foreign key) • Một khóa ngoại trong một bảng là một cột, nó chỉ đến một khóa chính trong một bảng khác • Ràng buộc khóa ngoại được sử dụng để đảm bảo toàn vẹn tham chiếu • Cú pháp: – CREATE TABLE <tên bảng 1>( [ds cột,] <tên cột> <kdl> [CONSTRAINT <tên RB>]FOREIGN KEY REFERENCES <tên bảng 2>(cột làm khóa chính> [, ds cột]) Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 71
    • 72. Tạo bảng – Ràng buộc - Khóa ngoại (foreign key) • Ví dụ: CREATE TABLE Nhanvien( manv char(5) NOT NULL, tennv nvarchar(30), manqly char(5), phong int foreign key PhongBan(maphong) ) references • Hoặc có thể viết như sau: Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 72
    • 73. Tạo bảng – Ràng buộc - Khóa ngoại (foreign key) • Ví dụ: (tt) • Hoặc có thể viết như sau: CREATE TABLE Nhanvien( manv char(5) NOT NULL,tennv nvarchar(30), manqly char(5), phong int constraint fk_nv_pb foreign key(phong) references PhongBan(maphong) ) Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 73
    • 74. Tạo bảng – Ràng buộc - Ràng buộc kiểm tra (Check) • Ràng buộc check – Được sử dụng để chỉ định điều kiện hợp lệ đối với dữ liệu • Cú pháp: – CREATE TABLE <Tên bảng>( [ds cột,] <tên cột> <kdl> [CONSTRAINT <tên RB>] CHECK (<điều kiện>) • Ví dụ: Create table KetQua( masv int, mamh char(4), diem float, lanthi int check(lanthi<3) Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 74
    • 75. Nội dung phần II • • • Giới thiệu sơ lược HQT CSDL SQL server 2000 Các kiểu dữ liệu trong SQL Câu lệnh định nghĩa dữ liệu – – – – – • Câu lệnh thao tác dữ liệu – – – – • Tạo cơ sở dữ liệu Tạo bảng Câu lệnh cập nhật dữ liệu Câu lệnh thay đổi cấu trúc bảng Xóa bảng Truy vấn dữ liệu cơ bản Truy vấn lồng Hàm kết hợp và gom nhóm Một số dạng truy vấn khác Khung nhìn Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 75
    • 76. Câu lệnh cập nhật dữ liệu (SV) • Là câu lệnh dùng để cập nhật dữ liệu. • Bao gồm các câu lệnh: INSERT, UPDATE, DELETE. – Lệnh thêm dữ liệu vào bảng: INSERT INTO <Tên bảng> [(<DS các trường>)] VALUES (<DS các giá trị tương ứng>) Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 76
    • 77. Câu lệnh cập nhật dữ liệu (tt) (SV) – Lệnh thêm dữ liệu vào bảng: (tt) – Vd: MON (MaMH, TenMH, DVHT) Thêm vào bảng MON với mã môn TH345, tên môn Cơ sở dữ liệu, đơn vị học trình là 5 INSERT INTO MON dữ liệu',5) VALUES ('TH345', 'Cơ sở Hoặc: INSERT INTO MON (MaMH, TenMH, DVHT) VALUES('TH345', 'Cơ sở dữ liệu',5) Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 77
    • 78. Câu lệnh cập nhật dữ liệu (tt) (SV) • Một số lưu ý: – Thêm ký tự N trước chuỗi Unicode • Ví dụ: insert into values(‘NV01’,N’Nguyễn ‘Nam’) văn NhanVien Trường’, – Thuộc tính NOT NULL • Nếu thuộc tính được khai báo là NOT NULL thì bắt buộc phải có giá trị khi nhập 1 bộ vào bảng Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 78
    • 79. Câu lệnh cập nhật dữ liệu (tt) (SV) • Một số lưu ý (tt) – Nhập dữ liệu khi đã có ràng buộc khóa ngoại • Trường hợp 1: – Cách 1: • B1: Nhập PHONGBAN • B2: Nhập DEAN – Cách 2: • B1: Nhập DEAN, nhập phong = null • B2: Nhập PHONGBAN • B3: Cập nhật DEAN Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 79
    • 80. Câu lệnh cập nhật dữ liệu (tt) (SV) • Một số lưu ý (tt) – Nhập dữ liệu khi đã có ràng buộc khóa ngoại • Trường hợp 2: – Cách 1: • B1: Nhập NHANVIEN, đặt phong = null • B2: Nhập PHONGBAN • B3: Cập nhật thuộc tính phong của NHANVIEN – Cách 2: • B1: Nhập PHONGBAN, đặt trphong = null • B2: Nhập NHANVIEN • B3: Cập nhật PHONGBAN Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 80
    • 81. Câu lệnh cập nhật dữ liệu (tt) (SV) • Một số lưu ý (tt) – Nhập dữ liệu khi đã có ràng buộc khóa ngoại • Trường hợp 3: – Cách 1: • Những nhân viên có manql là null thì nhập trước • Sau đó nhập những nhân viên mà đã nhập thông tin người quản lý nhân viên đó. – Cách 2: • B1: Nhập NHANVIEN đặt manql = null • B2: Cập nhật manql của NHANVIEN Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 81
    • 82. Câu lệnh cập nhật dữ liệu (tt) (SV) - Lệnh Update, Delete • Lệnh cập nhật dữ liệu trong bảng: UPDATE <Tên bảng> SET <Tên trường1> <GT1>,...., <Tên trườngN> <GTN> [WHERE <điều kiện>] = = • Vd: Cập nhật số DVHT cho môn học 'TH345' tăng 1 UPDATE MON SET DVHT = DVHT WHERE MaMH = 'TH345' Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT + 1 82
    • 83. Câu lệnh cập nhật dữ liệu (tt) (SV) - Lệnh Update, Delete • Lệnh xóa dữ liệu khỏi bảng: DELETE FROM kiện chọn>] <Tên bảng> [WHERE <điều • Vd: Xóa các môn học có số DVHT nhỏ hơn 2 DELETE FROM MON WHERE DVHT < 2 • Lưu ý: Câu lệnh delete chỉ xóa dữ liệu của bảng, cấu trúc bảng tạo bởi câu lệnh create table vẫn được giữ nguyên. Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 83
    • 84. Các lệnh về thay đổi cấu trúc bảng - Thêm, xóa, sửa một cột (thuộc tính) (SV) • Thêm một cột vào bảng có sẵn – Cú pháp ALTER TABLE <tên bảng> ADD <tên cột 1> <kdl1>[,<tên cột 2> <kdl2>, ...] – Ví dụ: Thêm cột ngaysinh vào bảng NhanVien ALTER TABLE NhanVien ADD ngaysinh datetime Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 84
    • 85. Các lệnh về thay đổi cấu trúc bảng - Thêm, xóa, sửa một cột (thuộc tính) (tt) (SV) • Chỉnh sửa cột trong bảng – Cú pháp ALTER TABLE <table_name> ALTER COLUMN <tên cột 1> <kdl1> [,<tên cột 2> <kdl2> ...] – Ví dụ: Sửa cột tennv trong bảng NhanVien thành cột có kiểu dữ liệu là nvarchar(20) ALTER TABLE NhanVien ALTER column tennv nvarchar(20) Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 85
    • 86. Các lệnh về thay đổi cấu trúc bảng - Thêm, xóa, sửa một cột (thuộc tính) (tt) (SV) • Xóa cột trong bảng – Cú pháp ALTER TABLE <table_name> DROP COLUMN <column_name1> [,<column_name2> – Ví dụ: Xóa cột diadiem trong bảng PhongBan ALTER TABLE PhongBan DROP COLUMN diadiem Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 86
    • 87. Thêm ràng buộc khóa chính • Thêm RB khóa chính – Cú pháp ALTER TABLE <tên bảng> ADD CONSTRAINT <tên RB> PRIMARY KEY (<DS các cột làm khóa chính>) - Ví dụ: Thêm khóa chính cho bảng KetQua ALTER TABLE KetQua ADD CONSTRAINT pk_kq PRIMARY KEY(masv,mamh) Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 87
    • 88. Thêm ràng buộc khóa ngoại • Thêm RB khóa ngoại – Cú pháp ALTER TABLE <tên bảng> ADD CONSTRAINT <tên RB> FOREIGN KEY (<DS các cột làm khóa ngoại>) REFERENCES <tên bảng tham chiếu>(<ds cột>) - Ví dụ: Thêm RB khóa ngoại cho bảng KetQua ALTER TABLE KetQua ADD CONSTRAINT fk_kq_sv FOREIGN KEY(masv) REFERENCES SinhVien(masv) Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 88
    • 89. Thêm ràng buộc kiểm tra (check) • Thêm RB kiểm tra – Cú pháp ALTER TABLE <tên bảng> ADD CONSTRAINT <tên RB> CHECK(<điều kiện>) - Ví dụ: Thêm RB kiểm tra đảm bảo thuộc tính phai trong bảng NhanVien chỉ nhận giá trị “nam” hoặc “nữ” ALTER TABLE NhanVien ADD CONSTRAINT ck_phai CHECK(phai in (‘nam’,’nu’)) Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 89
    • 90. Xóa ràng buộc khóa chính, khóa ngoại, check • Cú pháp ALTER TABLE <tên bảng> DROP CONSTRAINT <tên RB> - Ví dụ: - Xóa RB kiểm tra trong bảng NhanVien ALTER TABLE NhanVien DROP CONSTRAINT ck_phai - Xóa RB khóa ngoại trong bảng KetQua ALTER TABLE KetQua DROP CONSTRAINT fk_kq_sv Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 90
    • 91. Ví dụ tổng hợp • Tạo csdl QLDT gồm các lược đồ sau: – SINHVIEN (MaSV, Hoten, Namsinh, QQ, Hocluc) – DETAI (MaDT, TenDT, Chunhiem, Kinhphi) – SV_DT (MaSV, MaDT, NoiAD, KQ) • Ta có các câu lệnh SQL sau: Create database QLDT Use QLDT Create table SinhVien( masv int primary nvarchar(30), namsinh datetime, qq hocluc float) Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT key, hoten nvarchar(20), 91
    • 92. Ví dụ tổng hợp Create table DeTai( madt int primary key, tendt nvarchar(30), chunhiem nvarchar(30), kinhphi int) Create table SV_DT( masv int foreign key references SinhVien(masv), madt int foreign key references DeTai(madt), noiAD nvarchar(20), kq float, constraint pk_svdt primary key(masv,madt)) Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 92
    • 93. Bài tập • Cho lược đồ csdl quản lý hàng hóa như sau: – – – – HangHoa(MaHG, TenHG, DVT, Dongia, Cohang) Khach(MaKH, Hoten, Diachi, Daily, sodienthoai) HoaDon(SoHD, Ngaylap, Ngaygiao, Trigia, MaKH) Chitiet_HD(SoHD, MaHG, Soluong, Giaban) • Thực hiện các công việc sau: – 1. Viết câu lệnh để tạo tất cả các bảng dựa vào các LĐQH trên (có đầy đủ RB khóa chính, khóa ngoại và not null). – 2. Trong bảng Khach, viết câu lệnh sửa cột diachi thành nvarchar(30), giả sử trước đó cột này có kiểu char(20). – 3. Viết câu lệnh kiểm tra RB trên bản Chitiet_HD. – 4. Viết câu lệnh không kiểm tra RB trên bảng HoaDon. – 5. Thêm RB kiểm tra cho thuộc tính cohang trong bang HangHoa là 0 hoặc 1. – 6. Thêm RB duy nhất cho thuộc tính sodienthoai trong bảng Khach. Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 93
    • 94. Cơ sở dữ liệu ví dụ • Trong suốt phần sau của chương này, ta sử dụng csdl sau làm ví dụ minh họa: – NhanVien(manv, honv, tenlot, tennv, ngaysinh, diachi, phai, luong, manql, phong) – PhongBan(maphong,tenphong,trphong, ngnhanchuc) – DDPhong(maphong, diadiem) – DeAn(tenda, mada, ddiemda, phong) – PhanCong(manvien, soda, thoigian) – ThanNhan(manvien, tentn, phai, ngaysinh, quanhe) Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 94
    • 95. Truy vấn dữ liệu • Là ngôn ngữ rút trích dữ liệu – Thường đi kèm với một số điều kiện nào đó • Dựa trên Phép toán ĐSQH + Một số bổ sung – Cho phép kết quả trả về của bảng có nhiều dòng trùng nhau Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 95
    • 96. Truy vấn cơ bản • Gồm 3 mệnh đề SELECT [DISTINCT] <danh sách các cột> FROM <danh sách các bảng> [WHERE] <điều kiện> Từ khóa DISTINCT để loại bỏ các dòng trùng nhau trong bảng kết quả – <danh sách các cột>: • Tên các cột cần được hiển thị trong kết quả truy vấn – <danh sách các bảng> • Tên các bảng liên quan đến câu truy vấn – <điều kiện> • • • Biểu thức boolean xác định dòng nào sẽ được rút trích Nối các biểu thức: AND, OR, và NOT Phép toán: < , > , <=, >=, <>, =, LIKE và BETWEEN Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 96
    • 97. Truy vấn cơ bản (tt) • SQL và ĐSQH π × SELECT <danh sách các cột> FROM <danh sách các bảng> σ WHERE <điều kiện> SELECT L πL (σC (R)) Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT FROM R WHERE C 97
    • 98. Truy vấn cơ bản (tt) • Ví dụ: Cho biết ds sinh viên lớp có mã lớp là ‘Ti01’ SELECT * Dấu * để chỉ tất cả các cột FROM SinhVien WHERE malop = ‘Ti01’ – Tương đương với biểu thức đsqh sau: σ malop = ‘Ti01’ (SinhVien) Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 98
    • 99. Truy vấn cơ bản (tt) • Ví dụ: Cho biết ds sinh viên nam của lớp có mã ‘Ti01’ SELECT masv, hoten, ngaysinh, phai, malop FROM SinhVien WHERE malop = ‘Ti01’ and phai = ‘Nam’ – Tương đương với biểu thức đsqh sau:  ∏ masv, hoten, ngaysinh, phai, malop (σ malop = ‘Ti01’and phai=‘Nam’ (SinhVien)) Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 99
    • 100. Truy vấn cơ bản (tt) • Tên bí danh: – Có thể đặt lại tên cho ds các thuộc tính trong bảng kết quả (gọi là tên bí danh) bằng cách sử dụng cú pháp sau: Select <tên cột> AS <tên mới cho cột> – Ví dụ SELECT masv AS ma, hoten AS ‘Ho ngaysinh, phai, malop FROM SinhVien WHERE malop = ‘Ti01’ and phai = ‘Nam’ Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT ten’, 100
    • 101. Truy vấn cơ bản (tt) • Ví dụ: Cho biết mã số, họ tên, ngày sinh, tên lớp của danh sách sinh viên lớp ‘công nghệ thông tin 01’ SELECT maso, hoten, ngaysinh, tenlop FROM SinhVien, LopHoc WHERE tenlop = ‘Cong nghe thong tin 01’ AND SinhVien.malop = LopHoc.malop Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 101
    • 102. Truy vấn cơ bản (tt) • Tên bí danh cho bảng – Ví dụ: Cho biết mã số, họ tên, ngày sinh, tên lớp của danh sách sinh viên lớp ‘công nghệ thông tin 01’ Select From Where maso, hoten, ngaysinh, tenlop SinhVien sv, LopHoc lh tenlop = =‘Cong nghe thong tin 01’ and sv.malop = lh.malop Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 102
    • 103. Truy vấn cơ bản (tt) - Toán tử between, not between, like, not like • BETWEEN – Sử dụng để kiểm tra giá trị dữ liệu nằm trong (ngoài) một khoảng nào đó. SELECT MANV, TENNV FROM NHANVIEN WHERE LUONG > 20000 AND LUONG < 30000 • Có thể viết: SELECT MANV, TENNV FROM NHANVIEN WHERE LUONG BETWEEN 20000 AND 30000 • Sử dụng NOT BETWEEN tương tự Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 103
    • 104. Truy vấn cơ bản (tt) - Toán tử between, not between, like, not like • LIKE – Từ khóa LIKE (NOT LIKE) được sử dụng trong câu lệnh select nhằm mô tả khuôn dạng dữ liệu cần tìm kiếm. – Thường được kết hợp với các ký tự đại diện sau: • %: chuỗi ký tự bất kỳ (có thể là không có hoặc nhiều ký tự) • _: ký tự đơn bất kỳ • []: ký tự đơn bất kỳ trong giới hạn được chỉ định (ví dụ [a-f]) hay một tập (ví du: [abcdef]) • [^]: ký tự đơn bất kỳ không nằm trong giới hạn được chỉ định (ví dụ [^a-f]) hay một tập (ví dụ [^abcdef]). Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 104
    • 105. Truy vấn cơ bản (tt) - Toán tử between, not between, like, not like • LIKE (tt) – Ví dụ: SELECT masv, hoten, ngaysinh FROM SinhVien WHERE hoten LIKE ‘Nguyen _ _ _ _’ – Hoặc SELECT masv, hoten, ngaysinh FROM SinhVien WHERE hoten LIKE ‘Nguyen %’ • Sử dụng NOT LIKE tương tự – Lưu ý: • Like “ab%cd%” cho ra những chuỗi bắt đầu với “ab%cd” • Like “abcd%” cho ra những chuỗi bắt đầu với “abcd” Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 105
    • 106. Truy vấn cơ bản (tt) - Ví dụ • Với những đề án ở ‘Ha Noi’, cho biết mã đề án, mã phòng ban chủ trì đề án, họ tên trưởng phòng cùng với ngày sinh và địa chỉ của người ấy Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 106
    • 107. Truy vấn cơ bản (tt) - Ví dụ • Cho biết họ tên của nhân viên phòng số 5 có tham gia vào đề án “Sản phẩm X” với số giờ làm việc trên 10 giờ Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 107
    • 108. Truy vấn cơ bản - Mệnh đề ORDER BY • Dùng để hiển thị kết quả câu truy vấn theo một thứ tự nào đó • Cú pháp: SELECT <ds các cột> FROM <ds các bảng> WHERE <điều kiện> ORDER BY <danh sách các cột><kiểu sắp> – Trong đó <kiểu sắp> có thể là: • ASC: tăng (mặc định) • DESC: giảm Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 108
    • 109. Truy vấn cơ bản - Mệnh đề ORDER BY (tt) • Ví dụ: SELECT MANVIEN, SODA FROM PHANCONG ORDER BY MANVIEN DESC, SODA MANVIEN 99988777 7 99988777 7 98798798 7 98798798 7 98765432 1 98765432 1 98765432 1 SODA 10 30 10 30 10 20 30 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 109
    • 110. Nội dung phần II • • • Giới thiệu sơ lược HQT CSDL SQL server 2000 Các kiểu dữ liệu trong SQL Câu lệnh định nghĩa dữ liệu – – – – – • Câu lệnh thao tác dữ liệu – – – – • Tạo cơ sở dữ liệu Tạo bảng Câu lệnh cập nhật dữ liệu Câu lệnh thay đổi cấu trúc bảng Xóa bảng Truy vấn dữ liệu cơ bản Truy vấn lồng Hàm kết hợp và gom nhóm Một số dạng truy vấn khác Khung nhìn Ths.Ths. Lương Thị NgọcKhánh – Khoa CNTT – TUD – ĐH– ĐH TĐT Lương Thị Ngọc Khánh – Khoa CNTT – TUD TĐT 110
    • 111. Truy vấn lồng • Các câu lệnh SELECT có thể lồng nhau ở nhiều mức • Các câu truy vấn con trong cùng một mệnh đề WHERE được kết hợp bằng phép nối logic • Câu truy vấn con thường trả về một tập các giá trị • Cú pháp: SELECT <danh sách các cột> FROM <danh sách các bảng> WHERE <so sánh tập hợp> ( SELECT <danh sách các cột> FROM <danh sách các bảng> WHERE <điều kiện>) Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 111
    • 112. Truy vấn lồng (tt) • Mệnh đề WHERE của câu truy vấn cha – <biểu thức> <so sánh tập hợp> <truy vấn con> – So sánh tập hợp thường đi cùng với một số toán tử • • • IN, NOT IN ALL ANY hoặc SOME – Kiểm tra sự tồn tại • • EXISTS NOT EXISTS Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 112
    • 113. Truy vấn lồng (tt) • Có 2 loại truy vấn lồng – Lồng phân cấp • • Mệnh đề WHERE của truy vấn con không tham chiếu đến thuộc tính của các quan hệ trong mệnh đề FROM ở truy vấn cha Khi thực hiện, câu truy vấn con sẽ được thực hiện trước, 1 lần – Lồng tương quan • • Mệnh đề WHERE của truy vấn con tham chiếu ít nhất một thuộc tính của các quan hệ trong mệnh đề FROM ở truy vấn cha Khi thực hiện, câu truy vấn con sẽ được thực hiện nhiều lần, mỗi lần tương ứng với một bộ của truy vấn cha Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 113
    • 114. Truy vấn lồng (tt) - Ví dụ lồng phân cấp • Ví dụ: SELECT MANV, TENNV FROM NHANVIEN, DDPhong WHERE DIADIEM = ‘TP HCM’ AND phong = maphong • Tương đương với câu truy vấn lồng sau: SELECT MANV, TENNV FROM NHANVIEN WHERE PHONG IN (SELECT MAPHONG FROM DDPHONG WHERE DIADIEM = ‘TP HCM’ ) Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 114
    • 115. Truy vấn lồng (tt) - Ví dụ lồng phân cấp • Ví dụ: Tìm những nhân viên không có thân nhân nào Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 115
    • 116. Truy vấn lồng (tt) - Ví dụ lồng tương quan • Ví dụ: SELECT MANV, TENNV FROM NHANVIEN WHERE EXISTS ( SELECT * FROM PHONGBAN WHERE TENPHONG=‘Nghien cuu’ AND PHONG=MAPHONG)  Câu truy vấn trên cho kết quả gì? Tương đương với câu truy vấn đơn giản nào? SELECT MANV, TENNV FROM NHANVIEN, PHONGBAN WHERE TENPHONG=‘Nghien cuu’ AND PHONG=MAPHONG Ths.Ths. Lương Thị NgọcKhánh – Khoa CNTT – TUD – ĐH– ĐH TĐT Lương Thị Ngọc Khánh – Khoa CNTT – TUD TĐT 116
    • 117. Truy vấn lồng (tt) - Ví dụ • Tìm nhân viên có người thân cùng tên và cùng giới tính với nhân viên đó Ths.Ths. Lương Thị NgọcKhánh – Khoa CNTT – TUD – ĐH– ĐH TĐT Lương Thị Ngọc Khánh – Khoa CNTT – TUD TĐT 117
    • 118. Truy vấn lồng (tt) - Ví dụ • Tìm những nhân viên có lương lớn hơn lương của ít nhất một nhân viên phòng 4 • Tìm những nhân viên có lương lớn hơn lương của tất cả nhân viên phòng 4 Ths.Ths. Lương Thị NgọcKhánh – Khoa CNTT – TUD – ĐH– ĐH TĐT Lương Thị Ngọc Khánh – Khoa CNTT – TUD TĐT 118
    • 119. Truy vấn lồng (tt) - Nhận xét • IN – <tên cột> IN <câu truy vấn con> – Thuộc tính ở mệnh đề SELECT của truy vấn con phải có cùng kiểu dữ liệu với thuộc tính ở mệnh đề WHERE của truy vấn cha • EXISTS – Không cần có thuộc tính, hằng số hay biểu thức nào khác đứng trước – Không nhất thiết liệt kê tên thuộc tính ở mệnh đề SELECT của truy vấn con – Những câu truy vấn có = ANY hay IN đều có thể chuyển thành câu truy vấn có EXISTS Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 119119
    • 120. Nội dung phần II • • • Giới thiệu sơ lược HQT CSDL SQL server 2000 Các kiểu dữ liệu trong SQL Câu lệnh định nghĩa dữ liệu – – – – – • Câu lệnh thao tác dữ liệu – – – – • Tạo cơ sở dữ liệu Tạo bảng Câu lệnh cập nhật dữ liệu Câu lệnh thay đổi cấu trúc bảng Xóa bảng Truy vấn dữ liệu cơ bản Truy vấn lồng Hàm kết hợp và gom nhóm Một số dạng truy vấn khác Khung nhìn Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 120
    • 121. Hàm kết hợp và gom nhóm • Hàm kết hợp: – Được sử dụng trong mệnh đề SELECT – Có các hàm kết hợp sau: • COUNT – COUNT(*) đếm số dòng – COUNT(<tên thuộc tính>) đếm số giá trị khác NULL của thuộc tính – COUNT(DISTINCT <tên thuộc tính>) đếm số giá trị khác nhau và khác NULL của thuộc tính – MIN • MAX • SUM • AVG Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 121
    • 122. Hàm kết hợp và gom nhóm (tt) • Ví dụ: – Tìm tổng lương, lương cao nhất, lương thấp nhất và lương trung bình của các nhân viên – Select sum(luong) as ‘tong luong’, min(luong) as ‘luong nho nhat’, max(luong) as ‘luong lon nhat’, avg(luong) as ‘luong tb’ From NhanVien – Cho biết số lượng nhân viên của phòng ‘Nghien cuu’ Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 122
    • 123. Hàm kết hợp và gom nhóm (tt) • Gom nhóm: – Nhóm các bộ có cùng giá trị ở một tập các thuộc tính lại với nhau – Cú pháp: SELECT <danh sách các cột> FROM <danh sách các bảng> WHERE <điều kiện> GROUP BY <danh sách các cột gom nhóm> Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 123
    • 124. Hàm kết hợp và gom nhóm (tt) • Ví dụ: – Cho biết số lượng nhân viên của từng phòng ban – Cho biết thông tin của những phòng ban có nhiều hơn 10 nhân viên Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 124
    • 125. Hàm kết hợp và gom nhóm (tt) • Ví dụ: – Với mỗi nhân viên cho biết mã số, họ tên, số lượng đề án và tổng thời gian mà họ tham gia SELECT HONV, TENNV, COUNT(*) AS SL_DA,SUM(THOIGIAN) AS TONG_TG FROM PHANCONG, NHANVIEN WHERE MANVIEN=MANV GROUP BY MA_NVIEN, HONV, TENNV – Cho biết những nhân viên tham gia từ 2 đề án trở lên Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 125
    • 126. Hàm kết hợp và gom nhóm (tt) • Cú pháp: SELECT <danh sách các cột> FROM <danh sách các bảng> WHERE <điều kiện> GROUP BY <danh sách các cột gom nhóm> HAVING <điều kiện trên nhóm> • Ví dụ: Cho biết những nhân viên tham gia từ 2 đề án trở lên Ths.Ths. Lương Thị NgọcKhánh – Khoa CNTT – TUD – ĐH– ĐH TĐT Lương Thị Ngọc Khánh – Khoa CNTT – TUD TĐT 126
    • 127. Hàm kết hợp và gom nhóm (tt) • Ví dụ: – Cho biết những phòng ban (TENPHONG) có lương trung bình của các nhân viên lớn lơn 20000 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 127
    • 128. Hàm kết hợp và gom nhóm (tt) - Nhận xét • Mệnh đề GROUP BY – Các thuộc tính trong mệnh đề SELECT (trừ những thuộc tính trong các hàm kết hợp) phải xuất hiện trong mệnh đề GROUP BY • Mệnh đề HAVING – Sử dụng các hàm kết hợp trong mệnh đề SELECT để kiểm tra một số điều kiện nào đó – Chỉ kiểm tra điều kiện trên nhóm, không là điều kiện lọc trên từng bộ – Sau khi gom nhóm điều kiện trên nhóm mới được thực hiện Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 128
    • 129. Hàm kết hợp và gom nhóm (tt) - Nhận xét • Thứ tự thực hiện câu truy vấn có mệnh đề GROUP BY và HAVING – (1) Chọn ra những dòng thỏa điều kiện trong mệnh đề WHERE – (2) Những dòng này sẽ được gom thành nhiều nhóm tương ứng với mệnh đề GROUP BY – (3) Áp dụng các hàm kết hợp cho mỗi nhóm – (4) Bỏ qua những nhóm không thỏa điều kiện trong mệnh đề HAVING – (5) Rút trích các giá trị của các cột và hàm kết hợp trong mệnh đề SELECT Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 129
    • 130. Hàm kết hợp và gom nhóm (tt) • Ví dụ: – Tìm phòng ban có lương trung bình cao nhất – Tìm 3 nhân viên có lương cao nhất – Tìm tên các nhân viên được phân công làm tất cả các đồ án Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 130
    • 131. Nội dung phần II • • • Giới thiệu sơ lược HQT CSDL SQL server 2000 Các kiểu dữ liệu trong SQL Câu lệnh định nghĩa dữ liệu – – – – – • Câu lệnh thao tác dữ liệu – – – – • Tạo cơ sở dữ liệu Tạo bảng Câu lệnh cập nhật dữ liệu Câu lệnh thay đổi cấu trúc bảng Xóa bảng Truy vấn dữ liệu cơ bản Truy vấn lồng Hàm kết hợp và gom nhóm Một số dạng truy vấn khác Khung nhìn Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 131
    • 132. Điều kiện kết ở mệnh đề FROM • Thông thường điều kiện của phép kết nối được chỉ định trong mệnh đề where của câu truy vấn. • Chuẩn SQL2 đưa ra một cách khác để biểu diễn cho phép nối. Trong cách biểu diễn này: – Điều kiện của phép kết nối được chỉ định ngay trong mệnh đề From. – Ưu điểm: Cho phép biểu diễn phép nối và điều kiện nối rõ ràng (đặc biệt trong trường hợp phép nối được thực hiện từ 3 bảng trở lên) Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 132
    • 133. Điều kiện kết ở mệnh đề FROM (tt) • Kết nối bằng (kết nối trong) – Cú pháp: SELECT FROM <biểu WHERE <danh sách các cột> R1 [INNER] JOIN R2 ON thức> <điều kiện> Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 133
    • 134. Điều kiện kết ở mệnh đề FROM (tt) • Kết nối bằng (kết nối trong) - Ví dụ: Hiển thị họ tên và ngày sinh, tên lớp của ds sinh viên lớp ‘Cong nghe thong tin 01’ có thể viết theo 2 cách sau: select From Where hoten, ngaysinh, tenlop SinhVien, LopHoc SinhVien.malop = LopHoc.malop and tenlop = ‘Cong nghe thong tin 01’ - Hoặc có thể viết: select hoten, ngaysinh, tenlop From SinhVien INNER JOIN LopHoc ON SinhVien.malop = LopHoc.malop Where tenlop = ‘Cong nghe thong tin 01’ Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 134
    • 135. Điều kiện kết ở mệnh đề FROM (tt) • Kết nối ngoài – Cú pháp: SELECT <danh sách các cột> FROM R1 LEFT|RIGHT|FULL [OUTER] JOIN R2 ON <biểu thức> WHERE <điều kiện> – Ví dụ: Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 135
    • 136. Điều kiện kết ở mệnh đề FROM (tt) • Kết nối ngoài – Ví dụ: ta có 2 bảng NhanVien và DonVi như sau: • Khi đó, phép kết nối ngoài trái 2 bảng trên cho kết quả sau: select * from NhanVien left join DonVi on NhanVien.madv = DonVi.madv Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 136
    • 137. Điều kiện kết ở mệnh đề FROM (tt) • Kết nối ngoài – Ví dụ: ta có 2 bảng NhanVien và DonVi như sau: • Phép kết nối ngoài phải 2 bảng trên cho kết quả sau: select * from NhanVien right join DonVi on NhanVien.madv = DonVi.madv Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 137
    • 138. Điều kiện kết ở mệnh đề FROM (tt) • Kết nối ngoài – Ví dụ: ta có 2 bảng NhanVien và DonVi như sau: • Phép kết nối ngoài đầy đủ 2 bảng trên cho kết quả sau: select * from NhanVien full join DonVi on NhanVien.madv = DonVi.madv Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 138
    • 139. Điều kiện kết ở mệnh đề FROM (tt) • Ví dụ: – Tìm mã và tên các nhân viên làm việc tại phòng ‘Nghien cuu’ – Cho biết họ tên nhân viên và tên phòng ban mà họ là trưởng phòng nếu có Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 139
    • 140. Điều kiện kết ở mệnh đề FROM (tt) • Ví dụ: – Tìm họ tên các nhân viên và tên các đề án nhân viên tham gia nếu có Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 140
    • 141. Một số dạng câu truy vấn khác • SV tự tìm hiểu Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 141
    • 142. BÀI TẬP PHẦN II • Cho lược đồ csdl QLBanHang được mô tả như sau: Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 142
    • 143. BÀI TẬP PHẦN II (tt) • Thực hiện các yêu cầu sau bằng SQL – – – – – – – – Tạo csdl và tạo các bảng, nhập dữ liệu cho các bảng trong csdl Cho biết mã và tên của các mặt hàng có giá lớn hơn 10 và số lượng hiện có ít hơn 20 Cho biết thông tin những khách hàng nào đã mua mặt hàng áo Việt Tiến Cho biết thông tin những mặt hàng nào chưa từng được khách hàng đặt mua? Cho biết tổng số lượng bán được của mỗi mặt hàng Bổ sung ràng buộc cho bảng DONDATHANG rang buộc kiểm tra ngày giao hàng và ngày chuyển hàng phải sau hoặc bằng với ngày đặt hàng. Cho biết thông tin những khách hàng có cùng ngày sinh Thống kê số lượng hóa đơn đã lập của mỗi nhân viên Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 143
    • 144. Phần III RÀNG BUỘC TOÀN VẸN Email: ltnkhanh@itam.tdt.edu.vn Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 144
    • 145. CSDL mẫu • A) CSDL HSSINHVIEN – SINH_VIEN(maSV, maKhoa) hotenSV, nam, ngSinh, • maSV: mã số sinh viên • Nam = true nếu sinh viên là nam và = false nếu là nữ; maKhoa: mã số khoa mà sinh viên đang theo học. - KHOA(maKhoa, tenKhoa, soCB) • soCB: tổng số cán bộ giảng dạy của khoa. – MON_HOC(maMH, tenMH, soTietLT, soTietTH) • soTietLT, soTietTH là tổng số tiết lý thuyết và tổng số tiết thực hành của môn học. – KET_QUA(maSV, maMH, lanThi, diem) Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 145
    • 146. CSDL mẫu (tt) • B) CSDL QLHANGHOA QL. đơn hàng và hóa đơn giao hàng của một cty thương mại. – KHACH(maKH, congNo) tenKh, diachiKH, dienThoai, • congNo: công nợ với khách hàng, nếu congNo > 0: khách hàng nợ công ty và ngược lại. – HANG_HOA(maHH, tenHH, dvTinh) – DAT_HANG(soDH, maHH, soLuongDat, ngayDH, maKH) • soDH: mã số của của đơn đặt hàng, một đơn đặt hàng có thể gồm nhiều mặt hàng. maHH: mã số của h.hóa mà k.hàng cần đặt mua. Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 146
    • 147. CSDL mẫu (tt) – HOA_DON(soHD, ngayXuat) ngayHD, soDH, trigiaHD, • soHD: mã số của hóa đơn bán hàng cho khách. Một hóa đơn bán hàng có thể gồm nhiều mặt hàng. • ngayHD: ngày phát hành hóa đơn • soDH: hóa đơn bán hàng theo yêu cầu của một đơn đặt hàng có mã số là soDH và ngược lại, mỗi đơn đặt hàng sẽ được giải quyết chỉ trong một hóa đơn. Do điều kiện khách quan, có thể cty ko giao đầy đủ các mặt hàng cũng như số lượng từng mặt hàng như yêu cầu trong đơn đặt hàng nhưng ko bao giờ giao vượt ngoài yêu cầu. Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 147
    • 148. CSDL mẫu (tt) – CTIET_HD(soHD, maHH, giaBan, soLuongBan) (chi tiết những mặt hàng bán được cho khách hàng) • soHD: mã số của hóa đơn bán hàng cho khách • maHH: mã số của hàng hóa bán cho khách theo yêu cầu của đơn đặt hàng. – PHIEU_THU(soPT, ngayPT, maKH, soTien) • soPT: mã số phiếu thu tiền của khách hàng; khách hàng có thể trả tiền không theo một hóa đơn bán hàng nào cả và cũng có thể trả tiền trước khi nhận hàng xem như tiền đặt cọc. • ngayPT: ngày phát hành phiếu thu tiền • maKH: mã số khách hàng trả tiền • soTien: số tiền thu của khách hàng Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 148
    • 149. CSDL mẫu (tt) • C) CSDL QLDEAN (đã xét ở chương 2) Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 149
    • 150. Ràng buộc toàn vẹn - Khái niệm • Trong một CSDL, – luôn tồn tại rất nhiều mối liên hệ, – rất nhiều sự ràng buộc qua lại giữa các thuộc tính, các bộ với nhau… – Các mối liên hệ, ràng buộc này là những điều kiện bất biến mà tất cả các bộ của những QH có liên quan trong CSDL đều phải thỏa mãn ở bất kỳ thời điểm nào. • RBTV là Những điều kiện bất biến mà các đối tượng của CSDL phải thỏa mãn ở bất kỳ thời điểm nào. • Trong thực tế, RBTV là các quy tắc quản lý được áp đặt lên trên các đối tượng của thế giới thực. 150 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT
    • 151. Ràng buộc toàn vẹn - Khái niệm (tt) • Ví dụ: Trong CSDL HSSINHVIEN ta có một số RBTV như sau: • C1: Mỗi sinh viên có một mã số riêng biệt, không trùng với bất kỳ sinh viên nào khác. • C2: Mỗi sinh viên chỉ được thi tối đa hai lần cho một môn học. • C3: Mỗi sinh viên phải thuộc về một khoa nào đó. • Công việc kiểm tra RBTV có thể được tiến hành vào một trong các thời điểm sau: – ngay khi thực hiện một thao tác câp nhật CSDL (thêm, sửa, xóa…). – định kỳ hay đột xuất. Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 151
    • 152. Ràng buộc toàn vẹn - Các yếu tố của ràng buộc toàn vẹn • Một RBTV có ba yếu tố: điều kiện (nội dung), bối cảnh và tầm ảnh hưởng • Điều kiện của một RBTV – Ngôn ngữ tự nhiên • Dễ hiểu nhưng thiếu tính chặt chẽ – Ngôn ngữ hình thức: đại số quan hệ, mã giả (pseudo code) • Cô đọng, chặt chẽ nhưng đôi lúc khó hiểu • Biểu diễn thông qua – Cũng có thể được biểu diễn bằng phụ thuộc hàm. (sẽ tìm hiểu sau này) Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 152
    • 153. Ràng buộc toàn vẹn - Các yếu tố của ràng buộc toàn vẹn (tt) • Ví dụ: Ràng buộc R1: – Ngôn ngữ tự nhiên • Mức lương của một người nhân viên không được vượt quá trưởng phòng – Ngôn ngữ hình thức ∀t ∈ NHANVIEN ( ∃u ∈ PHONGBAN ( ∃v ∈ NHANVIEN ( u.TRPHG = v.MANV ∧ u.MAPHG = t.PHG ∧ t.LUONG ≤ v.LUONG ))) Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 153
    • 154. Ràng buộc toàn vẹn - Các yếu tố của ràng buộc toàn vẹn (tt) • Ví dụ: ràng buộc R2: – Ngôn ngữ tự nhiên • Người quản lý trực tiếp phải là một nhân viên trong công ty – Ngôn ngữ hình thức ∀t ∈ NHANVIEN ( t.MA_NQL ≠ null ∧ ∃s ∈ NHANVIEN (t.MA_NQL = s.MANV )) Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 154
    • 155. Ràng buộc toàn vẹn - Các yếu tố của ràng buộc toàn vẹn • Bối cảnh của một RBTV C: – là những quan hệ có khả năng bị vi phạm RBTV khi thực hiện các phép cập nhật. – có thể là một hay nhiều quan hệ. – Vd4: bối cảnh của RBTV C1 là quan hệ SinhVien. Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 155
    • 156. Ràng buộc toàn vẹn - Các yếu tố của ràng buộc toàn vẹn (tt) • Tầm ảnh hưởng của một RBTV – Nhằm xác định thời điểm cần kiểm tra các RBTV đó. – Bảng tầm ảnh hưởng của một RBTV C • Có 2 loại: – Bảng tầm ảnh hưởng cho một RBTV – Bảng tầm ảnh hưởng tổng hợp Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 156
    • 157. Ràng buộc toàn vẹn - Các yếu tố của ràng buộc toàn vẹn (tt) • Bảng tầm ảnh hưởng của một RBTV (C) Thêm Sửa Xóa Quan hệ 1 + + + Quan hệ 2 – + – – + + … Quan hệ n +: cần phải kiểm tra RBTV C –: không cần kiểm tra RBTV C - Ví dụ: Bảng tầm ảnh hưởng của ràng buộc C1 Thêm SinhVien Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT Sửa Xóa + –(*) – 157
    • 158. Ràng buộc toàn vẹn - Các yếu tố của ràng buộc toàn vẹn (tt) • Bảng tầm ảnh hưởng tổng hợp Ràng buộc 1 … Ràng buộc m Thêm Sửa Xóa Thêm Sửa Xóa Quan hệ 1 - + - + + + Quan hệ 2 + - - – + – + + + – + + … Quan hệ n Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 158
    • 159. Ràng buộc toàn vẹn - Phân loại • Các RBTV có thể được chia làm hai loại chính: – RBTV có bối cảnh là một quan hệ – RBTV có bối cảnh nhiều quan hệ Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 159
    • 160. Ràng buộc toàn vẹn - Phân loại – Bối cảnh là một QH • RBTV về miền giá trị – liên quan đến miền giá trị của các thuộc tính. • Ví dụ: trong LĐQH Ketqua ta có: Miền giá trị(Diem)=0..10 – phòng đào tạo quy định thêm một RBTV là: Điểm thi có độ chính xác đến 0.5 điểm, điều kiện ràng buộc này có thể được biểu diễn như sau: (t.Diem * 4) mod 2 = 0, ∀t ∈ Ketqua – trong quan hệ NHANVIEN(maNV,tenNV, luong, tamUng, conLai), ta có: RBTV về miền giá trị: tamUng ≤ luong Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 160
    • 161. Ràng buộc toàn vẹn - Phân loại – Bối cảnh là một QH • RBTV về miền giá trị – Ví dụ: ràng buộc Thời gian tham gia đề án của một nhân viên không quá 60 giờ – Bối cảnh: • PHANCONG – Biểu diễn: ∀t ∈ PHANCONG ( t.THOIGIAN ≤ 60 ) – Bảng tầm ảnh hưởng: R3 PHANCON G Thêm + Xóa − Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM Sửa + (THOIGIAN) 161161
    • 162. Ràng buộc toàn vẹn - Phân loại – Bối cảnh là một QH (tt) • RBTV liên thuộc tính – thể hiện mối liên hệ giữa các thuộc tính trong cùng một lược đồ quan hệ. Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 162
    • 163. Ràng buộc toàn vẹn - Phân loại – Bối cảnh là một QH (tt) • RBTV liên thuộc tính – Vd: Trong LĐQH HoaDon, ta có một RBTV liên thuộc tính như sau: “Hàng hóa chỉ được xuất kho sau khi đã lập hóa đơn” ∀hd ∈ THOADON hd.ngayHD ≤ hd.ngayXuat – Lưu ý: MGT của một th.t A được tính toán từ các th.t khác trong cùng một LĐQH với A thì ta cũng có được một RBTV liên thuộc tính nhưng trong quá trình thiết kế ta có thể loại bỏ thuộc tính A ra khỏi LĐQH. Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 163
    • 164. Ràng buộc toàn vẹn - Phân loại – Bối cảnh là một QH (tt) • RBTV liên bộ – Là sự ràng buộc giữa các bộ bên trong một quan hệ. – Thường được biểu diễn bằng phụ thuộc hàm. – là loại RBTV rất phổ biến, có mặt trong mọi LĐQH của CSDL và thường được các hệ quản trị CSDL hỗ trợ phần tự động kiểm tra. – Ví dụ: ràng buộc C1 thuộc loại ràng buộc toàn vẹn liên bộ. Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 164
    • 165. Ràng buộc toàn vẹn - Phân loại – Bối cảnh là một QH (tt) • RBTV liên bộ – Ví dụ: với ràng buộc Tên phòng là duy nhất – Bối cảnh: • PHONGBAN – Biểu diễn: ∀t1, t2 ∈ PHONGBAN ( t1≠ t2 ∧ t1.TENPHG ≠ t2.TENPHG ) – Bảng tầm ảnh hưởng: R5 PHONGBA N Thêm + Xóa − Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM Sửa + (TENPHG) 165165
    • 166. Ràng buộc toàn vẹn - Phân loại – Bối cảnh nhiều QH • RBTV về phụ thuộc tồn tại – Còn được gọi là RB về khóa ngoại (foreign key) và rất phổ biến. Ví dụ: - a) Trong QH KetQua, sự tồn tại của một bộ kq = (msv, mon, lanthi, diem) ∈ KetQua hoàn toàn phụ thuộc vào sự tồn tại của bộ sv ∈ SinhVien sao cho sv.maSV = msv. – b) Trong QH SinhVien, sự tồn tại của bộ sv = (‘To012’, ‘Pham Anh Hoang’, ‘true’, ‘12/06/81’, ‘To’) hoàn toàn phụ thuộc vào sự tồn tại của một bộ k ∈ Khoa, k = (‘To’, ‘Toan’, 30). Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 166
    • 167. Ràng buộc toàn vẹn - Phân loại – Bối cảnh nhiều QH (tt) • Giả sử có hai lược đồ quan hệ R1, R2. Hai tập hợp K1 và K2 lần lượt là các khóa của R1 và R2. Hai dấu hiệu của phụ thuộc tồn tại như sau: – (1) Nếu K1 ⊆ K2 thì ta có phụ thuộc tồn tại của R2 vào R1. – (2) Nếu K1 ⊆ R2 (tập thuộc tính của lược đồ quan hệ R2) thì ta có một phụ thuộc tồn tại của R2 vào R1. Tập hợp K1 gọi là khóa ngoại của R2. – Ví dụ: • Ở ví dụ trước a) là trường hợp ràng buộc với dấu hiệu (1) và b) là trường hợp ràng buộc với dấu hiệu (2). Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 167
    • 168. Ràng buộc toàn vẹn - Phân loại – Bối cảnh nhiều QH (tt) • RBTV về liên bộ, liên quan hệ – có tác dụng đối với từng nhóm các bộ của nhiều quan hệ khác nhau. (thường là hai quan hệ) – Ví dụ: ràng buộc “mỗi hóa đơn bán hàng phải có ít nhất một mặt hàng” liên quan đến hai quan hệ, HoaDon và CtietHD trên hai lược đồ HOA_DON và CTIET_HD. • Lưu ý là hóa đơn được lập theo đơn đặt hàng, nhưng trong chi tiết hóa đơn mới biết được công ty bán cho khách hàng những mặt hàng nào. Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 168
    • 169. Ràng buộc toàn vẹn - Phân loại – Bối cảnh nhiều QH (tt) • RBTV liên thuộc tính, liên quan hệ – Là mối liên hệ giữa các thuộc tính trong nhiều lược đồ quan hệ. • Ví dụ: – Xét hai QH DatHang va HoaDon của một thể hiện của CSDL, ta có RB: “Ngày làm hóa đơn in trên hóa đơn phải sau ngày đặt hàng (in trên đơn đặt hàng)” Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 169
    • 170. Ràng buộc toàn vẹn - Phân loại – Bối cảnh nhiều QH (tt) • RBTV về thuộc tính tổng hợp – được xác định trong trường hợp một thuộc tính A của một lược đồ quan hệ R được tính toán giá trị từ các thuộc tính của các lược đồ quan hệ khác. • Ví dụ: – Trong CSDL QLHANGHOA ta có RBTV: “số tiền công nợ của kh. A sẽ bằng hiệu số giữa tổng trị giá của các hóa đơn bán cho khách hàng A và tổng số tiền thu của khách đó” Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 170
    • 171. Ràng buộc toàn vẹn - Phân loại – Bối cảnh nhiều QH (tt) • RBTV do có chu trình trong đồ thị biểu diễn của lược đồ CSDL – Một lược đồ CSDL có thể được biểu diễn bằng một đồ thị vô hướng. Trong đó ta có hai loại nút: • nút thuộc tính và nút lược đồ quan hệ. • Một cung vô hướng trong đồ thị nối một nút thuộc tính A với một nút lược đồ quan hệ R có nghĩa A ∈ R. Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 171
    • 172. Ràng buộc toàn vẹn - Phân loại – Bối cảnh nhiều QH (tt) • Ví dụ: – Xem xét một phần của đồ thị biểu diễn lược đồ CSDL QLHANGHOA gồm các lược đồ quan hệ DAT_HANG, HOA_DON và CTIET_HD. – Ở đây, ta thấy đồ thị biểu diễn lược đồ CSDL có chứa một chu trình gồm 3 LĐQH DAT_HANG, HOA_DON và CTIET_HD. Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 172
    • 173. Ràng buộc toàn vẹn - Phân loại – Bối cảnh nhiều QH ngayDH soDH ngayHD DAT_HANG HOA_DON maHH soHD CTIET_HD giaBan Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT sLuongBan 173
    • 174. Ràng buộc toàn vẹn - Phân loại – Bối cảnh nhiều QH (tt) • Trong trường hợp này lược đồ CSDL QLHANGHOA sẽ phải có một RBTV thỏa một trong ba trường hợp sau: – (1) Một hóa đơn thực hiện cho một đơn đặt hàng chỉ giao những mặt hàng mà khách đã yêu cầu và phải gồm đầy đủ tất cả những mặt hàng có trong đơn đặt hàng. – (2) Một hóa đơn thực hiện cho một đơn đặt hàng chỉ giao những mặt hàng mà khách đã yêu cầu và có thể không giao đầy đủ tất cả những mặt hàng có trong đơn đặt hàng. – (3) Một hóa đơn thực hiện cho một đơn đặt hàng có thể gồm tùy ý các mặt hàng dù có hay không trong đơn đặt hàng của khách. Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 174
    • 175. BÀI TẬP PHẦN III • Cho các lược đồ quan hệ sau: – SINHVIEN (MaSV, Hoten, Namsinh, QQ, Hocluc) • Mỗi sinh viên có Mã số duy nhất, họ tên, quê quán và học lực – DETAI (MaDT, TenDT, Chunhiem, Kinhphi) • Mỗi đề tài có Mã số duy nhất, tên đề tài, chủ nhiệm đề tài, kinh phí thực hiện đề tài (đơn vị tính: triệu đồng) – SV_DT (MaSV, MaDT, NoiAD, KQ) • Mỗi SV có thể thực hiện một hoặc nhiều ĐT: mã số sinh viên, mã đề tài, nơi áp dụng, kết quả thực hiện đề tài • Xác định và biểu diễn các yếu tố của tất cả các ràng buộc có thể có trong lược đồ csdl trên. Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 175
    • 176. Phần IV PHỤ THUỘC HÀM VÀ KHÓA Email: ltnkhanh@itam.tdt.edu.vn Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 176
    • 177. Nội dung Phần IV • Lý thuyết thiết kế CSDL • Phụ thuộc hàm – – – – Định nghĩa Pth được suy dẫn lôgic từ F Hệ tiên đề cho pth Bao đóng của tập thuộc tính • Khóa – Định nghĩa – Các thuật toán tìm khóa • Phủ tối thiểu (cực tiểu) của tập pth – Khái niệm pth tương đương – Tập pth tối thiểu – Thuật toán tìm phủ tối thiểu • Bài tập Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 177
    • 178. Lý thuyết thiết kế CSDL • Làm thế nào để thiết kế CSDL cho tốt? – Xét ví dụ sau: S(S#, Sname, add, pro, price) S# TL01 Sname add Thiên Long Lý Thường Kiệt pro Price Dream TK03 Tân Kiều Lê Lợi Wave TK03 Tân Kiều Lê Lợi Serius PV01 Phước Vĩnh TK03 Tân Kiều Phạm Hữu Lầu Future neo Lê Lợi Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT Atila 178
    • 179. Lý thuyết thiết kế CSDL (tt) • Các vấn đề nảy sinh: – Dư thừa dữ liệu (redundancy): • Địa chỉ và tên NCC được lặp lại nhiều lần trong quan hệ – Không nhất quán (Inconsistency): • Ví dụ: Khi sửa đổi địa chỉ NCC ở một bộ nào đó còn bộ khác vẫn giữ nguyên  một NCC lại có hai địa chỉ Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 179
    • 180. Lý thuyết thiết kế CSDL (tt) • Các vấn đề nảy sinh: (tt) – Dị thường khi thêm bộ (Insertion anomalies): • Nếu một NCC chưa cung cấp một mặt hàng nào cả thì không thể đưa vào quan hệ vì thuộc tính pro và price NULL – Dị thường khi xóa bộ (deletion anomalies): • Không thể xóa tất cả các mặt hàng được cung cấp bởi một NCC vì mặt hàng đó có thể được cung cấp bởi các NCC khác. • Cách giải quyết: tách lược đồ ban đầu thành các LĐ phù hợp hơn Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 180
    • 181. Nội dung phần IV • Lý thuyết thiết kế CSDL • Phụ thuộc hàm – – – – Định nghĩa Pth được suy dẫn lôgic từ F Hệ tiên đề cho pth Bao đóng của tập thuộc tính • Khóa – Định nghĩa – Các thuật toán tìm khóa • Phủ tối thiểu (cực tiểu) của tập pth – Khái niệm pth tương đương – Tập pth tối thiểu – Thuật toán tìm phủ tối thiểu • Bài tập Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 181
    • 182. Phụ thuộc hàm • Định nghĩa: – X xác định hàm Y hay Y phụ thuộc hàm vào X, ký hiệu XY nếu: Với ∀r quan hệ xây dựng trên R(U), với t1, t2 ∈ r: t1.X = t2.X ⇒ t1.Y = t2.Y (t.X: bộ t thu hẹp trên tập thuộc tính X) • Ví dụ: Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 182
    • 183. Phụ thuộc hàm - Ví dụ e# ename dept_name dept_addr class 10 Peter Math G16 2nd 20 Joan CS G15 1st 30 Mike CS G15 1st 40 Kate CS G15 1st 50 Peter Law G20 2nd 60 Albert Physics G20 1st – FD: dept_name class – Các FD khác: dept_namedept_addr e#  ename e#  dept_name, dept_addr, class Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 183
    • 184. Phụ thuộc hàm - Hệ tiên đề cho phụ thuộc hàm • Hệ tiên đề Armstrong – R(U,F), U = (A1,…, An), X, Y, Z ⊆ U. Hệ tiên đề Armstrong bao gồm: – (A1) (phản xạ) : nếu Y ⊆ X thì X  Y – (A2) (tăng trưởng) : nếu Z ⊆ U, X  Y thì ZX  ZY – (A3) (bắc cầu) : nếu X  Y và Y  Z thì X  Z • Bổ đề 1: – Hệ tiên đề Armstrong là đúng đắn. Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 184
    • 185. Phụ thuộc hàm - Hệ tiên đề cho phụ thuộc hàm (tt) • Bổ đề 2 (quy tắc suy diễn bổ sung) – (1) (Q.T. hợp) : nếu X  Y, X  Z thì X  YZ – (2) (Q.T. giả bắc cầu): nếu X  Y, WY  Z thì WX  Z, với W ⊆ U – (3) (Q.T. tách) : nếu X  Y, Z ⊆ Y thì X  Z • Các quy tắc này có thể dễ dàng chứng minh dựa vào hệ tiên đề Armstrong. Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 185
    • 186. Phụ thuộc hàm - Bao đóng của tập thuộc tính • Định nghĩa: F là tập phụ thuộc hàm trên tập thuộc tính U, X ⊆ U. Bao đóng của tập thuộc tính X đối với tập phụ thuộc hàm F, ký hiệu XF+, XF+ = {A ∈ U | (XA) ∈ F+ } • Là tập những thuộc tính A sao cho X  A được suy diễn từ F nhờ tập các quy tắc suy diễn Armstrong. Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 186
    • 187. Phụ thuộc hàm - Bao đóng của tập thuộc tính (tt) • Nhận xét: – X ⊆ X+ ∀A ∈ X thì A ∈ X+ – Nếu Y = Ai1Ai2…Aik và X→Y, từ tiên đề tách, ta có: X→Aij ∀j=1..k – Ý nghĩa: X+ chính là những thuộc tính phụ thuộc vào X. • Bổ đề 3: X  Y được suy diễn từ F nhờ hệ luật Armstrong khi và chỉ khi Y là tập con của bao đóng X đối với F, nghĩa là: F ⊢ Arm (X  Y) ⇔ Y ⊂ XF+ Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 187
    • 188. Phụ thuộc hàm - Bao đóng của tập thuộc tính (tt) • Thuật toán tìm bao đóng của một tập thuộc tính: Vào: R(U,F), X ⊆ U, Ra: X+ Phương pháp: – B1: Đặt X0 = X – B2: Với ∀i = 0,1,…, nếu tồn tại một FD V → W sao cho V ⊆ Xi ⇒ Xi+1 = Xi ∪ Aj ∀Aj ∈ W – B3: Dừng khi Xi = Xi+1 – Kết luận: X+ = Xi • Định lý: Hệ tiên đề Armstrong là đúng đắn và đầy đủ. Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 188
    • 189. Phụ thuộc hàm - Bao đóng của tập thuộc tính (tt) • Ví dụ: R = ABCDEG và tập phụ thuộc hàm F như sau: F = {AB→C C →A BC →D ACD→B D→EG BE→C CG→BD CE→AG} X = BD, tính X+  – Đầu tiên ta có X0 = BD, để tìm X1 ta tìm những phụ thuộc hàm trong F có vế trái nằm trong BD, ta có PTH D→EG thỏa mãn điều kiện đó. – X1 = BDEG, tiếp tục để tìm X2 ta tìm những PTH có vế trái nằm trong BDEG, ta có BE→C, vậy X2 = BDEGC. – Tương tự như vậy ta có X3 = ABCDEG đây là tập X+ = (BD) + =R Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 189
    • 190. Nội dung phần IV • Lý thuyết thiết kế CSDL • Phụ thuộc hàm – – – – Định nghĩa Pth được suy dẫn lôgic từ F Hệ tiên đề cho pth Bao đóng của tập thuộc tính • Khóa – Định nghĩa – Các thuật toán tìm khóa • Phủ tối thiểu (cực tiểu) của tập pth – Khái niệm pth tương đương – Tập pth tối thiểu – Thuật toán tìm phủ tối thiểu • Bài tập Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 190
    • 191. Khóa - Định nghĩa khóa • Siêu khóa (super key) – Siêu khóa là một tập con X khác rỗng các thuộc tính của lược đồ quan hệ R sao cho với bất kỳ hai bộ t1, t2 trong quan hệ r ∈ R thì t1[X] ≠ t2[X] – X là siêu khóa trong R ⇔ X xác định hàm mọi thuộc tính của R: X U • Nói cách khác: siêu khóa xác định duy nhất một hàng trong bảng. • Khóa tối tiểu (minimal key – khóa) – Khóa tối tiểu K là siêu khóa kèm thêm tính chất là nếu loại khỏi K bất kỳ thuộc tính nào cũng làm cho K không còn là siêu khóa. • Khóa tối tiểu là siêu khóa nhỏ nhất Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 191
    • 192. Khóa - Định nghĩa khóa (tt) • Định nghĩa khóa của LĐQH dựa trên tập PTH. – Cho R(U,F), – K ⊂ U đgl khóa của lược đồ quan hệ R(U,F) nếu K+ = U và bớt từ K dù một phần tử nào thì bao đóng của nó khác U. – K ⊂ U là khóa nếu: (1) K+ = U (K U ∈ F+) (2) (K - A)+ ≠ U, ∀A ∈K • Nhận xét: – Trong một quan hệ có thể có nhiều khóa và luôn tồn tại ít nhất một khóa. – Cho R(U), nếu U thỏa mãn hai điều kiện trên thì U là khóa. Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 192
    • 193. Khóa - Định nghĩa khóa (tt) • Khóa chính (primary key) – Khóa chính là một khóa tối tiểu được người phân tích chọn để cài đặt. • Khóa dự tuyển (candidate key) – Các khóa dự tuyển là các khóa tối tiểu khác mà không phải là khóa chính. Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 193
    • 194. Khóa - Các thuật toán tìm khóa • Tìm khóa từ một siêu khóa – Ý tưởng: • Nếu X+ = U thì (X ∪ {A})+ =U, và nếu X là khóa tối tiểu thì X {A})+ ≠ U ∀A ∈U • Trực quan từ định nghĩa khóa tối tiểu, nếu X là một tập thuộc tính bất kỳ mà X+=U  có thể bớt dần các phần tử của X để nhận được tập X bé nhất (vẫn thỏa X+ = U) và đó chính là khóa của lược đồ quan hệ. Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 194
    • 195. Khóa - Các thuật toán tìm khóa (tt) • Tìm khóa từ một siêu khóa • Nhắc lại: khóa là tập thuộc tính K mà bao đóng của K đúng bằng U (K+ = U) và nếu bớt khỏi K một phần tử bất kỳ thì bao đóng của nó khác U. – I: R(U,F) – O: Khóa tối tiểu K của R • Thuật toán: – B1: đặt K = U – B2: Lặp lại quá trình loại khỏi K phần tử A mà (K – {A})+ = U. Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 195
    • 196. Khóa - Các thuật toán tìm khóa (tt) • Nhận xét: – Thuật toán trên tìm được một khóa tối tiểu của lược đồ quan hệ R. – Muốn tìm các khóa khác (nếu có) của lược đồ quan hệ, ta có thể thay đổi thứ tự loại bỏ các phần tử của K. Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 196
    • 197. Khóa - Các thuật toán tìm khóa (tt) • Ví dụ: Tìm khóa của R(U,F), với U = ABCDEGHI F = {ACB (1) BIACD (2) ABCD 3) HI (4) ACEBCD (5) CGAE (6) } – B1: K = U = ABCDEGHI – B2: Lần lượt loại bỏ các thuộc tính có trong K: Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 197
    • 198. Khóa - Các thuật toán tìm khóa (tt) – B2: Lần lượt loại bỏ các thuộc tính có trong K: • Xét phần tử A: ta có (BCDEGHI)+ = U (6) nên K = BCDEGHI • Xét phần tử B: ta có (CDEGHI)+ = U (6,1) ) nên K = CDEGHI • Xét phần tử C, ta có (DEGHI)+ ≠ U nên K = CDEGHI • Xét phần tử D, ta có (CEGHI)+ = U (6,1,3) nên K = CEGHI • Xét phần tử E, ta có (CGHI)+ = U (6,1,3) nên K = CGHI • Xét phần tử G, ta có (CHI)+ ≠ U, nên K = CGHI • Xét phần tử H, ta có (CGI)+ ≠ U, nên K = CGHI • Xét phần tử I, ta có (CGH)+ = U, (6,1,3,4) nên K = CGH – Vậy K = CGH là khóa của R. Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 198
    • 199. Khóa - Các thuật toán tìm khóa (tt) • Từ thuật toán ta có nhận xét sau: – Các thuộc tính (th.t) không xuất hiện trong cả vế trái và vế phải của tập phụ thuộc hàm phải có trong khóa. – Các th.t chỉ xuất hiện bên trái của các PTH trong F cũng phải thuộc khóa. – Trong quá trình tìm khóa có thể loại bỏ tất cả các th.t đơn phía bên phải các PTH của F. Tuy nhiên cần ktra lại vì không phải lúc nào các th.t đó cũng bỏ được. • Ví dụ: Cho R(U,F) với U = ABCDE – Với tập PTH F1 = {AB, C E, C D}, khi đó khóa là K = AC (bỏ đi ba thuộc tính đơn B,C,D xuất hiện ở vế phải). – Tuy nhiên với tập PTH F2 = {A C, C ABDE} thì K1 = {A}, K2 = {C} Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 199
    • 200. Khóa - Các thuật toán tìm khóa (tt) • Tìm tất cả các khóa của LĐQH dựa trên tập PTH. – Ý tưởng: Cho R(U,F), ta có một số ký hiệu như sau: • UR, UL: tập các thuộc tính ở vế phải, vế trái của các PTH. • N = U – UR: các thuộc tính cô lập: không xuất hiện trong bất kỳ PTH nào và các thuộc tính chỉ xuất hiện ở vế trái các PTH. ⇒N ⊂ Khóa • D = UR - UL : các thuộc tính chỉ xuất hiện ở vế phải các PTH. ⇒D ∩ khóa = ∅ • L = U – (N ∪ D) ⇒L gồm các thuộc tính có thể thuộc khóa hoặc không thuộc khóa. Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 200
    • 201. Khóa - Các thuật toán tìm khóa (tt) • Thuật toán tìm tât cả các khóa. – I: R(U,F) O: Các khóa của R – Phương pháp: • Tính N = U - UR Nếu NF+ = U, thì N là khóa duy nhất của R, giải thuật dừng. • Tính D = UR – UL và L = U – (N ∪ D) • Với mọi Li ⊂ L,: thử với từng Li, các Li có ít phần tử làm trước. X = N ∪ Li, nếu XF+ = U thì X là một khóa của R. • Lưu ý: nếu X = N ∪ Li là khóa thì không cần thử với các Lj ⊂ L mà Li ⊂ Lj Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 201
    • 202. Khóa - Các thuật toán tìm khóa (tt) • Ví dụ 1: Cho R(U,F) U = ABCDEG F = {A BC, BD, AD E, CDA} a) Tìm một khóa của R và xét xem khóa đó có duy nhất không. • Ta có UR = ABCDE, UL = ABCD • N = U UR = G và D = UR - UL = E • L = U – (N ∪ D) = ABCD • Ta có (GA)+ = U do đó K1 = GA là một khóa. • Ngoài ra, N+ ≠ U do đó K1 = AG không phải là khóa duy nhất. b) Tìm thêm khóa khác • Ta thấy (CDG)+ = U nên K2 = CDG là một khóa khác của R. • (GBC)+ = U nên K3 = GBC là khóa Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 202
    • 203. Khóa - Các thuật toán tìm khóa (tt) • Ví dụ 2: U = ABCD, F = {AB, ABC, ACD} Tìm tất cả các khóa. – UR = BCD – N = U – UR = A – N+ = U ⇒ K = A là khóa duy nhất của lược đồ quan hệ. • Ví dụ 3: R(U,F) U = ABCDEG F={ AEC CGA BDG GAE } Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 203
    • 204. Bài tập • Cho lược đồ quan hệ sau: – R(U,F) với U = ABCDEGHIJLM F = { MABC ABCH MBCDG DGHL} ABCEH a) Tính bao đóng X = M b) MDG có được suy dẫn từ F hay không? c) Tìm tất cả các khóa của lược đồ quan hệ Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 204
    • 205. Nội dung phần IV • Lý thuyết thiết kế CSDL • Phụ thuộc hàm – – – – Định nghĩa Pth được suy dẫn lôgic từ F Hệ tiên đề cho pth Bao đóng của tập thuộc tính • Khóa – Định nghĩa – Các thuật toán tìm khóa • Phủ tối thiểu (cực tiểu) của tập pth – Khái niệm pth tương đương – Tập pth tối thiểu – Thuật toán tìm phủ tối thiểu • Bài tập Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 205
    • 206. Phủ tối thiểu của tập pth - Phụ thuộc hàm tương đương Cho LĐQH R(A1A2…An), cho hai tập FD F, G, • Tập FD F phủ tập G nếu như F+ chứa G Ký hiệu F phủ G ⇔ F+ ⊃ G – Các FD trong G đều có thể suy ra được nhờ các FD trong F • F tương đương với G nếu F phủ G và G phủ F – Ký hiệu F tương đương G ⇔ F+ ⊃ G & G+ ⊃ F • Để kiểm tra F và G có tương đương với nhau không, xét xem mọi FD X→Y ∈ F có thuộc G+ hay không và ngược lại. Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 206
    • 207. Phủ tối thiểu của tập pth - Phụ thuộc hàm tương đương (tt) • Bổ đề: – Với mỗi tập FD F đều tìm được một tập các FD G tương đương với F, mà vế phải các phụ thuộc hàm trong G bao gồm không quá một thuộc tính. • Nhận xét: Từ bổ đề trên trong quá trình thiết kế dữ liệu, ta có thể giả sử vế phải các FD trong F chỉ bao gồm một thuộc tính. Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 207
    • 208. Tập phụ thuộc hàm tối thiểu • Khái niệm phụ thuộc đầy đủ Với XY ∈ F+, ta nói Y phụ thuộc đầy đủ vào X nếu với mọi X’ ⊂ X thì X’ Y ∉ F+ • Định nghĩa tập phủ tối thiểu – Tập F được gọi là phủ tối thiểu nếu thỏa: • Vế phải của tất cả các pth trong F đều chỉ có một thuộc tính • Mỗi phụ thuộc hàm XA trong F đều quan trọng (*) Nghĩa là: Với mọi XA ∈F, F và F {XA} không tương đương. • Mỗi thuộc tính ở vế trái của mỗi pth trong F đều quan trọng (*) (Mỗi thuộc tính vế phải phụ thuộc đầy đủ vào vế trái) Nghĩa là: Với mỗi XA ∈F, ∀B ∈X F và (F {XA}) U ({ X BA} ) không tương đương Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 208
    • 209. Thuật toán tìm phủ tối thiểu • I: Tập pth F, O: phủ tối thiểu của F • Phương pháp: – (1) Phân rã vế phải tất cả các phụ thuộc hàm và gọi G là tập pth thu được. – (2) Loại bỏ các pth dư thừa trong G • Duyệt lần lượt các pth trong G, theo một thứ tự nào đó Với mỗi XA ∈G ta đặt H = G {XA} Nếu XA ∈H+ , tức là A ∈XH+ (bao đóng của X trên H) thì thay G bằng H – (3) Loại bỏ thuộc tính dư thừa ở vế trái các pth trong G • Duyệt lần lượt các pth của G Với mỗi XA∈G, lần lượt xét các thuộc tính của X. Với B ∈X, xét pth f:X {B}A nếu f ∈G+ tức A ∈(X{B})+, ta thay pth XA bằng f và đặt G = G {XA} U (X {B}A) Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 209
    • 210. Thuật toán tìm phủ tối thiểu (tt) • Ví dụ: Tìm phủ tối thiểu của các tập FD sau: a) R(U,F), F = {ABC b) R(U,F), G ={ABC CA BCD Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT CAB} ACDB DEG BEC CGBD CEAG } 210
    • 211. Ý nghĩa của phụ thuộc hàm và phủ tối thiểu • Phụ thuộc hàm: – Trong các QH hợp lệ, có một số dư thừa nào đó. Những dư thừa có thể được thể hiện bằng những phụ thuộc  nếu một QH r được khẳng định là hợp lệ (thỏa một số phụ thuộc nào đó) thì từ một số thông tin về các giá trị hiện có của r, có thể suy ra được thông tin khác về giá trị hiện có của nó. • Phủ tối thiểu – Trên một tập PTH bao giờ ta cũng mong muốn tìm ra một tập ràng buộc ít điều kiện nhất nhưng không bỏ sót đi đòi hỏi của thực tiễn. Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 211
    • 212. Bài tập phần IV 1. Cho lược đồ quan hệ R(U,F), U = ABCDEG F={ a) b) c) d) BEC CDAB BCAE CAD} Tính (AC)+ Chứng tỏ BADE Tìm tất cả các khóa của lđqh trên Tìm phủ tối thiểu của tập pth trên ACBD 2. Cho lược đồ quan hệ R(U,F), U = ABCDEG F = {ABC CA BCD DEG CGBD ACDB CDAG} a) Tính (CD)+ b) Tìm tất cả các khóa của lược đồ quan hệ trên c) Tìm phủ tối thiểu của tập phụ thuộc hàm F Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 212
    • 213. Bài tập phần IV (tt) 3. Cho lược đồ quan hệ R(U,F), U = ABCDEG F={ a) b) c) d) ACD ABDC DA DEG DGBC CDB CED DEAG} Tính (AD)+ Tìm phủ tối thiểu của LĐQH trên Tìm một khóa của LĐQH trên Tìm tất cả các khóa của LĐQH trên Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 213
    • 214. Phần V CHUẨN HÓA CƠ SỞ DỮ LIỆU Email: ltnkhanh@itam.tdt.edu.vn Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 214
    • 215. Nội dung Phần V • Tại sao • Chuẩn hóa dữ liệu • Các dạng chuẩn – – – – Dạng chuẩn 1 (1NF) Dạng chuẩn 2 (2NF) Dạng chuẩn 3 (3NF) Dạng chuẩn Boyce codd (BCNF) • Các bước chuẩn hóa lược đồ quan hệ • Phân rã lược đồ quan hệ – – – – Kiểm tra phân rã bảo toàn thông tin’ Kiểm tra phân rã bảo toàn phụ thuộc hàm Phân rã 3NF Phân rã BCNF • Tổng kết về chuẩn hóa CSDL • Bài tập Phần V Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 215
    • 216. Tại sao? – CungCapSP(maNCC, tenNCC, diaChi, sanPham, gia) maNCC sanPham gia Sanyo Tokyo, Nhật Bản Tủ lạnh 250 S01 Sanyo Tokyo, Nhật Bản Máy giặt 270 S01 Sanyo Tokyo, Nhật Bản Máy lạnh 200 S02 Sharp Hiroshima, Nhật Bản Tivi 140 S03 Samsung Hồng Kông, Đài Loan LCD 200 S03 Samsung Hồng Kông, Đài Loan Tivi 120 M01 • diaChi S01 • tenNCC Maytag New York, Mỹ Tủ lạnh 260 Trùng lắp thông tin làm tăng chi phí lưu trữ thông tin và chi phí kiểm tra RBTV. Cách giải quyết: tách thành hai lược đồ như sau: – CungCap(maNCC, sanPham, gia) và NhaCC(maNCC, tenNCC, diaChi)  quan hệ tương ứng: Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 216
    • 217. Tại sao? Khóa chính là gì?  {maNV, tenKH} maNV tenNV donVi luong tenKH ngayKTKH 100 Nguyễn Văn An P. Tiếp thị 480 Anh văn 31/12/2009 100 Nguyễn Văn An P. Tiếp thị 480 NC thị trường 10/03/2010 140 Trần Thị Mỹ P. Kế toán 550 Luật thuế 15/04/2010 110 Lê Văn Minh P. Hệ thống thông tin 500 Anh văn 31/12/2009 110 Lê Văn Minh P. Hệ thống thông tin 500 C++ 31/01/2010 190 Trần Văn Ban P. Tài chính 520 150 Hồ Minh Nhật P. Tiếp thị 450 Anh văn 31/12/2009 150 Hồ Minh Nhật P. Tiếp thị 450 Java 10/01/2010 Sự bất thường ở bảng này?    Thêm vào – không thể thêm vào 1 nhân viên mới mà không tham gia lớp nào Xoá đi – nếu xoá bỏ nhân viên 140, ta sẽ mất thông tin về lớp Luật thuế Hiệu Ths. Lương– để tăng lương cho nhânTĐT 100, đòi hỏi phải cập nhật 2 hàng chỉnh Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH viên 217
    • 218. Chuẩn hóa dữ liệu (tt) • Có các dạng chuẩn sau: – – – – Dạng chuẩn 1 (First Normal Form) – 1NF Dạng chuẩn 2 (Second Normal Form) – 2NF Dạng chuẩn 3 (Third Normal Form) – 3NF Dạng chuẩn Boyce codd (Boyce codd Normal Form) – BCNF 1. Là gì? 2. Cách kiểm tra? 3. Cách chuẩn hóa? Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 218
    • 219. Các dạng chuẩn – Dạng chuẩn 1 (1NF) • Khái niệm thuộc tính đơn (thuộc tính nguyên tố): – Một thuộc tính A của R là một thuộc tính đơn nếu nó không phải là sự tích hợp của nhiều thuộc tính khác. – Ngược lại, nếu người sử dụng có thể truy xuất đến từng phần của thuộc tính A thì A đgl là thuộc tính kép (thuộc tính không nguyên tố). Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 219
    • 220. Các dạng chuẩn – Dạng chuẩn 1 (1NF) • Khái niệm thuộc tính đơn (thuộc tính nguyên tố): (tt) • Ví dụ: LĐQH Chuyen_Mon (MaGV, Mon) và quan hệ rchuyen_Mon như sau: MaGV GV01 Pascal, CTDL, TRR GV02 CSDL GV03 Mon là thuộc tính kép Mon CSDl, CTDL • LĐQH VatTu(maVT, tenVT, dvTinh) trong đó tenVT bao gồm cả tên của vật tư và quy cách tính của nó tenVT là thuộc tính kép. Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 220
    • 221. Các dạng chuẩn – Dạng chuẩn 1 (1NF) (tt) • Định nghĩa 1NF: – Một lược đồ quan hệ đgl ở dạng chuẩn 1 (1NF) nếu mọi thuộc tính của R đều là thuộc tính đơn. – Một lược đồ CSDL đgl ở dạng chuẩn 1 nếu mọi lược đồ quan hệ con Ri của nó đều ở dạng chuẩn 1. • Cách gọi: – Lược đồ quan hệ ở dạng chuẩn 1 (1NF) hay còn được gọi là lược đồ quan hệ 1NF. – Lược đồ quan hệ 1NF còn được gọi là lược đồ quan hệ chuẩn hóa. – Lược đồ quan hệ không ở dạng chuẩn 1 đgl lược đồ quan hệ không chuẩn hay phi chuẩn. Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 221
    • 222. Các dạng chuẩn – Dạng chuẩn 1 (1NF) (tt) • Kiểm tra xem một lược đồ qh có ở dạng chuẩn 1 không? Kiểm tra xem các thuộc tính của lược đồ qh có phải là thuộc tính đơn ko? • Đưa lược đồ qh về dạng chuẩn 1: Tách thuộc tính kép thành các thuộc tính đơn (tách dọc) hoặc tách thành các dòng (tách ngang) Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 222
    • 223. Các dạng chuẩn – Dạng chuẩn 1 (1NF) (tt) • Ví dụ: – LĐQH VatTu(maVT, tenVT, dvTinh) được chuyển thành: VatTu(maVT, tenVT, quyCach, dvTinh) – quan hệ TChuyen_Mon ở trên không ở dạng chuẩn 1 vì thuộc tính Mon là thuộc tính kép tách thành các dòng để loại bỏ thuộc tính kép Pasc CTDL Gv01 TRR GV02 CSDL GV03 CSDL GV03 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT Mon Gv01 tenVT quyCach dvTinh maGV Gv01 maVT CTDL 223
    • 224. Các dạng chuẩn – Dạng chuẩn 1 (1NF) (tt) • Ví dụ: – Cho lđqh CungCap(maNCC, tenNCC, diaChi, sanPham) trong đó thuộc tính sanPham bao gồm tên sản phẩm và giá. Giả sử ta có quan hệ rCungCap sau: maNCC tenNCC diaChi sanPham 1 Hải Hà Hà Nội Kẹo mềm 100, Kẹo cứng 150, Bánh 200 2 Kinh Đô Hồ Chí Minh Kẹo 120, Bánh 150 maNCC tenNCC diaChi Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT tenSP gia Phi chuẩn 224
    • 225. Các dạng chuẩn – Dạng chuẩn 1 (1NF) (tt) • Ví dụ: – Cho lđqh CungCap(maNCC, tenNCC, diaChi, sanPham) trong đó thuộc tính sanPham bao gồm tên sản phẩm và giá. Giả sử ta có quan hệ rCungCap sau: maNCC tenNCC diaChi sanPham 1 Hải Hà Hà Nội Kẹo mềm 100, Kẹo cứng 150, Bánh 200 2 Kinh Đô Hồ Chí Minh Kẹo 120, Bánh 150 maNCC Thông tin trùng lắp!!! tenNCC diaChi tenSP 1 Hải Hà Hà Nội Kẹo mềm 100 1 Hải Hà Hà Nội Kẹo cứng 150 1 Hải Hà Hà Nội Bánh 2 Kinh Đô Hồ Chí Minh Kẹo 120 2 Kinh Đô Hồ Chí Minh Bánh 150 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT gia 200 Phi chuẩn chuẩn hóa 225
    • 226. Các dạng chuẩn – Dạng chuẩn 2 (2NF) • K.n pth đầy đủ và pth riêng phần – Phụ thuộc hàm đầy đủ (Full FD) Pth đầy đủ là pth XY mà nếu loại bỏ bất kỳ thuộc tính A nào trong X thì (X – A) ↛Y – Phụ thuộc hàm riêng phần (partial FD) Pth riêng phần là pth mà không phải là pth đầy đủ. Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 226
    • 227. Các dạng chuẩn – Dạng chuẩn 2 (2NF) (tt) • K.n thuộc tính khóa, thuộc tính không khóa – Thuộc tính khóa (thuộc tính nguyên tố): • là một thuộc tính của lược đồ quan hệ R mà là thành phần của ít nhất một khóa dự tuyển trong R. – Thuộc tính không khóa (thuộc tính không nguyên tố): • là thuộc tính không phải là thuộc tính nguyên tố (không tham gia vào bất kỳ một khóa nào của LĐQH) - Vd: R(U,F), U = ABCDE, K1 = AB, K2 = CB - Tập thuộc tính khóa là: ABC - Tập thuộc tính không khóa là: DE Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 227
    • 228. Các dạng chuẩn – Dạng chuẩn 2 (2NF) (tt) • Định nghĩa dạng chuẩn 2 (2NF): – LĐQH R đgl ở dạng chuẩn 2 nếu: • R đạt 1NF • Mọi thuộc tính không khóa A trong R phụ thuộc hàm đầy đủ vào khóa của R Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 228
    • 229. Các dạng chuẩn – Dạng chuẩn 2 (2NF) (tt) • Ví dụ: – LĐQH Dat_hang(soDH, maHH, ngayDH, maKH, soluongdat) với quan hệ như sau: soDH maHH soluongdat ngayDH maKH DH001 PCDX48 3 05/01/06 CTCN01 DH002 HDQT05 5 05/01/06 CTVN01 DH002 HDQT10 2 05/01/06 CTCN01 DH001 KBMS01 5 05/01/06 CTCN01 DH004 PCDX48 5 15/01/07 CTHV01 • FD: soDH  ngayDH, maKH soDH, maHH  soluongdat, ngayDH, maKH - LĐQH trên không đạt 2NF vì thuộc tính không khóa ngayDH, maKH không phụ thuộc đầy đủ vào khóa K = {soDH, maHH} (chỉ phụ thuộc vào soDH) Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 229
    • 230. Các dạng chuẩn – Dạng chuẩn 2 (2NF) (tt) • LĐQH Ctiet_HD(soHD, maHH, giaban, soluongban) – FD: soHD, maHH  giaban, soluongban – Khóa: K = {SoHD, maHH} – Hai thuộc tính không khóa giaban và soluongban đều phụ thuộc đầy đủ vào khóa nên LĐQH này đạt 2NF. • Nhận xét: – Nếu LĐQH R chỉ có một khóa K và card(K)=1 thì R ở dạng chuẩn 2 – Một LĐQH ở dạng chuẩn 2 vẫn có thể chứa đựng sự trùng lắp thông tin. Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 230
    • 231. Các dạng chuẩn – Dạng chuẩn 2 (2NF) (tt) • Định nghĩa dạng chuẩn 2 (2NF): – LĐQH R đgl ở dạng chuẩn 2 nếu: • • R đạt 1NF Mọi thuộc tính không khóa A trong R phụ thuộc hàm đầy đủ vào khóa của R • Định nghĩa khác: – Lược đồ quan hệ đạt 2NF nếu với mọi FD XA đúng trong R thì: • • • • (1) A ∈X hoặc (2) A là thuộc tính khóa trong R hoặc (3) X không là tập con của một khóa nào, hoặc (4) X là siêu khóa của R Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 231
    • 232. Các dạng chuẩn – Dạng chuẩn 2 (2NF) - Kiểm tra lđqh đạt 2NF • Cách kiểm tra lược đồ quan hệ ở dạng chuẩn 2: – Tìm tất cả các khóa của lược đồ quan hệ – Xác định tập thuộc tính khóa, tập thuộc tính không khóa – Kiểm tra lần lượt từng pth: XA trong tập F • • Nếu có pth XA nào mà: – X là tập con của khóa và – A là thuộc tính không khóa thì kết luận lược đồ này không ở dạng chuẩn 2 Ngược lại, nếu tất cả các pth XA trong F có: – vế trái không phải là tập con của khóa hoặc – vế phải là thuộc tính khóa thì kết luận lược đồ ở dạng chuẩn 2 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 232
    • 233. Các dạng chuẩn – Dạng chuẩn 2 (2NF) - Kiểm tra lđqh đạt 2NF (tt) • Ví dụ: – Cho R(ABCD) – F = {ABC, AD, BDC} Hỏi: Lược đồ R có ở dạng chuẩn 2 không? • Cách làm: – – – – Khóa là: K = ABD Tập thuộc tính khóa là {A, B, D} Tập thuộc tính không khóa là {C} Xét fd: ABC • AB là tập con của khóa, C là thuộc tính không khóa  rõ ràng thuộc tính không khóa C phụ thuộc không đầy đủ vào khóa R không đạt dạng chuẩn 2 (không là 2NF) Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 233
    • 234. Các dạng chuẩn – Dạng chuẩn 2 (2NF) - Kiểm tra lđqh đạt 2NF (tt) • Ví dụ: Cho R(CSZ) F = {CSZ, ZC} Hỏi: Lược đồ R có ở dạng chuẩn 2 không? • Cách làm: – Khóa là: K1 = CS, K2 = SZ – Tập thuộc tính khóa: CSZ – Không có thuộc tính không khóa  không thể nào có trường hợp thuộc tính không khóa phụ thuộc không đầy đủ vào khóa lược đồ R ở dạng chuẩn 2. • Nhận xét: – Nếu tất cả các thuộc tính của lược đồ quan hệ đều là thuộc tính khóa thì lược đồ là 2NF. Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 234
    • 235. Các dạng chuẩn – Dạng chuẩn 2 (2NF) - Kiểm tra lđqh đạt 2NF (tt) • Ví dụ: – Cho R(ABCD) – F = {ABC, BD} Hỏi: Lược đồ R có ở dạng chuẩn 2 không? • Cách làm: – Lược đồ quan hệ trên có một khóa duy nhất là: K = A  Lược đồ R là 2NF vì không tồn tại tập con thực sự của khóa nên không tồn tại phụ thuộc hàm không đầy đủ của thuộc tính không khóa vào khóa. • Nhận xét: – Nếu tất cả các khóa của lược đồ quan hệ chỉ có một thuộc tính thì lược đồ quan hệ là 2NF Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 235
    • 236. Các dạng chuẩn – Dạng chuẩn 2 (2NF) - Kiểm tra lđqh đạt 2NF (tt) • Ví dụ: cho lđqh sau: CungCap(maNCC, tenNCC, diaChi, sanPham, gia) F= {maNCCtenNCC,diaChi maNCC, sanPham  gia} – Khóa: K = {maNCC, sanPham} – Tập thuộc tính không khóa: {tenNCC, diaChi, gia} – Ta thấy với pth: maNCC  tenNCC, diaChi • tenNCC, diaChi là thuộc tính không khóa, phụ thuộc vào maNCC là tập con thực sự của khóa K = {maNCC, sanPham}  Lược đồ CungCap không ở dạng chuẩn 2  Đưa về dạng chuẩn 2 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 236
    • 237. Các dạng chuẩn – Dạng chuẩn 2 (2NF) - Chuẩn hóa lược đồ về 2NF • Cách làm: – Xác định phụ thuộc hàm vi phạm dạng chuẩn 2 – Nhóm các thuộc tính có mặt trong phụ thuộc hàm đó, bổ sung thêm các thuộc tính khóa (nếu cần) để có một lược đồ quan hệ. – Các thuộc tính và các phụ thuộc hàm còn lại nhóm vào trong một quan hệ. – Lặp lại quá trình với lược đồ chưa đạt 2NF cho đến khi tất cả các lược đồ quan hệ con (tách ra từ lược đồ quan hệ ban đầu) đều là 2NF. Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 237
    • 238. Các dạng chuẩn – Dạng chuẩn 2 (2NF) - Chuẩn hóa lược đồ về 2NF (tt) • Ví dụ: Cho lđqh sau: CungCap(maNCC, sanPham, tenNCC, diaChi, gia) F= {maNCCtenNCC,diaChi Phụ thuộc hàm vi phạm maNCC, sanPham  gia} • Phân rã lược đồ CungCap thành 2 lược đồ: – NhaCungCap(maNCC, tenNCC, diaChi) • • FD: {maNCC  tenNCC, diaChi} Khóa: maNCC – CungCap(maNCC, sanPham, gia) • • FD: {maNCC, sanPham  gia} Khóa: maNCC, sanPham Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 238
    • 239. Các dạng chuẩn – Dạng chuẩn 3 (3NF) • Phụ thuộc hàm bắc cầu – Cho lược đồ quan hệ R(U,F) A là một thuộc tính của U. A đgl phụ thuộc hàm bắc cầu vào X trên R nếu tồn X tại một tập con Y của U sao cho: – XY, YA nhưng Y↛ X với A A ∉ X U Y • Định nghĩa dạng chuẩn 3 (3NF): – LĐQH R đgl ở dạng chuẩn 3 nếu: Y A∉XUY • R ở dạng chuẩn 2 • Mọi thuộc tính không khóa của R đều không phụ thuộc bắc cầu vào khóa chính Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 239
    • 240. Các dạng chuẩn – Dạng chuẩn 3 (3NF) (tt) • Ví dụ: – R = (Cust_ID, Name, Salesperson, Region) F = { Cust_ID → {Name, Salesperson, Region}, Salesperson → Region } – Khóa K = Cust_ID – Phụ thuộc hàm bắc cầu: Cust_ID → Salesperson → Region Do đó lược đồ quan hệ không đạt dạng chuẩn 3. Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 240
    • 241. Các dạng chuẩn – Dạng chuẩn 3 (3NF) (tt) • Định nghĩa dạng chuẩn 3 (3NF): – LĐQH R đgl ở dạng chuẩn 3 nếu: • R ở dạng chuẩn 2 • Mọi thuộc tính không khóa của R đều không phụ thuộc bắc cầu vào khóa chính • ĐN khác: – R là 3NF nếu với mọi pth X → A trong F, A∉X thì • X là siêu khóa hoặc • A là thuộc tính khóa (nguyên tố). Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 241
    • 242. Các dạng chuẩn – Dạng chuẩn 3 (3NF) - Kiểm tra lđqh đạt 3NF • Cách làm: – Xác định khóa của lược đồ quan hệ – Kiểm tra lđqh đã là 2NF chưa, nếu đã là 2NF, duyệt lần lượt từng phụ thuộc hàm trong F, nếu tồn tại một phụ thuộc hàm X A mà: • • X không là khóa và A là thuộc tính không khóa kết luận vi phạm dạng chuẩn 3 – Nếu không có phụ thuộc hàm nào vi phạm dạng chuẩn 3 thì R là đạt dạng chuẩn 3. Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 242
    • 243. Các dạng chuẩn – Dạng chuẩn 3 (3NF) - Kiểm tra lđqh đạt 3NF (tt) • Ví dụ: – R = (C,S,Z), F = {CS → Z, Z → C} – Khóa dự tuyển: CS và SZ – Tất cả các thuộc tính đều là thuộc tính khóa R là 3NF • Ví dụ: – R = (A,S,I,P), F = {SI → P, S → A}, – Khóa: SI – S → A nhưng S là tập con của khóa và A là thuộc tính không khóa  R không là 2NF  R không là 3NF Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 243
    • 244. Các dạng chuẩn – Dạng chuẩn 3 (3NF) (tt) • Nhận xét: – Từ định nghĩa ta có nhận xét rằng, nếu R là 3NF thì nó là 2NF, trong dạng chuẩn 2NF ta chỉ cấm các thuộc tính không khóa phụ thuộc vào tập con thực sự của khóa (là tập có bao đóng khác U), – trong 3NF, ta cấm các thuộc tính không khóa phụ thuộc vào mọi tập có bao đóng khác U (trong đó có tập con thực sự của khóa). Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 244
    • 245. Các dạng chuẩn – Dạng chuẩn 3 (3NF) - Cách chuẩn hóa lược đồ về 3NF • Cách làm: – Xác định PTH vi phạm dạng chuẩn 3 (3NF) – Tách các nhóm thuộc tính có PTH bắc cầu vào khóa thành một QH. Khóa của QH mới này chính là thuộc tính mà chúng có phụ thuộc hàm. – Các thuộc tính và các PTH còn lại nhóm vào trong một quan hệ. – Lặp lại quá trình với lược đồ chưa đạt 3NF cho đến khi tất cả các LĐQH con (tách ra từ lược đồ quan hệ ban đầu) đều là 3NF. Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 245
    • 246. Các dạng chuẩn – Dạng chuẩn 3 (3NF) - Cách chuẩn hóa lược đồ về 3NF (tt) (a) Quan hệ SALES với các dữ liệu mẫu (b) Quan hệ SALES với phụ thuộc hàm bắc cầu CustID  Name CustID  Salesperson CustID  Region SalespersonRegion CustID  Salesperson  Region Pth bắc cầu  không đạt 3NF Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 246
    • 247. Các dạng chuẩn – Dạng chuẩn 3 (3NF) - Cách chuẩn hóa lược đồ về 3NF (tt) (c) Phân rã quan hệ SALES Không còn phụ thuộc hàm bắc cầu nữa … Cả hai quan hệ bây giờ là ở dạng chuẩn 3 (d) Quan hệ ở dạng chuẩn 3 CustID  Name CustID  Salesperson Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 247
    • 248. Các dạng chuẩn – Dạng chuẩn 3 (3NF) - Cách chuẩn hóa lược đồ về 3NF (tt) • Ví dụ: Xét lại lược đồ csdl KeHoach – Thi(ngThi, gioThi, phThi, maMH, gvDay) • • FD: { maMH ngThi, gioThi, phThi Khóa: {ngThi, gioThi, phThi }  gvDay  maMH } – CoiThi (giamThi, ngThi, gioThi, phThi) • • FD: {giamThi  ngThi, gioThi, phThi} Khóa: giamThi Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT Vi phạm 3NF 3NF 248
    • 249. Các dạng chuẩn – Tóm lại Dạng chuẩn Thuộc tính không khóa phụ thuộc vào tập con của khóa Thuộc tính không khóa phụ thuộc vào tập khác tập con của khóa Thuộc tính khóa phụ thuộc tập khác Thuộc tính khóa và thuộc tính không khóa phụ thuộc vào khóa 2NF X V V V 3NF X X V V Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 249
    • 250. Các dạng chuẩn – Dạng chuẩn Boyce codd (BCNF) • ĐN: – R là dạng chuẩn Boyce-Codd nếu với mọi X → A, A∉X thì X là siêu khóa. • Kiểm tra lược đồ là BCNF – Duyệt qua lần lượt từng phụ thuộc hàm X A trong F – Nếu tồn tại một phụ thuộc hàm mà X không phải là siêu khóa thì kết luận lược đồ không là BCNF – Ngược lại, nếu mọi fd XA trong F đều có vế trái là siêu khóa thì kết luận lược đồ là BCNF Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 250
    • 251. Các dạng chuẩn – Dạng chuẩn Boyce codd – Kiểm tra lược đồ là BCNF • Ví dụ: – R = (C,S,Z), F = {CS → Z, Z → C} Khóa dự tuyển: CS và SZ => Dạng chuẩn 3 Có Z → C, nhưng Z không là siêu khóa => Không phải BCNF • Định lý: Nếu lược đồ quan hệ R với tập phụ thuộc hàm F đạt BCNF thì nó cũng đạt 3NF. – Trong 3NF chỉ cấm các thuộc tính không khóa phụ thuộc vào tập có bao đóng khác U, còn trong BCNF, ta cấm tất cả các thuộc tính phụ thuộc vào tập có bao đóng khác U. Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 251
    • 252. Các dạng chuẩn – Dạng chuẩn Boyce codd (tt) • Mệnh đề: – Mọi lược đồ quan hệ gồm hai thuộc tính thì ở dạng BCNF – Lược đồ R(U,F) với tập F chỉ gồm một phụ thuộc hàm thì ở dạng BCNF – Nếu R(U,F) không đạt BCNF thì tồn tại hai thuộc tính A, B sao cho: R (A ∪ B)  A Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 252
    • 253. Các dạng chuẩn – Tóm lại Dạng chuẩn Thuộc tính không khóa phụ thuộc vào tập con của khóa Thuộc tính không khóa phụ thuộc vào tập khác tập con của khóa Thuộc tính khóa phụ thuộc tập khác Thuộc tính khóa và thuộc tính không khóa phụ thuộc vào khóa 2NF X V V V 3NF X X V V BCNF X X X V The Key, The Whole Key, Nothing but the Key, so help me Codd!!! Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 253
    • 254. Các bước chuẩn hóa LĐQH ban đầu Tách nhóm các thuộc tính kép LĐQH đạt 1NF Tách các PTH riêng phần LĐQH đạt 2NF Tách các PTH bắc cầu LĐQH đạt 3NF Tách các PTH vế trái Ths. Lương Thị Ngọc Khánh LĐQH đạt BCNF – Khoa CNTT – TUD – ĐH TĐT không là siêu khóa 254
    • 255. Phân rã các lược đồ quan hệ • Phân rã (decomposition): – một lược đồ quan hệ R(U) là thay R bằng tập các lược đồ con R1(U1), R2(U2), ..., Rk(Uk) của R sao cho U1∪ U2 ∪ ... ∪ Uk = U. • Phân rã bảo toàn nội dung: – Phép kết tự nhiên các phân rã cho trở lại R • Phân rã bảo toàn phụ thuộc hàm: – Gọi Fi = {X → Y đúng trong F, XY ⊆ Ui} là tập phụ thuộc hàm của Ri ∪ Fi tương đương F Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 255
    • 256. Phân rã các lược đồ quan hệ - Kiểm tra phân rã bảo toàn thông tin • I: R(U,F), một phân rã của R, p = (R1, R2, …,Rn) • O: Cho câu trả lời phân rã có mất thông tin hay không? • Phương pháp: – (1). Lập bảng ban đầu là ma trận m hàng (ứng với m lược đồ con Ri) và n cột (ứng với n thuộc tính). Phần tử (i,j) của ma trận được xác định theo công thức: • (i,j) = aj nếu Aj ∈ Ri • (i,j) = bij nếu Aj ∉ Ri trong đó, aj , bij ∈ Dom(Aj) Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 256
    • 257. Phân rã các lược đồ quan hệ - Kiểm tra phân rã bảo toàn thông tin (tt) – (2). Biến đổi bảng • Với mỗi FD nếu phát hiện trên bảng có hai hàng giống nhau trên X và khác nhau trên Y  làm cho hai hàng đó cũng giống nhau trên Y. (ưu tiên làm bằng ký hiệu là aj). • Tiếp tục áp dụng các phụ thuộc hàm cho bảng (kể cả việc lập lại các phụ thuộc hàm đã áp dụng) cho đến khi không còn áp dụng được nữa. – Mục đích của việc biến đổi bảng là để thu được bảng cuối cùng, xem như một quan hệ, thỏa tập F. Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 257
    • 258. Phân rã các lược đồ quan hệ - Kiểm tra phân rã bảo toàn thông tin (tt) – (3) Xem bảng kết quả: • • Nếu trong bảng cuối cùng có chứa hàng gồm toàn ký hiệu a (tức là hàng (a1, a2 …, an)), ta kết luận p = (R1,R2…,Rm) là phân tách không mất thông tin (tức cho câu trả lời đúng) Trường hợp ngược lại, p là phân tách mất thông tin. • Nhận xét: thuật toán dừng khi xuất hiện hàng toàn aj • Ví dụ: Cho R(U,F) R = BOISQD F = {SD IB ISQ BO} Phân rã p = (SD,IB,ISQ,BO) có kết nối mất thông tin không? Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 258
    • 259. Bảng ban đầu SD B O I S Q D B O I S Q D SD b11 b12 b13 a4 b15 a6 SD b11 b12 b13 a4 b15 a6 IB a1 b22 a3 b24 b25 b26 IB a1 b22 a3 b24 b25 b26 ISQ b31 b32 a3 a4 a5 b36 ISQ b31 b32 a3 a4 a5 a6 BO a1 a2 b43 b44 b45 b46 BO a1 a2 b43 b44 b45 b46 I S Q D SD b11 b12 b13 a4 b15 a6 a1 b22 a3 b24 b25 b26 ISQ a1 b32 a3 a4 a5 a6 BO a1 a2 b43 b44 b45 b46 B O I S Q D SD b11 b12 b13 a4 b15 a6 IB a1 a2 a3 b24 b25 b26 ISQ a1 a2 a3 a4 a5 a6 BO BO O IB IB B a1 a2 b43 b44 b45 b46 Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT Dòng toàn a ⇒ phép tách không mất thông tin 259
    • 260. Phân rã các lược đồ quan hệ - Kiểm tra phân rã bảo toàn thông tin (tt) • Định lý: (Delobel) – Cho R(U,F) là một lược đồ quan hệ, khi đó p = (R1, R2) là phân tách có kết nối không tổn thất khi và chỉ khi: (R1 ∩ R2) (R1 – R2) hay (R1 ∩ R2) (R2 – R1) • Nói cách khác: – Với R(U,F) là một lược đồ quan hệ, giả sử XY ∈ F+ khi đó p = (XY, X(UY)) là phân tách có kết nối không tổn thất với F. • Dạng phát biểu này của định lý sẽ là cơ sở cho việc kiểm tra phép tách BCNF nêu ra ở phần sau. Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 260
    • 261. Phân rã các lược đồ quan hệ - Kiểm tra phân rã bảo toàn phụ thuộc hàm • I: một phân rã p = (R1,..,Rk) và tập F • O: khẳng định xem p có bảo toàn F hay không? • Phương pháp: k – Đặt G = i1 ∏ Ri (.F ) = – Mục đích của ta là: kiểm tra xem G có tương đương với F hay không. – Để xem G có tương đương với F hay không, ta phải xét mỗi phụ thuộc XY trong F và xác định xem X+, được tính ứng với G, có chứa Y hay không. Thủ thuật để tính X+ mà không cần có G là xét lặp đi lặp lại kết quả tính bao đóng X+ ứng với các hình chiếu của F trên các Ri. Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 261
    • 262. Phân rã các lược đồ quan hệ - Kiểm tra phân rã bảo toàn phụ thuộc hàm (tt) • Ví dụ: Cho lđqh R(ABCDE) F = {E AC, AB, CDA, ABC, EB} Cho phân rã sau của R, p = (ACE, ABCD) Hỏi phân rã p có bảo toàn phụ thuộc hàm không? • Cách làm: – Đặt R1(ACE), khi đó F1 = {AAC} R2(ABCD), khi đó F2 = {AB, CDA, ABC} Đặt G = F1 U F2 = {E AC, AB, CDA, ABC} Dễ thấy G ⊂ F do đó F phủ G (1) Ngoài ra, tất cả các pth trong F đều thuộc G trừ pth EB. Mà ta có (EG)+ ⊃ B, do đó G ⊢ EB, do đó G phủ F (2) (1) và (2)  F và G tương đương Phân rã bảo toàn phụ thuộc hàm. Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 262
    • 263. Phân rã các lược đồ quan hệ (tt) • Chú ý: Hai tính chất kết nối không /tổn thất và bảo toàn tập F là độc lập với nhau. – Ví dụ: R(CSZ), F = {CSZ, ZC}, khi đó phân tách p = (SZ,CZ) có kết nối không tổn thất vì (SZ ∩ CZ) (CZ-SZ) (nghĩa là ZC) Tuy nhiên, chiếu của F trên SZ chỉ cho những phụ thuộc tầm thường không bảo toàn tập F. – Cũng vậy, có những phân rã bảo toàn F nhưng không có tính chất nối không mất thông tin. Ví dụ với F = {AB, CD}, U=ABCD và p = (AB,CD) Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 263
    • 264. Phân rã các lược đồ quan hệ - Phân rã thành 3NF • Giải thuật: – Nhập: R và F là phủ tối thiểu – 1. Tạo ra R1 với tập các thuộc tính không có trong vế trái hay vế phải của bất kỳ phụ thuộc hàm nào. – 2. Nếu có phụ thuộc hàm nào trong F chứa toàn bộ các thuộc tính của R thì tạo ra R. – 3. Ngược lại: • Tạo ra lược đồ XA cho mỗi X → A • Đánh giá: – Phân rã này bảo toàn nội dung và phụ thuộc hàm Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 264
    • 265. Phân rã các lược đồ quan hệ - Phân rã thành 3NF – Ví dụ • Lược đồ với F là phủ tối thiểu – R = CTHRSG, F = {C →T, HR →C, HT →R, CS →G, HS →R} • Kết xuất: – CT F1 = {CT} – CHR F2 = {HRC} – THR F3 = {HTR} – CSG F4 = {CSG} – HRS F5 = {HSR} Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 265
    • 266. Phân rã các lược đồ quan hệ - Phân rã thành BCNF • Nhắc lại định lý Delobel: – Với R(U,F) là một lược đồ quan hệ, giả sử XY ∈ F+ khi đó p = (XY, X(UY)) là phân tách có kết nối không tổn thất với F. Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 266
    • 267. Phân rã kết nối không mất thông tin về BCNF • Thuật toán: – Vào: LĐQH R và tập PTH F trên R – Ra: Phép tách kết nối không mất thông tin của R với các LĐQH con đạt BCNF – PP: Xây dựng phép tách p qua các bước lặp sao cho ở mỗi bước p luôn là tách kết nối không mất thông tin. • • • • Ban đầu: p chỉ gồm R, p = (R) Việc lặp lại sẽ kết thúc khi p chỉ chứa các LĐQH đạt BCNF. Ngược lại, tìm được LĐQH S = (US, FS) trong p không đạt BCNF với: – PTH X  A thỏa trên S và X không là siêu khóa của S – và A ∉ X. Thay thế S bởi hai LĐQH với tập thuộc tính tương ứng là XA và US {A}. Quay lại bước trên để kiểm tra xem còn LĐQH nào không đạt BCNF trong p hay không. Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 267
    • 268. Phân rã kết nối không mất thông tin về BCNF (tt) • Ví dụ: Xét lược đồ TKB (thời khóa biểu) gồm tập U các thuộc tính: C(lớp học), T(giảng viên), R (phòng học), S (sinh viên), H (giờ học), G (điểm học phần) cùng với tập F các PTH sau: F = {C  T HR  C HT  R CS  G HS  R} Khóa là K = HS Tìm một phân rã không tổn thất thông tin về BCNF của lđqh trên. Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 268
    • 269. Tổng kết về chuẩn hóa CSDL • Mục tiêu của các dạng chuẩn trên quan hệ là hạn chế những dư thừa trong dữ liệu lưu trữ. • Những dư thừa dữ liệu là do phát sinh từ mối liên quan giữa các mục dữ liệu thể hiện qua các PTH  dẫn đến dị thường khi thêm, xóa, cập nhật dữ liệu. • Trong 2NF và 3NF vẫn còn dư thừa dữ liệu – 2NF: loại được sự phụ thuộc riêng phần vào khóa đối với thuộc tính không nguyên tố, vẫn còn tồn tại phụ thuộc bắc cầu vào khóa. – 3NF: Loại được sự phụ thuộc bắc cầu vào khóa đối với thuộc tính không nguyên tố. Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 269
    • 270. Tổng kết về chuẩn hóa CSDL (tt) • BCNF: Loại bỏ mọi dư thừa dữ liệu mà PTH có thể tạo ra. • Để đạt dạng chuẩn cao, ít dư thừa dữ liệu một LĐQH thường được phân rã thành nhiều LĐQH con. • Một LĐQH luôn có thể được phân rã thành các LĐQH con thỏa 3NF vừa bảo toàn nội dung vừa bảo toàn PTH. • Một LĐQH luôn có thể được phân rã thành các LĐQH con đạt BCNF bảo toàn nội dung nhưng có thể không bảo toàn được tập PTH. Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 270
    • 271. Bài tập • 1. Cho biết dạng chuẩn của các lđqh sau: a) Q(ABCDEG) b) Q(ABCDEGH) c) Q(ABCDEGH) d) Q(ABCDEG) e) Q(ABCDEGHI) F = {A BC, F = {CAB, F = {ABC, F = {ABC, F = {ACB, HI CDE, EG} DE, BG} DE, HG} CB, ABDE, GA} BIACD, ABCD ACEBCG CGA} • 2. Cho lđqh Q(CDEGHK) và F = {CKH, CD, EC, EG, CKE} a) Chứng minh EKDH b) Tìm tất cả các khóa của Q c) Xác định dạng chuẩn cao nhất của Q d) Phân rã Q thành một lđqh đạt BCNF hoặc 3NF, chỉ ra tập pth và khóa cho mỗi lược đồ con. Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 271

    ×