TỔNG HỢP 30 ĐỀ THI CHỌN HSG CÁC TRƯỜNG THPT CHUYÊN VÙNG DUYÊN HẢI & ĐỒNG BẰNG...
Bài giảng cơ sở dữ liệu
1. 1
BÀI GIẢNG MÔN HỌC
CƠ SỞ DỮ LIỆU
Biê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. 2
NỘI DUNG:
Chương I. MỘT SỐ KHÁI NIỆM CƠ BẢN
Chươ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 CSDL
Chương V. RÀNG BUỘC TOÀN VẸN
Chương VI. CHUẨN HÓA DỮ LIỆU
Chương VII. NGÔN NGỮ TÂN TỪ (tự đọc)
3. 3
Chương 1. MỘT SỐ KHÁI NIỆM CƠ BẢN
NỘI DUNG:
1.1. CƠ SỞ DỮ LIỆU – HỆ QUẢN TRỊ CSDL
1.2. CÁC MÔ HÌNH DỮ LIỆU
4. 4
1.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ợp
vớ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ản
lý 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. 5
1.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ạng
bả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ởi
cá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ác
bở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. 6
1.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àng
kiể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ất
quán, không trùng lắp thông tin dựa vào việc chuẩn
hóa dữ liệu (Chuẩn hóa dữ liệu, Chương VI).
7. 7
1.1. CƠ SỞ DỮ LIỆU – HỆ QUẢN TRỊ CSDL (4)
Để đảm bảo HTTT cho nhiều người sử dụng
vớ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. 8
1.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ời
là công cụ giao tiếp giữa người sử dụng hoặc các ứng dụng
vớ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ệu
khi 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. 9
1.2. CÁC MÔ HÌNH DỮ LIỆU
1. MÔ HÌNH MẠNG (Network Data Model)
2. MÔ HÌNH PHÂN CẤP (Hierachical Data
Model)
3. MÔ HÌNH QUAN HỆ (Relational Data
Model)
4. MÔ HÌNH THỰC THỂ KẾT HỢP (Entity-
RelationShip)
5. MÔ HÌNH HƯỚNG ĐỐI TƯỢNG (Object
Oriented Model)
10. 10
Chươ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ĨA
2.2. CÁC THAO TÁC CƠ BẢN TRÊN MỘT QUAN HỆ
11. 11
2.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àm
rõ 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ần
Văn A, ngày sinh là 06/10/1990, phái Nam, thuộc lớp
10DTH01.
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. 12
2.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ày
sinh, 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ính
nà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ộc
tính, dòng thứ 2 là các quan hệ với các giá trị tương ứng
với tên gọi các thuộc tính.
13. 13
2.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 quan
hệ)
» 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ên
MãSố Tên Ngàysinh Phái Lớp
01289420429 Nguyễn Việt Ấn 15-12-1992 Nam 10CDH8
01212148901 Nguyễn Trung Tín 02-011992 Nam 10CDH8
01298586716 Nguyễn Hoàng Nam 01-11-1992 Nam 10CDH8
14. 14
2.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 sinh
viên).
=> dữ liệu dạng bảng là loại quan hệ (hay danh sách các
quan 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ớp
01289420429 Nguyễn Việt Ấn 15-12-1992 Nam 10CDH8
01212148901 Nguyễn Trung Tín 02-011992 Nam 10CDH8
01298586716 Nguyễn Hoàng Nam 01-11-1992 Nam 10CDH8
15. 15
2.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ác
giá 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 quan
tươ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 quan
hệ 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. 16
2.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. 17
2.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ân
biệt quan hệ này với quan hệ khác trong cùng một loại
quan hệ.
=> *Hai quan hệ (2 bộ) có cùng giá trị của khóa thì hai quan
hệ đó là một (trùng nhau) nghĩa là các giá trị trên các
thuộ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ện
một lần nghĩa là bộ giá trị của siêu khóa không được trùng
nhau 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. 18
2.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. 19
2.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ản
lý 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ào
khóa mà chỉ có thể là khóa ngoại (hay khóa của một loại quan
hệ 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 quan
hệ là tập các giá trị thể hiện của quan hệ đó trên tập thuộc
tí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ác
giá trị khác phải trùng nhau tức 2 bộ là một )
20. 20
2.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. 21
2.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. 22
2.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> ADD
CONSTRAINT <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. 23
2.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 ADD
NGHENGHIEP CHAR(20)
ALTER TABLE NHANVIEN DROP COLUMN NGHENGHIEP
ALTER TABLE NHANVIEN ALTER COLUMN
NGHENGHIEP CHAR(50)
Ví dụ - Xóa bảng:
DROP TABLE NHANVIEN
Ví dụ - Thay đổi RBTV:
25. 25
2.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. 26
Chươ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ỆT
3.4 CÁC VÍ DỤ MINH HỌA
27. 27
3.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. 28
3.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 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 }
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 quan
hệ 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. 29
3.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đ quan
hệ. 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 ⊆ R
R
30. 30
3.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ống
nhau.
31. 31
3.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 định
nghĩa:
Q = σ (e) (R) đn (i) Q+
= R;
(ii) TQ = { r ∈ TR: e(r) = true }
32. 32
3.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ính
U ={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 θ B
A θ B
A θ B
33. 33
3.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 được
gọ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, B
có 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ân
viên”:
PhongBan(MAPB, TenPB),
NhanVien(MNV,TenNV, DC, ĐT,MAPB)
PhongBan NhanVien [TenPB, TenNV]
34. 34
3.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 (=), A
là khóa chính của R và B là khóa ngoại của S khi tham chiếu
tớ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ằng
nhau, hay phép kết tương đương EQUI-JOIN. ký hiệu phép
toá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. 35
3.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ặc
t = (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. 36
3.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ặc
t = (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. 37
3. 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ên
tập thuộc tính U ∪ V, mà
TQ = { t = (u, v): u ∈ TR ∧ v ∈ TS ∧ u.A = v.B, hoặc
t = (u, Null): u ∈ TR ∧ ∃v ∈ TS s/c u.A = v.B, hoặc
t = (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. 38
3.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] Employee
2) "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. 39
Chương IV. NGÔN NGỮ TRUY VẤN CSDL
NỘI DUNG:
4.1 Câu truy vấn tổng quát
4.2 Truy vấn đơn giản
4.3 Phép kết
4.4 Đặt bí danh, sử dụng *, distinct
4.5 Các toán tử
4.6 Câu truy vấn con (subquery)
4.7 Phép chia
4.8 Hàm tính toán, gom nhóm
40. 40
4.1 Câu truy vấn tổng quát (1)
SELECT [DISTINCT] *|tên_cột | hàm
FROM 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. 41
4.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ác
phép nối luận lý AND, OR, NOT, các phép toán
so sánh, BETWEEN
• FROM
– Liệt kê các quan hệ cần thiết, các phép kết
42. 42
4.2 Truy vấn đơn giản (2)
• Tìm masp, tensp do "Trung Quoc” sản xuất
có giá từ 20000 đến 30000.
Select masp,tensp
From SANPHAM
Where nuocsx = ‘Trung Quoc’
and gia between 20000 and 30000
43. 43
4.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, hoten
from KHACHHANG inner join HOADON on
KHACHHANG.makh=HOADON.makh
where nghd='1/1/2007'
44. 44
4.3 Phép kết (2)
• Ví dụ: In ra danh sách tất cả các hóa đơn và họ tên
của khách hàng mua hóa đơn đó (nếu có).
Select sohd, hoten
From HOADON left join KHACHHANG on
HOADON.makh=KHACHHANG.makh
Select sohd, hoten
From HOADON, KHACHHANG
Where HOADON.makh = KHACHHANG.makh
45. 45
4.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ới
Select 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 Nhanvien
Select NHANVIEN.* from NHANVIEN
• Distinct: trùng chỉ lấy một lần
Select distinct nuocsx from SANPHAM
• Sắp xếp kết quả hiển thị: Order by
Select * from SANPHAM order by nuocsx, gia DESC
46. 46
4.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. 47
4.5 Toán tử truy vấn (2)
• IS NULL, IS NOT NULL
Select sohd from HOADON where makh is Null
Select * from HOADON where makh is Not Null
• Toán tử so sánh, phép toán
Select gia*1.1 as [gia ban] from SANPHAM where
nuocsx <> ’Viet Nam’
Select * from SANPHAM where (gia between 20000 and
30000) OR (nuocsx=‘Viet Nam’)
• Toán tử IN, NOT IN
Select * from SANPHAM where masp NOT IN
(‘BB01’,’BB02’,’BB03’)
48. 48
4.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 SANPHAM
where masp like 'B%01‘
49. 49
4.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 sohd
From CTHD where masp = 'BB01' and sohd IN
(select distinct sohd from CTHD
Where masp = 'BB02')
Select distinct A.sohd
From CTHD A
Where A.masp = 'BB01' and
EXISTS (select * from CTHD B
where B.masp = 'BB02‘ and
A.sohd = B.sohd)
50. 50
4.6 Câu truy vấn con (2)
Not In hoặc Not Exists
Ví 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 sohd
From CTHD
Where masp = 'BB01' and sohd NOT IN (select distinct sohd
from CTHD where masp = 'BB02')
Select distinct A.sohd
From CTHD A
Where A.masp = 'BB01' and
NOT EXITST (select * from CTHD B
where B.masp = 'BB02‘ and
A.sohd=B.sohd)
51. 51
4.7 Phép chia
Sử dụng NOT EXISTS
• Ví dụ: Tìm số hóa đơn đã mua tất cả những sản
phẩm do "Trung Quoc” sản xuất.
• Select sohd from HOADON where not exists
(select * from SANPHAM
where nuocsx = ‘Trung Quoc’ and not exists
(select * from CTHD where
HOADON.sohd = CTHD.sohd and
CTHD.masp = SANPHAM.masp))
52. 52
4.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. 53
NHANVIEN
MANV HOTEN PHAI MANQL PHONG LUONG
NV001 Nguyễn Ngọc Linh Nữ Null NC 2.800.000
NV002 Đinh Bá Tiến Nam NV002 DH 2.000.000
NV003 Nguyễn Văn Mạnh Nam NV001 NC 2.300.000
NV004 Trần Thanh Long Nam NV002 DH 1.800.000
NV005 Nguyễn Thị Hồng Vân Nữ NV001 NC 2.500.000
NV006 Nguyễn Minh Nam NV002 DH 2.000.000
NV007 Hà Duy Lập Nam NV003 NC 1.800.000
NV008 Trần Kim Duyên Nữ NV003 NC 1.800.000
NV009 Nguyễn Kim Anh Nữ NV003 NC 2.000.000
54. 54
Ví dụ
1. Tính lương thấp nhất, cao nhất, trung bình và tổng
lươ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ừng
phòng ban.
55. 55
Ví dụ
1. Tính lương thấp nhất, cao nhất, trung
bình và tổng lương của tất cả các nhân
viên.
SELECT min(luong) as thapnhat,
max(luong) as caonhat,
avg(luong) as trungbinh,
sum(luong) as tongluong
FROM NhanVien
56. 56
Ví dụ
2. Có tất cả bao nhiêu nhân viên?
SELECT count(*) FROM NhanVien
3. Bao nhiêu nhân viên có người quản lý?
SELECT count(*) FROM NhanVien WHERE
manql is not null
SELECT count(Manql) FROM NhanVien
4. Bao nhiêu phòng ban có nhân viên trực thuộc
SELECT count(distinct phong) FROM NhanVien
57. 57
4.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ính
gom nhóm, các thuộc tính này phải xuất hiện trong
mệnh đề SELECT.
58. 58
Ví dụ
5. Tính lương trung bình của các nhân viên
SELECT avg(LUONG) as LUONGTB
FROM NhanVien
6. Tính lương trung bình của các nhân viên theo từng phòng
ban.
SELECT phong, avg(LUONG) as LUONGTB
FROM NhanVien
GROUP BY phong
59. 59
4.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 gom
nhóm, các điều kiện có liên quan đến thuộc tính Group
By.
• Ví dụ: Tìm phòng có số lượng nhân viên "Nữ” trên 5
người.
SELECT Phong
FROM NhanVien
WHERE Phai = ‘Nữ’
GROUP BY Phong
HAVING count(manv) > 5
60. 60
Chương V. RÀNG BUỘC TOÀN VẸN
5.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 RBTV
5.3 Phân loại RBTV
5.3 Bảng tầm ảnh hưởng tổng hợp
61. 61
5.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ều
kiện từ ứng dụng thực tế, các điều kiện này
là bất biến.
⇒Vì thế phải luôn đảm bảo cơ sở dữ liệu
thỏa ràng buộc toàn vẹn sau mỗi thao tác
làm thay đổi tình trạng của cơ sở dữ liệu.
62. 62
5.2 Các đặc trưng của một RBTV
5.2.1 Nội dung
5.2.2 Bối cảnh
5.2.3 Bảng tầm ảnh hưởng
63. 63
5.2.1 Nội dung
• Mô tả chặt chẽ ý nghĩa của ràng buộc toàn
vẹ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ôn
ngữ tân từ, đại số quan hệ, mã giả,…)
– Ngôn ngữ tự nhiên: dễ hiểu nhưng không chặt
chẽ, logic.
– Ngôn ngữ hình thức: chặt chẽ, cô đọng.
64. 64
5.2.2 Bối cảnh
• Là tập các loại quan hệ khi thao tác trên
những loại quan hệ đó có khả năng làm
cho ràng buộc bị vi phạm.
• Đó là những loại quan hệ có thể vi phạm
ràng buộc toàn vẹn khi thực hiện các thao
tác thêm, xóa, sửa.
65. 65
5.2.3 Bảng tầm ảnh hưởng (1)
• Nhằm xác định khi nào tiến hành kiểm tra
ràng buộc toàn vẹn. Thao tác nào thực
hiện có thể làm vi phạm ràng buộc toàn
vẹn.
• Phạm vi ảnh hưởng của một ràng buộc
toàn vẹn được biểu diễn bằng một bảng 2
chiều gọi là Bảng tầm ảnh hưởng.
66. 66
5.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ằm
trong khóa chính của quan hệ) không được phép
sửa giá trị.
• Thao tác thêm và xóa xét trên một bộ của quan
hệ. 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 vi
phạm ràng buộc hay không thì CSDL phải thỏa
ràng buộc toàn vẹn trước.
67. 67
5.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 được
RÀNG BUỘC RI THÊM XÓA SỬA
LOẠI QUAN HỆ 1
LOẠI QUAN HỆ 2
LOẠI QUAN HỆ 3
68. 68
5.3 Phân loại RBTV
5.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. 69
5.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ính
5.3.1.3 RBTV liên bộ
71. 71
5.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ỬA
HỌC VIÊN + - +(gioitinh)
72. 72
5.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ủa
quan hệ
• R2: Ngày bắt đầu (TUNGAY) giảng dạy một môn học cho
mộ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. 73
5.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ửa
HOCVIEN + - + (MAHV)
74. 74
5.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. 75
5.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ính
5.3.2.3 RBTV do thuộc tính tổng hợp
5.3.2.4 RBTV do chu trình trong lược đồ biểu diễn quan hệ
76. 76
5.3.2.1 Ràng buộc tham chiếu (1)
• Là ràng buộc quy định giá trị thuộc tính
trong một bộ của loại quan hệ R (tập thuộc
tính này gọi là khóa ngoại), phải phụ thuộc
và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 trong
quan 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. 77
3.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ửa
KETQUATHI + - + (MAMH)
MONHOC - + + (MAMH)
78. 78
5.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ác
nhau
• R6: Ngày giáo viên giảng dạy một môn học phải lớn hơn hoặc
bằng ngày giáo viên đó vào làm.
– Nội dung: ∀gd ∈ GIANGDAY
Nếu ∃gv ∈ GIAOVIEN: gd.Magv = gv.Magv
thì gv.NGVL ≤ gd.TUNGAY
– Bối cảnh: GIANGDAY, GIAOVIEN
– Bảng tầm ảnh hưởng:
79. 79
5.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ọc
môn học đó.
– Nội dung:
∀kq ∈ KETQUATHI
Nế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
81. 81
5.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ên
nhữ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án
từ 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ác
chi tiết thuộc hóa đơn đó.
82. 82
5.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ác
hó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. 83
5.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. 84
5.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 quan
hệ hoặc thuộc tính. Thuộc tính thuộc một loại quan
hệ được biểu diễn bởi một cung nối giữa nút tròn
to và nút tròn nhỏ.
– Nếu đồ thị biểu diễn xuất hiện một đường khép
kín.
=> Lược đồ CSDL có sự hiện diện của chu trình.
86. 86
5.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 cho
giá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. 87
5.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ông
giả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ông
giảng dạy tất cả những môn thuộc khoa giáo
viên đó phụ trách X = Y
• Ràng buộc 3: có thể phân công giáo viên
giảng dạy bất kỳ môn học nào X ≠ Y
88. 88
5.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ảng
dạy những môn thuộc khoa giáo viên đó
phụ trách X ⊆ Y
89. 89
5.3.3 Phụ thuộc hàm (functional dependency)
5.3.4 Thuật toán tìm khóa
90. 90
5.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ếu
B ⊆ 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àm
Mamh → 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ộc
này có thể biểu diễn bằng phụ thuộc hàm như
sau:
Hocvi, Heso → Mucluong
5.3.3 Phụ thuộc hàm (2)
92. 92
5.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ộc
tính:
1. X0 = X
2. Xi+1 = Xi ∪ A sao cho ∃ (Y Z ) ∈ F,
mà A ∈ Z và Y ∈ Xi
3. Cho đến khi Xi+1 = Xi
(Vì X= X0 ⊆ X1 ⊆ X2 ⊆ … ⊆ U, mà U hữu hạn cho nên
sẽ tồn tại 1 chỉ số i nào đó mà Xi+1 = Xi)
Khi đó X+
F = Xi
93. 93
Ví dụ:
• Cho R(U) với U = ABCDEGH
F = {B A, DA CE, D H,
GH C, AC D}
• Tính X+
F, với:
X = BD
X = AC
5.3.4 Thuật toán tìm khóa (2)
94. 94
5.3.4.2 Định nghĩa khóa:
R là lược đồ quan hệ định nghĩa trên tập các
thuộ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ện
sau đâ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. 95
5.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ất
hiện ở vế phải của bất kỳ Pth không hiển
nhiên nào của F. Tập các thuộc tính nguồn
ký hiệu là N.
A gọi là thuộc tính đích nếu A không phải
thuộ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ào
củ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ồn
và 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 đôi
mộ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ác
thuộ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 2v
tập con của L: L1, L2, … bằng
phươ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 Pth
F = { 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.
100. 100
5.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 m
ràng buộc trên n quan hệ bối cảnh:
102. 102
Chương VI. CHUẨN HÓA DỮ LIỆU
6.1. Đặt vấn đề
6.2. Dạng chuẩn 1
6.3. Dạng chuẩn 2
6.4. Dạng chuẩn 3
6.5. Dạng chuẩn Boyce-Codd
6.6. Chuẩn hóa lược đồ CSDL bằng
phương pháp phân rã
6.7. Ví dụ
103. 103
6.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.
104. 104
Sự 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ệu
6.1. Đặt vấn đề (2)
105. 105
Tổ 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ắp
thông tin.
6.1. Đặt vấn đề (3)
106. 106
• Để có thể đánh giá một cách cụ thể chất
lượng thiết kế của một lược đồ CSDL, lúc đầu
E.F.Codd (tác giả của mô hình dữ liệu quan
hệ) đưa ra 3 dạng chuẩn và sau đó
R.F.Boyce và E.F.Codd cải tiến dạng chuẩn 3
gọi là dạng chuẩn Boyce-Codd (BC).
• Các dạng chuẩn được định nghĩa dựa trên
khái niệm phụ thuộc hàm.
6.1. Đặt vấn đề (4)
107. 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ác
loại quan hệ khi cần đến các kiểu dữ liệu
mới
6.1. Đặt vấn đề (5)
108. 108
6.2. DẠNG CHUẨN 1 (1)
Thuộc tính đơn: Giả sử có lược đồ quan hệ Q. Một
thuộc tính A của Q gọi là thuộc tính đơn nếu mỗi
mộ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 đơn
CHUYÊN_MÔN (MÃGV, MÔN )
109. 109
Định nghĩa:
• Một lược đồ quan hệ Q được gọi là ở dạng
chuẩn 1 nếu mọi thuộc tính của Q đều là thuộc
tính đơn.
Ví dụ:
Quan hệ CHUYÊN_MÔN (MÃGV, MÔN )
không đạt dạng chuẩn 1
Khắc phục: CHUYÊN_MÔN (MÃGV, MÔN)
6.2. DẠNG CHUẨN 1 (2)
111. 111
6.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)
112. 112
Định nghĩa:
• Một lược đồ quan hệ Q được gọi là ở dạng
chuẩ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)
113. 113
Ví 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 2
Khắ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)
114. 114
• Nhận xét:
– Nếu lược đồ quan hệ Q chỉ có 1 khóa K
và K chỉ có 1 thuộc tính thì Q ở dạng
chuẩn 2.
– Một lược đồ quan hệ Q ở dạng chuẩn 2
vẫn có thể chứa đựng sự trùng lắp thông
tin.
6.3. DẠNG CHUẨN 2 (4)
115. 115
6.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ắc
cầ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ắc
cầu.
116. 116
Định nghĩa:
Một lược đồ quan hệ Q được gọi là ở dạng
chuẩn 3 nếu:
– Q ở dạng chuẩn 2.
– Mọi thuộc tính không khóa của Q đều
không phụ thuộc bắc cầu vào một khóa
nào của Q.
6.4. DẠNG CHUẨN 3 (2)
117. 117
Ví 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 3
Khắ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)
118. 118
• Nhận xét:
– Chính phụ thuộc hàm bắc cầu là nguyên
nhâ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 trong
thiết kế cơ sở dữ liệu.
6.4. DẠNG CHUẨN 3 (4)
119. 119
6.5. DẠNG CHUẨN BOYCE-CODD (1)
• Định nghĩa:
– Một lược đồ quan hệ Q được gọi là ở dạng
chuẩn Boyce-Codd (BC) nếu mọi phụ thuộc
hàm không hiển nhiên của F đều có vế trái
chứa khóa.
– Dạng chuẩn lược đồ CSDL là Min (dạng
chuẩn Qi), Qi là các lược đồ quan hệ của
CSDL.
120. 120
• Nhận xét:
– Nếu 1 lược đồ quan hệ Q ở dạng chuẩn BC
thì cũng ở dạng chuẩn 3.
– Trong 1 lược đồ quan hệ Q ở dạng chuẩn
BC, 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)
121. 121
Ví 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)
122. 122
Chương VII. NGÔN NGỮ TÂN TỪ (tự đọc)
7.1 Giới thiệu
7.2 Cú pháp
7.3 Các định nghĩa
7.4 Diễn giải của một công thức
7.5 Quy tắc lượng giá công thức
7.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ị
123. 123
7.1. Giới thiệu
• Ngôn ngữ tân từ là ngôn ngữ truy vấn hình thức do
Codd đề 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ị.
124. 124
7.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ợp
gồ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ên
biể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 (∃)
125. 125
7.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, Tran
Thi 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
126. 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, …, Xn
và 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ôi
7.3. Các định nghĩa (2)
127. 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ũng
là 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ông
thức
– Nếu F1 là công thức thì (F1) cũng là một công thức
7.3. Các định nghĩa (3)
128. 128
• Định nghĩa 4:
– Công thức đóng là công thức nếu mọi biến đều có kèm
vớ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èm
lượ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ức
mở vì biến y không có lượng từ ∀,∃
7.3. Các định nghĩa (4)
129. 129
7.4. Diễn giải của một công thức
Gồ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ân
từ, 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
130. 130
7.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) ∈R
P(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à đúng
khi 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
131. 131
7.6. Ngôn ngữ tân từ có biến là n bộ
7.6.1 Qui tắc
7.6.2 Định nghĩa
7.6.3 Công thức an toàn
7.6.4 Biểu diễn các phép toán
132. 132
7.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ệ được
gọ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ền
giá 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ột
hằng, θ là toán tử so sánh dược gọi là công thức
nguyên tố.
133. 133
4. Một công thức nguyên tố là một công
thức
5. F1 và F2 là công thức: F1∨F2, F1∧F2, F1⇒F2,
¬F1 là công thức
6. F là công thức, s là biến ∃sF, ∀sF là công
thức
7. F là công thức, (F) là công thức
7.6.1 Quy tắc (2)
134. 134
7.6.2 Định nghĩa
• Một câu hỏi trong ngôn ngữ tân từ có biến
là n bộ được biểu diễn như sau:
{s | F}. Trong đó s là biến n bộ, F là một
công thức, chỉ có một biến tự do là s.
• Ví dụ: BIENGIOI(Nuoc,Tinhtp). Phép toán
quan hệ BIENGIOI[Nuoc] được chuyển
thành câu hỏi trong ngôn ngữ tân từ có
biến là bộ:
{s[Nuoc] BIENGIOI s}
135. 135
7.6.3 Công thức an toàn
F là công thức an toàn: nếu nó thỏa mãn 3 điều kiện
sau:
i) Nếu s là bộ n thỏa: F(s) là đúng thì mọi thành phần
củ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’)
136. 136
7.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∨ F2s
2. 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
137. 137
• 3. 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 Q2
Fs: 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)
138. 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)
139. 139
7.7. Ngôn ngữ tân từ có biến là miền giá trị
7.7.1 Quy tắc
7.7.2 Biểu diễn câu hỏi
7.7.3 Công thức an toàn
7.7.4 Biểu diễn các phép toán
140. 140
7.7.1 Quy tắc
1. Từ: là hằng hoặc biến
2. 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án
3. Một công thức nguyên tố là một công thức
4. F1 và F2 là công thức: F1∨F2, F1∧F2, F1⇒F2, ¬F1 là
công thức
5. F là công thức, t: biến tự do, ∃sF,∀sF cũng
công thức
6. F là công thức, (F) là công thức
141. 141
7.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
142. 142
7.7.3 Công thức an toàn
F là công thức an toàn: nếu nó thỏa mãn 3 điều
kiện sau:
i. Nếu s là bộ n thỏa: F(s) là đúng thì mọi thành
phần của s là phần tử của DOM(F):
(F(x1,…,xn): Đúng) → xi ∈ DOM(F), i=1,…,n
ii. 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
143. 143
7.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∨ F2
2. 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
144. 144
3. 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 Q2
F(x1,…,xm,y1,…,yn) =
F1(x1,…,xm) ∧ F2(y1,…,yn)
7.7.4 Biểu diễn các phép toán (2)
145. 145
4. 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 θa
7.7.4 Biểu diễn các phép toán (3)