SlideShare a Scribd company logo
1
Phần 1
Đại số quan hệ
TS. Nguyễn Đình Thuân
Khoa Hệ thống thông tin
Trƣờng ĐH Công nghệ Thông tin
8/2014
2
Giới thiệu
Đại số quan hệ
– Là tập hợp các phép toán cơ sở của mô hình dữ liệu
quan hệ
– Biểu thức dại số quan hệ là sự kết hợp của các
toán hạng và toán tử
– Kết quả của một biểu thức dại số quan hệ là một
thể hiện của quan hệ
Ý nghĩa :
– Là cơ sở hình thức cho các phép toán của mô hình QH
– Là cơ sở để cài đặt và tối ƣu hóa các truy vấn trong các
hệ QT CSDL
3
Giới thiệu
Toán hạng – có thể là :
– Các thể hiện của quan hệ
– Các tập hợp
Toán tử (phép toán) cơ bản bao gồm 8 phép toán :
– Phép toán tập hợp
• Phép hợp, phép giao, phép hiệu, phép tích Descartes
– Phép toán quan hệ
• Phép chọn, phép chiếu, phép chia, phép kết nối
Và một số phép khác:
• Phép gán ()
• Hàm tính toán và gom nhóm: avg(), min(), max(),
sum(), count().
Khái niệm khả hợp: Hai lƣợc đồ quan hệ R1 và R2 là khả
hợp nếu cùng bậc n và DOM(Ai)=DOM(Bi) (1in)
4
Phép hợp (Union)
Hợp của hai quan hệ r và s khả hợp là tập các bộ
thuộc r hoặc s hoặc thuộc cả hai quan hệ
Kí hiệu: r  s
Công thức:
r  s = { t/ t  r hoặc t  s}
sr
5
Phép hợp
Ví dụ :
r ( A B C) s ( A B C) r  s = ( A B C)
___________ __________ ________________
a1 b1 c1 a1 b1 c1 a1 b1 c1
a2 b1 c2 a2 b2 c2 a2 b1 c2
a2 b2 c1 a2 b2 c2
a2 b2 c1
6
Phép giao (Intersection)
Giao của hai quan hệ r và s khả hợp là tập các bộ
thuộc cả hai quan hệ
Kí hiệu : r  s
Công thức :
r  s = { t/ t  r và t  s }
Ví dụ :
Với hai quan hệ ở ví dụ trƣớc, giao của chúng là:
r  s = ( A B C )
a1 b1 c1
sr
7
Phép trừ (Minus)
Hiệu của hai quan hệ r và s khả hợp là tập các bộ
thuộc r nhƣng không thuộc s
Kí hiệu : r - s
Công thức :
r - s = { t/ t  r và t  s }
Ví dụ :
Với hai quan hệ ở ví dụ trƣớc, giao của chúng là:
r - s = ( A B C )
a2 b1 c2
a2 b2 c1
sr
8
Phép tích Descartes (Cartesian Product)
r là quan hệ xác định trên tập thuộc tính {A1, A2, .., An}
s là quan hệ xác định trên tập thuộc tính {B1, B2,..,Bm}
Tích Descartes của r và s là tập ( n + m ) - bộ với n
thành phần đầu là một bộ thuộc r và m thành phần
sau là một bộ thuộc s
Kí hiệu: r x s
Công thức :
r x s = { t: t có dạng (a1, a2, .., an, b1, b2,.., bm)
trong đó (a1, ..,an ) r và (b1,.. ,bm) s }
9
Phép tích Descartes
Ví dụ:
r (A B C) s (D E) r  s = p (A B C D E)
a1 b1 1 1 e1 a1 b1 1 1 e1
a2 b2 2 2 e2 a1 b1 1 2 e2
a3 b3 3 a2 b2 2 1 e1
a2 b2 2 2 e2
a3 b3 3 1 e1
a3 b3 3 2 e2
10
Phép chiếu (Projection)
 Phép chiếu trên một quan hệ thực chất là loại bỏ đi
một số thuộc tính và giữ lại những thuộc tính
còn lại của quan hệ đó.
 Công thức:  < ds_thuộc tính>(< tên quan hệ >)
<ds_thuộc tính>: danh sách các thuộc tính đƣợc lấy
 Kết quả của phép chiếu là tập các thuộc tính trong
danh sách với cùng thứ tự.
 Nếu <ds_thuộc tính> chỉ có những thuộc tính
không khoá thì phép chiếu sẽ bỏ đi những bộ lặp.
 Phép chiếu không có tính giao hoán.
<ds1>( <ds2>(R)) ≠ <ds2>( <ds1>(R))
11
Phép chiếu (Projection)
Ví dụ : Cho quan hệ SV (Mã SV, Họ tên, Ngày sinh, Điểm)
Mã SV Điểm
001 8
002 9
003 7
004 10
Phép chiếu Mã Sv, Điểm (SV):
Mã SV Họ tên Ngày sinh Điểm
001 Trần Anh 23/4/86 8
002 Ngọc Bích 13/4/85 9
003 Xuân Mai 25/3/87 7
004 Hồng Vân 21/6/85 10
12
Phép chọn (Selection)
 Phép chọn dùng để trích chọn một tập con trong một quan hệ,
các bộ đƣợc trích chọn phải thoả mãn diều kiện chọn.
Công thức:  < điều kiện > (< Tên quan hệ >)
 < Tên quan hệ >: chỉ quan hệ đƣợc chọn
 Kết quả thu đƣợc là một quan hệ có danh sách thuộc tính
đƣợc chỉ ra trong Tên quan hệ.
 <Điều kiện>: là các biểu thức điều kiện cần thoả mãn. Các
biểu thức này đƣợc nối với nhau bằng các phép:
(phủ định), ^ (và), v (hoặc).
 Phép chọn có tính giao hoán.
<đk1>(<đk2>(R)) = <đk2>(<đk1>(R))
Ø
13
Phép chọn (Selection)
Ví dụ : Cho quan hệ SV(Mã SV,Họ tên,Ngày sinh,Điểm)
Mã SV Họ tên Ngày sinh Điểm
001 Trần Anh 23/4/86 8
002 Ngọc Bích 13/4/85 9
004 Hồng Vân 21/6/85 10
Điểm>7 (Year(Ngaysinh) >= 1985) (SV)
Mã SV Họ tên Ngày sinh Điểm
001 Trần Anh 23/4/86 8
 (Điểm=8 )(SV)
14
Phép kết nối (Join)
Phép ghép bộ: Giả sử cho hai bộ u = (a1,. . ., an) và
v = (b1,. . ., bm). Phép ghép bộ u với bộ v, ký hiệu
(u,v), đƣợc định nghĩa
(u,v) = (a1,. . ., an, b1,. . ., bm)
Phép kết nối hai quan hệ thực chất là phép ghép các
cặp bộ của hai quan hệ thoả mãn một điều kiện
nào đó trên chúng, điều kiện đó đƣợc gọi là
điều kiện kết nối hay biểu thức kết nối.
Biểu thức kết nối đƣợc định nghĩa là phép hội của
các toán hạng, mỗi toán hạng là một phép so sánh
đơn giản giữa một thuộc tính của quan hệ r và một
thuộc tính của quan hệ s.
15
Phép kết nối θ (Inner join, join)
Định nghĩa: Cho 2 quan hệ r(U) và s(V)
θ là một trong các phép toán số học: , , , , =, 
Phép kết nối giữa quan hệ r đối với thuộc tính A U và
quan hệ s đối với thuộc tính B V, đƣợc ký hiệu r s
r s= {<u,v>| uU  v V u[A] θ v[B] }
Phép kết nối chỉ thực hiện đƣợc khi θ thực hiện đƣợc giữa A
và B.
Nếu không dựa trên phép so sánh θ thì r s là phép tích
Descartes, nếu θ là phép so sánh “=” thì gọi là phép
kết nối bằng.
A θ B
A θ B
A θ B
16
Phép kết nối (Join)
Ví dụ :
r ( A B C ) s( C D E ) r  s = ( A B C C D E)
a1 1 1 1 d1 e1 a1 1 1 1 d1 e1
a2 2 1 2 d2 e2 a2 2 1 1 d1 e1
a1 2 2 3 d3 e3 a2 2 1 2 d2 e2
a1 2 2 1 d1 e1
a1 2 2 2 d2 e2
B≥ C
Kết nối tự nhiên
r(ABC) * s(CDE) = ( A B C D E)
a1 1 1 d1 e1
a2 2 1 d1 e1
a1 2 2 d2 e2
17
Phép kết nối tự nhiên (Natural-Join Operation)
Nếu kết nối θ dựa trên phép so sánh “=“ tại các thuộc tính
cùng tên của 2 quan hệ R và S và 1 trong 2 thuộc tính
đó bị loại bỏ qua phép chiếu thì gọi là phép kết nối tự nhiên,
ký hiệu *.
Ví dụ: Tìm tên các môn học có dạy trong học kỳ 2 10-11.
MAMH
TH409
TH364
TH324
A: mamh STT_KH = 2  NKHOA = ’10-11’(DAY)
MAMH TENMON
TH409 Cơ Sở Dữ Liệu
TH490 Cấu Trúc Dữ Liệu & GT
TH364 Trí Tuệ Nhân Tạo
TH324 Giải Thuật
MAMH TENMON
TH409 Cơ Sở Dữ Liệu
TH364 Trí Tuệ Nhân Tạo
TH324 Giải Thuật
B: mamh, TenMon (MON)
A * B
Những dòng không có ở cả
2 bảng sẽ không có mặt ở
bảng KQ
18
Phép kết nối ngoài (Outer join)
Định nghĩa: Phép toán này cho phép làm việc với thông tin
bị thiếu, tức là vẫn thực hiện phép kết nối tự nhiên trên
các trị trống của thuộc tính dùng để kết nối.
Có 3 loại kết nối mở rộng: trái, phải và hai bên
Cho 2 quan hệ r và s:
– Trái: r s = p  ( r * s )
• p={<u,v>| u  r, u không tƣơng ứng với bộ nào của s, v s,
các giá trị của các thuộc tính trong v đều là null }
– Phải: r s = q  ( r * S )
• q={<u,v>| v  s, v không tƣơng ứng với bộ nào của r, u  u,
các giá trị của các thuộc tính trong u đều là null }
– Hai bên: r s = p  q  ( r * s )
• p và q đƣợc định nghĩa nhƣ trên.
19
Phép kết nối ngoài – ví dụ (Outer join)
MAGV MAMH
1231 TH409
1232 TH409
1232 TH334
1255 TH490
1957 TH333
MAGV HOTEN_GV
1250 Lê Phú Thọ
1255 Nguyễn Khuyến
1256 Đào Anh Vũ
1231 Trần Ngân Bình
1232 Phan Phƣơng Lan
MAGV HOTEN_GV MAGV MAMH
1250 Lê Phú Thọ NULL NULL
1255 Nguyễn Khuyến 1255 TH490
1256 Đào Anh Vũ NULL NULL
1231 Trần Ngân Bình 1231 TH409
1232 Phan Phƣơng Lan 1232 TH409
1232 Phan Phƣơng Lan 1232 TH334
MAGV MAMH MAGV HOTEN_GV
1231 TH409 1231 Trần Ngân Bình
1232 TH409 1232 Phan Phƣơng Lan
1232 TH334 1232 Phan Phƣơng Lan
1255 TH490 1255 Nguyễn Khuyến
1957 TH333 NULL NULL
R: DS GV của Khoa
S: Phân công dạy trong HK này
R S
R S R S ?
20
Phép gán (Assignment)
Dùng để diễn tả câu truy vấn phức tạp.
Ký hiệu: A  B
Ví dụ:
R(HO,TEN,LUONG) HONV,TENNV,LUONG(NHANVIEN)
Kết quả bên phải của phép gán đƣợc gán
cho biến quan hệ nằm bên trái.
21
Định nghĩa:
R và S là hai quan hệ, R+ và S+ lần lƣợt là tập
thuộc tính của R và S. Điều kiện S+ và S+ là
tập con thật sự của R+. Q là kết quả phép chia
giữa R và S, Q+ = R+ - S+
Có thể diễn đạt bằng phép toán đại số nhƣ sau:
Phép chia (Division)
}),(,/{ RstSstSRQ 
21
12
1
))((
)(
TTT
RTST
RT
SR
SR









22
Ví dụ: Phép chia
Mahv
HV01
HV03
KETQUATHI
Mahv Mamh Diem
HV01 CSDL 7.0
HV02 CSDL 8.5
HV01 CTRR 8.5
HV03 CTRR 9.0
HV01 THDC 7.0
HV02 THDC 5.0
HV03 THDC 7.5
HV03 CSDL 6.0
MONHOC
Mamh Tenmh
CSDL Co so du lieu
CTRR Cau truc roi rac
THDC Tin hoc dai cuong
KETQUA
MONHOC
KETQUAMONHOC
][
],[
MamhMONHOCMONHOC
MamhMahvKETQUATHIKETQUA


23
Hàm tính toán và gom nhóm
Hàm tính toán gồm các hàm:
avg(), min(), max(), sum(), count().
Phép toán gom nhóm:
– E là biểu thức đại số quan hệ
– Gi là thuộc tính gom nhóm (rỗng, nếu không gom nhóm)
– Fi là hàm tính toán
– Ai là tên thuộc tính
)()(),...,(),(,...,, 221121
Ennn AFAFAFGGG 
24
Hàm tính toán và gom nhóm
Điểm thi cao nhất, thấp nhất, trung bình của
môn CSDL?
Điểm thi cao nhất, thấp nhất, trung bình của
từng môn?
)()(),min(),max( KETQUATHIDiemavgDiemDiemMamh 
)(CSDL''Mamh)(),min(),max( KETQUATHIDiemagvDiemDiem  
25
Ví dụ 1:
S# SNAME STATUS CITY
S1 Smith 20 London
S2 Jones 10 Paris
S3 Kery 30 Roma
P# PNAME COLOR WEIGHT
P1 Nut Red 12
P2 Bolt Green 17
P3 Screw Blue 17
P4 Screw Red 14
S# P# QTY
S1 P1 300
S1 P2 200
S1 P3 400
S2 P1 300
S2 P2 400
S3 P4 200
S
P
SP
Cho sơ đồ quan hệ sau :
26
S# SNAME STATUS CITY
S1 Smith 20 London
S2 Jones 10 Paris
S3 Kery 30 Roma
P# PNAME COLOR WEIGHT
P1 Nut Red 12
P2 Bolt Green 17
P3 Screw Blue 17
P4 Screw Red 14
S# P# QTY
S1 P1 300
S1 P2 200
S1 P3 400
S2 P1 300
S2 P2 400
S3 P4 200
S
P
SP
Liệt kê danh sách các mặt hàng màu đỏ :
COLOR = „Red‟(P)
Liệt kê P#, PName các mặt hàng màu đỏ và có Weight >15 :
P#,Pname (Color = ‟Red‟ ^ Weight > 15(P))
Liệt kê S# của các hãng cung ứng mặt hàng „P1‟ hoặc „P2‟.
S# (P# = ‟P1‟ v P# = „P2‟(SP))
Thực hiện các câu hỏi sau
bằng ngôn ngữ đại số QH
27
S# SNAME STATUS CITY
S1 Smith 20 London
S2 Jones 10 Paris
S3 Kery 30 Roma
P# PNAME COLOR WEIGHT
P1 Nut Red 12
P2 Bolt Green 17
P3 Screw Blue 17
P4 Screw Red 14
S# P# QTY
S1 P1 300
S1 P2 200
S1 P3 400
S2 P1 300
S2 P2 400
S3 P4 200
S
P
SP
Thực hiện các câu hỏi sau
bằng ngôn ngữ đại số QH
Liệt kê S# của các hãng cung ứng cả hai mặt hàng „P1‟ và P2‟
S# (P# = ‟P1‟ (SP))  s# (P# = ‟P2‟(SP))
Liệt kê S# của các hãng cung ứng ít nhất một Mhàng màu đỏ.
S# (SP * COLOR=‟Red‟(P))
Liệt kê S# của các hãng cung ứng tất cả các mặt hàng.
S#,P# (SP)  P#(P)
28
Ví dụ 2:
GIANGVIEN (MAGV, HOTENGV)
SINHVIEN (MASV, HOTENSV, NAMNHAPHOC)
LOAIDETAI (MALOAI, TENLOAI)
DETAI (MADETAI, TENDETAI, MAGV, MALOAI)
DETAI_SINHVIEN (MADETAI, MASV)
Phát biểu:
•Mỗi một đề tài thuộc duy nhất một loại và có một giảng viên
hướng dẫn.
•Một đề tài có thể có một hoặc nhiều sinh viên cùng tham gia làm.
•Một sinh viên có thể tham gia làm một hay nhiều đề tài.
29
Ví dụ: Dùng Đại số quan hệ
GIANGVIEN (MAGV, HOTENGV)
SINHVIEN (MASV, HOTENSV, NAMNHAPHOC)
LOAIDETAI (MALOAI, TENLOAI)
DETAI (MADETAI, TENDETAI, MAGV, MALOAI)
DETAI_SINHVIEN (MADETAI, MASV)
Câu 1: Liệt kê mã sinh viên có tham gia đề tài với
các mã đề tài là „HTT1‟ và „HTT2‟.
MASV(MADETAI = ‟HTT1‟  MADETAI= ‟HTT2‟ (DETAI_SINHVIEN))
MASV(MADETAI = ‟HTT1‟ (DETAI_SINHVIEN)) 
MASV(MADETAI = ‟HTT2‟ (DETAI_SINHVIEN ))
30
Ví dụ: Dùng Đại số quan hệ
GIANGVIEN (MAGV, HOTENGV)
SINHVIEN (MASV, HOTENSV, NAMNHAPHOC)
LOAIDETAI (MALOAI, TENLOAI)
DETAI (MADETAI, TENDETAI, MAGV, MALOAI)
DETAI_SINHVIEN (MADETAI, MASV)
Câu 1b: Liệt kê mã đề tài được thực hiện bởi sinh viên có
họ tên là “Nguyễn Văn Dũng”
MADETAI(DETAI_SINHVIEN HOTENSV=‟Nguyễn Văn Dũng‟(SINHVIEN))
31
Ví dụ 3:
Lược đồ CSDL quản lý bán hàng gồm có các quan hệ sau:
KHACHHANG (MAKH, HOTEN, DCHI, SODT, NGSINH,
DOANHSO, NGDK)
NHANVIEN (MANV,HOTEN, NGVL, SODT)
SANPHAM (MASP,TENSP, DVT, NUOCSX, GIA)
HOADON (SOHD, NGHD, MAKH, MANV, TRIGIA)
CTHD (SOHD,MASP,SL)
32
Mô tả các câu truy vấn sau bằng ĐSQH
1. In ra danh sách các sản phẩm (MASP,TENSP) do
“Han Quoc” sản xuất có giá từ 30.000 dến 40.000
2. In ra danh sách các khách hàng (MAKH, HOTEN) đã mua
hàng trong ngày 1/1/2014.
3. In ra danh sách các sản phẩm (MASP,TENSP) do “Han Quoc”
sản xuất hoặc các sản phẩm dƣợc bán ra trong ngày
1/1/2014.
4. Tìm các số hóa đơn mua cùng lúc 2 sản phẩm có mã số
“BB01” và “BB02”.
5. In ra danh sách các sản phẩm (MASP,TENSP) do “Han Quoc”
sản xuất không bán dƣợc trong nam 2013.
6. Tìm số hóa đơn đã mua tất cả các sản phẩm do Singapore
sản xuất
33
1. In ra danh sách các sản phẩm (MASP, TENSP) do “Han Quoc”
sản xuất có giá từ 30.000 dến 40.000.
],))[000.40000.30()''((: TENSPMASPGIAHanQuocNUOCSXSANPHAM 
SANPHAMGIAHanQuocNUOCSXTENSPMASP )000.40000.30()''(, 
Hoặc:
KHACHHANG (MAKH, HOTEN, DCHI, SODT, NGSINH, DOANHSO, NGDK)
NHANVIEN (MANV,HOTEN, NGVL, SODT)
SANPHAM (MASP,TENSP, DVT, NUOCSX, GIA)
HOADON (SOHD, NGHD, MAKH, MANV, TRIGIA)
CTHD (SOHD,MASP,SL)
34
2. In ra danh sách các khách hàng (MAKH,
HOTEN) đã mua hàng trong ngày 1/1/2014.
)( )#2014/1/1#(, KHACHHANGHOADON
MAKH
NGHDHOTENMAKH 
KHACHHANG (MAKH, HOTEN, DCHI, SODT, NGSINH, DOANHSO, NGDK)
NHANVIEN (MANV,HOTEN, NGVL, SODT)
SANPHAM (MASP,TENSP, DVT, NUOCSX, GIA)
HOADON (SOHD, NGHD, MAKH, MANV, TRIGIA)
CTHD (SOHD,MASP,SL)
35
3. In ra danh sách MSP, TENSP các sản phẩm do
“Han Quoc” sản xuất hoặc các sản phẩm đƣợc
bán ra trong ngày 1/1/2014.
BAC
SANPHAMCTHDHOADONB
SANPHAMA
MASPSOHD
NGHDTENSPMASP
HanQuocNUOCSXTENSPMASP





)))(((
)(
#2014/1/1#,
'',


KHACHHANG (MAKH, HOTEN, DCHI, SODT, NGSINH, DOANHSO, NGDK)
NHANVIEN (MANV,HOTEN, NGVL, SODT)
SANPHAM (MASP,TENSP, DVT, NUOCSX, GIA)
HOADON (SOHD, NGHD, MAKH, MANV, TRIGIA)
CTHD (SOHD,MASP,SL)
36
4. Tìm các số hóa đơn đã mua cùng lúc các
sản phẩm có mã số “BB01” và “BB02”.
BAC
CTHDB
CTHDA
BBMASPSOHD
BBMASPSOHD





)(
)(
'02'
'01'


KHACHHANG (MAKH, HOTEN, DCHI, SODT, NGSINH, DOANHSO, NGDK)
NHANVIEN (MANV,HOTEN, NGVL, SODT)
SANPHAM (MASP,TENSP, DVT, NUOCSX, GIA)
HOADON (SOHD, NGHD, MAKH, MANV, TRIGIA)
CTHD (SOHD,MASP,SL)
37
5. In ra MASP, TENSP các sản phẩm do „HanQuoc‟
sản xuất không bán đƣợc trong năm 2013.
)(
)(
))((
)(
)2013)(()''(,
'',
CAD
BC
HOADONCTHDSANPHAMB
SANPHAMA
NGHDyearHanQuocNUOCSXTENSPMASP
SOHDMASP
HanQuocNUOCxTENSPMASP









KHACHHANG (MAKH, HOTEN, DCHI, SODT, NGSINH, DOANHSO, NGDK)
NHANVIEN (MANV,HOTEN, NGVL, SODT)
SANPHAM (MASP,TENSP, DVT, NUOCSX, GIA)
HOADON (SOHD, NGHD, MAKH, MANV, TRIGIA)
CTHD (SOHD,MASP,SL)
38
ABC
CTHDSANPHAMB
SANPHAMA
MASP
SingaporeNUOCSXSOHDMASP
SingaporeNUOCSXMASP





)(
)(
'',
''


6. Tìm số hóa đơn đã mua tất cả các
sản phẩm do Singapore sản xuất
KHACHHANG (MAKH, HOTEN, DCHI, SODT, NGSINH, DOANHSO, NGDK)
NHANVIEN (MANV,HOTEN, NGVL, SODT)
SANPHAM (MASP,TENSP, DVT, NUOCSX, GIA)
HOADON (SOHD, NGHD, MAKH, MANV, TRIGIA)
CTHD (SOHD,MASP,SL)
39
Phần 2
Ngôn ngữ truy vấn SQL
40
Giới thiệu
SQL (Structured Query Language)
• Ngôn ngữ cấp cao
• Đƣợc phát triển bởi IBM, năm 1970
• Đƣợc chuẩn hóa bởi ANSI và ISO(SQL-86, SQL-92,
SQL-99)
Bao gồm:
• Ngôn ngữ định nghĩa dữ liệu.
Ngôn ngữ thao tác dữ liệu
• Ngôn ngữ truy vấn dữ liệu
• Ngôn ngữ quản lý dữ liệu
Các hệ quản trị CSDL đều có cách cài đặt ngôn ngữ
khác nhau nhƣng đều dựa trên chuẩn của SQL
•
41
Ngôn ngữ dịnh nghia dữ liệu (DDL)
Dùng để :
Mô tả lƣợc đồ cho các quan hệ
Mô tả miền giá trị cho các thuộc tính
Mô tả các ràng buộc toàn vẹn
Chỉ mục trên mỗi quan hệ
Gồm các lệnh
CREATE/DROP DATABASE
CREATE/DROP/ALTER TABLE
ADD/DROP/CHANGE COLUMN
ADD/DROP CONSTRAINT
42
Các lệnh thao tác với bảng
Tạo bảng :
CREAT TABLE <Tên_bảng>
( <tên_ cột_1> <loại dữ_liệu_1> < kích thƣớc 1>,
………………….
<tên_ cột_n> <loại dữ_liệu_n> < kích thƣớc n>,
[CONSTRAINT <tên ràng buộc toàn vẹn>]|NULL|NOT NULL|
Primary Key (Khoá chính)
[Unique (Khoá )]
[Foreign Key (Khoá _ ngoài) Reference Tên_bảng]
[Check <Điều_ kiện_ràng_buộc>]
);
43
Các lệnh thao tác với bảng
Trong đó :
• Chỉ thị NOT NULL : chỉ rằng cột không nhận giá trị rỗng.
Ngầm định là Null. Thuộc tính khoá ngầm định là Not Null.
• Chỉ thị COSNTRAINT<tên các ràng buộc toàn vẹn>: khai
báo các ràng buộc toàn vẹn của CSDL.
• Chỉ thị Primary Key (Khoá chính): Khai báo khoá chính
của mảng
• Chỉ thị Unique (Khoá) : Khai báo các khoá khác nếu có
• Chỉ thị Foreign Key Khoá_ ngoài Reference Tên_ bảng:
Khai báo các khoá ngoài của bảng
• Chỉ thị Check Điều_kiện_ràng_buộc : Khai báo các ràng
buộc dữ liệu
44
Các lệnh thao tác với bảng
Ví dụ :
Tạo bảng S :
CREATE TABLE S
(S# INTEGER NOT NULL,
SNAME VARCHAR(8) NOT NULL,
STATUS INTEGER NOT NULL,
CITY VARCHAR(30) NOT NULL
CONSTRAINT S_Khoá_chính PRIMARY KEY (S#)
)
45
Các lệnh thao tác với bảng
46
Các lệnh thao tác với bảng
Thêm một cột :
ALTER TABLE <Tên_bảng>
ADD COLUMN <Tên_cột><Kiểu_dữ_liệu >[NOT NULL]
Xoá một cột :
ALTER TABLE <Tên_bảng>
DROP COLUMN <Tên_cột>
Sửa kiểu dữ liệu của một cột đã định nghĩa :
ALTER TABLE <Tên_bảng>
CHANGE COLUMN <Tên_cột> <Kiểu_dữ_liệu_mới >
47
Các lệnh thao tác với bảng
Thêm một ràng buộc :
ALTER TABLE <Tên_bảng>
ADD CONSTRAINT <Tên_ràng_buộc><Kiểu_ràng_buộc >
Xóa một ràng buộc :
ALTER TABLE <Tên_bảng>
DROP CONTRAINT <Tên_ràng_buộc>
Xoá bảng :
DROP TABLE <tên_bảng>
VD : DROP TABLE NHANVIEN
48
Truy vấn dữ liệu
Mệnh đề dạng SELECT . . . FROM . . . WHERE
Cú pháp :
SELECT [DISTINCT] <dsách cột>|*|<biểu thức số học>
FROM <danh sách tên bảng>|<danh sách các view>
[WHERE <biểu thức điều kiện>]
[GROUP BY<dsách tên cột>[HAVING<bthức điều kiện>]]
[ORDER BY<dsách tên cột>|<biểu thức>] [ASC|DESC]
[UNION | INTERSECT | MINUS<Câu truy vấn>]
Kết quả của câu truy vấn là một bảng dữ liệu được kết
xuất từ 1 hoặc nhiều bảng
49
Truy vấn đơn giản trên một bảng
Tìm kiếm không điều kiện
– Cho biết tên của các nhà cung cấp :
• Sname (S)
• Select SNAME From S
– Cho biết tên của các nhà cung cấp (loại bỏ trùng lặp)
dùng từ khóa Distinct trước SNAME :
• Select Distinct SNAME From S
– Liệt kê danh sách các nhà cung cấp :
• Select * From S
– Từ khóa “*” thay thế cho toàn bộ thuộc tính của một quan
hệ
50
Đặt tên trong SQL
51
Phép toán số học
52
Các phép toán logic trong SQL
Dùng trong mệnh đề WHERE và HAVING để xây dựng các
điều kiện chọn
• =,<>, <, >, ≤, ≥
• And, Or, Not
• Between<giá trị đầu> And <giá trị sau>
• In (<Danh sách giá trị>)
Đưa ra danh sách mã của các nhà cung cấp đã cung cấp „P1‟
với số lượng >50
Select S# From SP Where P# = „P1‟ And QTY>50
Ví dụ : Đưa ra danh sách mã của các nhà cung cấp đã cung
cấp 1 trong hai mặt hàng „P1‟ hoặc „P2‟
Select S# From SP Where P# = „P1‟ Or P# = „P2‟
53
Tìm kiếm sử dụng In và Between
Tìm những mặt hàng đã cung cấp với số lƣợng từ
1000 đến 2000
Select Distinct P#
From SP
Where QTY Between 1000 And 2000
Tìm mã số những nhà cung cấp đã cung cấp ít nhất
một trong các mặt hàng P1, P2, P3
Select S#
From SP
Where P# In („P1‟,‟P2‟,‟P3‟)
54
Truy vấn có xử lý xâu kí tự
SQL dùng toán tử LIKE để so sánh xâu.
SQL sử dụng kí tự ' %' để thay thế cho một xâu con,
dấu phân cách '_' để thay thế cho một kí tự.
Ví dụ :
– A%B : xâu kí tự bất kì bắt dầu bằng chữ A và kết thúc
bằng chữ B
– %a : xâu kí tự bất kì có kết thúc là a
– A_B : xâu gồm 3 kí tự, có kí tự thứ hai bất kì
– A_ : xâu gồm 2 kí tự bắt đầu bằng chữ A
Sử dụng trong trƣờng hợp không nhớ rõ giá trị cụ thể
chính xác
55
Truy vấn có xử lý xâu kí tự
Ví dụ:
– Đƣa ra thông tin về hãng cung ứng có tên là bắt
đầu bằng chữ „H‟.
Select * From S
Where SNAME Like „H%‟
– Đƣa ra thông tin về sản phẩm mà tên có chứa từ
„bánh‟
Select * From P
Where PNAME Like „%banh%‟
56
Các ví dụ
57
Ví dụ:
GIANGVIEN (MAGV, HOTENGV)
SINHVIEN (MASV, HOTENSV, NAMNHAPHOC)
LOAIDETAI (MALOAI, TENLOAI)
DETAI (MADETAI, TENDETAI, MAGV, MALOAI)
DETAI_SINHVIEN (MADETAI, MASV)
Phát biểu:
•Mỗi một đề tài thuộc duy nhất một loại và có một giảng viên
hướng dẫn.
•Một đề tài có thể có một hoặc nhiều sinh viên cùng tham gia làm.
•Một sinh viên có thể tham gia làm một hay nhiều đề tài.
58
Ví dụ: Dùng SQL
GIANGVIEN (MAGV, HOTENGV)
SINHVIEN (MASV, HOTENSV, NAMNHAPHOC)
LOAIDETAI (MALOAI, TENLOAI)
DETAI (MADETAI, TENDETAI, MAGV, MALOAI)
DETAI_SINHVIEN (MADETAI, MASV)
Câu 2: Liệt kê danh sách gồm Mã sinh viên, Họ tên sinh viên
mà làm ít nhất 2 loại đề tài khác nhau.
Select SV.MASV, SV.HOTENSV
From (SINHVIEN as SV INNER JOIN DETAI_SINHVIEN DTSV
on SV.MASV = DTSV.MASV)
INNER JOIN DETAI DT on DT.MADT = DTSV.MADT
Group by SV.MASV, SV.HOTENSV
Having count(distinct DT.MALOAI) >= 2
59
Ví dụ 1: Dùng SQL
GIANGVIEN (MAGV, HOTENGV)
SINHVIEN (MASV, HOTENSV, NAMNHAPHOC)
LOAIDETAI (MALOAI, TENLOAI)
DETAI (MADT, TENDT, MAGV, MALOAI)
DETAI_SINHVIEN (MADT, MASV)
Câu 3: Liệt kê danh sách gồm mã đề tài, tên đề tài, họ tên
giảng viên hƣớng dẫn mà chỉ có duy nhất một sinh viên
tham gia
Select DT.MADT, DT.TENDT, GV.HOTENGV
From ( DETAI as DT inner join GIANGVIEN GV on GV.MAGV = DT.MAGV)
Inner join DETAI_SINHVIEN DTSV on DTSV.MADT = DT.MADT
Group by DT.MADT, DT.TENDT, GV.HOTENGV
Having count(DTSV.MASV) = 1
60
Ví dụ 2:
LOAISP (MA_LOAI, MO_TA, HAN_LUU_KHO)
SANPHAM (MA_SAN_PHAM, TEN_SAN_PHAM, MA_LOAI)
PHIEUNHAPXUAT(MA_SO_PHIEU, NGAY_NHAP, LOAI_PHIEU)
CHITIETPHIEU (MA_SO_PHIEU, MA_SAN_PHAM, SO_LUONG)
Ghi chú :
<<HAN_LUU_KHO>>: thời gian tính bằng đơn vị là ngày để cho sản phẩm
thuộc loại đó có thể dự trữ trong kho mà không bị hỏng.
<<LOAI_PHIEU>> trong bảng Phieunhapxuat:
LOAI_PHIEU = 1: nhập LOAI_PHIEU = 0: xuất
Phát biểu :
- Mỗi một sản phẩm thuộc một loại sản phẩm.
- Mỗi lần nhập một sản phẩm về kho hay xuất ra kho đều đƣợc ghi nhận trong
bảng “PHIEUNHAPXUAT” với thuộc tính loại để phân biệt.
- Mỗi lần nhập hay xuất kho những mặt hàng nào thì đƣợc ghi nhận trong
bảng CHITIETPHIEU.
61
Ví dụ 2: Dùng Đại số quan hệ
LOAISP (MA_LOAI, MO_TA, HAN_LUU_KHO)
SANPHAM (MA_SAN_PHAM, TEN_SAN_PHAM, MA_LOAI)
PHIEUNHAPXUAT(MA_SO_PHIEU, NGAY_NHAP, LOAI_PHIEU)
CHITIETPHIEU (MA_SO_PHIEU, MA_SAN_PHAM, SO_LUONG)
Câu 1a: Liệt kê mã số phiếu trong đó có chứa cả hai sản phẩm
với các mã sản phẩm là „MM1‟ và „MM2‟.
MA_SO_PHIEU(MA_SAN_PHAM = ‟MM1‟ (CHITIETPHIEU)) 
MA_SO_PHIEU(MA_SAN_PHAM = ‟MM2‟ (CHITIETPHIEU ))
62
Ví dụ 2: Dùng Đại số quan hệ
LOAISP (MA_LOAI, MO_TA, HAN_LUU_KHO)
SANPHAM (MA_SAN_PHAM, TEN_SAN_PHAM, MA_LOAI)
PHIEUNHAPXUAT(MA_SO_PHIEU, NGAY_NHAP, LOAI_PHIEU)
CHITIETPHIEU (MA_SO_PHIEU, MA_SAN_PHAM, SO_LUONG)
Câu 1b: Liệt kê mã số phiếu trong đó có chứa sản phẩm với tên
sản phẩm là „Bút bi‟
MA_SO_PHIEU (CHITIETPHIEU TEN_SAN_PHAM=‟Bút bi‟(SANPHAM))
63
Ví dụ 2: Dùng SQL
LOAISP (MA_LOAI, MO_TA, HAN_LUU_KHO)
SANPHAM (MA_SAN_PHAM, TEN_SAN_PHAM, MA_LOAI)
PHIEUNHAPXUAT(MA_SO_PHIEU, NGAY_NHAP, LOAI_PHIEU)
CHITIETPHIEU (MA_SO_PHIEU, MA_SAN_PHAM, SO_LUONG)
Câu 2: Liệt kê danh sách gồm mã sản phẩm và tên sản phẩm
mà có khả năng lƣu giữ trong kho hơn 21 ngày.
SELECT SP.MA_SAN_PHAM, SP.TEN_SAN_PHAM
FROM SANPHAM SP INNER JOIN LOAISP L
ON L.MA_LOAI = SP.MA_LOAI
WHERE L.HAN_LUU_KHO > 21
64
Ví dụ 2: Dùng SQL
LOAISP (MA_LOAI, MO_TA, HAN_LUU_KHO)
SANPHAM (MA_SAN_PHAM, TEN_SAN_PHAM, MA_LOAI)
PHIEUNHAPXUAT(MA_SO_PHIEU, NGAY_NHAP, LOAI_PHIEU)
CHITIETPHIEU (MA_SO_PHIEU, MA_SAN_PHAM, SO_LUONG)
Câu 3: Liệt kê danh sách gồm mã sản phẩm, tên sản phẩm mà
không đƣợc nhập trong ngày 25/02/2014
SELECT MA_SAN_PHAM,TEN_SAN_PHAM
FROM SANPHAM
WHERE MA_SAN_PHAM NOT IN (
SELECT CT.MA_SAN_PHAM
FROM CHITIETPHIEU CT INNER JOIN PHIEUNHAPXUAT P ON
P.MA_SO_PHIEU = CT.MA_SO_PHIEU
WHERE P.NGAY_NHAP = „25/02/2014‟AND P.LOAI_PHIEU = 1
)
65
Ví dụ 2: Dùng SQL
LOAISP (MA_LOAI, MO_TA, HAN_LUU_KHO)
SANPHAM (MA_SAN_PHAM, TEN_SAN_PHAM, MA_LOAI)
PHIEUNHAPXUAT(MA_SO_PHIEU, NGAY_NHAP, LOAI_PHIEU)
CHITIETPHIEU (MA_SO_PHIEU, MA_SAN_PHAM, SO_LUONG)
Câu 4: Liệt kê danh sách gồm số phiếu, ngày nhập phiếu mà
phiếu này nhập vào nhiều hơn 2 loại hàng hóa.
SELECT P.MA_SO_PHIEU, P.NGAY_NHAP
FROM (PHIEUNHAPXUAT P INNER JOIN CHITIETPHIEU CT ON
CT.MA_SO_PHIEU=P.MA_SO_PHIEU)
INNER JOIN SANPHAM SP
ON SP.MA_SAN_PHAM= CT.MA_SAN_PHAM
WHERE P.LOAIPHIEU = 1
GROUP BY P.MA_SO_PHIEU,P.NGAY_NHAP
HAVING COUNT(DISTINCT SP.MA_LOAI) > 2
66
Ví dụ 3: Dùng Đại số quan hệ
PHONGHOC (MAPHONG, SONGUOITOIDA)
THIETBI (MATB, TENTB, SOLUONGHIENTAI)
GIANGVIEN (MAGV, TENGV, NAMSINH, PHAI)
KHOAHOC (MAKH, NGAYBATDAU, SONGAY, SONGUOITHGIA, MAPHONG)
SUDUNGTHIETBI (MAKH, MATB, SOLUONGSUDUNG)
GIANGVIENDAY (MAKH, MAGV, NGAYBATDAU, NGAYKETTHUC )
Câu 1a: Liệt kê mã giảng viên đã giảng dạy cả hai khóa
học với các mã khóa học là „MK1‟ và „MK2‟.
MAGV(MAKH = ‟MK1‟ (GIANGVIENDAY))  MAGV(MAKH = ‟MK2‟ (GIANGVIENDAY))
67
Dùng Đại số quan hệ
PHONGHOC (MAPHONG, SONGUOITOIDA)
THIETBI (MATB, TENTB, SOLUONGHIENTAI)
GIANGVIEN (MAGV, TENGV, NAMSINH, PHAI)
KHOAHOC (MAKH, NGAYBATDAU, SONGAY, SONGUOITHGIA, MAPHONG)
SUDUNGTHIETBI (MAKH, MATB, SOLUONGSUDUNG)
GIANGVIENDAY (MAKH, MAGV, NGAYBATDAU, NGAYKETTHUC )
Câu 1b: Liệt kê mã khóa học có sử dụng ít nhất một thiết bị
tên là „Máy chiếu‟
MKH (SUDUNGTHIETBI TENTB=‟Máy chiếu‟(THIETBI))
68
Dùng SQL:
PHONGHOC (MAPHONG, SONGUOITOIDA)
THIETBI (MATB, TENTB, SOLUONGHIENTAI)
GIANGVIEN (MAGV, TENGV, NAMSINH, PHAI)
KHOAHOC (MAKH, NGAYBATDAU, SONGAY, SONGUOITHGIA, MAPHONG)
SUDUNGTHIETBI (MAKH, MATB, SOLUONGSUDUNG)
GIANGVIENDAY (MAKH, MAGV, NGAYBATDAU, NGAYKETTHUC )
Câu 2: Viết câu truy vấn cho ra danh sách gồm mã thiết bị,
tên thiết bị mà chƣa từng đƣợc dùng cho bất cứ khóa học nào
từ đầu năm 2014.
SELECT MATB,TENTB
FROM THIETBI
WHERE MATB NOT IN (
SELECT SD.MATB
FROM KHOAHOC KH INNER JOIN SUDUNGTHIETBI SD
ON SD.MAKH = KH.MAKH
WHERE YEAR(KH.NGAYBATDAU) >= 2014)
69
Dùng SQL
PHONGHOC (MAPHONG, SONGUOITOIDA)
THIETBI (MATB, TENTB, SOLUONGHIENTAI)
GIANGVIEN (MAGV, TENGV, NAMSINH, PHAI)
KHOAHOC (MAKH, NGAYBATDAU, SONGAY, SONGUOITHGIA, MAPHONG)
SUDUNGTHIETBI (MAKH, MATB, SOLUONGSUDUNG)
GIANGVIENDAY (MAKH, MAGV, NGAYBATDAU, NGAYKETTHUC )
Câu 3: Viết câu truy vấn cho ra danh sách gồm mã khóa học, ngày
bắt đầu với điều kiện khóa học này có số ngƣời tham gia lớn hơn 50,
kéo dài hơn 3 ngày, và có hơn 4 loại thiết bị khác nhau đƣợc sử dụng.
SELECT KH.MAKH, KH.NGAYBATDAU
FROM KHOAHOC KH INNER JOIN SUDUNGTHIETBI SD
ON SD.MAKH = KH.MAKH
WHERE KH.SONGUOITHAMGIA > 50 AND KH.SONGAY > 3
GROUP BY KH.MAKH, KH.NGAYBATDAU
HAVING COUNT(SD.MATB) > 4
70
Dùng SQL
PHONGHOC (MAPHONG, SONGUOITOIDA)
THIETBI (MATB, TENTB, SOLUONGHIENTAI)
GIANGVIEN (MAGV, TENGV, NAMSINH, PHAI)
KHOAHOC (MAKH, NGAYBATDAU, SONGAY, SONGUOITHGIA, MAPHONG)
SUDUNGTHIETBI (MAKH, MATB, SOLUONGSUDUNG)
GIANGVIENDAY (MAKH, MAGV, NGAYBATDAU, NGAYKETTHUC )
Câu 4: Viết câu truy vấn cho ra danh sách gồm mã thiết bị, tên
thiết bị mà đƣợc sử dụng cho các khóa học đƣợc diễn ra trong
ngày hôm nay.
SELECT TB.MATB, TB.TENTB
FROM (THIETBI TB INNER JOIN SUDUNGTHIETBI SD
ON SD.MATB = TB.MATB)
INNER JOIN KHOAHOC KH ON KH.MAKH = SD.MAKH
WHERE GETDATE() >= KH.NGAYBATDAU AND GETDATE() <=
(KH.NGAYBATDAU + KH.SONGAY)
71
Tối ưu hóa truy vấn
72
Mục đích của xử lý truy vấn:
• Giảm thiểu thời gian xử lý
• Giảm vùng nhớ trung gian
• Sử dụng ít tài nguyên
Chức năng của xử lý truy vấn:
• Biến đổi một truy vấn phức tạp thành một truy vấn tƣơng
đƣơng đơn giản hơn.
• Phép biến đổi này phải đạt đƣợc cả về tính đúng đắn và
hiệu quả
• Mỗi cách biến đổi dẫn đến việc sử dụng tài nguyên máy
tính khác nhau, nên vấn đề đặt ra là lựa chọn phƣơng án
nào dùng tài nguyên ít nhất.
GIỚI THIỆU VỀ XỬ LÝ TRUY VẤN
73
Nguyên tắc tối ƣu hoá
• Ƣu tiên thực hiện các phép chiếu và chọn, nhằm giới hạn khối
lƣợng dữ liệu trung gian. Giảm chi phí truy nhập bộ nhớ.
• Trƣớc khi phải thực hiện phép tích Đề các, hãy tìm chiến lƣợc
truy nhập tốt nhất vào CSDL. Ví dụ nhƣ sử dụng các phép sắp
xếp, hoặc chọn chỉ số trên thành phần tham gia vào tích Đề
các.
• Thực hiện các phép kết nối cân bằng chi phí sẽ rẻ hơn nhiều so
với chi phí thực hiện phép tích Đề các.
• Nhóm các phép toán chọn và chiếu liên tiếp thành một phép toán
duy nhất.
74
Nguyên tắc tối ƣu hoá (tt)
• Nhóm các phép tích và chiếu liên tiếp thành một phép toán duy
nhất. Trong khi thi thực hiện phép tích có thể giới hạn chi phí
thực hiện bằng phép chiếu.
• Tìm biểu thức chung trong một biểu thức. Nếu kết quả là một
quan hệ không lớn lắm nhƣng tần suất xuất hiện nhiều lần, nên
có biểu thức con chung.
• Đánh giá sơ bộ trƣớc khi thực hiện câu hỏi. Số phép toán thực
hiện, tổng chi phí thực hiện: thời gian, bộ nhớ ...
75
Các cách tối ƣu hóa truy vấn:
1. Cách 1: Tối ƣu về chi phí
- Chi phí thời gian thực hiện truy vấn.
- Chi phí lƣu trữ các kết quả trung gian.
- Chi phi trao đổi giữa bộ nhớ trong và bộ nhớ ngoài.
2. Cách 2: Tối ƣu Heuristic
- Bằng cách biến đổi biểu thức đại số quan hệ.
Lý do: (R) , (R) << R
R1, R2 << R1 R2 , R1X R2
- Biến đổi thứ tự thực hiện các phép toán của biểu thức
ĐSQH sao cho các phép toán 1 ngôi đƣợc thực hiện
trƣớc các phép toán 2 ngôi
76
QUÁ TRÌNH XỬ LÝ TRUY VẤN
Bƣớc 1:
– Duyệt truy vấn để biết truy vấn đƣợc viết bằng ngôn ngữ nào.
– Kiểm tra: Kiểm tra cú pháp của truy vấn xem có hợp lệ hay không.
– Xác nhận tính hợp lệ (các quan hệ, thuộc tính sử dụng trong truy vấn
đã đƣợc khai báo hay chƣa?, sau bƣớc 1 truy vấn sẽ đƣợc biểu
diễn bằng một biểu thức đại số quan hệ)
Bƣớc 2:
– Tối ƣu: Tìm ra phƣơng pháp thực hiện tối ƣu cho truy vấn.
– Sau bƣớc này sẽ cho ra một biểu thức đại số quan hệ với chi phí
thực hiện nhỏ nhất.
Bƣớc 3:
– Tạo mã sẽ tạo ra chƣơng trình bằng ngôn ngữ trong để thực hiện
truy vấn.
– Thực thi chƣơng trình để lấy về kết quả.
77
BIẾN ĐỔI TRUY VẤN SANG BIỂU THỨC ĐSQH
Ví dụ:
SELECT * FROM R WHERE E ↔ E (R)
SELECT * FROM R, S WHERE E ↔ R1 ER2
•Tối ƣu bằng biến đổi biểu thức ĐSQH: Biến đổi thứ
tự thực hiện các phép toán của biểu thức đại số
quan hệ:
- Các phép toán một ngôi đƣợc thực hiện trƣớc các
phép toán hai ngôi
78
Các phép biến đổi tƣơng đƣơng (1-4)
79
Các phép biến đổi tƣơng đƣơng (4-8)
80
Các phép biến đổi tƣơng đƣơng (9-10)
81
Các phép biến đổi tƣơng đƣơng (11)
82
Các phép biến đổi tƣơng đƣơng (12)
83
THUẬT TOÁN TỐI ƯU HÓA CÂY ĐSQH
• Bƣớc 1: Biểu diễn truy vấn dƣới dạng cây với lá là
các quan hệ, đỉnh trong là các phép toán đại số
quan hệ.
• Bƣớc 2: Áp dụng các phép biến đổi tƣơng đƣơng
đẩy các phép toán một ngôi xuống dƣới các phép
toán hai ngôi.
• Bƣớc 3: Thêm vào các phép chiếu để giảm bớt
kích thƣớc của các quan hệ.
84
Ví dụ
Xét 2 LĐQH:
– NhanVien (MaNV, MasoDV, HoTen, NgaySinh,
GioiTinh, Luong)
– DonVi(MaDV, TenDV)
Hãy liệt kê họ tên của các nhân viên nữ ở
đơn vị có tên là “PhongDaoTao”:
85
Trường hợp (a)
86
(b) Hoten, MasoDV(Gioitinh=Nữ(Nhanvien) TenDV=„PhongDaotao‟(Donvi)
MasoDV=MaDv
87
Ví dụ 2:
Xét CSDL gồm các quan hệ sau:
TUYEN (TC#, TTC, DAI)
CAP (MC#, TGC, GIA, #N)
L_DAT (TC#, MC#, SL)
Trong đó:
TC# Mã tuyến cáp
TTC Tên tuyến cáp
DAI Độ dài tuyến cáp
SL Số lượng cáp lắp đặt
Ngữ nghĩa:
Trên một tuyến cáp có nhiều loại cáp khác nhau được lắp đặt.
Một loại cáp có thể được lắp đặt trên nhiều tuyến.
MC# Mã cáp
TGC Tên gọi cáp
GIA Đơn giá loại cáp
#N Mã nước sản xuất cáp
88
Ví dụ: Hãy liệt kê tất cả thông tin về các tuyến cáp có độ dài trên 50
km và lắp đặt các loại cáp do Việt Nam (có mã là VNA) sản xuất.
(a) #TC,TTC,DAI (DAI50  #N=VNA(TUYEN CAP L_DAT))
89
Ví dụ: Hãy liệt kê tất cả thông tin về các tuyến cáp có độ dài trên 50
km và lắp đặt các loại cáp do Việt Nam (có mã là VNA) sản xuất.
(a) #TC,TTC,DAI (DAI50  #N=VNA(TUYEN CAP L_DAT))
(b) #TC,TTC,DAI (DAI50(TUYEN) L_DAT #=VNACAP)
90
THIẾT KẾ
CƠ SỞ DỮ LIỆU QUAN HỆ
Phần 3
91
3.1 Nguyên tắc thiết kế các lƣợc đồ quan hệ
• Khi thiết kế một CSDL quan hệ: cần chọn lƣợc đồ
CSDL phù hợp.
• Trọng tâm của thiết kế các lƣợc đồ CSDL: phụ
thuộc dữ liệu (Data Dependency) tức là các mức
ràng buộc có thể giữa các giá trị hiện hữu của các
lƣợc đồ.
• Các vấn đề cần quan tâm khi thiết kế CSDL:
– Dƣ thừa dữ liệu (Redundancy)
– Không nhất quán (Inconsistency)
– Dị thƣờng khi thêm bộ (Insertion anomalies)
– Dị thƣờng khi xoá bộ (Deletion anomalies)
92
Ví dụ 3.1: Xét lƣợc đồ quan hệ
BANHANG(Ngày, Mã hàng, Tên hàng, Đơn giá, Số lƣợng).
Ngày Mã hàng Tên hàng Đơn giá Số lượng
01/06/2010 M1 Radio 1000 1
01/06/2010 M3 TV 4000 2
01/06/2010 M6 Xe đạp 1000 1
02/06/2010 M2 Máy giặt 3000 2
02/06/2010 M1 Radio 1000 3
03/06/2010 M4 Video 5000 2
01/06/2010 M9 Máy ảnh 2000 1
93
3.2 Phụ thuộc hàm
Định nghĩa 3.1: Xét lƣợc đồ quan hệ gồm n thuộc tính
– R(U), U={A1, A2,…, An}
PTH giữa hai tập thuộc tính X, Y U
– Ký hiệu: X  Y (đọc: X xác định hàm Y hay Y phụ thuộc hàm X)
– r(R),  t1, t2  r nếu t1[X] = t2[X] thì t1[Y] = t2[Y].
– X là vế trái và Y là vế phải của PTH.
Ví dụ 3.2
r(R) A B
1 4
1 5
3 7
r không thỏa A  B, nhƣng thỏa B  A
NHANVIEN_PHONGBAN
TenNV MaNV NgSinh Diachi MaPB TenPB TrPhong
MaNV  MaPB MaPB  {TenPB, TrPhong}MaNV  TenNV
94
Bao đóng của tập PTH
• Định nghĩa 3.2: Trên lƣợc đồ quan hệ R; F là tập các
PTH, cho XY là một PTH.
- Ta nói rằng tập PTH F suy diễn logic X  Y ký hiệu
F╞═ X  Y,
nếu bất kỳ quan hệ r của R thỏa các phụ thuộc trong F thì
cũng thỏa X  Y.
• Định nghĩa 3.3: Bao đóng của tập PTH (Closure of FD) F
là tập các phụ thuộc hàm đƣợc suy diễn logic từ F, ký
hiệu là F+, nghĩa là:
F+ = { X  Y | F ╞═ X  Y}
95
Bao đóng của tập PTH
• F là tập PTH trên R
– F = ( MaNV  TenNV,
MaPB  {TenPB, TrPhong},
MaNV  MaPB).
– rR thỏa F và MaNV  {TenPB, TrPhong} cũng
đúng với r thì MaNV {TenPB, TrPhong} gọi là
đƣợc suy diễn từ F.
• Bao đóng của F, ký hiệu F+, gồm
– F và tất cả các PTH đƣợc suy diễn từ F.
• F gọi là đầy đủ nếu F = F+.
96
Luật suy diễn
• Để xác định đƣợc F+, hay nhận biết X  Y F+ ?
• Luật suy diễn dùng để suy diễn một PTH mới từ một tập
PTH cho trƣớc.
• Hệ tiên đề Armstrong (Armstrong‟s axioms- 1974)
– Phản xạ (Reflexivity): Y  X  X  Y.
– Tăng trƣởng (Augmentation): X  Y XZ  YZ, với XZ=XZ.
– Bắc cầu (Transitivity): X  Y, Y  Z  X  Z.
• Các hệ quả:
– Phân rã (Decomposition rule): X  YZ  X  Y, X  Z.
– Hợp (Union rule): X  Y, X  Z  X  YZ.
– Tựa bắc cầu (Pseudo transitivity rule): XY, WYZ  WX Z.
97
Ví dụ 3.3 : Cho R = ABC và tập phụ thuộc hàm
Chứng minh rằng: F ╞═
Thật vậy từ :
– C A (giả thiết)
– BC  AB (luật tăng trƣởng (1) thêm B)
– AB  C (giả thiết)
– AB  ABC (luật tăng trƣởng (3) thêm AB)
– BC  ABC (luật bắc cầu từ (2) và (4))
Luật suy diễn
 ACCABF  ,
ABCBC 
98
Tính đúng đắn và đầy đủ của hệ tiên đề Armstrong
Bổ đề 3.1: Hệ tiên đề Armstrong là đúng đắn (Soundness)
Bổ đề 3.2: Hệ tiên đề Armstrong là đầy đủ (Completeness)
Ý nghĩa:
- Hệ tiên đề Armstrong là đúng đắn, nghĩa là X  Y đƣợc suy
diễn từ hệ tiên đề Armstrong thì X  Y đúng trong mọi quan
hệ mà mọi phụ thuộc hàm của F đúng.
- Tính đầy đủ của hệ tiên đề Armstrong có nghĩa là: với F là tập
phụ thuộc hàm cho trƣớc. Gọi F+ hệ bao đóng của F, F0 là tập
các phụ thuộc hàm có thể suy dẫn từ hệ hệ tiên đề Armstrong
thì F+ = F0.
Bổ đề 3.3: X  Y đƣợc suy ra từ tập phụ thuộc F đã cho bằng
cách sử dụng hệ tiênđề Armstrong  Y X+.
99
Chứng minh Bổ đề 3.1 (Tính đúng đắn)
Chứng minh: Cần chứng minh 3 tiên đề đúng :
a1) YX  R thì X  Y
r(R) thỏa F:  t, t‟  r : t(X) = t‟(X)  t(Y) = t‟(Y) do Y  X
a2) X  Y, Z R  XZ  YZ
r(R) thỏa F :  t, t‟r theo giả thiết ta có :
t(X) = t‟(X)  t(Y) = t‟(Y) (1)
Nếu t(XZ) = t‟(XZ)  t(X).t(Z) = t‟(X).t‟(Z)
t(Y).t(Z)  t‟(Y).t‟(Z)  t(Y)  t‟(Y) (2)
Từ (1), (2) mâu thuẫn, vậy: t(XZ) = t‟(XZ)  t(YZ) = t‟(YZ)
a3) X  Y, Y  Z thì X Z
r(R) thỏa F: t, t‟  r :
t(X) = t‟(X)  t(Y) = t‟(Y) do XY
t(Y) = t‟(Y)  t(Z) = t‟(Z) do Y Z
Vậy t(X) = t‟(X)  t(Z) = t‟(Z) đpcm.
100
Chứng minh Bổ đề 3.2 (Tính đầy đủ)
Do tính đúng đắn của hệ tiên đề Armstrong nên: F0  F+, cần phải chứng minh:
F+ F0  (XY  F+  X  Y  F0)
 (X  Y  F0  X Y  F+) (Phản chứng)
Chứng minh:
• Giả sử X  Y  F0 (nghĩa là PTH X Y không thể suy dẫn bởi hệ tiên đề
Armstrong từ F).
• Xét quan hệ r gồm hai bộ nhƣ sau :
11 ... 1 11 ... 1
11 ... 1 00 ... 0
Các thuộc tính Các thuộc tính
thuộc X+ còn lại
• Ta thấy tất cả các phụ thuộc hàm trên F đều thỏa r, giả sử ngƣợc lại :
VW  F nhƣng không thỏa r  VX+, W  X+  A  W, A ∩ X+ = .
Do VX+, theo bổ đề 3.3: XVFo và VW, WA, theo luật bắt cầu XA
(Mâu thuẫn)
• Nếu X Y F+ X  Y thỏa r (theo định nghĩa F+ )  Y  X+ (1)
• Mà giả thiết: X Y  F0  Y X+ (2)
• (1) và (2) mâu thuẫn, vậy X Y  F+ (đpcm).
Nói khác hơn: F+ = F0.
101
Bao đóng của tập thuộc tính
Nhận xét:
– Việc xác định F+ của tập PTH F là khó khăn và F+ rất lớn, dù F
có thể rất bé.
– Chẳng hạn: Xét : F = {A B1, A B2, … , A  Bn}
Thì F+ = {A Y| Y {B1B2…Bn}  |F+| = 2n .
– Trong nhiều trƣờng hợp, ta không cần tìm toàn bộ F+, mà chỉ
cần xét xem một phụ thuộc hàm cho trƣớc có thuộc F+ không ?
– Để xét xem X  Y F+, theo bổ đề 3.3, ta cần tìm X+:
nếu Y  X+ thì X  Y  F+
Bao đóng của tập thuộc tính :
– X là tập thuộc tính
– Bao đóng của X đối với F, ký hiệu XF
+
– XF
+ = {A  U | X  A  F+}
Nhận xét: X  Y  F+  Y  X+.
102
Thuật toán tìm X+
Thuật toán 3.1
Nhập: U, F và X  U
Xuất: X+
Phƣơng pháp: Lần lƣợt tính các tập X(0), X(1), ..., X(i),. .
– B1: X(0) = X;
– B2: X(i+1) = X(i)  A, nếu  YZ F, AZ và Y X(i),
Ngƣợc lại qua B3.
– B3: xuất X+ = X(i).
103
Ví dụ tìm XF
+
Cho:
– F = {AB  C, BC  D, D  EG}.
– X = BD.
Tính XF
+:
– X(0) = BD.
– Lặp 1:
• Tìm các PTH có vế trái là tập con của X(0) = BD
Có D  EG, thêm EG vào X(0) ta đƣợc X(1) = BDEG.
– Lặp 2:
• Tìm các PTH có vế trái là tập con của X(1) = BDEG
Không có PTH nào. X(2) = X(1)
– Vậy XF
+ = X(2) = {BDEG}.
104
Chứng minh tính đúng đắn thuật toán 3.1
Ta phải chứng minh: A, A X+  j: A X(j)
“”: Chứng minh bằng qui nạp:
Xét j=0, A X(0): XA F+  A X+
Giả sử đúng đến bƣớc j-1, xét bƣớc thứ j:
A X(j)  YX(j-1): YA F+ (1)
Do YX(j-1)  XY F+ (2)
Từ (1) và (2)  XA F+  A X+
105
Chứng minh tính đúng đắn thuật toán 3.1(tt)
“”: A, A X+  j: A X(j)
Gọi i là giá trị X(i)=X(i+k) k=0,1,2, ...
Xét quan hệ r gồm hai bộ nhƣ sau:
11 ... 1 11 ... 1
11 ... 1 00 ... 0
Các thuộc tính Các thuộc tính
thuộc Xi
+ không thuộc Xi
+
Tƣơng tự: Theo chứng minh 3.2, mọi PTH trên F đều thỏa r.
Thật vậy. nếu UVF nhƣng không thỏa r  UX(i) và VX(i)
 X(i+1)X(i) (Mâu thuẫn)
Do A X+  X  A  F+ (Bổ đề 3)
Và do hệ tiên đề Armstrong là đúng và đầy đủ X  A  F+
 X  A thỏa r  A X(i) Có đpcm.
106
Kiểm tra PTH suy diễn
Cho F = {AB  C, A  D, D  E, AC  B}
Hai PTH ABE và DC có đƣợc suy diễn từ F hay không?
X XF
+
AB ABCDE
D DE
Đƣợc suy diễn từ F
Không đƣợc suy diễn từ F
107
Phủ của các PTH (Covers for functional Dependencies)
Định nghĩa 3.4: Hai tập phụ thuộc hàm F và G trên lƣợc đồ
R là tƣơng đƣơng, ký hiệu F G, nếu F+ = G+. Nếu F G
thì F gọi là phủ G.
• F suy diễn G, ký hiệu F╞═ G nếu XYG thì F╞═ XY
Định lý 3.1: Cho hai tập phụ thuộc hàm F và G trên lƣợc đồ
R, FG khi và chỉ khi F╞═ G và G╞═ F.
Chứng minh: Trƣớc hết ta dễ thấy: F+ = (F+)+
Mặt khác: F  G  ( F╞═ G và G╞═ F )
F ╞═G  G F+ G+  (F+) + = F+ (1)
G╞═ F  F G+  F+  (G+)+ = G+ (2)
(1), (2)  (G+  F+)  (F+  G+)  F+ = G+
Đpcm.
108
Thuật toán 3.2: Kiểm tra tính tƣơng đƣơng giữa F và G
Vào : F = {LiRi / i = 1..n}; G = {Lj‟Rj‟ / j = 1..n}
Ra : F+ = G+ ?
Phƣơng pháp:
– i = 1..n, lần lƣợt kiểm tra LiRi  G+ ? (tính (Li)+ đối với
tập phụ thuộc hàm G, nếu Ri  (Li)+ thì LiRi  G+
– Nếu mọi phụ thuộc hàm trong F đều thuộc G thì F+  G+
– Tƣơng tự nếu mọi phụ thuộc hàm trong G đều thuộc F+ thì
G+  F+
Nếu cả hai điều trên đều đúng thì F+ = G+
Các tập PTH tƣơng đƣơng
109
Tập PTH tối thiểu
• Tập PTH F là tối thiểu nếu thỏa các điều kiện sau
– Mọi PTH của F chỉ có một thuộc tính ở vế phải.
– Không thể thay X  A thuộc F bằng Y  A với Y  X
mà tập mới tƣơng đƣơng với F.
– Nếu bỏ đi một PTH bất kỳ trong F thì tập PTH còn lại
không tƣơng đƣơng với F.
• Phủ tối thiểu (Minimal Covers) của tập PTH E là
tập PTH tối thiểu F tƣơng đƣơng với E.
• Nhận xét
– Mọi tập PTH có ít nhất một phủ tối thiểu.
110
Thuật toán tìm phủ tối thiểu
Thuật toán 3.3:
Nhập: tập PTH E.
Xuất: phủ tối thiểu F của E.
Phƣơng pháp :
– B1: F := .
– B2: (Tách các PTH để có vế phải là 1 thuộc tính)
Với mọi X  Y  E, Y = {A1, …, Ak}, Ai  U
F := F  {X  {Ai}}.
– B3: (Loại bỏ các thuộc tính dƣ thừa vế trái)
Với mỗi X  {A}  F, X = {B1, …, Bl}, Bi  U
Với mỗi Bi, nếu A  (X - {Bi})F
+ thì
F := (F - {X  {A}})  {(X - {B})  {A}}.
– B4: (Loại bỏ các PTH dƣ thừa)
Với mỗi X  {A}  F
G := F - {X  {A}}
Nếu A  XG
+ thì F := F - {X  {A}}.
111
Ví dụ tìm phủ tối thiểu
E = {ABC, AB, BC, ABC}
– B1: F = .
– B2: F = {A  B, A  C, B  C, AB  C}.
– B3: Xét AB  C
(B)F
+ = BC
F = {A  B, A  C, B  C}.
– B4: A  C thừa.
F = {A  B, B  C}.
Tìm phủ tối thiểu của
112
Siêu khóa và khóa
Cho R(U)
– S  U là siêu khóa nếu
r  R, t1, t2  r, t1  t2 thì t1[S]  t2[S].
– K  U là khóa nếu K là siêu khóa nhỏ nhất. A  K
đƣợc gọi là thuộc tính khóa.
Nhận xét
– S xác định hàm tất cả các thuộc tính của R: (S)+=R
– R có thể có nhiều khóa.
113
Xác định khóa của lƣợc đồ
Thuật toán 3.4: Tìm một khóa tối thiểu của quan hệ
Nhập: tập PTH F xác định trên lƣợc đồ R(U)
U = {A1, …, An};
Xuất: khóa K của R.
Phƣơng pháp :
– Bƣớc 0 : Đặt K0 = U
– Bƣớc i : Tính
Ki –1  {Ai} nếu Ki-1  {Ai}  U
Ki =
Ki-1 nếu ngƣợc lại
– Đặt K = Kn
114
Ví dụ 3.4: Tìm khóa của lƣợc đồ
Cho R(U), U = {A, B, C, D, E, F, G}.
– F = {B  A, D  C, D  BE, DF  G}.
Tìm khóa của R
– B1:
K0 = ABCDEFG.
– B2:
• Lặp 1: (BCDEFG)F
+ = BCDEFGA  K1 = BCDEFG.
• Lặp 2: (CDEFG)F
+ = CDEFGBA  K2 = CDEFG.
• Lặp 3: (DEFG)F
+ = DEFGCBA  K3 = DEFG.
• Lặp 4: (EFG)F
+ = EFG.  K4 = DEFG.
• Lặp 5: (DFG)F
+ = DFGCBEA  K5 = DFG.
• Lặp 6: (DG)F
+ = DGCBEA.  K6 = DFG.
• Lặp 7: (DF)F
+ = DFCBEAG  K7 = DF.
– B3:
Khóa là K = DF.
115
Xác định tất cả khóa của lƣợc đồ
Nhập: tập PTH F xác định trên lƣợc đồ R(U).
Xuất: tất cả khóa của R.
Thuật toán 3.5
– B1:
Xây dựng 2n tập con của U = {A1, …, An};
S = { };
– B2:
Với mỗi tập con X  U
Nếu U  XF
+ thì S = S  {X}.
– B3:
X, Y  S, nếu X  Y thì S = S - {Y}.
– B4:
S là tập các khóa của R.
116
Ví dụ tìm tất cả khóa của lƣợc đồ
Cho R(U), U = {A, B, C, D, E, F}.
– F = {AE  C, CF  A, BD  F, AF  E}.
Tìm tất cả khóa của R
– Tập siêu khóa
S = {ABD, BCD, ABCD, ABDE, BCDE, ABCDE, ABDF, BCDF, ABCDF,
ABDEF, BCDEF, ABCDEF}.
ABD
BCD
ABCD
ABDE
BCDE
ABCDE
ABDF
BCDF
ABCDF
ABDEF
BCDEF
ABCDEF
117
3.3 Chuẩn hóa lƣợc đồ CSDL
Các dạng chuẩn
– Dạng 1 (1 Normal Form - 1NF).
– Dạng 2 (2 Normal Form - 2NF).
– Dạng 3 (3 Normal Form - 3NF).
– Dạng Boyce - Codd (Boyce - Codd Normal
Form - BCNF).
118
Dạng chuẩn 1
Định nghĩa 3.5: Quan hệ r(U) đƣợc gọi thuộc dạng chuẩn 1 nếu
và chỉ nếu mọi thuộc tính của r là thuộc tính đơn.
Go Vap9876543214Hanh chinh
Go Vap,
Thu Duc
3334455555Kinh doanh
CacTrusoTrPhgMaPTenP
PHONG
PHONG
TenP MaP TrPhg Truso
Kinh doanh 5 333445555 Go Vap
Kinh doanh 5 333445555 Thu Duc
Hanh chinh 4 987654321 Go Vap
Không thuộc
dạng chuẩn 1
Thuộc dạng chuẩn 1
Nhận xét: Dạng chuẩn 1 có thể dẫn đến sự trùng lặp dữ
liệu. Do đó gây ra các dị thƣờng về cập nhật dữ liệu
119
Dạng chuẩn 2 theo khóa chính (1)
Định nghĩa 3.6: Quan hệ r(U) đƣợc gọi là thuộc dạng chuẩn 2 nếu mọi
thuộc tính không khóa của r phụ thuộc đầy đủ vào khóa chính của r.
r(U), K  U là khóa chính của r
– A  U là thuộc tính không khóa nếu A K.
– X  Y là PTH đầy đủ nếu A  X thì (X - {A})  Y không đúng trên r.
Ngƣợc lại X  Y là PTH bộ phận.
Ví dụ
FD2
FD1
DiadiemTenDATenNVSoGioMaDAMaNV
FD3
NVIEN_DUAN
Thuộc tính không khóa
PTH đầy đủ
PTH bộ phận
120
Dạng chuẩn 2 theo khóa chính (2)
FD2
FD1
DiadiemTenDATenNVSoGioMaDAMaNV
FD3
NVIEN_DUAN
NV_DA1
MaNV MaDA SoGio
FD1
NV_DA2
MaNV TenNV
FD2
NV_DA3
MaDA TenDA Diadiem
FD3
3 lƣợc đồ NV_DA1, NV_DA2, NV_DA3 thuộc dạng chuẩn 2
121
Dạng chuẩn 2 theo khóa chính (3)
Nhận xét
– Mọi lƣợc đồ quan hệ thuộc dạng chuẩn 2 cũng thuộc
dạng chuẩn 1.
– Còn xuất hiện sự trùng lặp dữ liệu. Do đó gây ra các
dị thƣờng về cập nhật dữ liệu.
NHANVIEN_PHONGBAN
TenNV MaNV NgSinh DChi MaPB TenPB TrPhong
FD1
FD2
Thuộc dạng
chuẩn 2
122
Dạng chuẩn 3 theo khóa chính (1)
Định nghĩa 3.7: Quan hệ r(U) đƣợc gọi là thuộc dạng chuẩn 3 nếu
– r thuộc dạng chuẩn 2.
– Mọi thuộc tính không khóa của r không phụ thuộc bắc cầu vào khóa
chính của r.
Cho r(U)
– X  Y là PTH bắt cầu nếu Z  U, Z không là khóa và cũng không là tập
con của khóa của r mà X  Z và Z  Y đúng trên r.
Ví dụ
FD2
FD3
FD1
TenPBMaPB TrPhongDChiNgSinhMaNVTenNV
NHANVIEN_PHONGBAN
PTH bắt cầu
123
Dạng chuẩn 3 theo khóa chính (2)
Nhận xét
– Mọi lƣợc đồ quan hệ thuộc dạng chuẩn 3 cũng thuộc
dạng chuẩn 2.
– PTH bắt cầu là nguyên nhân dẫn đến trùng lặp dữ liệu.
– Dạng chuẩn 3 là dạng chuẩn tối thiểu trong thiết kế
CSDL.
NV_PB1
TenNV MaNV NgSinh Diachi MaPB
NV_PB2
MaPB TenPB TrPhg
Thuộc dạng
chuẩn 3
124
Dạng chuẩn 2 tổng quát
Định nghĩa 3.8: Lƣợc đồ quan hệ R đƣợc gọi là thuộc dạng
chuẩn 2 nếu mọi thuộc tính không khóa của R phụ thuộc
đầy đủ vào các khóa của R.
Cho R(ABCDEF) có 3 khóa là A, BC và CD.
FD3
FD2
FD1
FEDCBA
FD4
R
FD5
Lƣợc đồ R không thuộc dạng chuẩn 2
125
Dạng chuẩn 3 tổng quát
Định nghĩa 3.9: Lƣợc đồ quan hệ R đƣợc gọi là thuộc dạng
chuẩn 3 nếu PTH X  A đúng trên R thì
– X là siêu khóa của R, hoặc
– A là thuộc tính khóa của R.
R1(ABCDE) có 2 khóa là A và BC.
FD2
FD1
EDCBA
FD4
R1
Lƣợc đồ bên
thuộc dạng
chuẩn 2,
nhƣng không
thuộc dạng
chuẩn 3
126
Dạng chuẩn Boyce - Codd (1)
Lƣợc đồ quan hệ R đƣợc gọi là thuộc dạng chuẩn BC nếu
PTH không hiển nhiên X  Y đúng trên R thì X là
siêu khóa của R.
R11(ABCD)
FD2
FD5
FD1
DCBA
R11
Lƣợc đồ R11 thuộc dạng chuẩn 3, nhƣng không thuộc dạng chuẩn BC
127
Dạng chuẩn Boyce - Codd (2)
1ba2
2ab3
2bb4
1aa1
DCBA
R11
R111
A C D
1 a 1
2 b 1
3 a 2
4 b 2
R112
D B
1 a
2 b
Trùng lặp dữ liệu
128
Dạng chuẩn Boyce - Codd (3)
Nhận xét
– Mọi lƣợc đồ quan hệ thuộc dạng chuẩn BC cũng thuộc
dạng chuẩn 3.
– Dạng chuẩn BC đơn giản và chặt chẽ hơn dạng chuẩn 3.
– Mục tiêu của quá trình chuẩn hóa là đƣa các lƣợc đồ
quan hệ về dạng chuẩn 3 hoặc BC.
R111
A C D
FD1
R112
B D
FD5
2 lƣợc đồ trên thuộc dạng chuẩn BC
129
Thiết kế Top-Down
Các bƣớc thực hiện
– Thiết kế lƣợc đồ mức khái niệm với mô hình dữ liệu
cấp cao (EER).
– Chuyển lƣợc đồ khái niệm thành tập hợp các quan hệ.
– Với mỗi quan hệ xác định tập PTH.
– Áp dụng các quy tắc chuẩn hóa để loại bỏ các PTH bộ
phận và bắt cầu trong các quan hệ.
130
3.4 Phân rã lƣợc đồ quan hệ
Lƣợc đồ quan hệ R(A1, …, An)
– Tập hợp tất cả các thuộc tính của các thực thể.
Xác định tập PTH F trên R.
Phân rã
– Sử dụng các thuật toán chuẩn hóa để tách R thành tập
các lƣợc đồ D = {R1, …, Rm}.
Yêu cầu
– Bảo toàn thuộc tính.
– Các lƣợc đồ Ri phải ở dạng chuẩn 3 hoặc Boyce-Codd.
131
Phân rã bảo toàn PTH
Tính chất bảo toàn PTH
– Xét lƣợc đồ R và tập PTH F. Giả sử R đƣợc phân rã
thành D = {R1, …, Rm}.
• Đặt Ri(F) = {X  Y  F+ : X  Y  Ri}.
• D đƣợc gọi là phân rã bảo toàn phụ thuộc hàm đối với F nếu
(R1(F)  …  Rm(F))+ = F+.
Ví dụ
FD2
FD5
FD1
DCBA
R11
R111
A C D
FD1
R112
B D
FD5
132
Thuật toán phân rã lƣợc đồ DC3 và bảo toàn
PTH
Thuật toán 3.6
Nhập: R(U), U = {A1, …, An} và tập PTH F.
Xuất: D = {R1, …, Rm}, Ri ở dạng chuẩn 3.
– B1: Tìm phủ tối thiểu G của F.
– B2: Với mỗi X  Aj  G, xây dựng lƣợc đồ Ri(Ui),
Ui = X  {Aj}. Khóa chính của Ri là X.
– B3: Giả sử xong B2 ta có các lƣợc đồ R1, …, Rm.
Nếu U1  …  Um  U thì xây dựng thêm lƣợc đồ
Rm+1(Um+1), Um+1 = U - (U1  …  Um).
Khóa của Rm+1 là Um+1.
– B4: Xuất các lƣợc đồ Ri.
133
Ví dụ phân rã bảo toàn PTH (1)
Cho
– R(ABCDEFG)
– F = {B  A, D  C, D  EB, DF  G}
Tách về dạng chuẩn 3, bảo toàn PTH
– B1:
• Phủ tối thiểu G = {B  A, D  C, D  B, D  E, DF  G}.
– B2:
– B3:
• Xuất D = {R1, R2, R3}.
R(ABCDEFG)
R1(BA) R(DC) R3(DFG)R(DB) R(DE)
R2(DBCE)
134
Ví dụ phân rã bảo toàn PTH (2)
Cho
– R(ABCDEFGHI)
– F = {B  A, D  C, D  EB, DF  G}
Tách về dạng chuẩn 3, bảo toàn PTH
– B1:
• Phủ tối thiểu G = {B  A, D  C, D  B, D  E, DF  G}.
– B2:
– B3:
• Vì U1  U2  U3 = {ABCDEFG} nên đặt R4(HI).
– B4:
• D = {R1, R2, R3, R4}.
R(ABCDEFG)
R1(BA) R3(DFG)R2(DBCE)
135
Phân rã không mất thông tin (1)
Tính chất không mất thông tin
– Xét lƣợc đồ R và tập PTH F. Giả sử R đƣợc phân rã
thành D = {R1, …, Rm}.
• D đƣợc gọi là phân rã không mất thông tin đối với F nếu với
mọi trạng thái r  R thì (R1(r) * … * Rm(r)) = r.
Định lý 3.3
– Phân rã D = {R1(U1), R2(U2)} của R(U) không mất
thông tin đối với tập PTH F nếu và chỉ nếu:
• (U1  U2)  (U1 – U2)  F+, hoặc
• (U1  U2)  (U2 – U1)  F+.
136
Q là một lƣợc đồ quan hệ, F là tập phụ
thuộc hàm. Q đƣợc tách thành các
lƣợc đồ con Q1, Q2, Q3...,Qn theo
từng bƣớc mà ở mỗi bƣớc một lƣợc đồ
đƣợc tách thành hai lƣợc đồ con và
thỏa mãn điều kiện của tính chất bảo
toàn thông tin thì với r là quan hệ bất kỳ
của Q ta luôn có:
r = r.Q1|><|r.Q2... |><|r.Qn
Q
Q1 Q12
Q21 Q2
Q3 Q4
S A I P
SA a1 a2 b1 b2
SIP a1 b3 a3 a4
S A I P
SA a1 a2 b1 b2
SIP a1 a2 a3 a4
Vôùi Q(S,A,I,P) Q1(SA) Q2(SIP) F = {S  A,SI  P}
Hoûi Q ñöôïc taùch thaønh Q1 vaø Q2 coù baûo toaøn thoâng tin khoâng?
Böôùc 1: laäp baûng 3 doøng 5 coät Böôùc 2:laøm baèng theo phuï thuoäc haøm
Heùp taùch baûo toaøn thoâng tin
137
Ví dụ: Cho Q(A,B,C,D,E,G,H,I)
F={ACB; BI ACD; ABCD; HI; ACEBCG; CGAE}
Tìm một khóa của Q.
Thuật toán tìm một khóa của một lƣợc đồ quan hệ Q
Bƣớc 1: K = Q+
Bƣớc 2: A là một thuộc tính của K, đặt K‟=K  A. Nếu K‟+=Q+ thì gán
K = K' thực hiện lại bƣớc 2
Ví dụ: Tìm tất cả các khóa của lƣợc đồ quan hệ và tập phụ thuộc hàm nhƣ
sau: Q(C,S,Z); F={CSZ; ZC}
Xi Xi
+
Sieâu khoùa khoùa
C C
S S
CS CSZ CS CS
Z ZC
CZ CZ
SZ SZC SZ SZ
CSZ CSZ CSZ
138
Hệ quả: Nếu K là khóa của Q thì TN  K và TD  K = 
Chứng minh TN  K
Theo hệ quả 2 của thuật toán tìm bao đóng ta có:
K+  KTDTG
Ta chứng minh A  TN  A  K. Thật vậy:
Nếu AK  K+KTDTG  Q+-A  K không là khóa  mâu
thuẫn
Chứng minh TD  K = 
Giả sử có thuộc tính A  TD  K ta sẽ dẫn đến điều mâu thuẫn.
Thật vậy:
Theo hệ quả 1 của thuật toán tìm bao đóng thì K+=(K-A)+  A
A  TD  có X là vế trái của một phụ thuộc hàm trong F sao cho
XA (1) và AX  XK+=(K-A)+ A vì AX  X(K-A)+ 
(K-A) X (2)
(1) và (2) cho (K-A)A  A(K-A)+  (K-A)+ A = (K-A)+  K+
=(K-A)+ mâu thuẫn với điều K là khóa.
139
Ví dụ: Tìm tất cả các khóa của lƣợc đồ quan hệ và tập
phụ thuộc hàm nhƣ sau:
Q(C,S,Z); F={CSZ; ZC}
Giải:
TN = {S}; TG = {C,Z}
Gọi Xi là các tập con của tập TG:
Xi (TN  Xi) (TN Xi)+
Sieâu khoùa khoùa
 S S
C SC Q+ SC SC
Z SZ Q+ SZ SZ
CZ SCZ Q+ SCZ
Tập thuộc tính nguồn
(TN) chứa tất cả các
thuộc tính có xuất hiện ở
vế trái và không xuất hiện
ở vế phải của các phụ
thuộc hàm và các thuộc
tính không xuất hiện ở cả
vế trái lẫn vế phải của các
phụ thuộc hàm.
Tập thuộc tính trung gian
(TG) chứa tất cả các
thuộc tính xuất hiện ở cả
vế trái lẫn vế phải của
các phụ thuộc hàm.
Tập đích (TD) gồm
những thuộc tính chỉ xuất
hiện ở vế phải
140
Thuật toán phân rã DC3, BTTT, BTPT
141
Định lý: Thuật toán trên tạo ra một phân rã ở dạng chuẩn 3
vừa bảo toàn thông tin vừa bảo toàn phụ thuộc hàm
Chứng minh:
1. Chứng minh mỗi lƣợc đồ con ở dạng chuẩn 3. Thật vậy:
Theo thuật toán thì mỗi lƣợc đồ con Qi có dạng YB với YB 
Y là siêu khóa. Giả sử trong Qi có phụ thuộc hàm XA có vế
trái không là siêu khóa và vế phải không là thuộc tính khóa.
Ta phân làm hai trƣờng hợp:
Trƣờng hợp 1: A=B  XB  X  Y  YB là phụ thuộc có
vế trái dƣ thừa, điều này trái với YB là phụ thuộc hàm trong
phủ tối thiểu.
Trƣờng hợp 2: AB  AY (1). Gọi K là khóa của Qi  K  Y
(2). A là thuộc tính không khóa nên A  K (3).(1)(2)(3) K  Y
(4).K là khóa nên KB  YB là phụ thuộc hàm có vế trái
dƣ thừa. Điều này trái với điều phụ thuộc hàm YB là phụ
thuộc hàm của phủ tối thiểu Ftt
142
Định lý: Thuật toán trên tạo ra một phân rã ở dạng chuẩn 3
vừa bảo toàn thông tin vừa bảo toàn phụ thuộc hàm
Chứng minh: (tt)
2. Chứng minh phép phân rã bảo toàn phụ thuộc hàm.
Hiển nhiên Ftt  G = Qi(Ftt) Ftt
+  G+ (1)
Hơn nữa Ftt
+  G = Qi(Ftt) Ftt
++  G+  Ftt
+  G+ (2)
(1) và (2)  Ftt
+ = G+
3. Chứng minh phép phân rã bảo toàn thông tin.
Lập bảng kiểm tra bảo toàn thông tin. Ta lần lƣợt đồng nhất
các giá trị theo các phụ thuộc hàm đƣợc phát hiện do thuật
toán tìm bao đóng (có vế trái là tập con của Qi
+ chứa khóa).
Do Qi
+ chứa khóa nên hàng của lƣợc đồ Qi sẽ chứa toàn a là
điều phải chứng minh
143
Ví dụ: cho lƣợc đồ
Q(CTHRSG),F={CT,HRC,THR,CSG,HSR}. Hãy
phân rã Q thành các lƣợc đồ con đạt dạng chuẩn 3 vừa bảo
toàn thông tin vừa bảo toàn phụ thuộc hàm.
Giải:
F=Ftt={CT,HRC,THR,CSG,HSR} là phủ tối thiểu.
Áp dụng thuật toán trên Q đƣợc phân rã thành các lƣợc đồ con
Q1(CT)
Q2(HRC)
Q3(THR)
Q4(CSG)
Q5(HSR)
Khóa của Q là HSQ1,Q2,Q3,Q4,Q5 chính là kết quả phân rã
144
Bài tập 1:
Cho lƣợc đồ quan hệ R(ABCDE) và tập phụ
thuộc hàm:
F = {A -> B; CD -> E; B -> C}
1. Tìm một khóa của lƣợc đồ.
2. Tìm tất cả các khóa của lƣợc đồ.
3. Cho biết dạng chuẩn cao nhất của lƣợc đồ
trên? Nếu chƣa đạt dạng chuẩn 3 hãy tìm
một phép phân rã thành các lƣợc đồ con
đạt dạng chuẩn 3 và bảo toàn thông tin.
145
Tìm một khóa
Áp dụng các bƣớc tìm bao đóng của tập các
thuộc tính:
• Lặp 1: (BCDE)F
+ = BCDE  K = ABCDE.
• Lặp 2: (ACDE)F
+ = ABCDE  K = ACDE.
• Lặp 3: (ADE)F
+ = ADEBC  K = ADE.
• Lặp 4: (AE)F
+ = AEBC  K = ADE.
• Lặp 5: (AD)F
+ = ADBCE  K = AD.
AD là khoá.
146
- Khóa là AD, R không đạt 2NF vì A  B
- Tìm một phép phân rã tách lƣợc đồ trên thành các lƣợc đồ
con đạt dạng chuẩn 3.
Cho lƣợc đồ quan hệ R(ABCDE) và tập phụ thuộc hàm:
F=Ftt = {A -> B; CD -> E; B -> C}
Vì AD là khóa và C là thuộc tính bắc cầu qua khoá AD
AD -> B (không tồn tại B -> AD) và B -> C. (AD -> C)
Do đó ta tách nhƣ sau:
R1(ADBE) R2(BC)
F1 = {A-> B } và F2 = {B -> C}
K1 = {ADE} K2 = {B}
147
Ta có R2 đạt dạng chuẩn 3, còn R1 thì không,
vì thuộc tính không khoá B là bắc cầu qua
khoá ADE, Do A -> B
Tách R1 thành
R11(ADE) R12(AB)
K11= {ADE} K12 = {A}
F12 = {A -> B}
Kết quả: R11(ADE), R12(AB), R2(BC)
148
Bài tập 2
Cho lƣợc đồ quan hệ R(A,B,C,D,E,G,H,I,J,K) và tập
các phụ thuộc hàm:
F = {A -> B ; C -> D,H,I ; I,J -> K ; B,C -> A ; H,C -> E}
1. Tìm một khóa của lƣợc đồ.
2. Tìm tất cả các khóa của lƣợc đồ.
3. Cho biết dạng chuẩn cao nhất của lƣợc đồ trên?
Nếu chƣa đạt dạng chuẩn 3 hãy tìm một phép phân
rã thành các lƣợc đồ con đạt dạng chuẩn 3 và bảo
toàn thông tin.
149
1. Tìm một khóa của lƣợc đồ
Áp dụng các bƣớc tìm bao đóng của tập các thuộc
tính:
• Lặp 1: (ABCDEGHIJK)F
+ = R  K = BCDEGHIJK
• Lặp 2: (BCDEGHIJK) F
+  R  K = BCDEGHIJK
• Lặp 3: (BDEGHIJK) F
+  R  K = BCDEGHIJK
• Lặp 4: (BCEGHIJK) F
+ = R  K = BCEGHIJK.
• Lặp 5: (BCGHIJK ) F
+ = R  K = BCGHIJK
• Lặp 6: (BCGHIJK ) F
+  R  K = BCGHIJK
• Lặp 7: (BCGIJK ) F
+= R  K = BCGIJK
• Lặp 8: (BCGJK ) F
+ = R  K = BCGJK
• Lặp 9: (BCGK ) F
+  R  K = BCGJK
• Lặp 10: (BCGJ ) F
+ = R  K = BCGJ
150
2. Tìm tất cả các khóa của lƣợc đồ
Có 2 khóa:
K1=(BCGJ)
K2=(ACGJ)
Vì?
151
Cho biết dạng chuẩn cao nhất
R không đạt 2NF vì A  B
152
Phân rã thành các lƣợc đồ con đạt dạng
chuẩn 3 và bảo toàn thông tin
Cách 1:
Có nhiều phụ thuộc hàm có khả năng đƣợc
chọn để phân rã , ví dụ nhƣ
C -> D,H,I
153
Cách 2:
154
Chúc các anh chị
thi đạt kết quả tốt

More Related Content

What's hot

Đồng dư thức
Đồng dư thứcĐồng dư thức
Đồng dư thức
youngunoistalented1995
 
Bài Giảng Và Ngân Hàng Đề Thi OTOMAT
Bài Giảng Và Ngân Hàng Đề Thi OTOMATBài Giảng Và Ngân Hàng Đề Thi OTOMAT
Bài Giảng Và Ngân Hàng Đề Thi OTOMAT
Hiệp Mông Chí
 
Bài 1: Tổng quan về cơ sở dữ liệu - Giáo trình FPT
Bài 1: Tổng quan về cơ sở dữ liệu - Giáo trình FPTBài 1: Tổng quan về cơ sở dữ liệu - Giáo trình FPT
Bài 1: Tổng quan về cơ sở dữ liệu - Giáo trình FPT
MasterCode.vn
 
Giới thiệu Đại số quan hệ Phép toán tập hợp Phép chọn Phép chiếu Phép tích Ca...
Giới thiệu Đại số quan hệ Phép toán tập hợp Phép chọn Phép chiếu Phép tích Ca...Giới thiệu Đại số quan hệ Phép toán tập hợp Phép chọn Phép chiếu Phép tích Ca...
Giới thiệu Đại số quan hệ Phép toán tập hợp Phép chọn Phép chiếu Phép tích Ca...
BangNgoVanCong
 
Ktmt chuong 2
Ktmt chuong 2Ktmt chuong 2
Ktmt chuong 2
Tùng Tò Mò
 
Cơ sở dữ liệu PTIT đại số quan hệ
Cơ sở dữ liệu PTIT đại số quan hệCơ sở dữ liệu PTIT đại số quan hệ
Cơ sở dữ liệu PTIT đại số quan hệ
NguynMinh294
 
Thiết kế csdl quản lý nhân sự
Thiết kế csdl quản lý nhân sựThiết kế csdl quản lý nhân sự
Thiết kế csdl quản lý nhân sự
leemindinh
 
91684060 356-cau-trắc-nghiệm-csdl-2
91684060 356-cau-trắc-nghiệm-csdl-291684060 356-cau-trắc-nghiệm-csdl-2
91684060 356-cau-trắc-nghiệm-csdl-2tranquanthien
 
Bài 5: Các thuật toán sắp xếp và tìm kiếm cơ bản - Giáo trình FPT
Bài 5: Các thuật toán sắp xếp và tìm kiếm cơ bản - Giáo trình FPTBài 5: Các thuật toán sắp xếp và tìm kiếm cơ bản - Giáo trình FPT
Bài 5: Các thuật toán sắp xếp và tìm kiếm cơ bản - Giáo trình FPT
MasterCode.vn
 
Đại số boolean và mạch logic
Đại số boolean và mạch logicĐại số boolean và mạch logic
Đại số boolean và mạch logic
www. mientayvn.com
 
chuong 4. dai so boole
chuong 4.  dai so boolechuong 4.  dai so boole
chuong 4. dai so boole
kikihoho
 
Bài 2: Các khái niệm trong CSDL quan hệ - Giáo trình FPT
Bài 2: Các khái niệm trong CSDL quan hệ - Giáo trình FPTBài 2: Các khái niệm trong CSDL quan hệ - Giáo trình FPT
Bài 2: Các khái niệm trong CSDL quan hệ - Giáo trình FPT
MasterCode.vn
 
Đề tài: Quản lý hệ thống bán vé máy bay của Vietnam Airline, 9đ
Đề tài: Quản lý hệ thống bán vé máy bay của Vietnam Airline, 9đĐề tài: Quản lý hệ thống bán vé máy bay của Vietnam Airline, 9đ
Đề tài: Quản lý hệ thống bán vé máy bay của Vietnam Airline, 9đ
Dịch Vụ Viết Bài Trọn Gói ZALO 0917193864
 
Chuong 4 - CSDL phân tán
Chuong 4 - CSDL phân tánChuong 4 - CSDL phân tán
Chuong 4 - CSDL phân tánduysu
 
Bai 4 bieu dien do thi va thuat toan tim kiem
Bai 4   bieu dien do thi va thuat toan tim kiemBai 4   bieu dien do thi va thuat toan tim kiem
Bai 4 bieu dien do thi va thuat toan tim kiem
Duy Vọng
 
Ktmt chuong 3
Ktmt chuong 3Ktmt chuong 3
Ktmt chuong 3
Tùng Tò Mò
 
Tài liệu tổng kểt môn mạng máy tính
Tài liệu tổng kểt môn mạng máy tínhTài liệu tổng kểt môn mạng máy tính
Tài liệu tổng kểt môn mạng máy tínhJojo Kim
 
Hỗ trợ ra quyết định
Hỗ trợ ra quyết địnhHỗ trợ ra quyết định
Hỗ trợ ra quyết định
lmphuong06
 
Bai tap va loi giai sql
Bai tap va loi giai sqlBai tap va loi giai sql
Bai tap va loi giai sql. .
 

What's hot (20)

Đồng dư thức
Đồng dư thứcĐồng dư thức
Đồng dư thức
 
Bài Giảng Và Ngân Hàng Đề Thi OTOMAT
Bài Giảng Và Ngân Hàng Đề Thi OTOMATBài Giảng Và Ngân Hàng Đề Thi OTOMAT
Bài Giảng Và Ngân Hàng Đề Thi OTOMAT
 
Bài 1: Tổng quan về cơ sở dữ liệu - Giáo trình FPT
Bài 1: Tổng quan về cơ sở dữ liệu - Giáo trình FPTBài 1: Tổng quan về cơ sở dữ liệu - Giáo trình FPT
Bài 1: Tổng quan về cơ sở dữ liệu - Giáo trình FPT
 
Giới thiệu Đại số quan hệ Phép toán tập hợp Phép chọn Phép chiếu Phép tích Ca...
Giới thiệu Đại số quan hệ Phép toán tập hợp Phép chọn Phép chiếu Phép tích Ca...Giới thiệu Đại số quan hệ Phép toán tập hợp Phép chọn Phép chiếu Phép tích Ca...
Giới thiệu Đại số quan hệ Phép toán tập hợp Phép chọn Phép chiếu Phép tích Ca...
 
Ktmt chuong 2
Ktmt chuong 2Ktmt chuong 2
Ktmt chuong 2
 
Cơ sở dữ liệu PTIT đại số quan hệ
Cơ sở dữ liệu PTIT đại số quan hệCơ sở dữ liệu PTIT đại số quan hệ
Cơ sở dữ liệu PTIT đại số quan hệ
 
Chuong02
Chuong02Chuong02
Chuong02
 
Thiết kế csdl quản lý nhân sự
Thiết kế csdl quản lý nhân sựThiết kế csdl quản lý nhân sự
Thiết kế csdl quản lý nhân sự
 
91684060 356-cau-trắc-nghiệm-csdl-2
91684060 356-cau-trắc-nghiệm-csdl-291684060 356-cau-trắc-nghiệm-csdl-2
91684060 356-cau-trắc-nghiệm-csdl-2
 
Bài 5: Các thuật toán sắp xếp và tìm kiếm cơ bản - Giáo trình FPT
Bài 5: Các thuật toán sắp xếp và tìm kiếm cơ bản - Giáo trình FPTBài 5: Các thuật toán sắp xếp và tìm kiếm cơ bản - Giáo trình FPT
Bài 5: Các thuật toán sắp xếp và tìm kiếm cơ bản - Giáo trình FPT
 
Đại số boolean và mạch logic
Đại số boolean và mạch logicĐại số boolean và mạch logic
Đại số boolean và mạch logic
 
chuong 4. dai so boole
chuong 4.  dai so boolechuong 4.  dai so boole
chuong 4. dai so boole
 
Bài 2: Các khái niệm trong CSDL quan hệ - Giáo trình FPT
Bài 2: Các khái niệm trong CSDL quan hệ - Giáo trình FPTBài 2: Các khái niệm trong CSDL quan hệ - Giáo trình FPT
Bài 2: Các khái niệm trong CSDL quan hệ - Giáo trình FPT
 
Đề tài: Quản lý hệ thống bán vé máy bay của Vietnam Airline, 9đ
Đề tài: Quản lý hệ thống bán vé máy bay của Vietnam Airline, 9đĐề tài: Quản lý hệ thống bán vé máy bay của Vietnam Airline, 9đ
Đề tài: Quản lý hệ thống bán vé máy bay của Vietnam Airline, 9đ
 
Chuong 4 - CSDL phân tán
Chuong 4 - CSDL phân tánChuong 4 - CSDL phân tán
Chuong 4 - CSDL phân tán
 
Bai 4 bieu dien do thi va thuat toan tim kiem
Bai 4   bieu dien do thi va thuat toan tim kiemBai 4   bieu dien do thi va thuat toan tim kiem
Bai 4 bieu dien do thi va thuat toan tim kiem
 
Ktmt chuong 3
Ktmt chuong 3Ktmt chuong 3
Ktmt chuong 3
 
Tài liệu tổng kểt môn mạng máy tính
Tài liệu tổng kểt môn mạng máy tínhTài liệu tổng kểt môn mạng máy tính
Tài liệu tổng kểt môn mạng máy tính
 
Hỗ trợ ra quyết định
Hỗ trợ ra quyết địnhHỗ trợ ra quyết định
Hỗ trợ ra quyết định
 
Bai tap va loi giai sql
Bai tap va loi giai sqlBai tap va loi giai sql
Bai tap va loi giai sql
 

Viewers also liked

Ôn tập tuyển sinh cao học môn CSDL 2013
Ôn tập tuyển sinh cao học môn CSDL 2013Ôn tập tuyển sinh cao học môn CSDL 2013
Ôn tập tuyển sinh cao học môn CSDL 2013
anhhuycan83
 
Phụ thuộc hàm và các dạng chuẩn - dhcntt
Phụ thuộc hàm và các dạng chuẩn - dhcnttPhụ thuộc hàm và các dạng chuẩn - dhcntt
Phụ thuộc hàm và các dạng chuẩn - dhcntt
anhhuycan83
 
Tsch csdl 01 - dhcntt
Tsch   csdl 01 - dhcnttTsch   csdl 01 - dhcntt
Tsch csdl 01 - dhcntt
anhhuycan83
 
Slide co-so-du-lieu-chuong-8-csdl-huong-doi-tuong
Slide co-so-du-lieu-chuong-8-csdl-huong-doi-tuongSlide co-so-du-lieu-chuong-8-csdl-huong-doi-tuong
Slide co-so-du-lieu-chuong-8-csdl-huong-doi-tuong
anhhuycan83
 
Bao cao viem phuc mac ruot thua
Bao cao viem phuc mac ruot thuaBao cao viem phuc mac ruot thua
Bao cao viem phuc mac ruot thua
anhhuycan83
 
Cơ sở dữ liệu đại học
Cơ sở dữ liệu đại họcCơ sở dữ liệu đại học
Cơ sở dữ liệu đại học
Chu TheKop
 
Cơ sở dữ liệu
Cơ sở dữ liệuCơ sở dữ liệu
Cơ sở dữ liệuThành Luân
 

Viewers also liked (9)

Ôn tập tuyển sinh cao học môn CSDL 2013
Ôn tập tuyển sinh cao học môn CSDL 2013Ôn tập tuyển sinh cao học môn CSDL 2013
Ôn tập tuyển sinh cao học môn CSDL 2013
 
Phụ thuộc hàm và các dạng chuẩn - dhcntt
Phụ thuộc hàm và các dạng chuẩn - dhcnttPhụ thuộc hàm và các dạng chuẩn - dhcntt
Phụ thuộc hàm và các dạng chuẩn - dhcntt
 
Tsch csdl 01 - dhcntt
Tsch   csdl 01 - dhcnttTsch   csdl 01 - dhcntt
Tsch csdl 01 - dhcntt
 
Slide co-so-du-lieu-chuong-8-csdl-huong-doi-tuong
Slide co-so-du-lieu-chuong-8-csdl-huong-doi-tuongSlide co-so-du-lieu-chuong-8-csdl-huong-doi-tuong
Slide co-so-du-lieu-chuong-8-csdl-huong-doi-tuong
 
Access buoi 8
Access buoi 8Access buoi 8
Access buoi 8
 
17406 bai giang csdl nang cao
17406   bai giang csdl nang cao17406   bai giang csdl nang cao
17406 bai giang csdl nang cao
 
Bao cao viem phuc mac ruot thua
Bao cao viem phuc mac ruot thuaBao cao viem phuc mac ruot thua
Bao cao viem phuc mac ruot thua
 
Cơ sở dữ liệu đại học
Cơ sở dữ liệu đại họcCơ sở dữ liệu đại học
Cơ sở dữ liệu đại học
 
Cơ sở dữ liệu
Cơ sở dữ liệuCơ sở dữ liệu
Cơ sở dữ liệu
 

Similar to Cơ sở dữ liệu - Luyện thi cao học CNTT

Dai so quan he
Dai so quan heDai so quan he
Dai so quan hePhùng Duy
 
Thiet Ke Co So Du Lieu1
Thiet Ke Co So Du Lieu1Thiet Ke Co So Du Lieu1
Thiet Ke Co So Du Lieu1
Vo Oanh
 
Lý thuyết tính toán
Lý thuyết tính toánLý thuyết tính toán
Lý thuyết tính toán
Hà Ngọc
 
Đại số quan hệ trong môn cơ sở dữ liệu.pdf
Đại số quan hệ trong môn cơ sở dữ liệu.pdfĐại số quan hệ trong môn cơ sở dữ liệu.pdf
Đại số quan hệ trong môn cơ sở dữ liệu.pdf
itsmingtam
 
c11_phanraluocdo (1)dấdasdadsadsadasdsad.pptx
c11_phanraluocdo (1)dấdasdadsadsadasdsad.pptxc11_phanraluocdo (1)dấdasdadsadsadasdsad.pptx
c11_phanraluocdo (1)dấdasdadsadsadasdsad.pptx
VThnh559329
 
Cơ sở dữ liệu PTIT slide 5
Cơ sở dữ liệu PTIT slide 5 Cơ sở dữ liệu PTIT slide 5
Cơ sở dữ liệu PTIT slide 5
NguynMinh294
 
Regular Expression - Ngôn Ngữ Hình Thức && automat
Regular Expression -  Ngôn Ngữ Hình Thức && automatRegular Expression -  Ngôn Ngữ Hình Thức && automat
Regular Expression - Ngôn Ngữ Hình Thức && automat
Hoài Phạm
 
Ch3_Quan_He_wgfoo.pdf
Ch3_Quan_He_wgfoo.pdfCh3_Quan_He_wgfoo.pdf
Ch3_Quan_He_wgfoo.pdf
VyNguyn580616
 
Lý thuyết tính toán - BKHN - 1
Lý thuyết tính toán - BKHN - 1Lý thuyết tính toán - BKHN - 1
Lý thuyết tính toán - BKHN - 1Minh Lê
 
Tcca2.TranThiTuyetLan
Tcca2.TranThiTuyetLanTcca2.TranThiTuyetLan
Tcca2.TranThiTuyetLanLong Tran Huy
 
02 phep tinhquanhe
02 phep tinhquanhe02 phep tinhquanhe
02 phep tinhquanhe
ThuatHuu
 
Bài giảng chuyên đề - Lê Minh Hoàng
Bài giảng chuyên đề - Lê Minh HoàngBài giảng chuyên đề - Lê Minh Hoàng
Bài giảng chuyên đề - Lê Minh Hoàng
Bình Trọng Án
 
05 mat102-bai 2-v1.0
05 mat102-bai 2-v1.005 mat102-bai 2-v1.0
05 mat102-bai 2-v1.0
Yen Dang
 
Toan cao cap a1
Toan cao cap a1Toan cao cap a1
Toan cao cap a1
Huynh ICT
 
Cơ sở dữ liệu PTIT slide 7
Cơ sở dữ liệu PTIT slide 7 Cơ sở dữ liệu PTIT slide 7
Cơ sở dữ liệu PTIT slide 7
NguynMinh294
 

Similar to Cơ sở dữ liệu - Luyện thi cao học CNTT (20)

Phan2
Phan2Phan2
Phan2
 
Dai so quan he
Dai so quan heDai so quan he
Dai so quan he
 
Thiet Ke Co So Du Lieu1
Thiet Ke Co So Du Lieu1Thiet Ke Co So Du Lieu1
Thiet Ke Co So Du Lieu1
 
Lý thuyết tính toán
Lý thuyết tính toánLý thuyết tính toán
Lý thuyết tính toán
 
Đại số quan hệ trong môn cơ sở dữ liệu.pdf
Đại số quan hệ trong môn cơ sở dữ liệu.pdfĐại số quan hệ trong môn cơ sở dữ liệu.pdf
Đại số quan hệ trong môn cơ sở dữ liệu.pdf
 
c11_phanraluocdo (1)dấdasdadsadsadasdsad.pptx
c11_phanraluocdo (1)dấdasdadsadsadasdsad.pptxc11_phanraluocdo (1)dấdasdadsadsadasdsad.pptx
c11_phanraluocdo (1)dấdasdadsadsadasdsad.pptx
 
65 csdl
65 csdl65 csdl
65 csdl
 
Cơ sở dữ liệu PTIT slide 5
Cơ sở dữ liệu PTIT slide 5 Cơ sở dữ liệu PTIT slide 5
Cơ sở dữ liệu PTIT slide 5
 
Regular Expression - Ngôn Ngữ Hình Thức && automat
Regular Expression -  Ngôn Ngữ Hình Thức && automatRegular Expression -  Ngôn Ngữ Hình Thức && automat
Regular Expression - Ngôn Ngữ Hình Thức && automat
 
Ch3_Quan_He_wgfoo.pdf
Ch3_Quan_He_wgfoo.pdfCh3_Quan_He_wgfoo.pdf
Ch3_Quan_He_wgfoo.pdf
 
Lý thuyết tính toán - BKHN - 1
Lý thuyết tính toán - BKHN - 1Lý thuyết tính toán - BKHN - 1
Lý thuyết tính toán - BKHN - 1
 
Tcca2.TranThiTuyetLan
Tcca2.TranThiTuyetLanTcca2.TranThiTuyetLan
Tcca2.TranThiTuyetLan
 
02 phep tinhquanhe
02 phep tinhquanhe02 phep tinhquanhe
02 phep tinhquanhe
 
Bài giảng chuyên đề - Lê Minh Hoàng
Bài giảng chuyên đề - Lê Minh HoàngBài giảng chuyên đề - Lê Minh Hoàng
Bài giảng chuyên đề - Lê Minh Hoàng
 
Session 04 Sua
Session 04 SuaSession 04 Sua
Session 04 Sua
 
Session 04 Sua
Session 04 SuaSession 04 Sua
Session 04 Sua
 
Bùi việt anh
Bùi việt anhBùi việt anh
Bùi việt anh
 
05 mat102-bai 2-v1.0
05 mat102-bai 2-v1.005 mat102-bai 2-v1.0
05 mat102-bai 2-v1.0
 
Toan cao cap a1
Toan cao cap a1Toan cao cap a1
Toan cao cap a1
 
Cơ sở dữ liệu PTIT slide 7
Cơ sở dữ liệu PTIT slide 7 Cơ sở dữ liệu PTIT slide 7
Cơ sở dữ liệu PTIT slide 7
 

Recently uploaded

Từ vay mượn trong tiếng Anh trên các phương tiện tin đại chúng
Từ vay mượn trong tiếng Anh trên các phương tiện tin đại chúngTừ vay mượn trong tiếng Anh trên các phương tiện tin đại chúng
Từ vay mượn trong tiếng Anh trên các phương tiện tin đại chúng
MinhSangPhmHunh
 
BÀI TẬP BỔ TRỢ TIẾNG ANH I-LEARN SMART WORLD 9 CẢ NĂM CÓ TEST THEO UNIT NĂM H...
BÀI TẬP BỔ TRỢ TIẾNG ANH I-LEARN SMART WORLD 9 CẢ NĂM CÓ TEST THEO UNIT NĂM H...BÀI TẬP BỔ TRỢ TIẾNG ANH I-LEARN SMART WORLD 9 CẢ NĂM CÓ TEST THEO UNIT NĂM H...
BÀI TẬP BỔ TRỢ TIẾNG ANH I-LEARN SMART WORLD 9 CẢ NĂM CÓ TEST THEO UNIT NĂM H...
Nguyen Thanh Tu Collection
 
DANH SÁCH XÉT TUYỂN SỚM_NĂM 2023_học ba DPY.pdf
DANH SÁCH XÉT TUYỂN SỚM_NĂM 2023_học ba DPY.pdfDANH SÁCH XÉT TUYỂN SỚM_NĂM 2023_học ba DPY.pdf
DANH SÁCH XÉT TUYỂN SỚM_NĂM 2023_học ba DPY.pdf
thanhluan21
 
BÀI TẬP DẠY THÊM HÓA HỌC LỚP 12 - CẢ NĂM - THEO FORM THI MỚI BGD 2025 (DÙNG C...
BÀI TẬP DẠY THÊM HÓA HỌC LỚP 12 - CẢ NĂM - THEO FORM THI MỚI BGD 2025 (DÙNG C...BÀI TẬP DẠY THÊM HÓA HỌC LỚP 12 - CẢ NĂM - THEO FORM THI MỚI BGD 2025 (DÙNG C...
BÀI TẬP DẠY THÊM HÓA HỌC LỚP 12 - CẢ NĂM - THEO FORM THI MỚI BGD 2025 (DÙNG C...
Nguyen Thanh Tu Collection
 
Biểu tượng trăng và bầu trời trong tác phẩm của Nguyễn Quang Thiều
Biểu tượng trăng và bầu trời trong tác phẩm của Nguyễn Quang ThiềuBiểu tượng trăng và bầu trời trong tác phẩm của Nguyễn Quang Thiều
Biểu tượng trăng và bầu trời trong tác phẩm của Nguyễn Quang Thiều
lamluanvan.net Viết thuê luận văn
 
bài dự thi chính luận 2024 đảng chọn lọc.docx
bài dự thi chính luận 2024 đảng chọn lọc.docxbài dự thi chính luận 2024 đảng chọn lọc.docx
bài dự thi chính luận 2024 đảng chọn lọc.docx
HiYnThTh
 
trắc nhiệm ký sinh.docxddddddddddddddddd
trắc nhiệm ký sinh.docxdddddddddddddddddtrắc nhiệm ký sinh.docxddddddddddddddddd
trắc nhiệm ký sinh.docxddddddddddddddddd
my21xn0084
 
[NBV]-CHUYÊN ĐỀ 3. GTLN-GTNN CỦA HÀM SỐ (CÓ ĐÁP ÁN CHI TIẾT).pdf
[NBV]-CHUYÊN ĐỀ 3. GTLN-GTNN CỦA HÀM SỐ (CÓ ĐÁP ÁN CHI TIẾT).pdf[NBV]-CHUYÊN ĐỀ 3. GTLN-GTNN CỦA HÀM SỐ (CÓ ĐÁP ÁN CHI TIẾT).pdf
[NBV]-CHUYÊN ĐỀ 3. GTLN-GTNN CỦA HÀM SỐ (CÓ ĐÁP ÁN CHI TIẾT).pdf
NamNguynHi23
 
Smartbiz_He thong MES nganh may mac_2024june
Smartbiz_He thong MES nganh may mac_2024juneSmartbiz_He thong MES nganh may mac_2024june
Smartbiz_He thong MES nganh may mac_2024june
SmartBiz
 
Tuyển tập 9 chuyên đề bồi dưỡng Toán lớp 5 cơ bản và nâng cao ôn thi vào lớp ...
Tuyển tập 9 chuyên đề bồi dưỡng Toán lớp 5 cơ bản và nâng cao ôn thi vào lớp ...Tuyển tập 9 chuyên đề bồi dưỡng Toán lớp 5 cơ bản và nâng cao ôn thi vào lớp ...
Tuyển tập 9 chuyên đề bồi dưỡng Toán lớp 5 cơ bản và nâng cao ôn thi vào lớp ...
Bồi Dưỡng HSG Toán Lớp 3
 
BÁO CÁO CUỐI KỲ PHÂN TÍCH THIẾT KẾ HƯỚNG ĐỐI TƯỢNG - NHÓM 7.docx
BÁO CÁO CUỐI KỲ PHÂN TÍCH THIẾT KẾ HƯỚNG ĐỐI TƯỢNG - NHÓM 7.docxBÁO CÁO CUỐI KỲ PHÂN TÍCH THIẾT KẾ HƯỚNG ĐỐI TƯỢNG - NHÓM 7.docx
BÁO CÁO CUỐI KỲ PHÂN TÍCH THIẾT KẾ HƯỚNG ĐỐI TƯỢNG - NHÓM 7.docx
HngL891608
 
Halloween vocabulary for kids in primary school
Halloween vocabulary for kids in primary schoolHalloween vocabulary for kids in primary school
Halloween vocabulary for kids in primary school
AnhPhm265031
 
PLĐC-chương 1 (1).ppt của trường ĐH Ngoại thương
PLĐC-chương 1 (1).ppt của trường  ĐH Ngoại thươngPLĐC-chương 1 (1).ppt của trường  ĐH Ngoại thương
PLĐC-chương 1 (1).ppt của trường ĐH Ngoại thương
hieutrinhvan27052005
 
YHocData.com-bộ-câu-hỏi-mô-phôi.pdf đầy đủ
YHocData.com-bộ-câu-hỏi-mô-phôi.pdf đầy đủYHocData.com-bộ-câu-hỏi-mô-phôi.pdf đầy đủ
YHocData.com-bộ-câu-hỏi-mô-phôi.pdf đầy đủ
duyanh05052004
 
tiếng việt dành cho sinh viên ngoại ngữ h
tiếng việt dành cho sinh viên ngoại ngữ htiếng việt dành cho sinh viên ngoại ngữ h
tiếng việt dành cho sinh viên ngoại ngữ h
huynhanhthu082007
 
Từ ngữ về con người và chiến tranh trong Nhật ký Đặng Thùy Trâm.pdf
Từ ngữ về con người và chiến tranh trong Nhật ký Đặng Thùy Trâm.pdfTừ ngữ về con người và chiến tranh trong Nhật ký Đặng Thùy Trâm.pdf
Từ ngữ về con người và chiến tranh trong Nhật ký Đặng Thùy Trâm.pdf
Man_Ebook
 
CHUYÊN ĐỀ DẠY THÊM HÓA HỌC LỚP 10 - SÁCH MỚI - FORM BÀI TẬP 2025 (DÙNG CHUNG ...
CHUYÊN ĐỀ DẠY THÊM HÓA HỌC LỚP 10 - SÁCH MỚI - FORM BÀI TẬP 2025 (DÙNG CHUNG ...CHUYÊN ĐỀ DẠY THÊM HÓA HỌC LỚP 10 - SÁCH MỚI - FORM BÀI TẬP 2025 (DÙNG CHUNG ...
CHUYÊN ĐỀ DẠY THÊM HÓA HỌC LỚP 10 - SÁCH MỚI - FORM BÀI TẬP 2025 (DÙNG CHUNG ...
Nguyen Thanh Tu Collection
 
100 DẪN CHỨNG NGHỊ LUẬN XÃ HỘiI HAY.docx
100 DẪN CHỨNG NGHỊ LUẬN XÃ HỘiI HAY.docx100 DẪN CHỨNG NGHỊ LUẬN XÃ HỘiI HAY.docx
100 DẪN CHỨNG NGHỊ LUẬN XÃ HỘiI HAY.docx
khanhthy3000
 
THONG BAO nop ho so xet tuyen TS6 24-25.pdf
THONG BAO nop ho so xet tuyen TS6 24-25.pdfTHONG BAO nop ho so xet tuyen TS6 24-25.pdf
THONG BAO nop ho so xet tuyen TS6 24-25.pdf
QucHHunhnh
 

Recently uploaded (19)

Từ vay mượn trong tiếng Anh trên các phương tiện tin đại chúng
Từ vay mượn trong tiếng Anh trên các phương tiện tin đại chúngTừ vay mượn trong tiếng Anh trên các phương tiện tin đại chúng
Từ vay mượn trong tiếng Anh trên các phương tiện tin đại chúng
 
BÀI TẬP BỔ TRỢ TIẾNG ANH I-LEARN SMART WORLD 9 CẢ NĂM CÓ TEST THEO UNIT NĂM H...
BÀI TẬP BỔ TRỢ TIẾNG ANH I-LEARN SMART WORLD 9 CẢ NĂM CÓ TEST THEO UNIT NĂM H...BÀI TẬP BỔ TRỢ TIẾNG ANH I-LEARN SMART WORLD 9 CẢ NĂM CÓ TEST THEO UNIT NĂM H...
BÀI TẬP BỔ TRỢ TIẾNG ANH I-LEARN SMART WORLD 9 CẢ NĂM CÓ TEST THEO UNIT NĂM H...
 
DANH SÁCH XÉT TUYỂN SỚM_NĂM 2023_học ba DPY.pdf
DANH SÁCH XÉT TUYỂN SỚM_NĂM 2023_học ba DPY.pdfDANH SÁCH XÉT TUYỂN SỚM_NĂM 2023_học ba DPY.pdf
DANH SÁCH XÉT TUYỂN SỚM_NĂM 2023_học ba DPY.pdf
 
BÀI TẬP DẠY THÊM HÓA HỌC LỚP 12 - CẢ NĂM - THEO FORM THI MỚI BGD 2025 (DÙNG C...
BÀI TẬP DẠY THÊM HÓA HỌC LỚP 12 - CẢ NĂM - THEO FORM THI MỚI BGD 2025 (DÙNG C...BÀI TẬP DẠY THÊM HÓA HỌC LỚP 12 - CẢ NĂM - THEO FORM THI MỚI BGD 2025 (DÙNG C...
BÀI TẬP DẠY THÊM HÓA HỌC LỚP 12 - CẢ NĂM - THEO FORM THI MỚI BGD 2025 (DÙNG C...
 
Biểu tượng trăng và bầu trời trong tác phẩm của Nguyễn Quang Thiều
Biểu tượng trăng và bầu trời trong tác phẩm của Nguyễn Quang ThiềuBiểu tượng trăng và bầu trời trong tác phẩm của Nguyễn Quang Thiều
Biểu tượng trăng và bầu trời trong tác phẩm của Nguyễn Quang Thiều
 
bài dự thi chính luận 2024 đảng chọn lọc.docx
bài dự thi chính luận 2024 đảng chọn lọc.docxbài dự thi chính luận 2024 đảng chọn lọc.docx
bài dự thi chính luận 2024 đảng chọn lọc.docx
 
trắc nhiệm ký sinh.docxddddddddddddddddd
trắc nhiệm ký sinh.docxdddddddddddddddddtrắc nhiệm ký sinh.docxddddddddddddddddd
trắc nhiệm ký sinh.docxddddddddddddddddd
 
[NBV]-CHUYÊN ĐỀ 3. GTLN-GTNN CỦA HÀM SỐ (CÓ ĐÁP ÁN CHI TIẾT).pdf
[NBV]-CHUYÊN ĐỀ 3. GTLN-GTNN CỦA HÀM SỐ (CÓ ĐÁP ÁN CHI TIẾT).pdf[NBV]-CHUYÊN ĐỀ 3. GTLN-GTNN CỦA HÀM SỐ (CÓ ĐÁP ÁN CHI TIẾT).pdf
[NBV]-CHUYÊN ĐỀ 3. GTLN-GTNN CỦA HÀM SỐ (CÓ ĐÁP ÁN CHI TIẾT).pdf
 
Smartbiz_He thong MES nganh may mac_2024june
Smartbiz_He thong MES nganh may mac_2024juneSmartbiz_He thong MES nganh may mac_2024june
Smartbiz_He thong MES nganh may mac_2024june
 
Tuyển tập 9 chuyên đề bồi dưỡng Toán lớp 5 cơ bản và nâng cao ôn thi vào lớp ...
Tuyển tập 9 chuyên đề bồi dưỡng Toán lớp 5 cơ bản và nâng cao ôn thi vào lớp ...Tuyển tập 9 chuyên đề bồi dưỡng Toán lớp 5 cơ bản và nâng cao ôn thi vào lớp ...
Tuyển tập 9 chuyên đề bồi dưỡng Toán lớp 5 cơ bản và nâng cao ôn thi vào lớp ...
 
BÁO CÁO CUỐI KỲ PHÂN TÍCH THIẾT KẾ HƯỚNG ĐỐI TƯỢNG - NHÓM 7.docx
BÁO CÁO CUỐI KỲ PHÂN TÍCH THIẾT KẾ HƯỚNG ĐỐI TƯỢNG - NHÓM 7.docxBÁO CÁO CUỐI KỲ PHÂN TÍCH THIẾT KẾ HƯỚNG ĐỐI TƯỢNG - NHÓM 7.docx
BÁO CÁO CUỐI KỲ PHÂN TÍCH THIẾT KẾ HƯỚNG ĐỐI TƯỢNG - NHÓM 7.docx
 
Halloween vocabulary for kids in primary school
Halloween vocabulary for kids in primary schoolHalloween vocabulary for kids in primary school
Halloween vocabulary for kids in primary school
 
PLĐC-chương 1 (1).ppt của trường ĐH Ngoại thương
PLĐC-chương 1 (1).ppt của trường  ĐH Ngoại thươngPLĐC-chương 1 (1).ppt của trường  ĐH Ngoại thương
PLĐC-chương 1 (1).ppt của trường ĐH Ngoại thương
 
YHocData.com-bộ-câu-hỏi-mô-phôi.pdf đầy đủ
YHocData.com-bộ-câu-hỏi-mô-phôi.pdf đầy đủYHocData.com-bộ-câu-hỏi-mô-phôi.pdf đầy đủ
YHocData.com-bộ-câu-hỏi-mô-phôi.pdf đầy đủ
 
tiếng việt dành cho sinh viên ngoại ngữ h
tiếng việt dành cho sinh viên ngoại ngữ htiếng việt dành cho sinh viên ngoại ngữ h
tiếng việt dành cho sinh viên ngoại ngữ h
 
Từ ngữ về con người và chiến tranh trong Nhật ký Đặng Thùy Trâm.pdf
Từ ngữ về con người và chiến tranh trong Nhật ký Đặng Thùy Trâm.pdfTừ ngữ về con người và chiến tranh trong Nhật ký Đặng Thùy Trâm.pdf
Từ ngữ về con người và chiến tranh trong Nhật ký Đặng Thùy Trâm.pdf
 
CHUYÊN ĐỀ DẠY THÊM HÓA HỌC LỚP 10 - SÁCH MỚI - FORM BÀI TẬP 2025 (DÙNG CHUNG ...
CHUYÊN ĐỀ DẠY THÊM HÓA HỌC LỚP 10 - SÁCH MỚI - FORM BÀI TẬP 2025 (DÙNG CHUNG ...CHUYÊN ĐỀ DẠY THÊM HÓA HỌC LỚP 10 - SÁCH MỚI - FORM BÀI TẬP 2025 (DÙNG CHUNG ...
CHUYÊN ĐỀ DẠY THÊM HÓA HỌC LỚP 10 - SÁCH MỚI - FORM BÀI TẬP 2025 (DÙNG CHUNG ...
 
100 DẪN CHỨNG NGHỊ LUẬN XÃ HỘiI HAY.docx
100 DẪN CHỨNG NGHỊ LUẬN XÃ HỘiI HAY.docx100 DẪN CHỨNG NGHỊ LUẬN XÃ HỘiI HAY.docx
100 DẪN CHỨNG NGHỊ LUẬN XÃ HỘiI HAY.docx
 
THONG BAO nop ho so xet tuyen TS6 24-25.pdf
THONG BAO nop ho so xet tuyen TS6 24-25.pdfTHONG BAO nop ho so xet tuyen TS6 24-25.pdf
THONG BAO nop ho so xet tuyen TS6 24-25.pdf
 

Cơ sở dữ liệu - Luyện thi cao học CNTT

  • 1. 1 Phần 1 Đại số quan hệ TS. Nguyễn Đình Thuân Khoa Hệ thống thông tin Trƣờng ĐH Công nghệ Thông tin 8/2014
  • 2. 2 Giới thiệu Đại số quan hệ – Là tập hợp các phép toán cơ sở của mô hình dữ liệu quan hệ – Biểu thức dại số quan hệ là sự kết hợp của các toán hạng và toán tử – Kết quả của một biểu thức dại số quan hệ là một thể hiện của quan hệ Ý nghĩa : – Là cơ sở hình thức cho các phép toán của mô hình QH – Là cơ sở để cài đặt và tối ƣu hóa các truy vấn trong các hệ QT CSDL
  • 3. 3 Giới thiệu Toán hạng – có thể là : – Các thể hiện của quan hệ – Các tập hợp Toán tử (phép toán) cơ bản bao gồm 8 phép toán : – Phép toán tập hợp • Phép hợp, phép giao, phép hiệu, phép tích Descartes – Phép toán quan hệ • Phép chọn, phép chiếu, phép chia, phép kết nối Và một số phép khác: • Phép gán () • Hàm tính toán và gom nhóm: avg(), min(), max(), sum(), count(). Khái niệm khả hợp: Hai lƣợc đồ quan hệ R1 và R2 là khả hợp nếu cùng bậc n và DOM(Ai)=DOM(Bi) (1in)
  • 4. 4 Phép hợp (Union) Hợp của hai quan hệ r và s khả hợp là tập các bộ thuộc r hoặc s hoặc thuộc cả hai quan hệ Kí hiệu: r  s Công thức: r  s = { t/ t  r hoặc t  s} sr
  • 5. 5 Phép hợp Ví dụ : r ( A B C) s ( A B C) r  s = ( A B C) ___________ __________ ________________ a1 b1 c1 a1 b1 c1 a1 b1 c1 a2 b1 c2 a2 b2 c2 a2 b1 c2 a2 b2 c1 a2 b2 c2 a2 b2 c1
  • 6. 6 Phép giao (Intersection) Giao của hai quan hệ r và s khả hợp là tập các bộ thuộc cả hai quan hệ Kí hiệu : r  s Công thức : r  s = { t/ t  r và t  s } Ví dụ : Với hai quan hệ ở ví dụ trƣớc, giao của chúng là: r  s = ( A B C ) a1 b1 c1 sr
  • 7. 7 Phép trừ (Minus) Hiệu của hai quan hệ r và s khả hợp là tập các bộ thuộc r nhƣng không thuộc s Kí hiệu : r - s Công thức : r - s = { t/ t  r và t  s } Ví dụ : Với hai quan hệ ở ví dụ trƣớc, giao của chúng là: r - s = ( A B C ) a2 b1 c2 a2 b2 c1 sr
  • 8. 8 Phép tích Descartes (Cartesian Product) r là quan hệ xác định trên tập thuộc tính {A1, A2, .., An} s là quan hệ xác định trên tập thuộc tính {B1, B2,..,Bm} Tích Descartes của r và s là tập ( n + m ) - bộ với n thành phần đầu là một bộ thuộc r và m thành phần sau là một bộ thuộc s Kí hiệu: r x s Công thức : r x s = { t: t có dạng (a1, a2, .., an, b1, b2,.., bm) trong đó (a1, ..,an ) r và (b1,.. ,bm) s }
  • 9. 9 Phép tích Descartes Ví dụ: r (A B C) s (D E) r  s = p (A B C D E) a1 b1 1 1 e1 a1 b1 1 1 e1 a2 b2 2 2 e2 a1 b1 1 2 e2 a3 b3 3 a2 b2 2 1 e1 a2 b2 2 2 e2 a3 b3 3 1 e1 a3 b3 3 2 e2
  • 10. 10 Phép chiếu (Projection)  Phép chiếu trên một quan hệ thực chất là loại bỏ đi một số thuộc tính và giữ lại những thuộc tính còn lại của quan hệ đó.  Công thức:  < ds_thuộc tính>(< tên quan hệ >) <ds_thuộc tính>: danh sách các thuộc tính đƣợc lấy  Kết quả của phép chiếu là tập các thuộc tính trong danh sách với cùng thứ tự.  Nếu <ds_thuộc tính> chỉ có những thuộc tính không khoá thì phép chiếu sẽ bỏ đi những bộ lặp.  Phép chiếu không có tính giao hoán. <ds1>( <ds2>(R)) ≠ <ds2>( <ds1>(R))
  • 11. 11 Phép chiếu (Projection) Ví dụ : Cho quan hệ SV (Mã SV, Họ tên, Ngày sinh, Điểm) Mã SV Điểm 001 8 002 9 003 7 004 10 Phép chiếu Mã Sv, Điểm (SV): Mã SV Họ tên Ngày sinh Điểm 001 Trần Anh 23/4/86 8 002 Ngọc Bích 13/4/85 9 003 Xuân Mai 25/3/87 7 004 Hồng Vân 21/6/85 10
  • 12. 12 Phép chọn (Selection)  Phép chọn dùng để trích chọn một tập con trong một quan hệ, các bộ đƣợc trích chọn phải thoả mãn diều kiện chọn. Công thức:  < điều kiện > (< Tên quan hệ >)  < Tên quan hệ >: chỉ quan hệ đƣợc chọn  Kết quả thu đƣợc là một quan hệ có danh sách thuộc tính đƣợc chỉ ra trong Tên quan hệ.  <Điều kiện>: là các biểu thức điều kiện cần thoả mãn. Các biểu thức này đƣợc nối với nhau bằng các phép: (phủ định), ^ (và), v (hoặc).  Phép chọn có tính giao hoán. <đk1>(<đk2>(R)) = <đk2>(<đk1>(R)) Ø
  • 13. 13 Phép chọn (Selection) Ví dụ : Cho quan hệ SV(Mã SV,Họ tên,Ngày sinh,Điểm) Mã SV Họ tên Ngày sinh Điểm 001 Trần Anh 23/4/86 8 002 Ngọc Bích 13/4/85 9 004 Hồng Vân 21/6/85 10 Điểm>7 (Year(Ngaysinh) >= 1985) (SV) Mã SV Họ tên Ngày sinh Điểm 001 Trần Anh 23/4/86 8  (Điểm=8 )(SV)
  • 14. 14 Phép kết nối (Join) Phép ghép bộ: Giả sử cho hai bộ u = (a1,. . ., an) và v = (b1,. . ., bm). Phép ghép bộ u với bộ v, ký hiệu (u,v), đƣợc định nghĩa (u,v) = (a1,. . ., an, b1,. . ., bm) Phép kết nối hai quan hệ thực chất là phép ghép các cặp bộ của hai quan hệ thoả mãn một điều kiện nào đó trên chúng, điều kiện đó đƣợc gọi là điều kiện kết nối hay biểu thức kết nối. Biểu thức kết nối đƣợc định nghĩa là phép hội của các toán hạng, mỗi toán hạng là một phép so sánh đơn giản giữa một thuộc tính của quan hệ r và một thuộc tính của quan hệ s.
  • 15. 15 Phép kết nối θ (Inner join, join) Định nghĩa: Cho 2 quan hệ r(U) và s(V) θ là một trong các phép toán số học: , , , , =,  Phép kết nối giữa quan hệ r đối với thuộc tính A U và quan hệ s đối với thuộc tính B V, đƣợc ký hiệu r s r s= {<u,v>| uU  v V u[A] θ v[B] } Phép kết nối chỉ thực hiện đƣợc khi θ thực hiện đƣợc giữa A và B. Nếu không dựa trên phép so sánh θ thì r s là phép tích Descartes, nếu θ là phép so sánh “=” thì gọi là phép kết nối bằng. A θ B A θ B A θ B
  • 16. 16 Phép kết nối (Join) Ví dụ : r ( A B C ) s( C D E ) r  s = ( A B C C D E) a1 1 1 1 d1 e1 a1 1 1 1 d1 e1 a2 2 1 2 d2 e2 a2 2 1 1 d1 e1 a1 2 2 3 d3 e3 a2 2 1 2 d2 e2 a1 2 2 1 d1 e1 a1 2 2 2 d2 e2 B≥ C Kết nối tự nhiên r(ABC) * s(CDE) = ( A B C D E) a1 1 1 d1 e1 a2 2 1 d1 e1 a1 2 2 d2 e2
  • 17. 17 Phép kết nối tự nhiên (Natural-Join Operation) Nếu kết nối θ dựa trên phép so sánh “=“ tại các thuộc tính cùng tên của 2 quan hệ R và S và 1 trong 2 thuộc tính đó bị loại bỏ qua phép chiếu thì gọi là phép kết nối tự nhiên, ký hiệu *. Ví dụ: Tìm tên các môn học có dạy trong học kỳ 2 10-11. MAMH TH409 TH364 TH324 A: mamh STT_KH = 2  NKHOA = ’10-11’(DAY) MAMH TENMON TH409 Cơ Sở Dữ Liệu TH490 Cấu Trúc Dữ Liệu & GT TH364 Trí Tuệ Nhân Tạo TH324 Giải Thuật MAMH TENMON TH409 Cơ Sở Dữ Liệu TH364 Trí Tuệ Nhân Tạo TH324 Giải Thuật B: mamh, TenMon (MON) A * B Những dòng không có ở cả 2 bảng sẽ không có mặt ở bảng KQ
  • 18. 18 Phép kết nối ngoài (Outer join) Định nghĩa: Phép toán này cho phép làm việc với thông tin bị thiếu, tức là vẫn thực hiện phép kết nối tự nhiên trên các trị trống của thuộc tính dùng để kết nối. Có 3 loại kết nối mở rộng: trái, phải và hai bên Cho 2 quan hệ r và s: – Trái: r s = p  ( r * s ) • p={<u,v>| u  r, u không tƣơng ứng với bộ nào của s, v s, các giá trị của các thuộc tính trong v đều là null } – Phải: r s = q  ( r * S ) • q={<u,v>| v  s, v không tƣơng ứng với bộ nào của r, u  u, các giá trị của các thuộc tính trong u đều là null } – Hai bên: r s = p  q  ( r * s ) • p và q đƣợc định nghĩa nhƣ trên.
  • 19. 19 Phép kết nối ngoài – ví dụ (Outer join) MAGV MAMH 1231 TH409 1232 TH409 1232 TH334 1255 TH490 1957 TH333 MAGV HOTEN_GV 1250 Lê Phú Thọ 1255 Nguyễn Khuyến 1256 Đào Anh Vũ 1231 Trần Ngân Bình 1232 Phan Phƣơng Lan MAGV HOTEN_GV MAGV MAMH 1250 Lê Phú Thọ NULL NULL 1255 Nguyễn Khuyến 1255 TH490 1256 Đào Anh Vũ NULL NULL 1231 Trần Ngân Bình 1231 TH409 1232 Phan Phƣơng Lan 1232 TH409 1232 Phan Phƣơng Lan 1232 TH334 MAGV MAMH MAGV HOTEN_GV 1231 TH409 1231 Trần Ngân Bình 1232 TH409 1232 Phan Phƣơng Lan 1232 TH334 1232 Phan Phƣơng Lan 1255 TH490 1255 Nguyễn Khuyến 1957 TH333 NULL NULL R: DS GV của Khoa S: Phân công dạy trong HK này R S R S R S ?
  • 20. 20 Phép gán (Assignment) Dùng để diễn tả câu truy vấn phức tạp. Ký hiệu: A  B Ví dụ: R(HO,TEN,LUONG) HONV,TENNV,LUONG(NHANVIEN) Kết quả bên phải của phép gán đƣợc gán cho biến quan hệ nằm bên trái.
  • 21. 21 Định nghĩa: R và S là hai quan hệ, R+ và S+ lần lƣợt là tập thuộc tính của R và S. Điều kiện S+ và S+ là tập con thật sự của R+. Q là kết quả phép chia giữa R và S, Q+ = R+ - S+ Có thể diễn đạt bằng phép toán đại số nhƣ sau: Phép chia (Division) }),(,/{ RstSstSRQ  21 12 1 ))(( )( TTT RTST RT SR SR         
  • 22. 22 Ví dụ: Phép chia Mahv HV01 HV03 KETQUATHI Mahv Mamh Diem HV01 CSDL 7.0 HV02 CSDL 8.5 HV01 CTRR 8.5 HV03 CTRR 9.0 HV01 THDC 7.0 HV02 THDC 5.0 HV03 THDC 7.5 HV03 CSDL 6.0 MONHOC Mamh Tenmh CSDL Co so du lieu CTRR Cau truc roi rac THDC Tin hoc dai cuong KETQUA MONHOC KETQUAMONHOC ][ ],[ MamhMONHOCMONHOC MamhMahvKETQUATHIKETQUA  
  • 23. 23 Hàm tính toán và gom nhóm Hàm tính toán gồm các hàm: avg(), min(), max(), sum(), count(). Phép toán gom nhóm: – E là biểu thức đại số quan hệ – Gi là thuộc tính gom nhóm (rỗng, nếu không gom nhóm) – Fi là hàm tính toán – Ai là tên thuộc tính )()(),...,(),(,...,, 221121 Ennn AFAFAFGGG 
  • 24. 24 Hàm tính toán và gom nhóm Điểm thi cao nhất, thấp nhất, trung bình của môn CSDL? Điểm thi cao nhất, thấp nhất, trung bình của từng môn? )()(),min(),max( KETQUATHIDiemavgDiemDiemMamh  )(CSDL''Mamh)(),min(),max( KETQUATHIDiemagvDiemDiem  
  • 25. 25 Ví dụ 1: S# SNAME STATUS CITY S1 Smith 20 London S2 Jones 10 Paris S3 Kery 30 Roma P# PNAME COLOR WEIGHT P1 Nut Red 12 P2 Bolt Green 17 P3 Screw Blue 17 P4 Screw Red 14 S# P# QTY S1 P1 300 S1 P2 200 S1 P3 400 S2 P1 300 S2 P2 400 S3 P4 200 S P SP Cho sơ đồ quan hệ sau :
  • 26. 26 S# SNAME STATUS CITY S1 Smith 20 London S2 Jones 10 Paris S3 Kery 30 Roma P# PNAME COLOR WEIGHT P1 Nut Red 12 P2 Bolt Green 17 P3 Screw Blue 17 P4 Screw Red 14 S# P# QTY S1 P1 300 S1 P2 200 S1 P3 400 S2 P1 300 S2 P2 400 S3 P4 200 S P SP Liệt kê danh sách các mặt hàng màu đỏ : COLOR = „Red‟(P) Liệt kê P#, PName các mặt hàng màu đỏ và có Weight >15 : P#,Pname (Color = ‟Red‟ ^ Weight > 15(P)) Liệt kê S# của các hãng cung ứng mặt hàng „P1‟ hoặc „P2‟. S# (P# = ‟P1‟ v P# = „P2‟(SP)) Thực hiện các câu hỏi sau bằng ngôn ngữ đại số QH
  • 27. 27 S# SNAME STATUS CITY S1 Smith 20 London S2 Jones 10 Paris S3 Kery 30 Roma P# PNAME COLOR WEIGHT P1 Nut Red 12 P2 Bolt Green 17 P3 Screw Blue 17 P4 Screw Red 14 S# P# QTY S1 P1 300 S1 P2 200 S1 P3 400 S2 P1 300 S2 P2 400 S3 P4 200 S P SP Thực hiện các câu hỏi sau bằng ngôn ngữ đại số QH Liệt kê S# của các hãng cung ứng cả hai mặt hàng „P1‟ và P2‟ S# (P# = ‟P1‟ (SP))  s# (P# = ‟P2‟(SP)) Liệt kê S# của các hãng cung ứng ít nhất một Mhàng màu đỏ. S# (SP * COLOR=‟Red‟(P)) Liệt kê S# của các hãng cung ứng tất cả các mặt hàng. S#,P# (SP)  P#(P)
  • 28. 28 Ví dụ 2: GIANGVIEN (MAGV, HOTENGV) SINHVIEN (MASV, HOTENSV, NAMNHAPHOC) LOAIDETAI (MALOAI, TENLOAI) DETAI (MADETAI, TENDETAI, MAGV, MALOAI) DETAI_SINHVIEN (MADETAI, MASV) Phát biểu: •Mỗi một đề tài thuộc duy nhất một loại và có một giảng viên hướng dẫn. •Một đề tài có thể có một hoặc nhiều sinh viên cùng tham gia làm. •Một sinh viên có thể tham gia làm một hay nhiều đề tài.
  • 29. 29 Ví dụ: Dùng Đại số quan hệ GIANGVIEN (MAGV, HOTENGV) SINHVIEN (MASV, HOTENSV, NAMNHAPHOC) LOAIDETAI (MALOAI, TENLOAI) DETAI (MADETAI, TENDETAI, MAGV, MALOAI) DETAI_SINHVIEN (MADETAI, MASV) Câu 1: Liệt kê mã sinh viên có tham gia đề tài với các mã đề tài là „HTT1‟ và „HTT2‟. MASV(MADETAI = ‟HTT1‟  MADETAI= ‟HTT2‟ (DETAI_SINHVIEN)) MASV(MADETAI = ‟HTT1‟ (DETAI_SINHVIEN))  MASV(MADETAI = ‟HTT2‟ (DETAI_SINHVIEN ))
  • 30. 30 Ví dụ: Dùng Đại số quan hệ GIANGVIEN (MAGV, HOTENGV) SINHVIEN (MASV, HOTENSV, NAMNHAPHOC) LOAIDETAI (MALOAI, TENLOAI) DETAI (MADETAI, TENDETAI, MAGV, MALOAI) DETAI_SINHVIEN (MADETAI, MASV) Câu 1b: Liệt kê mã đề tài được thực hiện bởi sinh viên có họ tên là “Nguyễn Văn Dũng” MADETAI(DETAI_SINHVIEN HOTENSV=‟Nguyễn Văn Dũng‟(SINHVIEN))
  • 31. 31 Ví dụ 3: Lược đồ CSDL quản lý bán hàng gồm có các quan hệ sau: KHACHHANG (MAKH, HOTEN, DCHI, SODT, NGSINH, DOANHSO, NGDK) NHANVIEN (MANV,HOTEN, NGVL, SODT) SANPHAM (MASP,TENSP, DVT, NUOCSX, GIA) HOADON (SOHD, NGHD, MAKH, MANV, TRIGIA) CTHD (SOHD,MASP,SL)
  • 32. 32 Mô tả các câu truy vấn sau bằng ĐSQH 1. In ra danh sách các sản phẩm (MASP,TENSP) do “Han Quoc” sản xuất có giá từ 30.000 dến 40.000 2. In ra danh sách các khách hàng (MAKH, HOTEN) đã mua hàng trong ngày 1/1/2014. 3. In ra danh sách các sản phẩm (MASP,TENSP) do “Han Quoc” sản xuất hoặc các sản phẩm dƣợc bán ra trong ngày 1/1/2014. 4. Tìm các số hóa đơn mua cùng lúc 2 sản phẩm có mã số “BB01” và “BB02”. 5. In ra danh sách các sản phẩm (MASP,TENSP) do “Han Quoc” sản xuất không bán dƣợc trong nam 2013. 6. Tìm số hóa đơn đã mua tất cả các sản phẩm do Singapore sản xuất
  • 33. 33 1. In ra danh sách các sản phẩm (MASP, TENSP) do “Han Quoc” sản xuất có giá từ 30.000 dến 40.000. ],))[000.40000.30()''((: TENSPMASPGIAHanQuocNUOCSXSANPHAM  SANPHAMGIAHanQuocNUOCSXTENSPMASP )000.40000.30()''(,  Hoặc: KHACHHANG (MAKH, HOTEN, DCHI, SODT, NGSINH, DOANHSO, NGDK) NHANVIEN (MANV,HOTEN, NGVL, SODT) SANPHAM (MASP,TENSP, DVT, NUOCSX, GIA) HOADON (SOHD, NGHD, MAKH, MANV, TRIGIA) CTHD (SOHD,MASP,SL)
  • 34. 34 2. In ra danh sách các khách hàng (MAKH, HOTEN) đã mua hàng trong ngày 1/1/2014. )( )#2014/1/1#(, KHACHHANGHOADON MAKH NGHDHOTENMAKH  KHACHHANG (MAKH, HOTEN, DCHI, SODT, NGSINH, DOANHSO, NGDK) NHANVIEN (MANV,HOTEN, NGVL, SODT) SANPHAM (MASP,TENSP, DVT, NUOCSX, GIA) HOADON (SOHD, NGHD, MAKH, MANV, TRIGIA) CTHD (SOHD,MASP,SL)
  • 35. 35 3. In ra danh sách MSP, TENSP các sản phẩm do “Han Quoc” sản xuất hoặc các sản phẩm đƣợc bán ra trong ngày 1/1/2014. BAC SANPHAMCTHDHOADONB SANPHAMA MASPSOHD NGHDTENSPMASP HanQuocNUOCSXTENSPMASP      )))((( )( #2014/1/1#, '',   KHACHHANG (MAKH, HOTEN, DCHI, SODT, NGSINH, DOANHSO, NGDK) NHANVIEN (MANV,HOTEN, NGVL, SODT) SANPHAM (MASP,TENSP, DVT, NUOCSX, GIA) HOADON (SOHD, NGHD, MAKH, MANV, TRIGIA) CTHD (SOHD,MASP,SL)
  • 36. 36 4. Tìm các số hóa đơn đã mua cùng lúc các sản phẩm có mã số “BB01” và “BB02”. BAC CTHDB CTHDA BBMASPSOHD BBMASPSOHD      )( )( '02' '01'   KHACHHANG (MAKH, HOTEN, DCHI, SODT, NGSINH, DOANHSO, NGDK) NHANVIEN (MANV,HOTEN, NGVL, SODT) SANPHAM (MASP,TENSP, DVT, NUOCSX, GIA) HOADON (SOHD, NGHD, MAKH, MANV, TRIGIA) CTHD (SOHD,MASP,SL)
  • 37. 37 5. In ra MASP, TENSP các sản phẩm do „HanQuoc‟ sản xuất không bán đƣợc trong năm 2013. )( )( ))(( )( )2013)(()''(, '', CAD BC HOADONCTHDSANPHAMB SANPHAMA NGHDyearHanQuocNUOCSXTENSPMASP SOHDMASP HanQuocNUOCxTENSPMASP          KHACHHANG (MAKH, HOTEN, DCHI, SODT, NGSINH, DOANHSO, NGDK) NHANVIEN (MANV,HOTEN, NGVL, SODT) SANPHAM (MASP,TENSP, DVT, NUOCSX, GIA) HOADON (SOHD, NGHD, MAKH, MANV, TRIGIA) CTHD (SOHD,MASP,SL)
  • 38. 38 ABC CTHDSANPHAMB SANPHAMA MASP SingaporeNUOCSXSOHDMASP SingaporeNUOCSXMASP      )( )( '', ''   6. Tìm số hóa đơn đã mua tất cả các sản phẩm do Singapore sản xuất KHACHHANG (MAKH, HOTEN, DCHI, SODT, NGSINH, DOANHSO, NGDK) NHANVIEN (MANV,HOTEN, NGVL, SODT) SANPHAM (MASP,TENSP, DVT, NUOCSX, GIA) HOADON (SOHD, NGHD, MAKH, MANV, TRIGIA) CTHD (SOHD,MASP,SL)
  • 39. 39 Phần 2 Ngôn ngữ truy vấn SQL
  • 40. 40 Giới thiệu SQL (Structured Query Language) • Ngôn ngữ cấp cao • Đƣợc phát triển bởi IBM, năm 1970 • Đƣợc chuẩn hóa bởi ANSI và ISO(SQL-86, SQL-92, SQL-99) Bao gồm: • Ngôn ngữ định nghĩa dữ liệu. Ngôn ngữ thao tác dữ liệu • Ngôn ngữ truy vấn dữ liệu • Ngôn ngữ quản lý dữ liệu Các hệ quản trị CSDL đều có cách cài đặt ngôn ngữ khác nhau nhƣng đều dựa trên chuẩn của SQL •
  • 41. 41 Ngôn ngữ dịnh nghia dữ liệu (DDL) Dùng để : Mô tả lƣợc đồ cho các quan hệ Mô tả miền giá trị cho các thuộc tính Mô tả các ràng buộc toàn vẹn Chỉ mục trên mỗi quan hệ Gồm các lệnh CREATE/DROP DATABASE CREATE/DROP/ALTER TABLE ADD/DROP/CHANGE COLUMN ADD/DROP CONSTRAINT
  • 42. 42 Các lệnh thao tác với bảng Tạo bảng : CREAT TABLE <Tên_bảng> ( <tên_ cột_1> <loại dữ_liệu_1> < kích thƣớc 1>, …………………. <tên_ cột_n> <loại dữ_liệu_n> < kích thƣớc n>, [CONSTRAINT <tên ràng buộc toàn vẹn>]|NULL|NOT NULL| Primary Key (Khoá chính) [Unique (Khoá )] [Foreign Key (Khoá _ ngoài) Reference Tên_bảng] [Check <Điều_ kiện_ràng_buộc>] );
  • 43. 43 Các lệnh thao tác với bảng Trong đó : • Chỉ thị NOT NULL : chỉ rằng cột không nhận giá trị rỗng. Ngầm định là Null. Thuộc tính khoá ngầm định là Not Null. • Chỉ thị COSNTRAINT<tên các ràng buộc toàn vẹn>: khai báo các ràng buộc toàn vẹn của CSDL. • Chỉ thị Primary Key (Khoá chính): Khai báo khoá chính của mảng • Chỉ thị Unique (Khoá) : Khai báo các khoá khác nếu có • Chỉ thị Foreign Key Khoá_ ngoài Reference Tên_ bảng: Khai báo các khoá ngoài của bảng • Chỉ thị Check Điều_kiện_ràng_buộc : Khai báo các ràng buộc dữ liệu
  • 44. 44 Các lệnh thao tác với bảng Ví dụ : Tạo bảng S : CREATE TABLE S (S# INTEGER NOT NULL, SNAME VARCHAR(8) NOT NULL, STATUS INTEGER NOT NULL, CITY VARCHAR(30) NOT NULL CONSTRAINT S_Khoá_chính PRIMARY KEY (S#) )
  • 45. 45 Các lệnh thao tác với bảng
  • 46. 46 Các lệnh thao tác với bảng Thêm một cột : ALTER TABLE <Tên_bảng> ADD COLUMN <Tên_cột><Kiểu_dữ_liệu >[NOT NULL] Xoá một cột : ALTER TABLE <Tên_bảng> DROP COLUMN <Tên_cột> Sửa kiểu dữ liệu của một cột đã định nghĩa : ALTER TABLE <Tên_bảng> CHANGE COLUMN <Tên_cột> <Kiểu_dữ_liệu_mới >
  • 47. 47 Các lệnh thao tác với bảng Thêm một ràng buộc : ALTER TABLE <Tên_bảng> ADD CONSTRAINT <Tên_ràng_buộc><Kiểu_ràng_buộc > Xóa một ràng buộc : ALTER TABLE <Tên_bảng> DROP CONTRAINT <Tên_ràng_buộc> Xoá bảng : DROP TABLE <tên_bảng> VD : DROP TABLE NHANVIEN
  • 48. 48 Truy vấn dữ liệu Mệnh đề dạng SELECT . . . FROM . . . WHERE Cú pháp : SELECT [DISTINCT] <dsách cột>|*|<biểu thức số học> FROM <danh sách tên bảng>|<danh sách các view> [WHERE <biểu thức điều kiện>] [GROUP BY<dsách tên cột>[HAVING<bthức điều kiện>]] [ORDER BY<dsách tên cột>|<biểu thức>] [ASC|DESC] [UNION | INTERSECT | MINUS<Câu truy vấn>] Kết quả của câu truy vấn là một bảng dữ liệu được kết xuất từ 1 hoặc nhiều bảng
  • 49. 49 Truy vấn đơn giản trên một bảng Tìm kiếm không điều kiện – Cho biết tên của các nhà cung cấp : • Sname (S) • Select SNAME From S – Cho biết tên của các nhà cung cấp (loại bỏ trùng lặp) dùng từ khóa Distinct trước SNAME : • Select Distinct SNAME From S – Liệt kê danh sách các nhà cung cấp : • Select * From S – Từ khóa “*” thay thế cho toàn bộ thuộc tính của một quan hệ
  • 52. 52 Các phép toán logic trong SQL Dùng trong mệnh đề WHERE và HAVING để xây dựng các điều kiện chọn • =,<>, <, >, ≤, ≥ • And, Or, Not • Between<giá trị đầu> And <giá trị sau> • In (<Danh sách giá trị>) Đưa ra danh sách mã của các nhà cung cấp đã cung cấp „P1‟ với số lượng >50 Select S# From SP Where P# = „P1‟ And QTY>50 Ví dụ : Đưa ra danh sách mã của các nhà cung cấp đã cung cấp 1 trong hai mặt hàng „P1‟ hoặc „P2‟ Select S# From SP Where P# = „P1‟ Or P# = „P2‟
  • 53. 53 Tìm kiếm sử dụng In và Between Tìm những mặt hàng đã cung cấp với số lƣợng từ 1000 đến 2000 Select Distinct P# From SP Where QTY Between 1000 And 2000 Tìm mã số những nhà cung cấp đã cung cấp ít nhất một trong các mặt hàng P1, P2, P3 Select S# From SP Where P# In („P1‟,‟P2‟,‟P3‟)
  • 54. 54 Truy vấn có xử lý xâu kí tự SQL dùng toán tử LIKE để so sánh xâu. SQL sử dụng kí tự ' %' để thay thế cho một xâu con, dấu phân cách '_' để thay thế cho một kí tự. Ví dụ : – A%B : xâu kí tự bất kì bắt dầu bằng chữ A và kết thúc bằng chữ B – %a : xâu kí tự bất kì có kết thúc là a – A_B : xâu gồm 3 kí tự, có kí tự thứ hai bất kì – A_ : xâu gồm 2 kí tự bắt đầu bằng chữ A Sử dụng trong trƣờng hợp không nhớ rõ giá trị cụ thể chính xác
  • 55. 55 Truy vấn có xử lý xâu kí tự Ví dụ: – Đƣa ra thông tin về hãng cung ứng có tên là bắt đầu bằng chữ „H‟. Select * From S Where SNAME Like „H%‟ – Đƣa ra thông tin về sản phẩm mà tên có chứa từ „bánh‟ Select * From P Where PNAME Like „%banh%‟
  • 57. 57 Ví dụ: GIANGVIEN (MAGV, HOTENGV) SINHVIEN (MASV, HOTENSV, NAMNHAPHOC) LOAIDETAI (MALOAI, TENLOAI) DETAI (MADETAI, TENDETAI, MAGV, MALOAI) DETAI_SINHVIEN (MADETAI, MASV) Phát biểu: •Mỗi một đề tài thuộc duy nhất một loại và có một giảng viên hướng dẫn. •Một đề tài có thể có một hoặc nhiều sinh viên cùng tham gia làm. •Một sinh viên có thể tham gia làm một hay nhiều đề tài.
  • 58. 58 Ví dụ: Dùng SQL GIANGVIEN (MAGV, HOTENGV) SINHVIEN (MASV, HOTENSV, NAMNHAPHOC) LOAIDETAI (MALOAI, TENLOAI) DETAI (MADETAI, TENDETAI, MAGV, MALOAI) DETAI_SINHVIEN (MADETAI, MASV) Câu 2: Liệt kê danh sách gồm Mã sinh viên, Họ tên sinh viên mà làm ít nhất 2 loại đề tài khác nhau. Select SV.MASV, SV.HOTENSV From (SINHVIEN as SV INNER JOIN DETAI_SINHVIEN DTSV on SV.MASV = DTSV.MASV) INNER JOIN DETAI DT on DT.MADT = DTSV.MADT Group by SV.MASV, SV.HOTENSV Having count(distinct DT.MALOAI) >= 2
  • 59. 59 Ví dụ 1: Dùng SQL GIANGVIEN (MAGV, HOTENGV) SINHVIEN (MASV, HOTENSV, NAMNHAPHOC) LOAIDETAI (MALOAI, TENLOAI) DETAI (MADT, TENDT, MAGV, MALOAI) DETAI_SINHVIEN (MADT, MASV) Câu 3: Liệt kê danh sách gồm mã đề tài, tên đề tài, họ tên giảng viên hƣớng dẫn mà chỉ có duy nhất một sinh viên tham gia Select DT.MADT, DT.TENDT, GV.HOTENGV From ( DETAI as DT inner join GIANGVIEN GV on GV.MAGV = DT.MAGV) Inner join DETAI_SINHVIEN DTSV on DTSV.MADT = DT.MADT Group by DT.MADT, DT.TENDT, GV.HOTENGV Having count(DTSV.MASV) = 1
  • 60. 60 Ví dụ 2: LOAISP (MA_LOAI, MO_TA, HAN_LUU_KHO) SANPHAM (MA_SAN_PHAM, TEN_SAN_PHAM, MA_LOAI) PHIEUNHAPXUAT(MA_SO_PHIEU, NGAY_NHAP, LOAI_PHIEU) CHITIETPHIEU (MA_SO_PHIEU, MA_SAN_PHAM, SO_LUONG) Ghi chú : <<HAN_LUU_KHO>>: thời gian tính bằng đơn vị là ngày để cho sản phẩm thuộc loại đó có thể dự trữ trong kho mà không bị hỏng. <<LOAI_PHIEU>> trong bảng Phieunhapxuat: LOAI_PHIEU = 1: nhập LOAI_PHIEU = 0: xuất Phát biểu : - Mỗi một sản phẩm thuộc một loại sản phẩm. - Mỗi lần nhập một sản phẩm về kho hay xuất ra kho đều đƣợc ghi nhận trong bảng “PHIEUNHAPXUAT” với thuộc tính loại để phân biệt. - Mỗi lần nhập hay xuất kho những mặt hàng nào thì đƣợc ghi nhận trong bảng CHITIETPHIEU.
  • 61. 61 Ví dụ 2: Dùng Đại số quan hệ LOAISP (MA_LOAI, MO_TA, HAN_LUU_KHO) SANPHAM (MA_SAN_PHAM, TEN_SAN_PHAM, MA_LOAI) PHIEUNHAPXUAT(MA_SO_PHIEU, NGAY_NHAP, LOAI_PHIEU) CHITIETPHIEU (MA_SO_PHIEU, MA_SAN_PHAM, SO_LUONG) Câu 1a: Liệt kê mã số phiếu trong đó có chứa cả hai sản phẩm với các mã sản phẩm là „MM1‟ và „MM2‟. MA_SO_PHIEU(MA_SAN_PHAM = ‟MM1‟ (CHITIETPHIEU))  MA_SO_PHIEU(MA_SAN_PHAM = ‟MM2‟ (CHITIETPHIEU ))
  • 62. 62 Ví dụ 2: Dùng Đại số quan hệ LOAISP (MA_LOAI, MO_TA, HAN_LUU_KHO) SANPHAM (MA_SAN_PHAM, TEN_SAN_PHAM, MA_LOAI) PHIEUNHAPXUAT(MA_SO_PHIEU, NGAY_NHAP, LOAI_PHIEU) CHITIETPHIEU (MA_SO_PHIEU, MA_SAN_PHAM, SO_LUONG) Câu 1b: Liệt kê mã số phiếu trong đó có chứa sản phẩm với tên sản phẩm là „Bút bi‟ MA_SO_PHIEU (CHITIETPHIEU TEN_SAN_PHAM=‟Bút bi‟(SANPHAM))
  • 63. 63 Ví dụ 2: Dùng SQL LOAISP (MA_LOAI, MO_TA, HAN_LUU_KHO) SANPHAM (MA_SAN_PHAM, TEN_SAN_PHAM, MA_LOAI) PHIEUNHAPXUAT(MA_SO_PHIEU, NGAY_NHAP, LOAI_PHIEU) CHITIETPHIEU (MA_SO_PHIEU, MA_SAN_PHAM, SO_LUONG) Câu 2: Liệt kê danh sách gồm mã sản phẩm và tên sản phẩm mà có khả năng lƣu giữ trong kho hơn 21 ngày. SELECT SP.MA_SAN_PHAM, SP.TEN_SAN_PHAM FROM SANPHAM SP INNER JOIN LOAISP L ON L.MA_LOAI = SP.MA_LOAI WHERE L.HAN_LUU_KHO > 21
  • 64. 64 Ví dụ 2: Dùng SQL LOAISP (MA_LOAI, MO_TA, HAN_LUU_KHO) SANPHAM (MA_SAN_PHAM, TEN_SAN_PHAM, MA_LOAI) PHIEUNHAPXUAT(MA_SO_PHIEU, NGAY_NHAP, LOAI_PHIEU) CHITIETPHIEU (MA_SO_PHIEU, MA_SAN_PHAM, SO_LUONG) Câu 3: Liệt kê danh sách gồm mã sản phẩm, tên sản phẩm mà không đƣợc nhập trong ngày 25/02/2014 SELECT MA_SAN_PHAM,TEN_SAN_PHAM FROM SANPHAM WHERE MA_SAN_PHAM NOT IN ( SELECT CT.MA_SAN_PHAM FROM CHITIETPHIEU CT INNER JOIN PHIEUNHAPXUAT P ON P.MA_SO_PHIEU = CT.MA_SO_PHIEU WHERE P.NGAY_NHAP = „25/02/2014‟AND P.LOAI_PHIEU = 1 )
  • 65. 65 Ví dụ 2: Dùng SQL LOAISP (MA_LOAI, MO_TA, HAN_LUU_KHO) SANPHAM (MA_SAN_PHAM, TEN_SAN_PHAM, MA_LOAI) PHIEUNHAPXUAT(MA_SO_PHIEU, NGAY_NHAP, LOAI_PHIEU) CHITIETPHIEU (MA_SO_PHIEU, MA_SAN_PHAM, SO_LUONG) Câu 4: Liệt kê danh sách gồm số phiếu, ngày nhập phiếu mà phiếu này nhập vào nhiều hơn 2 loại hàng hóa. SELECT P.MA_SO_PHIEU, P.NGAY_NHAP FROM (PHIEUNHAPXUAT P INNER JOIN CHITIETPHIEU CT ON CT.MA_SO_PHIEU=P.MA_SO_PHIEU) INNER JOIN SANPHAM SP ON SP.MA_SAN_PHAM= CT.MA_SAN_PHAM WHERE P.LOAIPHIEU = 1 GROUP BY P.MA_SO_PHIEU,P.NGAY_NHAP HAVING COUNT(DISTINCT SP.MA_LOAI) > 2
  • 66. 66 Ví dụ 3: Dùng Đại số quan hệ PHONGHOC (MAPHONG, SONGUOITOIDA) THIETBI (MATB, TENTB, SOLUONGHIENTAI) GIANGVIEN (MAGV, TENGV, NAMSINH, PHAI) KHOAHOC (MAKH, NGAYBATDAU, SONGAY, SONGUOITHGIA, MAPHONG) SUDUNGTHIETBI (MAKH, MATB, SOLUONGSUDUNG) GIANGVIENDAY (MAKH, MAGV, NGAYBATDAU, NGAYKETTHUC ) Câu 1a: Liệt kê mã giảng viên đã giảng dạy cả hai khóa học với các mã khóa học là „MK1‟ và „MK2‟. MAGV(MAKH = ‟MK1‟ (GIANGVIENDAY))  MAGV(MAKH = ‟MK2‟ (GIANGVIENDAY))
  • 67. 67 Dùng Đại số quan hệ PHONGHOC (MAPHONG, SONGUOITOIDA) THIETBI (MATB, TENTB, SOLUONGHIENTAI) GIANGVIEN (MAGV, TENGV, NAMSINH, PHAI) KHOAHOC (MAKH, NGAYBATDAU, SONGAY, SONGUOITHGIA, MAPHONG) SUDUNGTHIETBI (MAKH, MATB, SOLUONGSUDUNG) GIANGVIENDAY (MAKH, MAGV, NGAYBATDAU, NGAYKETTHUC ) Câu 1b: Liệt kê mã khóa học có sử dụng ít nhất một thiết bị tên là „Máy chiếu‟ MKH (SUDUNGTHIETBI TENTB=‟Máy chiếu‟(THIETBI))
  • 68. 68 Dùng SQL: PHONGHOC (MAPHONG, SONGUOITOIDA) THIETBI (MATB, TENTB, SOLUONGHIENTAI) GIANGVIEN (MAGV, TENGV, NAMSINH, PHAI) KHOAHOC (MAKH, NGAYBATDAU, SONGAY, SONGUOITHGIA, MAPHONG) SUDUNGTHIETBI (MAKH, MATB, SOLUONGSUDUNG) GIANGVIENDAY (MAKH, MAGV, NGAYBATDAU, NGAYKETTHUC ) Câu 2: Viết câu truy vấn cho ra danh sách gồm mã thiết bị, tên thiết bị mà chƣa từng đƣợc dùng cho bất cứ khóa học nào từ đầu năm 2014. SELECT MATB,TENTB FROM THIETBI WHERE MATB NOT IN ( SELECT SD.MATB FROM KHOAHOC KH INNER JOIN SUDUNGTHIETBI SD ON SD.MAKH = KH.MAKH WHERE YEAR(KH.NGAYBATDAU) >= 2014)
  • 69. 69 Dùng SQL PHONGHOC (MAPHONG, SONGUOITOIDA) THIETBI (MATB, TENTB, SOLUONGHIENTAI) GIANGVIEN (MAGV, TENGV, NAMSINH, PHAI) KHOAHOC (MAKH, NGAYBATDAU, SONGAY, SONGUOITHGIA, MAPHONG) SUDUNGTHIETBI (MAKH, MATB, SOLUONGSUDUNG) GIANGVIENDAY (MAKH, MAGV, NGAYBATDAU, NGAYKETTHUC ) Câu 3: Viết câu truy vấn cho ra danh sách gồm mã khóa học, ngày bắt đầu với điều kiện khóa học này có số ngƣời tham gia lớn hơn 50, kéo dài hơn 3 ngày, và có hơn 4 loại thiết bị khác nhau đƣợc sử dụng. SELECT KH.MAKH, KH.NGAYBATDAU FROM KHOAHOC KH INNER JOIN SUDUNGTHIETBI SD ON SD.MAKH = KH.MAKH WHERE KH.SONGUOITHAMGIA > 50 AND KH.SONGAY > 3 GROUP BY KH.MAKH, KH.NGAYBATDAU HAVING COUNT(SD.MATB) > 4
  • 70. 70 Dùng SQL PHONGHOC (MAPHONG, SONGUOITOIDA) THIETBI (MATB, TENTB, SOLUONGHIENTAI) GIANGVIEN (MAGV, TENGV, NAMSINH, PHAI) KHOAHOC (MAKH, NGAYBATDAU, SONGAY, SONGUOITHGIA, MAPHONG) SUDUNGTHIETBI (MAKH, MATB, SOLUONGSUDUNG) GIANGVIENDAY (MAKH, MAGV, NGAYBATDAU, NGAYKETTHUC ) Câu 4: Viết câu truy vấn cho ra danh sách gồm mã thiết bị, tên thiết bị mà đƣợc sử dụng cho các khóa học đƣợc diễn ra trong ngày hôm nay. SELECT TB.MATB, TB.TENTB FROM (THIETBI TB INNER JOIN SUDUNGTHIETBI SD ON SD.MATB = TB.MATB) INNER JOIN KHOAHOC KH ON KH.MAKH = SD.MAKH WHERE GETDATE() >= KH.NGAYBATDAU AND GETDATE() <= (KH.NGAYBATDAU + KH.SONGAY)
  • 71. 71 Tối ưu hóa truy vấn
  • 72. 72 Mục đích của xử lý truy vấn: • Giảm thiểu thời gian xử lý • Giảm vùng nhớ trung gian • Sử dụng ít tài nguyên Chức năng của xử lý truy vấn: • Biến đổi một truy vấn phức tạp thành một truy vấn tƣơng đƣơng đơn giản hơn. • Phép biến đổi này phải đạt đƣợc cả về tính đúng đắn và hiệu quả • Mỗi cách biến đổi dẫn đến việc sử dụng tài nguyên máy tính khác nhau, nên vấn đề đặt ra là lựa chọn phƣơng án nào dùng tài nguyên ít nhất. GIỚI THIỆU VỀ XỬ LÝ TRUY VẤN
  • 73. 73 Nguyên tắc tối ƣu hoá • Ƣu tiên thực hiện các phép chiếu và chọn, nhằm giới hạn khối lƣợng dữ liệu trung gian. Giảm chi phí truy nhập bộ nhớ. • Trƣớc khi phải thực hiện phép tích Đề các, hãy tìm chiến lƣợc truy nhập tốt nhất vào CSDL. Ví dụ nhƣ sử dụng các phép sắp xếp, hoặc chọn chỉ số trên thành phần tham gia vào tích Đề các. • Thực hiện các phép kết nối cân bằng chi phí sẽ rẻ hơn nhiều so với chi phí thực hiện phép tích Đề các. • Nhóm các phép toán chọn và chiếu liên tiếp thành một phép toán duy nhất.
  • 74. 74 Nguyên tắc tối ƣu hoá (tt) • Nhóm các phép tích và chiếu liên tiếp thành một phép toán duy nhất. Trong khi thi thực hiện phép tích có thể giới hạn chi phí thực hiện bằng phép chiếu. • Tìm biểu thức chung trong một biểu thức. Nếu kết quả là một quan hệ không lớn lắm nhƣng tần suất xuất hiện nhiều lần, nên có biểu thức con chung. • Đánh giá sơ bộ trƣớc khi thực hiện câu hỏi. Số phép toán thực hiện, tổng chi phí thực hiện: thời gian, bộ nhớ ...
  • 75. 75 Các cách tối ƣu hóa truy vấn: 1. Cách 1: Tối ƣu về chi phí - Chi phí thời gian thực hiện truy vấn. - Chi phí lƣu trữ các kết quả trung gian. - Chi phi trao đổi giữa bộ nhớ trong và bộ nhớ ngoài. 2. Cách 2: Tối ƣu Heuristic - Bằng cách biến đổi biểu thức đại số quan hệ. Lý do: (R) , (R) << R R1, R2 << R1 R2 , R1X R2 - Biến đổi thứ tự thực hiện các phép toán của biểu thức ĐSQH sao cho các phép toán 1 ngôi đƣợc thực hiện trƣớc các phép toán 2 ngôi
  • 76. 76 QUÁ TRÌNH XỬ LÝ TRUY VẤN Bƣớc 1: – Duyệt truy vấn để biết truy vấn đƣợc viết bằng ngôn ngữ nào. – Kiểm tra: Kiểm tra cú pháp của truy vấn xem có hợp lệ hay không. – Xác nhận tính hợp lệ (các quan hệ, thuộc tính sử dụng trong truy vấn đã đƣợc khai báo hay chƣa?, sau bƣớc 1 truy vấn sẽ đƣợc biểu diễn bằng một biểu thức đại số quan hệ) Bƣớc 2: – Tối ƣu: Tìm ra phƣơng pháp thực hiện tối ƣu cho truy vấn. – Sau bƣớc này sẽ cho ra một biểu thức đại số quan hệ với chi phí thực hiện nhỏ nhất. Bƣớc 3: – Tạo mã sẽ tạo ra chƣơng trình bằng ngôn ngữ trong để thực hiện truy vấn. – Thực thi chƣơng trình để lấy về kết quả.
  • 77. 77 BIẾN ĐỔI TRUY VẤN SANG BIỂU THỨC ĐSQH Ví dụ: SELECT * FROM R WHERE E ↔ E (R) SELECT * FROM R, S WHERE E ↔ R1 ER2 •Tối ƣu bằng biến đổi biểu thức ĐSQH: Biến đổi thứ tự thực hiện các phép toán của biểu thức đại số quan hệ: - Các phép toán một ngôi đƣợc thực hiện trƣớc các phép toán hai ngôi
  • 78. 78 Các phép biến đổi tƣơng đƣơng (1-4)
  • 79. 79 Các phép biến đổi tƣơng đƣơng (4-8)
  • 80. 80 Các phép biến đổi tƣơng đƣơng (9-10)
  • 81. 81 Các phép biến đổi tƣơng đƣơng (11)
  • 82. 82 Các phép biến đổi tƣơng đƣơng (12)
  • 83. 83 THUẬT TOÁN TỐI ƯU HÓA CÂY ĐSQH • Bƣớc 1: Biểu diễn truy vấn dƣới dạng cây với lá là các quan hệ, đỉnh trong là các phép toán đại số quan hệ. • Bƣớc 2: Áp dụng các phép biến đổi tƣơng đƣơng đẩy các phép toán một ngôi xuống dƣới các phép toán hai ngôi. • Bƣớc 3: Thêm vào các phép chiếu để giảm bớt kích thƣớc của các quan hệ.
  • 84. 84 Ví dụ Xét 2 LĐQH: – NhanVien (MaNV, MasoDV, HoTen, NgaySinh, GioiTinh, Luong) – DonVi(MaDV, TenDV) Hãy liệt kê họ tên của các nhân viên nữ ở đơn vị có tên là “PhongDaoTao”:
  • 86. 86 (b) Hoten, MasoDV(Gioitinh=Nữ(Nhanvien) TenDV=„PhongDaotao‟(Donvi) MasoDV=MaDv
  • 87. 87 Ví dụ 2: Xét CSDL gồm các quan hệ sau: TUYEN (TC#, TTC, DAI) CAP (MC#, TGC, GIA, #N) L_DAT (TC#, MC#, SL) Trong đó: TC# Mã tuyến cáp TTC Tên tuyến cáp DAI Độ dài tuyến cáp SL Số lượng cáp lắp đặt Ngữ nghĩa: Trên một tuyến cáp có nhiều loại cáp khác nhau được lắp đặt. Một loại cáp có thể được lắp đặt trên nhiều tuyến. MC# Mã cáp TGC Tên gọi cáp GIA Đơn giá loại cáp #N Mã nước sản xuất cáp
  • 88. 88 Ví dụ: Hãy liệt kê tất cả thông tin về các tuyến cáp có độ dài trên 50 km và lắp đặt các loại cáp do Việt Nam (có mã là VNA) sản xuất. (a) #TC,TTC,DAI (DAI50  #N=VNA(TUYEN CAP L_DAT))
  • 89. 89 Ví dụ: Hãy liệt kê tất cả thông tin về các tuyến cáp có độ dài trên 50 km và lắp đặt các loại cáp do Việt Nam (có mã là VNA) sản xuất. (a) #TC,TTC,DAI (DAI50  #N=VNA(TUYEN CAP L_DAT)) (b) #TC,TTC,DAI (DAI50(TUYEN) L_DAT #=VNACAP)
  • 90. 90 THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Phần 3
  • 91. 91 3.1 Nguyên tắc thiết kế các lƣợc đồ quan hệ • Khi thiết kế một CSDL quan hệ: cần chọn lƣợc đồ CSDL phù hợp. • Trọng tâm của thiết kế các lƣợc đồ CSDL: phụ thuộc dữ liệu (Data Dependency) tức là các mức ràng buộc có thể giữa các giá trị hiện hữu của các lƣợc đồ. • Các vấn đề cần quan tâm khi thiết kế CSDL: – Dƣ thừa dữ liệu (Redundancy) – Không nhất quán (Inconsistency) – Dị thƣờng khi thêm bộ (Insertion anomalies) – Dị thƣờng khi xoá bộ (Deletion anomalies)
  • 92. 92 Ví dụ 3.1: Xét lƣợc đồ quan hệ BANHANG(Ngày, Mã hàng, Tên hàng, Đơn giá, Số lƣợng). Ngày Mã hàng Tên hàng Đơn giá Số lượng 01/06/2010 M1 Radio 1000 1 01/06/2010 M3 TV 4000 2 01/06/2010 M6 Xe đạp 1000 1 02/06/2010 M2 Máy giặt 3000 2 02/06/2010 M1 Radio 1000 3 03/06/2010 M4 Video 5000 2 01/06/2010 M9 Máy ảnh 2000 1
  • 93. 93 3.2 Phụ thuộc hàm Định nghĩa 3.1: Xét lƣợc đồ quan hệ gồm n thuộc tính – R(U), U={A1, A2,…, An} PTH giữa hai tập thuộc tính X, Y U – Ký hiệu: X  Y (đọc: X xác định hàm Y hay Y phụ thuộc hàm X) – r(R),  t1, t2  r nếu t1[X] = t2[X] thì t1[Y] = t2[Y]. – X là vế trái và Y là vế phải của PTH. Ví dụ 3.2 r(R) A B 1 4 1 5 3 7 r không thỏa A  B, nhƣng thỏa B  A NHANVIEN_PHONGBAN TenNV MaNV NgSinh Diachi MaPB TenPB TrPhong MaNV  MaPB MaPB  {TenPB, TrPhong}MaNV  TenNV
  • 94. 94 Bao đóng của tập PTH • Định nghĩa 3.2: Trên lƣợc đồ quan hệ R; F là tập các PTH, cho XY là một PTH. - Ta nói rằng tập PTH F suy diễn logic X  Y ký hiệu F╞═ X  Y, nếu bất kỳ quan hệ r của R thỏa các phụ thuộc trong F thì cũng thỏa X  Y. • Định nghĩa 3.3: Bao đóng của tập PTH (Closure of FD) F là tập các phụ thuộc hàm đƣợc suy diễn logic từ F, ký hiệu là F+, nghĩa là: F+ = { X  Y | F ╞═ X  Y}
  • 95. 95 Bao đóng của tập PTH • F là tập PTH trên R – F = ( MaNV  TenNV, MaPB  {TenPB, TrPhong}, MaNV  MaPB). – rR thỏa F và MaNV  {TenPB, TrPhong} cũng đúng với r thì MaNV {TenPB, TrPhong} gọi là đƣợc suy diễn từ F. • Bao đóng của F, ký hiệu F+, gồm – F và tất cả các PTH đƣợc suy diễn từ F. • F gọi là đầy đủ nếu F = F+.
  • 96. 96 Luật suy diễn • Để xác định đƣợc F+, hay nhận biết X  Y F+ ? • Luật suy diễn dùng để suy diễn một PTH mới từ một tập PTH cho trƣớc. • Hệ tiên đề Armstrong (Armstrong‟s axioms- 1974) – Phản xạ (Reflexivity): Y  X  X  Y. – Tăng trƣởng (Augmentation): X  Y XZ  YZ, với XZ=XZ. – Bắc cầu (Transitivity): X  Y, Y  Z  X  Z. • Các hệ quả: – Phân rã (Decomposition rule): X  YZ  X  Y, X  Z. – Hợp (Union rule): X  Y, X  Z  X  YZ. – Tựa bắc cầu (Pseudo transitivity rule): XY, WYZ  WX Z.
  • 97. 97 Ví dụ 3.3 : Cho R = ABC và tập phụ thuộc hàm Chứng minh rằng: F ╞═ Thật vậy từ : – C A (giả thiết) – BC  AB (luật tăng trƣởng (1) thêm B) – AB  C (giả thiết) – AB  ABC (luật tăng trƣởng (3) thêm AB) – BC  ABC (luật bắc cầu từ (2) và (4)) Luật suy diễn  ACCABF  , ABCBC 
  • 98. 98 Tính đúng đắn và đầy đủ của hệ tiên đề Armstrong Bổ đề 3.1: Hệ tiên đề Armstrong là đúng đắn (Soundness) Bổ đề 3.2: Hệ tiên đề Armstrong là đầy đủ (Completeness) Ý nghĩa: - Hệ tiên đề Armstrong là đúng đắn, nghĩa là X  Y đƣợc suy diễn từ hệ tiên đề Armstrong thì X  Y đúng trong mọi quan hệ mà mọi phụ thuộc hàm của F đúng. - Tính đầy đủ của hệ tiên đề Armstrong có nghĩa là: với F là tập phụ thuộc hàm cho trƣớc. Gọi F+ hệ bao đóng của F, F0 là tập các phụ thuộc hàm có thể suy dẫn từ hệ hệ tiên đề Armstrong thì F+ = F0. Bổ đề 3.3: X  Y đƣợc suy ra từ tập phụ thuộc F đã cho bằng cách sử dụng hệ tiênđề Armstrong  Y X+.
  • 99. 99 Chứng minh Bổ đề 3.1 (Tính đúng đắn) Chứng minh: Cần chứng minh 3 tiên đề đúng : a1) YX  R thì X  Y r(R) thỏa F:  t, t‟  r : t(X) = t‟(X)  t(Y) = t‟(Y) do Y  X a2) X  Y, Z R  XZ  YZ r(R) thỏa F :  t, t‟r theo giả thiết ta có : t(X) = t‟(X)  t(Y) = t‟(Y) (1) Nếu t(XZ) = t‟(XZ)  t(X).t(Z) = t‟(X).t‟(Z) t(Y).t(Z)  t‟(Y).t‟(Z)  t(Y)  t‟(Y) (2) Từ (1), (2) mâu thuẫn, vậy: t(XZ) = t‟(XZ)  t(YZ) = t‟(YZ) a3) X  Y, Y  Z thì X Z r(R) thỏa F: t, t‟  r : t(X) = t‟(X)  t(Y) = t‟(Y) do XY t(Y) = t‟(Y)  t(Z) = t‟(Z) do Y Z Vậy t(X) = t‟(X)  t(Z) = t‟(Z) đpcm.
  • 100. 100 Chứng minh Bổ đề 3.2 (Tính đầy đủ) Do tính đúng đắn của hệ tiên đề Armstrong nên: F0  F+, cần phải chứng minh: F+ F0  (XY  F+  X  Y  F0)  (X  Y  F0  X Y  F+) (Phản chứng) Chứng minh: • Giả sử X  Y  F0 (nghĩa là PTH X Y không thể suy dẫn bởi hệ tiên đề Armstrong từ F). • Xét quan hệ r gồm hai bộ nhƣ sau : 11 ... 1 11 ... 1 11 ... 1 00 ... 0 Các thuộc tính Các thuộc tính thuộc X+ còn lại • Ta thấy tất cả các phụ thuộc hàm trên F đều thỏa r, giả sử ngƣợc lại : VW  F nhƣng không thỏa r  VX+, W  X+  A  W, A ∩ X+ = . Do VX+, theo bổ đề 3.3: XVFo và VW, WA, theo luật bắt cầu XA (Mâu thuẫn) • Nếu X Y F+ X  Y thỏa r (theo định nghĩa F+ )  Y  X+ (1) • Mà giả thiết: X Y  F0  Y X+ (2) • (1) và (2) mâu thuẫn, vậy X Y  F+ (đpcm). Nói khác hơn: F+ = F0.
  • 101. 101 Bao đóng của tập thuộc tính Nhận xét: – Việc xác định F+ của tập PTH F là khó khăn và F+ rất lớn, dù F có thể rất bé. – Chẳng hạn: Xét : F = {A B1, A B2, … , A  Bn} Thì F+ = {A Y| Y {B1B2…Bn}  |F+| = 2n . – Trong nhiều trƣờng hợp, ta không cần tìm toàn bộ F+, mà chỉ cần xét xem một phụ thuộc hàm cho trƣớc có thuộc F+ không ? – Để xét xem X  Y F+, theo bổ đề 3.3, ta cần tìm X+: nếu Y  X+ thì X  Y  F+ Bao đóng của tập thuộc tính : – X là tập thuộc tính – Bao đóng của X đối với F, ký hiệu XF + – XF + = {A  U | X  A  F+} Nhận xét: X  Y  F+  Y  X+.
  • 102. 102 Thuật toán tìm X+ Thuật toán 3.1 Nhập: U, F và X  U Xuất: X+ Phƣơng pháp: Lần lƣợt tính các tập X(0), X(1), ..., X(i),. . – B1: X(0) = X; – B2: X(i+1) = X(i)  A, nếu  YZ F, AZ và Y X(i), Ngƣợc lại qua B3. – B3: xuất X+ = X(i).
  • 103. 103 Ví dụ tìm XF + Cho: – F = {AB  C, BC  D, D  EG}. – X = BD. Tính XF +: – X(0) = BD. – Lặp 1: • Tìm các PTH có vế trái là tập con của X(0) = BD Có D  EG, thêm EG vào X(0) ta đƣợc X(1) = BDEG. – Lặp 2: • Tìm các PTH có vế trái là tập con của X(1) = BDEG Không có PTH nào. X(2) = X(1) – Vậy XF + = X(2) = {BDEG}.
  • 104. 104 Chứng minh tính đúng đắn thuật toán 3.1 Ta phải chứng minh: A, A X+  j: A X(j) “”: Chứng minh bằng qui nạp: Xét j=0, A X(0): XA F+  A X+ Giả sử đúng đến bƣớc j-1, xét bƣớc thứ j: A X(j)  YX(j-1): YA F+ (1) Do YX(j-1)  XY F+ (2) Từ (1) và (2)  XA F+  A X+
  • 105. 105 Chứng minh tính đúng đắn thuật toán 3.1(tt) “”: A, A X+  j: A X(j) Gọi i là giá trị X(i)=X(i+k) k=0,1,2, ... Xét quan hệ r gồm hai bộ nhƣ sau: 11 ... 1 11 ... 1 11 ... 1 00 ... 0 Các thuộc tính Các thuộc tính thuộc Xi + không thuộc Xi + Tƣơng tự: Theo chứng minh 3.2, mọi PTH trên F đều thỏa r. Thật vậy. nếu UVF nhƣng không thỏa r  UX(i) và VX(i)  X(i+1)X(i) (Mâu thuẫn) Do A X+  X  A  F+ (Bổ đề 3) Và do hệ tiên đề Armstrong là đúng và đầy đủ X  A  F+  X  A thỏa r  A X(i) Có đpcm.
  • 106. 106 Kiểm tra PTH suy diễn Cho F = {AB  C, A  D, D  E, AC  B} Hai PTH ABE và DC có đƣợc suy diễn từ F hay không? X XF + AB ABCDE D DE Đƣợc suy diễn từ F Không đƣợc suy diễn từ F
  • 107. 107 Phủ của các PTH (Covers for functional Dependencies) Định nghĩa 3.4: Hai tập phụ thuộc hàm F và G trên lƣợc đồ R là tƣơng đƣơng, ký hiệu F G, nếu F+ = G+. Nếu F G thì F gọi là phủ G. • F suy diễn G, ký hiệu F╞═ G nếu XYG thì F╞═ XY Định lý 3.1: Cho hai tập phụ thuộc hàm F và G trên lƣợc đồ R, FG khi và chỉ khi F╞═ G và G╞═ F. Chứng minh: Trƣớc hết ta dễ thấy: F+ = (F+)+ Mặt khác: F  G  ( F╞═ G và G╞═ F ) F ╞═G  G F+ G+  (F+) + = F+ (1) G╞═ F  F G+  F+  (G+)+ = G+ (2) (1), (2)  (G+  F+)  (F+  G+)  F+ = G+ Đpcm.
  • 108. 108 Thuật toán 3.2: Kiểm tra tính tƣơng đƣơng giữa F và G Vào : F = {LiRi / i = 1..n}; G = {Lj‟Rj‟ / j = 1..n} Ra : F+ = G+ ? Phƣơng pháp: – i = 1..n, lần lƣợt kiểm tra LiRi  G+ ? (tính (Li)+ đối với tập phụ thuộc hàm G, nếu Ri  (Li)+ thì LiRi  G+ – Nếu mọi phụ thuộc hàm trong F đều thuộc G thì F+  G+ – Tƣơng tự nếu mọi phụ thuộc hàm trong G đều thuộc F+ thì G+  F+ Nếu cả hai điều trên đều đúng thì F+ = G+ Các tập PTH tƣơng đƣơng
  • 109. 109 Tập PTH tối thiểu • Tập PTH F là tối thiểu nếu thỏa các điều kiện sau – Mọi PTH của F chỉ có một thuộc tính ở vế phải. – Không thể thay X  A thuộc F bằng Y  A với Y  X mà tập mới tƣơng đƣơng với F. – Nếu bỏ đi một PTH bất kỳ trong F thì tập PTH còn lại không tƣơng đƣơng với F. • Phủ tối thiểu (Minimal Covers) của tập PTH E là tập PTH tối thiểu F tƣơng đƣơng với E. • Nhận xét – Mọi tập PTH có ít nhất một phủ tối thiểu.
  • 110. 110 Thuật toán tìm phủ tối thiểu Thuật toán 3.3: Nhập: tập PTH E. Xuất: phủ tối thiểu F của E. Phƣơng pháp : – B1: F := . – B2: (Tách các PTH để có vế phải là 1 thuộc tính) Với mọi X  Y  E, Y = {A1, …, Ak}, Ai  U F := F  {X  {Ai}}. – B3: (Loại bỏ các thuộc tính dƣ thừa vế trái) Với mỗi X  {A}  F, X = {B1, …, Bl}, Bi  U Với mỗi Bi, nếu A  (X - {Bi})F + thì F := (F - {X  {A}})  {(X - {B})  {A}}. – B4: (Loại bỏ các PTH dƣ thừa) Với mỗi X  {A}  F G := F - {X  {A}} Nếu A  XG + thì F := F - {X  {A}}.
  • 111. 111 Ví dụ tìm phủ tối thiểu E = {ABC, AB, BC, ABC} – B1: F = . – B2: F = {A  B, A  C, B  C, AB  C}. – B3: Xét AB  C (B)F + = BC F = {A  B, A  C, B  C}. – B4: A  C thừa. F = {A  B, B  C}. Tìm phủ tối thiểu của
  • 112. 112 Siêu khóa và khóa Cho R(U) – S  U là siêu khóa nếu r  R, t1, t2  r, t1  t2 thì t1[S]  t2[S]. – K  U là khóa nếu K là siêu khóa nhỏ nhất. A  K đƣợc gọi là thuộc tính khóa. Nhận xét – S xác định hàm tất cả các thuộc tính của R: (S)+=R – R có thể có nhiều khóa.
  • 113. 113 Xác định khóa của lƣợc đồ Thuật toán 3.4: Tìm một khóa tối thiểu của quan hệ Nhập: tập PTH F xác định trên lƣợc đồ R(U) U = {A1, …, An}; Xuất: khóa K của R. Phƣơng pháp : – Bƣớc 0 : Đặt K0 = U – Bƣớc i : Tính Ki –1 {Ai} nếu Ki-1 {Ai}  U Ki = Ki-1 nếu ngƣợc lại – Đặt K = Kn
  • 114. 114 Ví dụ 3.4: Tìm khóa của lƣợc đồ Cho R(U), U = {A, B, C, D, E, F, G}. – F = {B  A, D  C, D  BE, DF  G}. Tìm khóa của R – B1: K0 = ABCDEFG. – B2: • Lặp 1: (BCDEFG)F + = BCDEFGA  K1 = BCDEFG. • Lặp 2: (CDEFG)F + = CDEFGBA  K2 = CDEFG. • Lặp 3: (DEFG)F + = DEFGCBA  K3 = DEFG. • Lặp 4: (EFG)F + = EFG.  K4 = DEFG. • Lặp 5: (DFG)F + = DFGCBEA  K5 = DFG. • Lặp 6: (DG)F + = DGCBEA.  K6 = DFG. • Lặp 7: (DF)F + = DFCBEAG  K7 = DF. – B3: Khóa là K = DF.
  • 115. 115 Xác định tất cả khóa của lƣợc đồ Nhập: tập PTH F xác định trên lƣợc đồ R(U). Xuất: tất cả khóa của R. Thuật toán 3.5 – B1: Xây dựng 2n tập con của U = {A1, …, An}; S = { }; – B2: Với mỗi tập con X  U Nếu U  XF + thì S = S  {X}. – B3: X, Y  S, nếu X  Y thì S = S - {Y}. – B4: S là tập các khóa của R.
  • 116. 116 Ví dụ tìm tất cả khóa của lƣợc đồ Cho R(U), U = {A, B, C, D, E, F}. – F = {AE  C, CF  A, BD  F, AF  E}. Tìm tất cả khóa của R – Tập siêu khóa S = {ABD, BCD, ABCD, ABDE, BCDE, ABCDE, ABDF, BCDF, ABCDF, ABDEF, BCDEF, ABCDEF}. ABD BCD ABCD ABDE BCDE ABCDE ABDF BCDF ABCDF ABDEF BCDEF ABCDEF
  • 117. 117 3.3 Chuẩn hóa lƣợc đồ CSDL Các dạng chuẩn – Dạng 1 (1 Normal Form - 1NF). – Dạng 2 (2 Normal Form - 2NF). – Dạng 3 (3 Normal Form - 3NF). – Dạng Boyce - Codd (Boyce - Codd Normal Form - BCNF).
  • 118. 118 Dạng chuẩn 1 Định nghĩa 3.5: Quan hệ r(U) đƣợc gọi thuộc dạng chuẩn 1 nếu và chỉ nếu mọi thuộc tính của r là thuộc tính đơn. Go Vap9876543214Hanh chinh Go Vap, Thu Duc 3334455555Kinh doanh CacTrusoTrPhgMaPTenP PHONG PHONG TenP MaP TrPhg Truso Kinh doanh 5 333445555 Go Vap Kinh doanh 5 333445555 Thu Duc Hanh chinh 4 987654321 Go Vap Không thuộc dạng chuẩn 1 Thuộc dạng chuẩn 1 Nhận xét: Dạng chuẩn 1 có thể dẫn đến sự trùng lặp dữ liệu. Do đó gây ra các dị thƣờng về cập nhật dữ liệu
  • 119. 119 Dạng chuẩn 2 theo khóa chính (1) Định nghĩa 3.6: Quan hệ r(U) đƣợc gọi là thuộc dạng chuẩn 2 nếu mọi thuộc tính không khóa của r phụ thuộc đầy đủ vào khóa chính của r. r(U), K  U là khóa chính của r – A  U là thuộc tính không khóa nếu A K. – X  Y là PTH đầy đủ nếu A  X thì (X - {A})  Y không đúng trên r. Ngƣợc lại X  Y là PTH bộ phận. Ví dụ FD2 FD1 DiadiemTenDATenNVSoGioMaDAMaNV FD3 NVIEN_DUAN Thuộc tính không khóa PTH đầy đủ PTH bộ phận
  • 120. 120 Dạng chuẩn 2 theo khóa chính (2) FD2 FD1 DiadiemTenDATenNVSoGioMaDAMaNV FD3 NVIEN_DUAN NV_DA1 MaNV MaDA SoGio FD1 NV_DA2 MaNV TenNV FD2 NV_DA3 MaDA TenDA Diadiem FD3 3 lƣợc đồ NV_DA1, NV_DA2, NV_DA3 thuộc dạng chuẩn 2
  • 121. 121 Dạng chuẩn 2 theo khóa chính (3) Nhận xét – Mọi lƣợc đồ quan hệ thuộc dạng chuẩn 2 cũng thuộc dạng chuẩn 1. – Còn xuất hiện sự trùng lặp dữ liệu. Do đó gây ra các dị thƣờng về cập nhật dữ liệu. NHANVIEN_PHONGBAN TenNV MaNV NgSinh DChi MaPB TenPB TrPhong FD1 FD2 Thuộc dạng chuẩn 2
  • 122. 122 Dạng chuẩn 3 theo khóa chính (1) Định nghĩa 3.7: Quan hệ r(U) đƣợc gọi là thuộc dạng chuẩn 3 nếu – r thuộc dạng chuẩn 2. – Mọi thuộc tính không khóa của r không phụ thuộc bắc cầu vào khóa chính của r. Cho r(U) – X  Y là PTH bắt cầu nếu Z  U, Z không là khóa và cũng không là tập con của khóa của r mà X  Z và Z  Y đúng trên r. Ví dụ FD2 FD3 FD1 TenPBMaPB TrPhongDChiNgSinhMaNVTenNV NHANVIEN_PHONGBAN PTH bắt cầu
  • 123. 123 Dạng chuẩn 3 theo khóa chính (2) Nhận xét – Mọi lƣợc đồ quan hệ thuộc dạng chuẩn 3 cũng thuộc dạng chuẩn 2. – PTH bắt cầu là nguyên nhân dẫn đến trùng lặp dữ liệu. – Dạng chuẩn 3 là dạng chuẩn tối thiểu trong thiết kế CSDL. NV_PB1 TenNV MaNV NgSinh Diachi MaPB NV_PB2 MaPB TenPB TrPhg Thuộc dạng chuẩn 3
  • 124. 124 Dạng chuẩn 2 tổng quát Định nghĩa 3.8: Lƣợc đồ quan hệ R đƣợc gọi là thuộc dạng chuẩn 2 nếu mọi thuộc tính không khóa của R phụ thuộc đầy đủ vào các khóa của R. Cho R(ABCDEF) có 3 khóa là A, BC và CD. FD3 FD2 FD1 FEDCBA FD4 R FD5 Lƣợc đồ R không thuộc dạng chuẩn 2
  • 125. 125 Dạng chuẩn 3 tổng quát Định nghĩa 3.9: Lƣợc đồ quan hệ R đƣợc gọi là thuộc dạng chuẩn 3 nếu PTH X  A đúng trên R thì – X là siêu khóa của R, hoặc – A là thuộc tính khóa của R. R1(ABCDE) có 2 khóa là A và BC. FD2 FD1 EDCBA FD4 R1 Lƣợc đồ bên thuộc dạng chuẩn 2, nhƣng không thuộc dạng chuẩn 3
  • 126. 126 Dạng chuẩn Boyce - Codd (1) Lƣợc đồ quan hệ R đƣợc gọi là thuộc dạng chuẩn BC nếu PTH không hiển nhiên X  Y đúng trên R thì X là siêu khóa của R. R11(ABCD) FD2 FD5 FD1 DCBA R11 Lƣợc đồ R11 thuộc dạng chuẩn 3, nhƣng không thuộc dạng chuẩn BC
  • 127. 127 Dạng chuẩn Boyce - Codd (2) 1ba2 2ab3 2bb4 1aa1 DCBA R11 R111 A C D 1 a 1 2 b 1 3 a 2 4 b 2 R112 D B 1 a 2 b Trùng lặp dữ liệu
  • 128. 128 Dạng chuẩn Boyce - Codd (3) Nhận xét – Mọi lƣợc đồ quan hệ thuộc dạng chuẩn BC cũng thuộc dạng chuẩn 3. – Dạng chuẩn BC đơn giản và chặt chẽ hơn dạng chuẩn 3. – Mục tiêu của quá trình chuẩn hóa là đƣa các lƣợc đồ quan hệ về dạng chuẩn 3 hoặc BC. R111 A C D FD1 R112 B D FD5 2 lƣợc đồ trên thuộc dạng chuẩn BC
  • 129. 129 Thiết kế Top-Down Các bƣớc thực hiện – Thiết kế lƣợc đồ mức khái niệm với mô hình dữ liệu cấp cao (EER). – Chuyển lƣợc đồ khái niệm thành tập hợp các quan hệ. – Với mỗi quan hệ xác định tập PTH. – Áp dụng các quy tắc chuẩn hóa để loại bỏ các PTH bộ phận và bắt cầu trong các quan hệ.
  • 130. 130 3.4 Phân rã lƣợc đồ quan hệ Lƣợc đồ quan hệ R(A1, …, An) – Tập hợp tất cả các thuộc tính của các thực thể. Xác định tập PTH F trên R. Phân rã – Sử dụng các thuật toán chuẩn hóa để tách R thành tập các lƣợc đồ D = {R1, …, Rm}. Yêu cầu – Bảo toàn thuộc tính. – Các lƣợc đồ Ri phải ở dạng chuẩn 3 hoặc Boyce-Codd.
  • 131. 131 Phân rã bảo toàn PTH Tính chất bảo toàn PTH – Xét lƣợc đồ R và tập PTH F. Giả sử R đƣợc phân rã thành D = {R1, …, Rm}. • Đặt Ri(F) = {X  Y  F+ : X  Y  Ri}. • D đƣợc gọi là phân rã bảo toàn phụ thuộc hàm đối với F nếu (R1(F)  …  Rm(F))+ = F+. Ví dụ FD2 FD5 FD1 DCBA R11 R111 A C D FD1 R112 B D FD5
  • 132. 132 Thuật toán phân rã lƣợc đồ DC3 và bảo toàn PTH Thuật toán 3.6 Nhập: R(U), U = {A1, …, An} và tập PTH F. Xuất: D = {R1, …, Rm}, Ri ở dạng chuẩn 3. – B1: Tìm phủ tối thiểu G của F. – B2: Với mỗi X  Aj  G, xây dựng lƣợc đồ Ri(Ui), Ui = X  {Aj}. Khóa chính của Ri là X. – B3: Giả sử xong B2 ta có các lƣợc đồ R1, …, Rm. Nếu U1  …  Um  U thì xây dựng thêm lƣợc đồ Rm+1(Um+1), Um+1 = U - (U1  …  Um). Khóa của Rm+1 là Um+1. – B4: Xuất các lƣợc đồ Ri.
  • 133. 133 Ví dụ phân rã bảo toàn PTH (1) Cho – R(ABCDEFG) – F = {B  A, D  C, D  EB, DF  G} Tách về dạng chuẩn 3, bảo toàn PTH – B1: • Phủ tối thiểu G = {B  A, D  C, D  B, D  E, DF  G}. – B2: – B3: • Xuất D = {R1, R2, R3}. R(ABCDEFG) R1(BA) R(DC) R3(DFG)R(DB) R(DE) R2(DBCE)
  • 134. 134 Ví dụ phân rã bảo toàn PTH (2) Cho – R(ABCDEFGHI) – F = {B  A, D  C, D  EB, DF  G} Tách về dạng chuẩn 3, bảo toàn PTH – B1: • Phủ tối thiểu G = {B  A, D  C, D  B, D  E, DF  G}. – B2: – B3: • Vì U1  U2  U3 = {ABCDEFG} nên đặt R4(HI). – B4: • D = {R1, R2, R3, R4}. R(ABCDEFG) R1(BA) R3(DFG)R2(DBCE)
  • 135. 135 Phân rã không mất thông tin (1) Tính chất không mất thông tin – Xét lƣợc đồ R và tập PTH F. Giả sử R đƣợc phân rã thành D = {R1, …, Rm}. • D đƣợc gọi là phân rã không mất thông tin đối với F nếu với mọi trạng thái r  R thì (R1(r) * … * Rm(r)) = r. Định lý 3.3 – Phân rã D = {R1(U1), R2(U2)} của R(U) không mất thông tin đối với tập PTH F nếu và chỉ nếu: • (U1  U2)  (U1 – U2)  F+, hoặc • (U1  U2)  (U2 – U1)  F+.
  • 136. 136 Q là một lƣợc đồ quan hệ, F là tập phụ thuộc hàm. Q đƣợc tách thành các lƣợc đồ con Q1, Q2, Q3...,Qn theo từng bƣớc mà ở mỗi bƣớc một lƣợc đồ đƣợc tách thành hai lƣợc đồ con và thỏa mãn điều kiện của tính chất bảo toàn thông tin thì với r là quan hệ bất kỳ của Q ta luôn có: r = r.Q1|><|r.Q2... |><|r.Qn Q Q1 Q12 Q21 Q2 Q3 Q4 S A I P SA a1 a2 b1 b2 SIP a1 b3 a3 a4 S A I P SA a1 a2 b1 b2 SIP a1 a2 a3 a4 Vôùi Q(S,A,I,P) Q1(SA) Q2(SIP) F = {S  A,SI  P} Hoûi Q ñöôïc taùch thaønh Q1 vaø Q2 coù baûo toaøn thoâng tin khoâng? Böôùc 1: laäp baûng 3 doøng 5 coät Böôùc 2:laøm baèng theo phuï thuoäc haøm Heùp taùch baûo toaøn thoâng tin
  • 137. 137 Ví dụ: Cho Q(A,B,C,D,E,G,H,I) F={ACB; BI ACD; ABCD; HI; ACEBCG; CGAE} Tìm một khóa của Q. Thuật toán tìm một khóa của một lƣợc đồ quan hệ Q Bƣớc 1: K = Q+ Bƣớc 2: A là một thuộc tính của K, đặt K‟=K  A. Nếu K‟+=Q+ thì gán K = K' thực hiện lại bƣớc 2 Ví dụ: Tìm tất cả các khóa của lƣợc đồ quan hệ và tập phụ thuộc hàm nhƣ sau: Q(C,S,Z); F={CSZ; ZC} Xi Xi + Sieâu khoùa khoùa C C S S CS CSZ CS CS Z ZC CZ CZ SZ SZC SZ SZ CSZ CSZ CSZ
  • 138. 138 Hệ quả: Nếu K là khóa của Q thì TN  K và TD  K =  Chứng minh TN  K Theo hệ quả 2 của thuật toán tìm bao đóng ta có: K+  KTDTG Ta chứng minh A  TN  A  K. Thật vậy: Nếu AK  K+KTDTG  Q+-A  K không là khóa  mâu thuẫn Chứng minh TD  K =  Giả sử có thuộc tính A  TD  K ta sẽ dẫn đến điều mâu thuẫn. Thật vậy: Theo hệ quả 1 của thuật toán tìm bao đóng thì K+=(K-A)+  A A  TD  có X là vế trái của một phụ thuộc hàm trong F sao cho XA (1) và AX  XK+=(K-A)+ A vì AX  X(K-A)+  (K-A) X (2) (1) và (2) cho (K-A)A  A(K-A)+  (K-A)+ A = (K-A)+  K+ =(K-A)+ mâu thuẫn với điều K là khóa.
  • 139. 139 Ví dụ: Tìm tất cả các khóa của lƣợc đồ quan hệ và tập phụ thuộc hàm nhƣ sau: Q(C,S,Z); F={CSZ; ZC} Giải: TN = {S}; TG = {C,Z} Gọi Xi là các tập con của tập TG: Xi (TN  Xi) (TN Xi)+ Sieâu khoùa khoùa  S S C SC Q+ SC SC Z SZ Q+ SZ SZ CZ SCZ Q+ SCZ Tập thuộc tính nguồn (TN) chứa tất cả các thuộc tính có xuất hiện ở vế trái và không xuất hiện ở vế phải của các phụ thuộc hàm và các thuộc tính không xuất hiện ở cả vế trái lẫn vế phải của các phụ thuộc hàm. Tập thuộc tính trung gian (TG) chứa tất cả các thuộc tính xuất hiện ở cả vế trái lẫn vế phải của các phụ thuộc hàm. Tập đích (TD) gồm những thuộc tính chỉ xuất hiện ở vế phải
  • 140. 140 Thuật toán phân rã DC3, BTTT, BTPT
  • 141. 141 Định lý: Thuật toán trên tạo ra một phân rã ở dạng chuẩn 3 vừa bảo toàn thông tin vừa bảo toàn phụ thuộc hàm Chứng minh: 1. Chứng minh mỗi lƣợc đồ con ở dạng chuẩn 3. Thật vậy: Theo thuật toán thì mỗi lƣợc đồ con Qi có dạng YB với YB  Y là siêu khóa. Giả sử trong Qi có phụ thuộc hàm XA có vế trái không là siêu khóa và vế phải không là thuộc tính khóa. Ta phân làm hai trƣờng hợp: Trƣờng hợp 1: A=B  XB  X  Y  YB là phụ thuộc có vế trái dƣ thừa, điều này trái với YB là phụ thuộc hàm trong phủ tối thiểu. Trƣờng hợp 2: AB  AY (1). Gọi K là khóa của Qi  K  Y (2). A là thuộc tính không khóa nên A  K (3).(1)(2)(3) K  Y (4).K là khóa nên KB  YB là phụ thuộc hàm có vế trái dƣ thừa. Điều này trái với điều phụ thuộc hàm YB là phụ thuộc hàm của phủ tối thiểu Ftt
  • 142. 142 Định lý: Thuật toán trên tạo ra một phân rã ở dạng chuẩn 3 vừa bảo toàn thông tin vừa bảo toàn phụ thuộc hàm Chứng minh: (tt) 2. Chứng minh phép phân rã bảo toàn phụ thuộc hàm. Hiển nhiên Ftt  G = Qi(Ftt) Ftt +  G+ (1) Hơn nữa Ftt +  G = Qi(Ftt) Ftt ++  G+  Ftt +  G+ (2) (1) và (2)  Ftt + = G+ 3. Chứng minh phép phân rã bảo toàn thông tin. Lập bảng kiểm tra bảo toàn thông tin. Ta lần lƣợt đồng nhất các giá trị theo các phụ thuộc hàm đƣợc phát hiện do thuật toán tìm bao đóng (có vế trái là tập con của Qi + chứa khóa). Do Qi + chứa khóa nên hàng của lƣợc đồ Qi sẽ chứa toàn a là điều phải chứng minh
  • 143. 143 Ví dụ: cho lƣợc đồ Q(CTHRSG),F={CT,HRC,THR,CSG,HSR}. Hãy phân rã Q thành các lƣợc đồ con đạt dạng chuẩn 3 vừa bảo toàn thông tin vừa bảo toàn phụ thuộc hàm. Giải: F=Ftt={CT,HRC,THR,CSG,HSR} là phủ tối thiểu. Áp dụng thuật toán trên Q đƣợc phân rã thành các lƣợc đồ con Q1(CT) Q2(HRC) Q3(THR) Q4(CSG) Q5(HSR) Khóa của Q là HSQ1,Q2,Q3,Q4,Q5 chính là kết quả phân rã
  • 144. 144 Bài tập 1: Cho lƣợc đồ quan hệ R(ABCDE) và tập phụ thuộc hàm: F = {A -> B; CD -> E; B -> C} 1. Tìm một khóa của lƣợc đồ. 2. Tìm tất cả các khóa của lƣợc đồ. 3. Cho biết dạng chuẩn cao nhất của lƣợc đồ trên? Nếu chƣa đạt dạng chuẩn 3 hãy tìm một phép phân rã thành các lƣợc đồ con đạt dạng chuẩn 3 và bảo toàn thông tin.
  • 145. 145 Tìm một khóa Áp dụng các bƣớc tìm bao đóng của tập các thuộc tính: • Lặp 1: (BCDE)F + = BCDE  K = ABCDE. • Lặp 2: (ACDE)F + = ABCDE  K = ACDE. • Lặp 3: (ADE)F + = ADEBC  K = ADE. • Lặp 4: (AE)F + = AEBC  K = ADE. • Lặp 5: (AD)F + = ADBCE  K = AD. AD là khoá.
  • 146. 146 - Khóa là AD, R không đạt 2NF vì A  B - Tìm một phép phân rã tách lƣợc đồ trên thành các lƣợc đồ con đạt dạng chuẩn 3. Cho lƣợc đồ quan hệ R(ABCDE) và tập phụ thuộc hàm: F=Ftt = {A -> B; CD -> E; B -> C} Vì AD là khóa và C là thuộc tính bắc cầu qua khoá AD AD -> B (không tồn tại B -> AD) và B -> C. (AD -> C) Do đó ta tách nhƣ sau: R1(ADBE) R2(BC) F1 = {A-> B } và F2 = {B -> C} K1 = {ADE} K2 = {B}
  • 147. 147 Ta có R2 đạt dạng chuẩn 3, còn R1 thì không, vì thuộc tính không khoá B là bắc cầu qua khoá ADE, Do A -> B Tách R1 thành R11(ADE) R12(AB) K11= {ADE} K12 = {A} F12 = {A -> B} Kết quả: R11(ADE), R12(AB), R2(BC)
  • 148. 148 Bài tập 2 Cho lƣợc đồ quan hệ R(A,B,C,D,E,G,H,I,J,K) và tập các phụ thuộc hàm: F = {A -> B ; C -> D,H,I ; I,J -> K ; B,C -> A ; H,C -> E} 1. Tìm một khóa của lƣợc đồ. 2. Tìm tất cả các khóa của lƣợc đồ. 3. Cho biết dạng chuẩn cao nhất của lƣợc đồ trên? Nếu chƣa đạt dạng chuẩn 3 hãy tìm một phép phân rã thành các lƣợc đồ con đạt dạng chuẩn 3 và bảo toàn thông tin.
  • 149. 149 1. Tìm một khóa của lƣợc đồ Áp dụng các bƣớc tìm bao đóng của tập các thuộc tính: • Lặp 1: (ABCDEGHIJK)F + = R  K = BCDEGHIJK • Lặp 2: (BCDEGHIJK) F +  R  K = BCDEGHIJK • Lặp 3: (BDEGHIJK) F +  R  K = BCDEGHIJK • Lặp 4: (BCEGHIJK) F + = R  K = BCEGHIJK. • Lặp 5: (BCGHIJK ) F + = R  K = BCGHIJK • Lặp 6: (BCGHIJK ) F +  R  K = BCGHIJK • Lặp 7: (BCGIJK ) F += R  K = BCGIJK • Lặp 8: (BCGJK ) F + = R  K = BCGJK • Lặp 9: (BCGK ) F +  R  K = BCGJK • Lặp 10: (BCGJ ) F + = R  K = BCGJ
  • 150. 150 2. Tìm tất cả các khóa của lƣợc đồ Có 2 khóa: K1=(BCGJ) K2=(ACGJ) Vì?
  • 151. 151 Cho biết dạng chuẩn cao nhất R không đạt 2NF vì A  B
  • 152. 152 Phân rã thành các lƣợc đồ con đạt dạng chuẩn 3 và bảo toàn thông tin Cách 1: Có nhiều phụ thuộc hàm có khả năng đƣợc chọn để phân rã , ví dụ nhƣ C -> D,H,I
  • 154. 154 Chúc các anh chị thi đạt kết quả tốt