Your SlideShare is downloading. ×
  • Like
  • Save
Bài giảng cơ sở dữ liệu
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Now you can save presentations on your phone or tablet

Available for both IPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Bài giảng cơ sở dữ liệu

  • 2,442 views
Published

 

Published in Education
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
2,442
On SlideShare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
0
Comments
0
Likes
13

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

Transcript

  • 1. 1BÀI GIẢNG MÔN HỌCCƠ SỞ DỮ LIỆUBiên soạn:ThS. Văn Như Bích B,ThS. Võ Hoàng Khang,Khoa CNTT, trường Đại học KTCN TP.HCM.(TP.HCM, tháng 1/2011. Lưu hành nội bộ)
  • 2. 2NỘI DUNG:Chương I. MỘT SỐ KHÁI NIỆM CƠ BẢNChương II. MÔ HÌNH DỮ LIỆU QUAN HỆChương III. NGÔN NGỮ ĐẠI SỐ QUAN HỆChương IV. NGÔN NGỮ TRUY VẤN CSDLChương V. RÀNG BUỘC TOÀN VẸNChương VI. CHUẨN HÓA DỮ LIỆUChương VII. NGÔN NGỮ TÂN TỪ (tự đọc)
  • 3. 3Chương 1. MỘT SỐ KHÁI NIỆM CƠ BẢNNỘI DUNG:1.1. CƠ SỞ DỮ LIỆU – HỆ QUẢN TRỊ CSDL1.2. CÁC MÔ HÌNH DỮ LIỆU
  • 4. 41.1. CƠ SỞ DỮ LIỆU – HỆ QUẢN TRỊ CSDL (1)1. CƠ SỞ DỮ LIỆU (Database):Là một hệ thống thông tin (HTTT) có cấu trúc kết hợpvới các phép toán phù hợp với cấu trúc đó, nhằm mụcđích tổ chức, lưu trữ, khai thác và kiểm tra qui tắc quảnlý một cách "Tốt nhất”, đảm bảo tính nhất quán vàkhông trùng lắp cho nhiều người sử dụng một cáchđồng thời với nhiều mục đích khác nhau.Lưu ý:Các tính chất: Hệ thống, có cấu trúc, nhiều người sửdụng, khai thác đồng thời, nhiều mục đích khác nhau.Nội dung của môn CSDL sẽ làm rõ tính "Tốt nhất“.
  • 5. 51.1. CƠ SỞ DỮ LIỆU – HỆ QUẢN TRỊ CSDL (2)Tính "Tốt nhất" cần làm rõ bởi các nội dung sau: Tổ chức và lưu trữ "Tốt nhất”: HTTT dữ liệu dạngbảng -> gần gủi với người sử dụng (MH Quan Hệ -Chương II). Khai thác "Tốt nhất": Tường minh và chặt chẻ bởicác phép toán Đại số Quan hệ (Ngôn ngữ Đại sốQuan hệ, chương III). Trong sáng dễ diễn đạt vàgần gũi với ngôn ngữ tự nhiên được xử lý khai thácbởi bởi ngôn ngữ SQL (Ngôn ngữ truy vấn DL,chương IV), đã được tối ưu hóa (Chương VII - TỐIƯU HÓA CÂU HỎI)
  • 6. 61.1. CƠ SỞ DỮ LIỆU – HỆ QUẢN TRỊ CSDL (3)• Kiểm tra các qui tắc quản lý "Tốt nhất”: Dễ dàngkiểm tra các qui tắc dựa vào 3 yếu tố của RBTV(Bối cảnh, nội dung, tầm ảnh hưởng) (Chương V –Ràng buộc toàn vẹn).• Biểu diễn HTTT theo tiêu chuẩn đảm bảo tính nhấtquán, không trùng lắp thông tin dựa vào việc chuẩnhóa dữ liệu (Chuẩn hóa dữ liệu, Chương VI).
  • 7. 71.1. CƠ SỞ DỮ LIỆU – HỆ QUẢN TRỊ CSDL (4)Để đảm bảo HTTT cho nhiều người sử dụngvới nhiều mục đích khác nhau khi chọn hệquản trị CSDL cần quan tâm đến các vấnđề:• Tính chủ quyền bị vi phạm• Tính nhất quán của dữ liệu• Vấn đề bảo mật• Tính an toàn dữ liệu• Vấn đề tranh chấp dữ liệu
  • 8. 81.1. CƠ SỞ DỮ LIỆU – HỆ QUẢN TRỊ CSDL (5)2. HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU (DataBase Management System -DBMS): Là hệ thống các chương trình quản trị CSDL, đồng thờilà công cụ giao tiếp giữa người sử dụng hoặc các ứng dụngvới CSDL.• Hệ quản trị CSDL cần có:– Từ điển dữ liệu (Data Dictionary)– Cơ chế giải quyết tranh chấp.– Cơ chế bảo mật dữ liệu.– Cơ chế tự động sao lưu (Backup) và phục hồi (Restore) dữ liệukhi có sự cố.– Ngôn ngữ giao tiếp người sử dụng (NSD) với CSDL.– Đảm bảo tính độc lập giữa dữ liệu và chương trình.– Có thể, cần có giao diện tốt với người dùng không chuyên.
  • 9. 91.2. CÁC MÔ HÌNH DỮ LIỆU1. MÔ HÌNH MẠNG (Network Data Model)2. MÔ HÌNH PHÂN CẤP (Hierachical DataModel)3. MÔ HÌNH QUAN HỆ (Relational DataModel)4. MÔ HÌNH THỰC THỂ KẾT HỢP (Entity-RelationShip)5. MÔ HÌNH HƯỚNG ĐỐI TƯỢNG (ObjectOriented Model)
  • 10. 10Chương 2. MÔ HÌNH DỮ LIỆU QUAN HỆNỘI DUNG:2.1. MỘT SỐ KHÁI NIỆM VÀ ĐỊNH NGHĨA2.2. CÁC THAO TÁC CƠ BẢN TRÊN MỘT QUAN HỆ
  • 11. 112.1. MỘT SỐ KHÁI NIỆM VÀ ĐỊNH NGHĨA (1)1. Quan Hệ: Là một đối tượng tồn tại trong thế giới thực được làmrõ bởi các giá trị có liên quan nhau: Ví dụ: 1 quan hệ sinh viên:005, Trần Văn A, 06/10/1990, Nam, 10DTH01-> Quan hệ sinh viên có mãsố sinh viên là 005, có tên là TrầnVăn A, ngày sinh là 06/10/1990, phái Nam, thuộc lớp10DTH01. Những giá trị có quan hệ (liên quan ) Là:(i) Lớp 10DTH01 có SV là Trần Văn A.(ii) SV Trần Văn A có ngày sinh là 06/10/1990 và mã số đểphân biệt với các SV khác là 005.(iii) SV Trần Văn A là SV Nam.v.v…
  • 12. 122.1. MỘT SỐ KHÁI NIỆM VÀ ĐỊNH NGHĨA (2) Tên gọi của các giá trị liên quan gọi là thuộc tính (mã số, tên, ngàysinh, phái, lớp) Ví dụ 2: 1 quan hệ địa chỉ -> gồm các giá trị liên quan nào? thuộc tínhnào?2. Loại Quan Hệ: Tất cả các quan hệ có cùng tính chất mô tả(cùng tên gọi các thuộc tính liên quan). Tính chất mô tả gọi làthuộc tính của loại quan hệ.=> Loại quan hệ là: Danh sách các quan hệ. Dữ liệu dạng bảng có dòng đầu là danh sách các thuộctính, dòng thứ 2 là các quan hệ với các giá trị tương ứngvới tên gọi các thuộc tính.
  • 13. 132.1. MỘT SỐ KHÁI NIỆM VÀ ĐỊNH NGHĨA (3)• Các thuộc tính (hay các tên gọi của các giá trị mô tả của quanhệ)» Dữ liệu dạng bảng:• Danh sách các quan hệ cùng loại, được gọi là loại quan hệSinh ViênMãSố Tên Ngàysinh Phái Lớp01289420429 Nguyễn Việt Ấn 15-12-1992 Nam 10CDH801212148901 Nguyễn Trung Tín 02-011992 Nam 10CDH801298586716 Nguyễn Hoàng Nam 01-11-1992 Nam 10CDH8
  • 14. 142.1. MỘT SỐ KHÁI NIỆM VÀ ĐỊNH NGHĨA (4)Loại quan hệ thường được biểu diễn dưới dạng lược đồquan hệ (lđ qh). Ví dụ: lđ qh SinhVien(MãSố, Tên,Ngàysinh, Phái, Lớp) đây là dạng viết tắt của loại quan hệsinh viên (hay dữ liệu dạng bảng là danh sách các sinhviên).=> dữ liệu dạng bảng là loại quan hệ (hay danh sách cácquan hệ) là dạng viết dầy đủ của lđ qh ký hiệu T(quanhệ).Ví dụ TSinhVien:MãSố Tên Ngàysinh Phái Lớp01289420429 Nguyễn Việt Ấn 15-12-1992 Nam 10CDH801212148901 Nguyễn Trung Tín 02-011992 Nam 10CDH801298586716 Nguyễn Hoàng Nam 01-11-1992 Nam 10CDH8
  • 15. 152.1. MỘT SỐ KHÁI NIỆM VÀ ĐỊNH NGHĨA (5)3. Thuộc tính: Tính chất để mô tả loại quan hệ hay tên gọi cácgiá trị mô tả các quan hệ cùng loại. Ví dụ: MãSố, Tên, Ngàysinh, Phái, Lớp. Mỗi một quan hệ được mô tả bởi các giá trị có liên quantương ứng với tên gọi của các giá trị (Thuộc tính) đó,được gọi là một bộ (hay một thể hiện của một loại quanhệ tức một quan hệ).Ví dụ:1 bộ q1->(005, Trần Văn A, 06/10/1990, Nam, 10DTH01)1 bộ q2->(006, Trần Văn B, 06/10/1990, Nam, 10DTH01)
  • 16. 162.1. MỘT SỐ KHÁI NIỆM VÀ ĐỊNH NGHĨA (6)• Thuộc tính được đặc trưng bởi 3 yếu tố:a. Tên gọi.b. Kiểu giá trị.c. Miền giá trị.
  • 17. 172.1. MỘT SỐ KHÁI NIỆM VÀ ĐỊNH NGHĨA (7)4. Siêu khóa & Khóa (của một loại quan hệ):• Siêu Khóa: Tập thuộc tính mà giá trị của nó dùng để phânbiệt quan hệ này với quan hệ khác trong cùng một loạiquan hệ.=> *Hai quan hệ (2 bộ) có cùng giá trị của khóa thì hai quanhệ đó là một (trùng nhau) nghĩa là các giá trị trên cácthuộc tính khác cũng giống nhau.*Mỗi một quan hệ trên một loại quan hệ chỉ được thể hiệnmột lần nghĩa là bộ giá trị của siêu khóa không được trùngnhau trong T quan hệ.• Khóa: Siêu khóa bé nhất hay Tập thuộc tính bé nhất màgiá trị của nó dùng để phân biệt quan hệ này với quan hệkhác trong cùng một loại quan hệ.
  • 18. 182.1. MỘT SỐ KHÁI NIỆM VÀ ĐỊNH NGHĨA (8)• Các ví dụ về khóa:Ví dụ1: TKB(Thứ, Ca, Phòng, Sốtiết, Lớp, Mãmôn, MãGV).Xác định khóa?Ví dụ 2: BànThắng(MãcầuThủ, MãTrận, Phút).Xác định khóa?Ví dụ 3: HônThú(SốHT, CMND_Ch, LầnCh, CMND_Vo,LầnVo, NgayKetHon).Tìm các khóa khác với khóa: SốHT.Ví dụ 4: SV tự đưa các lđ quan hệ và xác định khóa?Ví dụ 5: Quản lý siêu thị cần các lđ quan hệ?
  • 19. 192.1. MỘT SỐ KHÁI NIỆM VÀ ĐỊNH NGHĨA (9)• Những điều lưu ý về khóa:* Khóa không do chủ quan của người cài đặt mà do qui tắc quảnlý quyết định.* Không phải tất cả các thuộc tính có tên Mã số là tham gia vàokhóa mà chỉ có thể là khóa ngoại (hay khóa của một loại quanhệ khác).* Bất cứ loại quan hệ nào cũng có ít nhất là 1 khóa.* Khóa của loại quan hệ là tập thuộc tính còn khóa của 1 quanhệ là tập các giá trị thể hiện của quan hệ đó trên tập thuộctính khóa.* Cách tìm khóa dựa vào: Qui tắc quản lý (tân từ), dựa vào 2 bộvới các giá trị không thể trùng nhau (vì trùng nhau buộc cácgiá trị khác phải trùng nhau tức 2 bộ là một )
  • 20. 202.2. CÁC THAO TÁC CƠ BẢN TRÊN MỘT LĐ QUAN HỆ (1)1. Lệnh tạo lđ quan hệ R(A1, A2,... An):CREATE TABLE <R> (<A1> <Kiểu_dữ_liệu> [<RBTV>],<A2> <Kiểu_dữ_liệu> [<RBTV>],…[<RBTV>] )Ví dụ: CREATE TABLE NHANVIEN (HOTENNV NVARCHAR(50) NOT NULL,MANV CHAR(9) PRIMARY KEY,NS SMALLDATETIME,DCHI NVARCHAR(50),GT CHAR(3) CHECK (GT IN (‘Nam’, ‘Nu’)),PHG INT )
  • 21. 212.2. CÁC THAO TÁC CƠ BẢN TRÊN MỘT LĐ QUAN HỆ (2)2. Lệnh sửa bảng:– Thay đổi cấu trúc bảng.– Thay đổi RBTV.Thêm cột:ALTER TABLE <Tên_bảng> ADD COLUMN<Tên_cột> <Kiểu_dữ_liệu> [<RBTV>]Xóa cột:ALTER TABLE <Tên_bảng> DROP COLUMN <Tên_cột>Mở rộng cột:ALTER TABLE <Tên_bảng> ALTER COLUMN<Tên_cột> <Kiểu_dữ_liệu_mới>
  • 22. 222.2. CÁC THAO TÁC CƠ BẢN TRÊN MỘT LĐ QUAN HỆ (3)• Thêm RBTV:ALTER TABLE <Tên_bảng> ADDCONSTRAINT <Ten_RBTV> <RBTV>,CONSTRAINT <Ten_RBTV> <RBTV>,….• Xóa RBTV:ALTER TABLE <Tên_bảng> DROP <Tên_RBTV>• Lệnh xóa bảng:DROP TABLE <Tên_bảng>
  • 23. 232.2. CÁC THAO TÁC CƠ BẢN TRÊN MỘT LĐ QUAN HỆ (4)• Ví dụ - Thay đổi cấu trúc bảng:ALTER TABLE NHANVIEN ADDNGHENGHIEP CHAR(20)ALTER TABLE NHANVIEN DROP COLUMN NGHENGHIEPALTER TABLE NHANVIEN ALTER COLUMNNGHENGHIEP CHAR(50)Ví dụ - Xóa bảng:DROP TABLE NHANVIENVí dụ - Thay đổi RBTV:
  • 24. 24CREATE TABLE PHONGBAN (TENPB NVARCHAR(20),MAPHG INT NOT NULL,TRPHG CHAR(9),NG_NHANCHUC DATETIME)ALTER TABLE PHONGBAN ADDCONSTRAINT PB_MAPHG_PK PRIMARY KEY (MAPHG),CONSTRAINT PB_TRPHG FOREIGN KEY (TRPHG)REFERENCES NHANVIEN(MANV),CONSTRAINT PB_NGNHANCHUC_DF DEFAULT (GETDATE())FOR (NG_NHANCHUC),CONSTRAINT PB_TENPB_UNI UNIQUE (TENPB)
  • 25. 252.2. CÁC THAO TÁC CƠ BẢN TRÊN MỘT LĐ QUAN HỆ (5)3. Thêm bộ giá trị mới vào quan hệ R (A1, A2,... An):INSERT (R; v1,v2,..., vn)Ví dụ: ?4. Sửa giá trị các bộ của quan hệ R:UPDATE (R; A1=e1, A2=e2,..., An=en; điều kiện sửa)Ví dụ: ?5. Xóa các bộ của quan hệ R:DELETE (R; điều kiện xóa)Ví dụ: ?
  • 26. 26Chương 3. NGÔN NGỮ ĐẠI SỐ QUAN HỆNỘI DUNG:3.1 CÁC PHÉP TOÁN TẬP HỢP TRÊN CÁC QUAN HỆ3.2 CÁC PHÉP TOÁN QUAN HỆ3.3 CÁC PHÉP TOÁN KẾT ĐẶC BIỆT3.4 CÁC VÍ DỤ MINH HỌA
  • 27. 273.1 CÁC PHÉP TOÁN TẬP HỢP TRÊN CÁC QUAN HỆ (1)1. Phép hợp nhất 2 quan hệ (UNION):• Cho R(U) và S(U) là 2 lđ quan hệ. Phép hợp của 2 lđquan hệ R và S, ký hiệu: R ∪ S, là một lđ quan hệ Qđược định nghĩa:Q = R ∪ S đn (i) Q+= U; (ii) TQ = { t: t ∈ TR ∨ t ∈ TS }2. Phép trừ 2 quan hệ (MINUS):• Cho R(U) và S(U) là 2 lđ quan hệ. Phép hiệu của 2 lđquan hệ R và S, ký hiệu: R S, là một lđ quan hệ Q đượcđịnh nghĩa:Q = R S đn (i) Q+= U; (ii) TQ = { t: t ∈ TR ∨ t ∉ TS }
  • 28. 283.1 CÁC PHÉP TOÁN TẬP HỢP TRÊN CÁC QUAN HỆ (2)3. Phép lấy phần chung của 2 quan hệ (INTERSECTION):Cho R(U) và S(U) là 2 lđ quan hệ. Phần chung (Phép giao) của 2lđ quan hệ R và S, ký hiệu: R ∩ S, là một lđ quan hệ Q đượcđịnh nghĩa:Q = R ∩ S đn (i) Q+= U; (ii) TQ = { t: t ∈ TR ∧ t ∈ TS }4. Phép tích Đề các (Des CARTESIAN):Cho R(A1, A2,..., An) và S(B1, B2,..., Bn) là 2 lđ quan hệ.Tích Đề các của 2 lđ quan hệ R và S, ký hiệu: R x S, là một quanhệ Q được định nghĩa:Q = R x S đn (i) Q+= {A1, A2,..., An, B1, B2,..., Bn}; (ii) TQ = { t =(u,v): u ∈ TR ∧ v ∈ TS }
  • 29. 293.1 CÁC PHÉP TOÁN TẬP HỢP TRÊN CÁC QUAN HỆ (3)5. Phép lấy phần bù của 1 quan hệ (COMPLEMENT):Cho R (A1, A2,..., An) là một lđ quan hệ. Ai có miền giá trị là Dom(Ai)với i = 1, 2,..., n. Phần bù của R, ký hiệu:R hoặc , là một lđquan hệ Q được định nghĩa:Q = R đn (i) Q+= {A1, A2,..., An}; (ii) TQ = { t =(v1, v2,..., vn): vi ∈ Dom(Ai) ∧ t ∉ TR }6. Phép chia 2 quan hệ (DIVISION):Không làm mất tính tổng quát, giả sử R (A,B) và S(B) là 2 lđ quanhệ. Thuơng của 2 lđ quan hệ R và S, ký hiệu: R÷ S, là một lđquan hệ Q được định nghĩa:Q = R ÷ S đn (i) Q+={A}; (ii) TQ = { t = r.A: r ∈ TR ∧ ∀u ∈ TS ∧ (t,u) ∈ TR}Tức là: Q x S ⊆ RR
  • 30. 303.2 CÁC PHÉP TOÁN QUAN HỆ (1)1. Phép chiếu (PROJECTION):Cho R(U) là một lđ quan hệ và K ⊆ U.Phép chiếu quan hệ R trên tập thuộc tính K, ký hiệu: R[K]hoặc ΠK(R) là một lđ quan hệ Q được định nghĩa:Q = ΠK(R) đn (i) Q+= K; (ii) TQ = { t = r.K, r ∈ TR }Nói đơn giản, là một quan hệ mới lấy từ R sau khi đã loại bỏđi các cột không cần giữ lại, và loại bỏ các dòng giốngnhau.
  • 31. 313.2 CÁC PHÉP TOÁN QUAN HỆ (2)2. Phép chọn (SELECTION):Phép chọn các bộ của quan hệ R thỏa điều kiện eđã cho, ký hiệu là R: (e), hoặc σ(e)(R) được địnhnghĩa:Q = σ (e) (R) đn (i) Q+= R; (ii) TQ = { r ∈ TR: e(r) = true }
  • 32. 323.2 CÁC PHÉP TOÁN QUAN HỆ (3)3. Phép thêta kết (θ - JOIN):Ở đây θ là một trong các phép so sánh: >, >=, <, <=, =Cho R (U) và S (V) là các lđ quan hệ được định nghĩa trên tập thuộc tínhU ={A1, A2,..., An} và V = {B1, B2,..., Bn}.A ∈ U, B ∈ V là 2 thuộc tính của 2 lđ quan hệ.Phép θ - kết giữa quan hệ R và S, ký hiệu là R S, được định nghĩa:Q= R S đn (i) Q+= U ∪ V; (ii) TQ = { t = (u, v): u ∈ TR ∧ v ∈ TS ∧ u.A θ v.B}.Hay R S = (R x S): (R.A θ S.B)A θ BA θ BA θ B
  • 33. 333.2 CÁC PHÉP TOÁN QUAN HỆ (4)Các trường hợp đặc biệt:• Nếu θ là phép so sánh bằng nhau (=) thì phép kết đượcgọi là phép kết bằng nhau, hay phép kết tương đương(EQUI-JOIN).• Nếu θ là phép so sánh bằng nhau (=) và 2 thuộc tính A, Bcó tên giống nhau thì gọi đó là phép kết tự nhiên(NATURAL JOIN), và ký hiệu là R S.Ví dụ: "Cho tên phòng ban cùng danh sách tên các nhânviên”:PhongBan(MAPB, TenPB),NhanVien(MNV,TenNV, DC, ĐT,MAPB)PhongBan NhanVien [TenPB, TenNV]
  • 34. 343.3 CÁC PHÉP TOÁN KẾT ĐẶC BIỆT (1)• Phép kết đặc biệt xảy ra khi θ là phép so sánh bằng nhau (=), Alà khóa chính của R và B là khóa ngoại của S khi tham chiếutới quan hệ R. Giả sử thể hiện của 2 quan hệ như sau:1. Phép kết trong (INNER JOIN). Thực chất là phép kết bằngnhau, hay phép kết tương đương EQUI-JOIN. ký hiệu phéptoán này bằng dấu sao (*).Kết quả của phép kết trong giữa R và S: (R*S): Q(A, X, B, Y)(1, x1, 1, y1)(2, x2, 2, y2)R(A, X)(1, x1)(2, x2)(3, x3)S (B, Y)(1, y1)(2, y2)(4, y4)
  • 35. 353.3 CÁC PHÉP TOÁN KẾT ĐẶC BIỆT (2)2. Phép kết vế trái (LEFT JOIN):Phép kết vế trái giữa R và S, ký hiệu R S, là 1 quan hệ Qđịnh nghĩa trên tập thuộc tính U ∪ V, màTQ = { t = (u, v): u ∈ TR ∧ v ∈ TS ∧ u.A = v.B, hoặct = (u, Null): u ∈ TR ∧ ∃v ∈ TS s/c u.A = v.B}Kết quả phép kết vế trái giữa R và S là:Q(A, X, B, Y)(1, x1, 1, y1)(2, x2, 2, y2)(3, x3, Null, Null) (1)Suy ra, có thể dễ dàng tìm được các bộ của R mà không cóbộ giá trị tương ứng trong quan hệ S.
  • 36. 363.3 CÁC PHÉP TOÁN KẾT ĐẶC BIỆT (4)3. Phép kết vế phải (RIGHT JOIN):Phép kết vế phải giữa R và S, ký hiệu R S, là 1 quan hệQ định nghĩa trên tập thuộc tính U ∪ V, màTQ = { t = (u, v): u ∈ TR ∧ v ∈ TS ∧ u.A = v.B, hoặct = (Null, v): v ∈ TS ∧ ∃u ∈ TR s/c u.A = v.B}Kết quả phép kết vế phải giữa R và S là:Q(A, X, B, Y)(1, x1, 1, y1)(2, x2, 2, y2)(Null, Null, 4, y4) (2)Suy ra, có thể dễ dàng tìm được các bộ của S mà không cóbộ giá trị tương ứng trong quan hệ R.
  • 37. 373. 3 CÁC PHÉP TOÁN KẾT ĐẶC BIỆT (5)4. Phép kết ngoài (OUTER JOIN):Phép kết ngoài giữa R và S là 1 quan hệ Q định nghĩa trêntập thuộc tính U ∪ V, màTQ = { t = (u, v): u ∈ TR ∧ v ∈ TS ∧ u.A = v.B, hoặct = (u, Null): u ∈ TR ∧ ∃v ∈ TS s/c u.A = v.B, hoặct = (Null, v): v ∈ TS ∧ ∃u ∈ TR s/c u.A = v.B }Kết quả phép kết ngoài giữa R và S là:Q(A, X, B, Y)(1, x1, 1, y1)(2, x2, 2, y2)(3, x3, Null, Null) (1)(Null, Null, 4, y4) (2)
  • 38. 383.4 CÁC VÍ DỤ MINH HỌA (1)Viết các biểu thức quan hệ để trả lời cho các câu hỏi sau:1) "Cho danh sách nhân viên làm cùng phòng với Watson”.(Employee: (Name = ‘Watson’))[Deptno] Employee2) "Cho tên của người lãnh đạo Smith”.((((Employee: (Name=‘Smith’))[Deptno] Department)[Mgr]) Employee) [Name]3) "Cho danh sách nhân viên có lương trên 4000”.EMPLOYEE: (SALARY > 4000)
  • 39. 39Chương IV. NGÔN NGỮ TRUY VẤN CSDLNỘI DUNG:4.1 Câu truy vấn tổng quát4.2 Truy vấn đơn giản4.3 Phép kết4.4 Đặt bí danh, sử dụng *, distinct4.5 Các toán tử4.6 Câu truy vấn con (subquery)4.7 Phép chia4.8 Hàm tính toán, gom nhóm
  • 40. 404.1 Câu truy vấn tổng quát (1)SELECT [DISTINCT] *|tên_cột | hàmFROM bảng[WHERE điều_kiện][GROUP BY tên_cột][HAVING điều_kiện][ORDER BY tên_cột ASC | DESC]
  • 41. 414.2 Truy vấn đơn giản (1)• SELECT– Tương đương phép chiếu của ĐSQH– Liệt kê các thuộc tính cần hiển thị trong kết quả• WHERE– Tương ứng với điều kiện chọn trong ĐSQH– Điều kiện liên quan tới thuộc tính, sử dụng cácphép nối luận lý AND, OR, NOT, các phép toánso sánh, BETWEEN• FROM– Liệt kê các quan hệ cần thiết, các phép kết
  • 42. 424.2 Truy vấn đơn giản (2)• Tìm masp, tensp do "Trung Quoc” sản xuấtcó giá từ 20000 đến 30000.Select masp,tenspFrom SANPHAMWhere nuocsx = ‘Trung Quoc’and gia between 20000 and 30000
  • 43. 434.3 Phép kết (1)• Inner Join, Left Join, Right Join, Full Join• Ví dụ:– In ra danh sách các khách hàng (MAKH,HOTEN) đã mua hàng trong ngày 1/1/2007.select KHACHHANG.makh, hotenfrom KHACHHANG inner join HOADON onKHACHHANG.makh=HOADON.makhwhere nghd=1/1/2007
  • 44. 444.3 Phép kết (2)• Ví dụ: In ra danh sách tất cả các hóa đơn và họ têncủa khách hàng mua hóa đơn đó (nếu có).Select sohd, hotenFrom HOADON left join KHACHHANG onHOADON.makh=KHACHHANG.makhSelect sohd, hotenFrom HOADON, KHACHHANGWhere HOADON.makh = KHACHHANG.makh
  • 45. 454.4 Đặt bí danh, sử dụng *, distinct• Đặt bí danh (Alias) cho thuộc tính và quan hệ:Tên_cũ AS Tên_mớiSelect manv, hoten as [ho va ten] From NHANVIEN• Liệt kê tất cả các thuộc tính của quan hệ:Select * from NhanvienSelect NHANVIEN.* from NHANVIEN• Distinct: trùng chỉ lấy một lầnSelect distinct nuocsx from SANPHAM• Sắp xếp kết quả hiển thị: Order bySelect * from SANPHAM order by nuocsx, gia DESC
  • 46. 464.5 Toán tử truy vấn (1)• Toán tử so sánh: =, >,<,>=,<=,<>• Toán tử logic: AND, OR, NOT• Phép toán: +, -,*, /• BETWEEN …. AND• IS NULL, IS NOT NULL• LIKE (_ %)• IN, NOT IN• EXISTS, NOT EXISTS• SOME, ALL
  • 47. 474.5 Toán tử truy vấn (2)• IS NULL, IS NOT NULLSelect sohd from HOADON where makh is NullSelect * from HOADON where makh is Not Null• Toán tử so sánh, phép toánSelect gia*1.1 as [gia ban] from SANPHAM wherenuocsx <> ’Viet Nam’Select * from SANPHAM where (gia between 20000 and30000) OR (nuocsx=‘Viet Nam’)• Toán tử IN, NOT INSelect * from SANPHAM where masp NOT IN(‘BB01’,’BB02’,’BB03’)
  • 48. 484.5 Toán tử so sánh (3)Toán tử LIKE– So sánh chuỗi tương đối– Cú pháp: s LIKE p, p có thể chứa % hoặc _– %: thay thế một chuỗi ký tự bất kỳ– _: thay thế một ký tự bất kỳ– Ví dụ: Select masp,tensp from SANPHAMwhere masp like B%01‘
  • 49. 494.6 Câu truy vấn con (1)In hoặc Exists• Ví dụ: Tìm các số hóa đơn mua cùng lúc 2 sản phẩm cómã số "BB01” và "BB02”.Select distinct sohdFrom CTHD where masp = BB01 and sohd IN(select distinct sohd from CTHDWhere masp = BB02)Select distinct A.sohdFrom CTHD AWhere A.masp = BB01 andEXISTS (select * from CTHD Bwhere B.masp = BB02‘ andA.sohd = B.sohd)
  • 50. 504.6 Câu truy vấn con (2)Not In hoặc Not ExistsVí dụ: Tìm các số hóa đơn có mua sản phẩm mã số ‘BB01’nhưng không mua sản phẩm mã số ‘BB02’.Select distinct sohdFrom CTHDWhere masp = BB01 and sohd NOT IN (select distinct sohdfrom CTHD where masp = BB02)Select distinct A.sohdFrom CTHD AWhere A.masp = BB01 andNOT EXITST (select * from CTHD Bwhere B.masp = BB02‘ andA.sohd=B.sohd)
  • 51. 514.7 Phép chiaSử dụng NOT EXISTS• Ví dụ: Tìm số hóa đơn đã mua tất cả những sảnphẩm do "Trung Quoc” sản xuất.• Select sohd from HOADON where not exists(select * from SANPHAMwhere nuocsx = ‘Trung Quoc’ and not exists(select * from CTHD whereHOADON.sohd = CTHD.sohd andCTHD.masp = SANPHAM.masp))
  • 52. 524.8 Các hàm tính toán và gom nhóm (1)4.8.1 Các hàm tính toán cơ bản:– COUNT: Đếm số bộ dữ liệu của thuộc tính– MIN: Tính giá trị nhỏ nhất– MAX: Tính giá trị lớn nhất– AVG: Tính giá trị trung bình– SUM: Tính tổng giá trị các bộ dữ liệu
  • 53. 53NHANVIENMANV HOTEN PHAI MANQL PHONG LUONGNV001 Nguyễn Ngọc Linh Nữ Null NC 2.800.000NV002 Đinh Bá Tiến Nam NV002 DH 2.000.000NV003 Nguyễn Văn Mạnh Nam NV001 NC 2.300.000NV004 Trần Thanh Long Nam NV002 DH 1.800.000NV005 Nguyễn Thị Hồng Vân Nữ NV001 NC 2.500.000NV006 Nguyễn Minh Nam NV002 DH 2.000.000NV007 Hà Duy Lập Nam NV003 NC 1.800.000NV008 Trần Kim Duyên Nữ NV003 NC 1.800.000NV009 Nguyễn Kim Anh Nữ NV003 NC 2.000.000
  • 54. 54Ví dụ1. Tính lương thấp nhất, cao nhất, trung bình và tổnglương của tất cả các nhân viên.2. Có tất cả bao nhiêu nhân viên?3. Bao nhiêu nhân viên có người quản lý?4. Bao nhiêu phòng ban có nhân viên trực thuộc?5. Tính lương trung bình của các nhân viên.6. Tính lương trung bình của các nhân viên theo từngphòng ban.
  • 55. 55Ví dụ1. Tính lương thấp nhất, cao nhất, trungbình và tổng lương của tất cả các nhânviên.SELECT min(luong) as thapnhat,max(luong) as caonhat,avg(luong) as trungbinh,sum(luong) as tongluongFROM NhanVien
  • 56. 56Ví dụ2. Có tất cả bao nhiêu nhân viên?SELECT count(*) FROM NhanVien3. Bao nhiêu nhân viên có người quản lý?SELECT count(*) FROM NhanVien WHEREmanql is not nullSELECT count(Manql) FROM NhanVien4. Bao nhiêu phòng ban có nhân viên trực thuộcSELECT count(distinct phong) FROM NhanVien
  • 57. 574.8 Các hàm tính toán và gom nhóm (2)4.8.2 Gom nhóm: mệnh đề GROUP BY• Sử dụng hàm gom nhóm trên các bộ trong quan hệ.• Mỗi nhóm bộ bao gồm tập hợp các bộ có cùng giá trịtrên các thuộc tính gom nhóm.• Hàm gom nhóm áp dụng trên mỗi bộ độc lập nhau.• SQL có mệnh đề GROUP BY để chỉ ra các thuộc tínhgom nhóm, các thuộc tính này phải xuất hiện trongmệnh đề SELECT.
  • 58. 58Ví dụ5. Tính lương trung bình của các nhân viênSELECT avg(LUONG) as LUONGTBFROM NhanVien6. Tính lương trung bình của các nhân viên theo từng phòngban.SELECT phong, avg(LUONG) as LUONGTBFROM NhanVienGROUP BY phong
  • 59. 594.8 Các hàm tính toán và gom nhóm (3)4.8.3 Điều kiện sau gom nhóm: mệnh đề HAVING– Lọc kết quả theo điều kiện, sau khi đã gom nhóm– Điều kiện ở HAVING được thực hiện sau khi gomnhóm, các điều kiện có liên quan đến thuộc tính GroupBy.• Ví dụ: Tìm phòng có số lượng nhân viên "Nữ” trên 5người.SELECT PhongFROM NhanVienWHERE Phai = ‘Nữ’GROUP BY PhongHAVING count(manv) > 5
  • 60. 60Chương V. RÀNG BUỘC TOÀN VẸN5.1 Giới thiệu ràng buộc toàn vẹn (RBTV)5.2 Các đặc trưng của một RBTV5.3 Phân loại RBTV5.3 Bảng tầm ảnh hưởng tổng hợp
  • 61. 615.1 Giới thiệu ràng buộc toàn vẹn (RBTV)• Ràng buộc toàn vẹn là các quy định, điềukiện từ ứng dụng thực tế, các điều kiện nàylà bất biến.⇒Vì thế phải luôn đảm bảo cơ sở dữ liệuthỏa ràng buộc toàn vẹn sau mỗi thao táclàm thay đổi tình trạng của cơ sở dữ liệu.
  • 62. 625.2 Các đặc trưng của một RBTV5.2.1 Nội dung5.2.2 Bối cảnh5.2.3 Bảng tầm ảnh hưởng
  • 63. 635.2.1 Nội dung• Mô tả chặt chẽ ý nghĩa của ràng buộc toànvẹn.• Nội dung được phát biểu bằng ngôn ngữ tựnhiên hoặc bằng ngôn ngữ hình thức (ngônngữ tân từ, đại số quan hệ, mã giả,…)– Ngôn ngữ tự nhiên: dễ hiểu nhưng không chặtchẽ, logic.– Ngôn ngữ hình thức: chặt chẽ, cô đọng.
  • 64. 645.2.2 Bối cảnh• Là tập các loại quan hệ khi thao tác trênnhững loại quan hệ đó có khả năng làmcho ràng buộc bị vi phạm.• Đó là những loại quan hệ có thể vi phạmràng buộc toàn vẹn khi thực hiện các thaotác thêm, xóa, sửa.
  • 65. 655.2.3 Bảng tầm ảnh hưởng (1)• Nhằm xác định khi nào tiến hành kiểm traràng buộc toàn vẹn. Thao tác nào thựchiện có thể làm vi phạm ràng buộc toànvẹn.• Phạm vi ảnh hưởng của một ràng buộctoàn vẹn được biểu diễn bằng một bảng 2chiều gọi là Bảng tầm ảnh hưởng.
  • 66. 665.2.3 Bảng tầm ảnh hưởng (2)Một số quy định• Những thuộc tính khóa (những thuộc tính nằmtrong khóa chính của quan hệ) không được phépsửa giá trị.• Thao tác thêm và xóa xét trên một bộ của quanhệ. Thao tác sửa xét sửa từng thuộc tính trên bộcủa quan hệ.• Trước khi xét thao tác thực hiện có thể làm viphạm ràng buộc hay không thì CSDL phải thỏaràng buộc toàn vẹn trước.
  • 67. 675.2.3 Bảng tầm ảnh hưởng (3)• Bảng tầm ảnh hưởng của một ràng buộc+ : thực hiện thao tác có thể làm vi phạm RBTV- : thực hiện thao tác không thể làm vi phạm RBTV+(A): có thể làm vi phạm RBTV khi sửa trên thuộc tính A-(*): không vi phạm RBTV do thao tác không thực hiện đượcRÀNG BUỘC RI THÊM XÓA SỬALOẠI QUAN HỆ 1LOẠI QUAN HỆ 2LOẠI QUAN HỆ 3
  • 68. 685.3 Phân loại RBTV5.3.1 RBTV có bối cảnh trên 1 loại quan hệ5.3.2 RBTV có bối cảnh trên nhiều loại quan hệ
  • 69. 695.3.1 RBTV có bối cảnh trên 1 loại quan hệ5.3.1.1 RBTV miền giá trị5.3.1.2 RBTV liên thuộc tính5.3.1.3 RBTV liên bộ
  • 70. 70Lược đồ CSDL quản lý giáo vụHOCVIEN (MAHV, HO, TEN, NGSINH, GIOITINH, NOISINH, MALOP)LOP (MALOP, TENLOP, TRGLOP, SISO, MAGVCN)KHOA (MAKHOA, TENKHOA, NGTLAP, TRGKHOA)MONHOC (MAMH, TENMH, TCLT, TCTH, MAKHOA)DIEUKIEN (MAMH, MAMH_TRUOC)GIAOVIEN(MAGV, HOTEN, HOCVI, HOCHAM, GIOITINH, NGSINH, NGVL,HESO, MUCLUONG, MAKHOA)GIANGDAY(MALOP, MAMH, MAGV, HOCKY, NAM, TUNGAY, DENNGAY)KETQUATHI (MAHV, MAMH, LANTHI, NGTHI, DIEM, KQUA)
  • 71. 715.3.1.1 Ràng buộc miền giá trị• Là tập giá trị mà một thuộc tính có thể nhận.• R1: Giới tính của học viên chỉ là Nam hoặc Nữ– Nội dung:∀hv ∈ HOCVIEN: hv.Gioitinh ∈ {‘Nam’,’Nữ’}– Bối cảnh: loại quan hệ HOCVIEN– Bảng tầm ảnh hưởng:R1 THÊM XÓA SỬAHỌC VIÊN + - +(gioitinh)
  • 72. 725.3.1.2 Ràng buộc liên thuộc tính• Là ràng buộc giữa các thuộc tính với nhau trên 1 bộ củaquan hệ• R2: Ngày bắt đầu (TUNGAY) giảng dạy một môn học chomột lớp luôn nhỏ hơn ngày kết thúc (DENNGAY)– Nội dung:∀gd ∈ GIANGDAY: gd.TUNGAY < gd.DENNGAY– Bối cảnh: GIANGDAY– Bảng tầm ảnh hưởng:
  • 73. 735.3.1.3 Ràng buộc liên bộ (1)• Là ràng buộc giữa các bộ trên cùng một quan hệ (có thểliên quan đến nhiều thuộc tính).• R3: Tất cả các học viên phải có mã số phân biệt với nhau– Nội dung:∀h1,h2∈ HOCVIEN: Nếu h1≠h2 thì h1.Mahv≠h2.Mahv– Bối cảnh: quan hệ HOCVIEN– Bảng tầm ảnh hưởng:R3 Thêm Xóa SửaHOCVIEN + - + (MAHV)
  • 74. 745.3.1.3 Ràng buộc liên bộ (2)• R4: Các giáo viên có cùng học vị, cùng hệ số lương thìmức lương sẽ bằng nhau– Nội dung:∀gv1,gv2∈ GIAOVIEN:Nếu (gv1.Hocvi=gv2.Hocvi)∧(gv1.Heso=gv2.Heso)thì gv1.Mucluong=gv2.Mucluong– Bối cảnh: quan hệ GIAOVIEN– Bảng tầm ảnh hưởng:
  • 75. 755.3.2 RBTV có bối cảnh nhiều loại quan hệ5.3.2.1 RBTV tham chiếu (khóa ngoại, phụ thuộc tồn tại)5.3.2.2 RBTV liên thuộc tính5.3.2.3 RBTV do thuộc tính tổng hợp5.3.2.4 RBTV do chu trình trong lược đồ biểu diễn quan hệ
  • 76. 765.3.2.1 Ràng buộc tham chiếu (1)• Là ràng buộc quy định giá trị thuộc tínhtrong một bộ của loại quan hệ R (tập thuộctính này gọi là khóa ngoại), phải phụ thuộcvào sự tồn tại của một bộ trong quan hệ S(tập thuộc tính này là khóa chính trongquan hệ S).• RBTV tham chiếu còn gọi là ràng buộc phụthuộc tồn tại hay ràng buộc khóa ngoại.
  • 77. 773.2.1 Ràng buộc tham chiếu (2)• R5: Học viên thi một môn học nào đó thì môn học đó phải cótrong danh sách các môn học– Nội dung:∀∀k ∈ KETQUATHI, ∃m ∈ MONHOC: k.Mamh = m.Mamh• Hoặc: KETQUATHI[Mamh] ⊆ MONHOC[Mamh]– Bối cảnh: loại quan hệ KETQUATHI, MONHOC– Bảng tầm ảnh hưởng:R5 Thêm Xóa SửaKETQUATHI + - + (MAMH)MONHOC - + + (MAMH)
  • 78. 785.3.2.2 Ràng buộc liên thuộc tính (1)• Là ràng buộc giữa các thuộc tính trên những loại quan hệ khácnhau• R6: Ngày giáo viên giảng dạy một môn học phải lớn hơn hoặcbằng ngày giáo viên đó vào làm.– Nội dung: ∀gd ∈ GIANGDAYNếu ∃gv ∈ GIAOVIEN: gd.Magv = gv.Magvthì gv.NGVL ≤ gd.TUNGAY– Bối cảnh: GIANGDAY, GIAOVIEN– Bảng tầm ảnh hưởng:
  • 79. 795.3.2.2 Ràng buộc liên thuộc tính (2)• R7: Ngày thi một môn học phải lớn hơn ngày kết thúc họcmôn học đó.– Nội dung:∀kq ∈ KETQUATHINếu ∃gd ∈GIANGDAY, ∃hv ∈HOCVIEN:(gd.Malop=hv.Malop)∧(kq.Mamh=gd.Mamh)thìgd.Denngay < kq.Ngthi– Bối cảnh: GIANGDAY, HOCVIEN, KETQUATHI
  • 80. 805.3.2.2 Ràng buộc liên thuộc tính (3)• Bảng tầm ảnh hưởng:
  • 81. 815.3.2.3 RBTV do thuộc tính tổng hợp (1)• Là ràng buộc giữa các thuộc tính, các bộ trênnhững loại quan hệ khác nhau.• Thuộc tính tổng hợp là thuộc tính được tính toántừ giá trị của các thuộc tính khác, các bộ khác.• Ví dụ: SANPHAM(Masp, Tensp, Nuocsx, Gia)KHACHHANG(Makh, Hoten, Doanhso)HOADON(Sohd, Nghd, Makh, Trigia)CTHD(Sohd, Masp, Soluong, Gia)– Trị giá của một hóa đơn bằng tổng thành tiền của cácchi tiết thuộc hóa đơn đó.
  • 82. 825.3.2.3 RBTV do thuộc tính tổng hợp (2)• Doanh số của một khách hàng bằng tổng trị giá cáchóa đơn mà khách hàng đó đã mua:– Nội dung:∀kh ∈ KHACHHANG,kh.Doanhso = ∑(hd ∈ HOADON: hd.Makh=kh.Makh)(hd.Trigia)– Bối cảnh: KHACHHANG, HOADON– Bảng tầm ảnh hưởng:
  • 83. 835.3.2.3 RBTV do thuộc tính tổng hợp (3)• R8: Sĩ số của một lớp là số lượng học viên thuộc lớp đó– Nội dung:∀l ∈ LOP,l.Siso = Count(hv ∈ HOCVIEN: hv.Malop = l.Malop)(*)– Bối cảnh: quan hệ LOP, HOCVIEN– Bảng tầm ảnh hưởng:
  • 84. 845.3.2.4 Do hiện diện của chu trình (1)Biểu diễn lược đồ quan hệ dưới dạng đồ thị:– Loại quan hệ được biểu diễn bằng nút tròn rỗng to.– Thuộc tính được biểu diễn bằng nút tròn đặc nhỏ.– Tất cả các nút đều được chỉ rõ bằng tên của quanhệ hoặc thuộc tính. Thuộc tính thuộc một loại quanhệ được biểu diễn bởi một cung nối giữa nút trònto và nút tròn nhỏ.– Nếu đồ thị biểu diễn xuất hiện một đường khépkín.=> Lược đồ CSDL có sự hiện diện của chu trình.
  • 85. 855.3.2.4 Do hiện diện của chu trình (2)
  • 86. 865.3.2.4 Do hiện diện của chu trình (3)• X = GIANGDAY[Magv, Mamh]• Y = (GIAOVIEN ⋈ MONHOC) [Magv,Mamh]• Ý nghĩa:– X: giáo viên và những môn học đã được phân công chogiáo viên đó giảng dạy– Y: giáo viên và những môn học thuộc khoa giáo viên đóphụ trách• Mối quan hệ giữa X và Y trong các ràng buộc sau:
  • 87. 875.3.2.4 Do hiện diện của chu trình (4)Xảy ra một trong ba ràng buộc sau:• Ràng buộc 1: giáo viên chỉ được phân cônggiảng dạy những môn thuộc khoa giáo viênđó phụ trách X ⊆ Y• Ràng buộc 2: giáo viên phải được phân cônggiảng dạy tất cả những môn thuộc khoa giáoviên đó phụ trách X = Y• Ràng buộc 3: có thể phân công giáo viêngiảng dạy bất kỳ môn học nào X ≠ Y
  • 88. 885.3.2.4 Do hiện diện của chu trình (4)• R9: giáo viên chỉ được phân công giảngdạy những môn thuộc khoa giáo viên đóphụ trách X ⊆ Y
  • 89. 895.3.3 Phụ thuộc hàm (functional dependency)5.3.4 Thuật toán tìm khóa
  • 90. 905.3.3 Phụ thuộc hàm (1)• Cho lđ quan hệ Q(A, B, C). Phụ thuộc hàm A xácđịnh B. Ký hiệu A → B nếu:∀q1,q2∈Q: Nếu q1.A=q2.A thì q1.B=q2.B• A → B được gọi là phụ thuộc hàm hiển nhiên nếuB ⊆ A• A → B được gọi là phụ thuộc hàm nguyên tố nếu¬∃A’ ⊂ A, A’ ≠ A sao cho A’→ B
  • 91. 91• Ràng buộc khóa cũng là một phụ thuộc hàmMamh → Tenmh, Tclt, Tcth, Makhoa• R4: Các giáo viên có cùng học vị, cùng hệ sốlương thì mức lương sẽ bằng nhau. Ràng buộcnày có thể biểu diễn bằng phụ thuộc hàm nhưsau:Hocvi, Heso → Mucluong5.3.3 Phụ thuộc hàm (2)
  • 92. 925.3.4 Thuật toán tìm khóa (1)5.3.4.1 Thuật toán tìm bao đóng (Closure) của tập thuộctính:1. X0 = X2. Xi+1 = Xi ∪ A sao cho ∃ (Y  Z ) ∈ F,mà A ∈ Z và Y ∈ Xi3. Cho đến khi Xi+1 = Xi(Vì X= X0 ⊆ X1 ⊆ X2 ⊆ … ⊆ U, mà U hữu hạn cho nênsẽ tồn tại 1 chỉ số i nào đó mà Xi+1 = Xi) Khi đó X+F = Xi
  • 93. 93Ví dụ:• Cho R(U) với U = ABCDEGHF = {B  A, DA  CE, D  H,GH  C, AC  D}• Tính X+F, với:X = BDX = AC5.3.4 Thuật toán tìm khóa (2)
  • 94. 945.3.4.2 Định nghĩa khóa: R là lược đồ quan hệ định nghĩa trên tập cácthuộc tính U = { A1, A2,..., An }, với tập các phụthuộc hàm F = { f1, f2,..., fm } xác định trên R. K ⊆ U là khóa của R nếu thỏa mãn hai điều kiệnsau đây:1) K → U. (K là siêu khóa)2) ! K’ ⊂ K mà K’ → U. (siêu khóa nhỏ nhất)5.3.4 Thuật toán tìm khóa (3)
  • 95. 955.3.4.3: Bài toán tìm khóa: A gọi là thuộc tính nguồn nếu A không xuấthiện ở vế phải của bất kỳ Pth không hiểnnhiên nào của F. Tập các thuộc tính nguồnký hiệu là N. A gọi là thuộc tính đích nếu A không phảithuộc tính nguồn và A không xuất hiện ở vếtrái của bất kỳ PTH không hiển nhiên nàocủa F. Ký hiệu là D.5.3.4 Thuật toán tìm khóa (4)
  • 96. 96 Tập hợp các thuộc tính không phải nguồnvà không phải đích gọi là tập trung gian.Ký hiệu là L Các tập hợp N, D, L rời nhau từng đôimột và N ∪ D ∪ L = R+Nhận xét Nếu K là khóa của R thì K chứa tất cả cácthuộc tính nguồn và không chứa bất kỳthuộc tính đích nào.5.3.4 Thuật toán tìm khóa (5)
  • 97. 97 B1: Xây dựng 2vtập con của L: L1, L2, … bằngphương pháp đường chạy nhị phân. B2: Xây dựng tập K chứa các siêu khóa K = ∅ ∀ Li, Xi = N ∪ Li Tính Xi+F. Nếu Xi+F = R+thì K = K ∪ Xi B3: Loại bỏ dần các siêu khóa lớn.5.3.4 Thuật toán tìm khóa (6)
  • 98. 98• Ví dụ:Cho R(ABCDEG) với tập PthF = { AE  C, CG  A, BD  G, GA  E }Xác định tất cả các khóa của R. Ta có:– N = { B, D }– D = ∅– L = { A, C, E, G } Xây dựng tập thuộc tính Li bằng phương phápđường chạy nhị phân.5.3.4 Thuật toán tìm khóa (7)
  • 99. 1005.4. Bảng tầm ảnh hưởng tổng hợp (1)• Bảng tầm ảnh hưởng tổng hợp của mràng buộc trên n quan hệ bối cảnh:
  • 100. 1015.4. Bảng tầm ảnh hưởng tổng hợp (1)
  • 101. 102Chương VI. CHUẨN HÓA DỮ LIỆU6.1. Đặt vấn đề6.2. Dạng chuẩn 16.3. Dạng chuẩn 26.4. Dạng chuẩn 36.5. Dạng chuẩn Boyce-Codd6.6. Chuẩn hóa lược đồ CSDL bằngphương pháp phân rã6.7. Ví dụ
  • 102. 1036.1. Đặt vấn đề (1)• Xét lđ quan hệĐẶT_HÀNG (SốĐH, NgàyĐH, MãKH, MãHH,SốLượng )Với tập Pth F = {SốĐH  NgàyĐH, MãKH;SốĐH, MãHH  SốLượng}=>=> Có Trùng lắp thông tin.Có Trùng lắp thông tin.
  • 103. 104Sự trùng lắp thông tin dẫn đến:Tăng chí phí lưu trữTăng chi phí kiểm tra RBTVThiếu nhất quánVi phạm tính toàn vẹn của dữ liệu6.1. Đặt vấn đề (2)
  • 104. 105Tổ chức lại thành 2 loại quan hệ như sau:ĐẶT_HÀNG (SốĐH, NgàyĐH, MãKH)Với F1 = {SốĐH  NgàyĐH, MãKH}CHITIẾT_ĐH (SốĐH, MãHH, SốLượng)Với F2 = {SốĐH, MãHH  SốLượng}=> Không còn xảy ra tình trạng trùng lắpthông tin.6.1. Đặt vấn đề (3)
  • 105. 106• Để có thể đánh giá một cách cụ thể chấtlượng thiết kế của một lược đồ CSDL, lúc đầuE.F.Codd (tác giả của mô hình dữ liệu quanhệ) đưa ra 3 dạng chuẩn và sau đóR.F.Boyce và E.F.Codd cải tiến dạng chuẩn 3gọi là dạng chuẩn Boyce-Codd (BC).• Các dạng chuẩn được định nghĩa dựa trênkhái niệm phụ thuộc hàm.6.1. Đặt vấn đề (4)
  • 106. 107• Mục đích của quá trình chuẩn hóa:– Để biểu diễn được mọi quan hệ trong CSDL– Tránh sai sót khi thêm, xóa, sửa dữ liệu– Tránh phải xây dựng lại cấu trúc của cácloại quan hệ khi cần đến các kiểu dữ liệumới6.1. Đặt vấn đề (5)
  • 107. 1086.2. DẠNG CHUẨN 1 (1)Thuộc tính đơn: Giả sử có lược đồ quan hệ Q. Mộtthuộc tính A của Q gọi là thuộc tính đơn nếu mỗimột thể hiện (dòng) thuộc tính A chỉ có một giá trị.• Ví dụ 1: Môn không là thuộc tính đơnCHUYÊN_MÔN (MÃGV, MÔN )
  • 108. 109Định nghĩa:• Một lược đồ quan hệ Q được gọi là ở dạngchuẩn 1 nếu mọi thuộc tính của Q đều là thuộctính đơn.Ví dụ:Quan hệ CHUYÊN_MÔN (MÃGV, MÔN )không đạt dạng chuẩn 1Khắc phục: CHUYÊN_MÔN (MÃGV, MÔN)6.2. DẠNG CHUẨN 1 (2)
  • 109. 110• CHUYÊN_MÔN (MÃGV, MÔN) đạt dạngchuẩn 1:6.2. DẠNG CHUẨN 1 (3)
  • 110. 1116.3. DẠNG CHUẨN 2 (1)• Phụ thuộc đầy đủ:Giả sử có 1 lược đồ quan hệ Q và tập phụthuộc hàm F. Thuộc tính A được gọi là phụthuộc đầy đủ vào 1 tập thuộc tính X nếu:– A ∈ X+F– X  A là phụ thuộc hàm nguyên tố(không tồn tại X’ ⊆ X, mà X’  A)
  • 111. 112Định nghĩa:• Một lược đồ quan hệ Q được gọi là ở dạngchuẩn 2 nếu:– Q ở dạng chuẩn 1.– Mọi thuộc tính không khóa của Q đều phụthuộc đầy đủ vào các khóa của Q.6.3. DẠNG CHUẨN 2 (2)
  • 112. 113Ví dụ: Loại quan hệ ĐẶT_HÀNG (SốĐH, MãHH,NgàyĐH, MãKH, SốLượng)Với tập Pth F = {SốĐH  NgàyĐH, MãKH;SốĐH, MãHH  SốLượng} Không đạt dạng chuẩn 2Khắc phục: Tách thành 2 quan hệ:ĐẶT_HÀNG (SốĐH, NgàyĐH, MãKH)Với F1 = {SốĐH  NgàyĐH, MãKH}CHITIẾT_ĐH (SốĐH, MãHH, SốLượng)Với F2 = {SốĐH, MãHH  SốLượng}6.3. DẠNG CHUẨN 2 (3)
  • 113. 114• Nhận xét:– Nếu lược đồ quan hệ Q chỉ có 1 khóa Kvà K chỉ có 1 thuộc tính thì Q ở dạngchuẩn 2.– Một lược đồ quan hệ Q ở dạng chuẩn 2vẫn có thể chứa đựng sự trùng lắp thôngtin.6.3. DẠNG CHUẨN 2 (4)
  • 114. 1156.4. DẠNG CHUẨN 3 (1)Phụ thuộc bắc cầu:• Thuộc tính A ∈ Q+được gọi là phụ thuộc bắccầu vào tập thuộc tính X nếu ∃Y ∈ Q+:– X  Y ∈ F+và Y  A ∈ F+– Y  X ∉ F+– A ∉ (X ∪ Y)• Khi đó X  A được gọi là phụ thuộc hàm bắccầu.
  • 115. 116 Định nghĩa:Một lược đồ quan hệ Q được gọi là ở dạngchuẩn 3 nếu:– Q ở dạng chuẩn 2.– Mọi thuộc tính không khóa của Q đềukhông phụ thuộc bắc cầu vào một khóanào của Q.6.4. DẠNG CHUẨN 3 (2)
  • 116. 117Ví dụ: Loại quan hệ GIẢNG_DẠY(MãLớp, MãsốGV,TênGV, Địachỉ)Với tập Pth F = {Mãlớp  MãsốGV;MãSốGV  TênGV, Địachỉ} Không đạt dạng chuẩn 3Khắc phục: Tách thành 2 quan hệ:GIẢNG_DẠY(MãLớp, MãsốGV)Với tập Pth F1 = {Mãlớp  MãsốGV}GIÁO_VIÊN(MãsốGV, TênGV, Địachỉ )Với tập Pth F2 = {MãSốGV  TênGV, Địachỉ}6.4. DẠNG CHUẨN 3 (3)
  • 117. 118• Nhận xét:– Chính phụ thuộc hàm bắc cầu là nguyênnhân dẫn đến tình trạng trùng lắp thông tin.– Dạng chuẩn 3 là tiêu chuẩn tối thiểu trongthiết kế cơ sở dữ liệu.6.4. DẠNG CHUẨN 3 (4)
  • 118. 1196.5. DẠNG CHUẨN BOYCE-CODD (1)• Định nghĩa:– Một lược đồ quan hệ Q được gọi là ở dạngchuẩn Boyce-Codd (BC) nếu mọi phụ thuộchàm không hiển nhiên của F đều có vế tráichứa khóa.– Dạng chuẩn lược đồ CSDL là Min (dạngchuẩn Qi), Qi là các lược đồ quan hệ củaCSDL.
  • 119. 120• Nhận xét:– Nếu 1 lược đồ quan hệ Q ở dạng chuẩn BCthì cũng ở dạng chuẩn 3.– Trong 1 lược đồ quan hệ Q ở dạng chuẩnBC, việc kiểm tra phụ thuộc hàm chủ yếu làkiểm tra khóa nội.6.5. DẠNG CHUẨN BOYCE-CODD (2)
  • 120. 121Ví dụ:ĐẶT_HÀNG (SốĐH, NgàyĐH, MãKH)Với F1 = {SốĐH  NgàyĐH, MãKH}CHITIẾT_ĐH (SốĐH, MãHH, SốLượng)Với F2 = {SốĐH, MãHH  SốLượng}=> 2 lđ quan hệ đều đạt dạng chuẩn Boyce-Codd.6.5. DẠNG CHUẨN BOYCE-CODD (3)
  • 121. 122Chương VII. NGÔN NGỮ TÂN TỪ (tự đọc)7.1 Giới thiệu7.2 Cú pháp7.3 Các định nghĩa7.4 Diễn giải của một công thức7.5 Quy tắc lượng giá công thức7.6 Ngôn ngữ tân từ có biến là n bộ7.7 Ngôn ngữ tân từ có biến là miền giá trị
  • 122. 1237.1. Giới thiệu• Ngôn ngữ tân từ là ngôn ngữ truy vấn hình thức doCodd đề nghị (1972-1973) được Lacroit, Proix vàUllman phát triển, cài đặt trong một số ngôn ngữ nhưQBE, ALPHA..• Đặc điểm:– Ngôn ngữ phi thủ tục.– Rút trích cái gì chứ không phải rút trích như thế nào.– Khả năng diễn đạt tương đương với đại số quan hệ.• Có hai loại:– Có biến là n bộ.– Có biến là miền giá trị.
  • 123. 1247.2. Cú pháp• ( ): biểu thức trong ngoặc• Biến: dùng chữ thường ở cuối bộ ký tự: x, y, z, t, s…• Hằng: dùng chữ thường ở đầu bộ ký tự: a, b, c,…• Hàm: là một ánh xạ từ một miền giá trị vào tập hợpgồm 2 giá trị: đúng hoặc sai. Thường dùng chữthường ở giữa bộ ký tự: h, g, f,…• Tân từ: là một biểu thức được xây dựng dựa trênbiểu thức logic. Dùng chữ in hoa ở giữa bộ ký tự P,Q, R…• Các phép toán logic: phủ định (¬), kéo theo (⇒), và(∧), hoặc (∨).• Các lượng từ: với mọi (∀), tồn tại (∃)
  • 124. 1257.3. Các định nghĩa (1)• Định nghĩa 1: Tân từ 1 ngôi– Tân từ 1 ngôi được định nghĩa trên tập X và biến x cógiá trị chạy trên các phần tử của X.– Với mỗi giá trị của x, tân từ P(x) là một mệnh đề logic,tức là nó có giá trị đúng (Đ) hoặc sai (S).– Ví dụ:• P(x), x là biến chạy trên X, là một tân từ• P(gt), gt∈X là một mệnh đề, X = {Nguyen Van A, TranThi B}• Với tân từ NỮ(x) được xác định:"x là người nữ”. Khi đó• Mệnh đề NỮ(Nguyen Van A): cho kết quả Sai• NỮ(Tran Thi B): cho kết quả Đúng
  • 125. 126• Định nghĩa 2: Tân từ n ngôi– Tân từ n ngôi được định nghĩa trên các tập X1, X2, …, Xnvà n biến x1, x2, …, xn lấy giá trị trên các tập Xi tươngứng.– Với mỗi giá trị ai∈Xi, xi=ai.Tân từ n ngôi là một mệnh đề.– Ký hiệu: P(x1, x2, …, xn)– Ví dụ: CHA(x1,x2): "x1 là CHA của x2”– Chú ý:• Các Xi không nhất thiết phải là rời nhau• Với xi=ai, P(x1, x2, …, ai, …, xn) là tân từ n-1 ngôi7.3. Các định nghĩa (2)
  • 126. 127• Định nghĩa 3: Từ– Từ là một hằng hay là một biến– Nếu f(t1, t2, …, tn) là hàm n ngôi thì f là một từ• Định nghĩa 4: Công thức– Công thức nguyên tố: P(t1, t2, …, tn), ti là các từ– Nếu F1, F2 là các công thức thì các biểu thức sau cũnglà các công thức: F1∨F2, F1∧F2, F1 => F2, ¬F1– Nếu F1 là một công thức thì ∀:F1, ∃x:F1 cũng là các côngthức– Nếu F1 là công thức thì (F1) cũng là một công thức7.3. Các định nghĩa (3)
  • 127. 128• Định nghĩa 4:– Công thức đóng là công thức nếu mọi biến đều có kèmvới lượng từ. (khẳng định Đ, S)– Công thức mở là công thức tồn tại 1 biến không kèmlượng từ. (tìm kiếm thông tin)• Ví dụ:– C1: ∀x∃t∀y(P(x,y,a) ⇒ ∃z(Q(y,z,t)∧R(x,t)) là công thứcđóng vì các biến x,y,z,t đều có kèm lượng từ ∀,∃– C2: ∀x ∃t (P(x,y,a) ⇒ ∃z(Q(y,z,t)∧R(x,t)) là công thứcmở vì biến y không có lượng từ ∀,∃7.3. Các định nghĩa (4)
  • 128. 1297.4. Diễn giải của một công thứcGồm 4 phần:• Miền giá trị của các biến của công thức (kýhiệu là tập M)• Sử dụng các hằng, các tân từ (ý nghĩa tântừ, xác định được quan hệ n ngôi)• Ý nghĩa của công thức• Xác định 1 quan hệ n ngôi trên tập Mn
  • 129. 1307.5. Quy tắc lượng giá công thức• Lượng giá tân từ: xét tân từ bậc n: P(x1,x2,…xn) vàliên kết với quan hệ R, n ngôi.P(a1,a2,…,an): Đ ⇔ (a1,a2,…,an) ∈RP(a1,a2,…,an): S ⇔ (a1,a2,…,an) ∉R• Các phép toán ∧,∨,¬,⇒ dùng bảng chân trị• Lượng từ ∃: gọi x là biến. Công thức ∃x F(x) là đúngkhi có ít nhất một ai∈M/F(ai):ĐM={a1,a2,…,an} ≡∨F(ai), ai∈M• Lượng từ ∀: x là biến, ∀x F(x): Đ với ∀ ai∈M/F(ai):ĐM={a1,a2,…,an} ≡∧F(ai), ai∈M
  • 130. 1317.6. Ngôn ngữ tân từ có biến là n bộ7.6.1 Qui tắc7.6.2 Định nghĩa7.6.3 Công thức an toàn7.6.4 Biểu diễn các phép toán
  • 131. 1327.6.1 Quy tắc (1)1. Biến là 1 bộ của quan hệ2. Từ: hằng, biến hoặc biểu thức có dạng s[C], s:biến, C: tập các thuộc tính của quan hệ đượcgọi là từ chiếu.3. Công thức:– Rs (R là quan hệ, s là biến) được gọi là từ. Miềngiá trị sẽ định nghĩa miền biến thiên của s.– t1θ a, t1θ t2 ở đây t1,t2 là các từ chiếu, còn a là mộthằng, θ là toán tử so sánh dược gọi là công thứcnguyên tố.
  • 132. 1334. Một công thức nguyên tố là một côngthức5. F1 và F2 là công thức: F1∨F2, F1∧F2, F1⇒F2,¬F1 là công thức6. F là công thức, s là biến ∃sF, ∀sF là côngthức7. F là công thức, (F) là công thức7.6.1 Quy tắc (2)
  • 133. 1347.6.2 Định nghĩa• Một câu hỏi trong ngôn ngữ tân từ có biếnlà n bộ được biểu diễn như sau:{s | F}. Trong đó s là biến n bộ, F là mộtcông thức, chỉ có một biến tự do là s.• Ví dụ: BIENGIOI(Nuoc,Tinhtp). Phép toánquan hệ BIENGIOI[Nuoc] được chuyểnthành câu hỏi trong ngôn ngữ tân từ cóbiến là bộ:{s[Nuoc] BIENGIOI s}
  • 134. 1357.6.3 Công thức an toànF là công thức an toàn: nếu nó thỏa mãn 3 điều kiệnsau:i) Nếu s là bộ n thỏa: F(s) là đúng thì mọi thành phầncủa s là phần tử của DOM(F):(FS: Đúng) → s ∈ DOM(F)ii) F’ là công thức con của F:∃sF’S,F’S: Đúng → s ∈ DOM(F’)iii)∀sF’S,F’S: Đúng → s ∉ DOM(F’)
  • 135. 1367.6.4 Biểu diễn các phép toán (1)1. Phép hội– Q1, Q2 là các quan hệ n chiều– F1, F2 là các công thức ứng với Q1, Q2– Công thức của Q = Q1 ∪ Q2– Fs = F1s∨ F2s2. Phép trừ– Q1, Q2 là các quan hệ n chiều– F1, F2 là các công thức ứng với Q1, Q2– Công thức của Q = Q1 - Q2– Fs = F1∧¬F2s
  • 136. 137• 3. Phép tíchQ1(x1,…,xm), Q2(y1,…,yn)– F1, F2 là các công thức ứng với Q1, Q2– Công thức của Q = Q1 x Q2Fs: s(x1,…,xm,y1,…,yn)Fs = (∃v) (∃ p) (F1v ∧ F2p ∧s1=v1 ∧ …sm=vm ∧ sm+1=p1 ∧ … sm+n=pn)7.6.4 Biểu diễn các phép toán (2)
  • 137. 138• 4. Phép chiếu– Q1(x1,…,xn), F1 là các công thức ứng với Q1– Công thức của Q= Q1 [xi1, xi2,…,xik]Fs=(∃v) (F1v ∧ s1=vi1 ∧s2=vi2 ∧… sk=vik)• 5. Phép chọn– Q1 là quan hệ n chiều, F1 là công thức ứng với Q1– Công thức Q=Q1:điều kiện ĐK (ĐK:xiθxj hoặc xiθa)Fs=F1s ∧ si θsj hoặc F1s ∧ si θa (1≤i, j ≤ n, i≠j)7.6.4 Biểu diễn các phép toán (3)
  • 138. 1397.7. Ngôn ngữ tân từ có biến là miền giá trị7.7.1 Quy tắc7.7.2 Biểu diễn câu hỏi7.7.3 Công thức an toàn7.7.4 Biểu diễn các phép toán
  • 139. 1407.7.1 Quy tắc1. Từ: là hằng hoặc biến2. Công thức nguyên tố– Q(t1,t2,…,tn): ti là các từ, Q là quan hệ– tiθ tj,tiθ a với ti là từ, a là một hằng, θ là phép toán3. Một công thức nguyên tố là một công thức4. F1 và F2 là công thức: F1∨F2, F1∧F2, F1⇒F2, ¬F1 làcông thức5. F là công thức, t: biến tự do, ∃sF,∀sF cũngcông thức6. F là công thức, (F) là công thức
  • 140. 1417.7.2 Biểu diễn câu hỏi{(x1,x2,…,xn) | F(x1,x2,…,xn)}• xi là các biến tự do của F• Q= {(x1,x2,…,xn) | F(x1,x2,…,xn)} nên (x1,x2,…,xn)∈Q ⇒ F(x1,x2,…,xn): Đúng
  • 141. 1427.7.3 Công thức an toànF là công thức an toàn: nếu nó thỏa mãn 3 điềukiện sau:i. Nếu s là bộ n thỏa: F(s) là đúng thì mọi thànhphần của s là phần tử của DOM(F):(F(x1,…,xn): Đúng) → xi ∈ DOM(F), i=1,…,nii. F’ là công thức con của F:∃xF’: Đúng → x ∈ DOM(F’)∀xF’: Đúng → ∃x ∉ DOM(F’)iii. (F(x1,…,xn): Đúng) → ∃x ∉ DOM(F), i=1,…,n
  • 142. 1437.7.4 Biểu diễn các phép toán (1)1. Phép hội– Q1,Q2 là các quan hệ n chiều– F1, F2 là các công thức ứng với Q1, Q2– Công thức của Q = Q1 ∪ Q2– F = F1∨ F22. Phép trừ– Q1,Q2 là các quan hệ n chiều– F1, F2 là các công thức ứng với Q1, Q2– Công thức của Q = Q1 - Q2– F = F1∧¬F2
  • 143. 1443. Phép tích– Q1(x1,…,xm), Q2(y1,…,yn)– F1, F2 là các công thức ứng với Q1, Q2– Công thức của Q = Q1 x Q2F(x1,…,xm,y1,…,yn) =F1(x1,…,xm) ∧ F2(y1,…,yn)7.7.4 Biểu diễn các phép toán (2)
  • 144. 1454. Phép chiếu– Q1(x1,…,xn), F1(x1,…,xn) là các công thức ứng với Q1– Công thức của Q= Q1 [xi1, xi2,…,xik]Fs(xi1, xi2,…,xik) = (∃xji)(∃xjz)…(∃xjn-k)(F1(x1,…,xn)) trong đó (xi1,xi2,…,xik)∪(xj1, xj2,…,xjn-k)=(x1, x2,…,xn)5. Phép chọn– Q1(x1,…,xn), F1(x1,…,xn) là các công thức ứng với Q1– Công thức Q = Q1: điều kiện ĐK (ĐK:xiθxj hoặc xiθa)F1(x1,…,xn)= F1(x1,…,xn) ∧ xi θxj hoặc= F1(x1,…,xn)∧ xi θa7.7.4 Biểu diễn các phép toán (3)