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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Đạ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
Đạ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
Đạ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
Đạ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
Đạ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
Đạ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
Đạ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
Đạ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
Đạ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
Đạ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
Đạ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
Đạ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
Đạ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
Đạ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
Đạ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
Đạ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
Đạ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
Đạ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
Đạ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
Đạ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
Đạ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
Đạ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
Đạ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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Đ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
Đ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
Đ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
Đ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
Đ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
Đ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
Đ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
Đ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
Đ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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Ý 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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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

13929219602082.ppt

  • 1.
    Tài liệu thamkhả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ÌNHDỮ 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ầnI • 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ố quanhệ - 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ố quanhệ - 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ố quanhệ - 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ố quanhệ - 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ố quanhệ - 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ố quanhệ - 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ố quanhệ - 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ố quanhệ - 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ố quanhệ - 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ố quanhệ - 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ố quanhệ - 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ố quanhệ - 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ố quanhệ - 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ố quanhệ - 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ố quanhệ - Các phép toán Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 33
  • 34.
    Đại số quanhệ - 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ố quanhệ - 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ố quanhệ - 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ố quanhệ - 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ố quanhệ - 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ố quanhệ - 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ố quanhệ - Các phép toán Ths. Lương Thị Ngọc Khánh – Khoa CNTT – TUD – ĐH TĐT 40
  • 41.
    Đại số quanhệ - 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ầnI • 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ầnI (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ầnI (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ươngIII • • • 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ươngIII • • • 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: CREATETABLE <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ầnII • • • 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ậpnhậ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ậpnhậ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ậpnhậ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ậpnhậ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ậpnhậ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ậpnhậ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ậpnhậ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ậpnhậ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ộckhó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ộckhó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ộckiể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ộckhó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ổnghợ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ổnghợ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 • Cholượ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ầnII • • • 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ầnII • • • 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ợpvà 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ợpvà 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ợpvà 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ợpvà 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ợpvà 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ợpvà 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ợpvà 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ợpvà 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ợpvà 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ợpvà 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ầnII • • • 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ạngcâ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ẦNII • 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ẦNII (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ỘCTOÀ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ànvẹ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ànvẹ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ànvẹ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ànvẹ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ànvẹ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ànvẹ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ànvẹ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ànvẹ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ànvẹ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ànvẹ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ànvẹ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ànvẹ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ànvẹ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ànvẹ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ànvẹ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ànvẹ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ànvẹ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ànvẹ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ànvẹ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ànvẹ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ànvẹ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ànvẹ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ànvẹ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ànvẹ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ànvẹ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ẦNIII • 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ỘCHÀ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ầnIV • 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ếtkế 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ếtkế 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ếtkế 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ầnIV • 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ầnIV • 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ĩakhó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ĩakhó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ĩakhó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ậttoá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ậttoá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ậttoá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ậttoá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ậttoá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ậttoá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ậttoá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ậttoá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ậttoá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ậttoá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ầnIV • 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ểucủ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ểucủ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ộchà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ìmphủ 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ìmphủ 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ủaphụ 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ầnIV 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ầnIV (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ÓACƠ 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ầnV • 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ínhlà 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ẩnhó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áclượ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áclượ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áclượ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áclượ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.
  • 260.
    Phân rã cáclượ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áclượ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áclượ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áclượ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áclượ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áclượ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áclượ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ếtnố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ếtnố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

Editor's Notes

  • #99 fafdsfsfda
  • #120 Dfkaksdf skfdsakjfd
  • #242 Đị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.
  • #244 Đị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.
  • #253 Xem cm trang 132/NTDung