Thoâng baùo loãi phaûi ñaày ñuû, roõ raøng vaø lòch söï.. Ñoù laø caùc phuï thuoäc tính toaùn hoaëc moät suy dieãn töø giaù trò cuûa moät hay nhieàu thuoäc tính trong cuøng moät boä gi[r]
(1)1
CƠ SỞ DỮ LIỆU
(2)2 Chương I: MỘT SỐ KHÁI NIỆM CƠ BẢN
Chương II: CÁC CÁCH TIẾP CẬN MỘT CSDL Chương III MƠ HÌNH DỮ LIỆU QUAN HỆ
Chương IV: RÀNG BUỘC TOÀN VẸN
ChươngV: CHUẨN HĨA LƯỢC ĐỒ QUAN HỆ Chương VI : ĐẠI SỐ QUAN HỆ
Chương VII: NGÔN NGỮ TRUY VẤN CSDL Chương VIII: TỐI ƯU HÓA CÂU TRUY VẤN
(3)3
Chương I MỘT SỐ KHÁI NIỆM CƠ BẢN NỘI DUNG
Hệ thống tập tin cổ điển Cơ sở liệu
(4)4
Xét hệ thống tập tin quản lý nhân đơn vị:
Phòng Tổ chức – Hành chính: Lý lịch chi tiết CBCNV; Phịng Kế tốn: Phịng, họ tên, lương, phục cấp, ngày cơng ; Quản đốc phân xưởng: Họ tên, ngày công, ngày nghỉ,
(5)5 **Ưu điểm:
– It tốn thời gian Đầu tư & chi phí thấp
– Khả đáp ứng khai thác nhanh chóng kịp thời **Nhược điểm:
Thông tin lưu nhiều nơi dư thừa khơng
quán
Lãng phí thời gian nhập, cập nhật liệu & lưu trữ Sự phối hợp tổ chức khai thác khó khăn
Thiếu chia sẻ thông tin đơn vị phận Khó khăn nâng cấp ứng dụng
(6)6 Cơ sở liệu Là hệ thống thơng tin có cấu trúc, lưu trữ thiết bị mang tính từ tính, phục vụ việc khai thác thông tin nhiều người sử dụng cách đồng thời với nhiều mục đích khác
Lưu ý: Các tính chất: Hệ thống, có cấu trúc, nhiều người sử dụng, khai thác đồng thời, nhiều mục đích khác nhau.
**Các vấn đề phát sinh cần giải quyết
Tính chủ quyền bị vi phạm Tính quán liệu Vấn đề bảo mật
Tính an tồn liệu
Vấn đề tranh chấp liệu truy xuất đồng thời
(7)7 Là hệ thống chương trình quản trị CSDL, đồng thời là công cụ giao tiếp người sử dụng ứng dụng với CSDL.
Hệ quản trị CSDL cần có:
a) Từ điển liệu (Data Dictionary)
b) Cơ chế giải tranh chấp (Quyền mức độ ưu tiên) c) Cơ chế bảo mật liệu (Bức tường lửa + mật khẩu)
d) Cơ chế tự động lưu (Backup) phục hồi (Restore) liệu khi có cố (Định kỳ theo thời gian)
e) Ngôn ngữ giao tiếp người sử dụng (NSD) với CSDL (SQL) f) Đảm bảo tính độc lập liệu chương trình.
g) Có thể, cần có giao diện tốt với người dùng không chuyên.
HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU
(8)8
Có cách tiếp cận CSDL
– Mơ hình liệu mạng
– Mơ hình liệu phân cấp – Mơ hình liệu quan hệ
– Mơ hình liệu thực thể kết hợp – Mơ hình liệu hướng đối tượng
(9)9 Mô hình liệu mạng biểu thị đồ thị có hướng Hai khái niệm bản: Loại mẫu tin Loại liên hệ.
- Loại mẫu tin (Record Type) đặc trưng cho loại đối tượng riêng biệt, biểu thị hình chữ nhật
-Loại liên hệ (Set Type) liên kết loại mẫu tin với loại mẫu tin khác (gọi mẫu tin thành viên) loại liên hệ: 1 1 : mẫu tin chủ kết hợp với mẫu tin thành viên 1 n : mẫu tin chủ kết hợp với nhiều mẫu tin thành viên n 1 : n mẫu tin chủ kết hợp với mẫu tin thành viên Đệ quy (Recursive): Mẫu tin chủ thành viên Mơ hình đơn giản khơng thích hợp để biểu diễn CSDL lớn.
(10)10 Mơ hình phân cấp cây, nút thực thể Hai khái niệm sử dụng mơ hình: Loại mẫu tin Loại mối liên hệ Loại liên hệ phân cấp, theo cách:
Mẫu tin thành viên đóng vai trị thành viên mối liên hệ nhất, tức thuộc chủ Mối liên hệ từ mẫu tin chủ tới mẫu tin thành viên n, ngược lại, từ mẫu tin thành viên tới mẫu tin chủ
Giữa loại mẫu tin tồn mối liên hệ
Mơ hình phân cấp sử dụng chủ yếu cho tổ chức có cấu trúc phân cấp, ngành thống kê chẳng hạn Dữ liệu loại mẫu tin chủ thường chứa kết tổng hợp từ liệu mẫu tin thành viên, đó có nhiều nhược điểm liệu thường xuyên có biến động.
(11)11
MÔ HÌNH QUAN HỆ (Relational Data Model)
Mơ hình quan hệ E.F.Codd đề xuất năm 1970 Nền tảng lý thuyết tập hợp quan hệ Các khái niệm gồm: Thuộc tính (Attribute), Quan hệ (Relation), Bộ giá trị (Value Tuple), Lược đồ quan hệ (Relation Schema), Khoá (Key), phụ thuộc hàm (Functional Dependency),
(12)12
MƠ HÌNH THỰC THỂ KẾT HỢP
(Entity RelationShip)
Mô hình thực thể kết hợp P.P.Chen đề xuất năm 1976 Các khái niệm chủ yếu sử dụng bao gồm: Loại thực thể (Entity Type), Thực thể (Entity), Thuộc tính loại thực thể (Entity Attribute), Khóa loại thực thể (Entity Key), Loại mối kết hợp (Entity Relationship), Số ngơi mối kết hợp (Relationship Degree), Thuộc tính mối kết hợp (Relationship Attribute), Bản số nhánh kết hợp (Relationship Cardinal) Từ năm 1980, khái niệm bổ sung Loại thực thể chuyên biệt hóa (Specialized Entity), Mối kết hợp đệ quy (Recursive Relationship)
(13)13
MƠ HÌNH HƯỚNG ĐỐI TƯỢNG
(Object Oriented Model)
Đây mô hình tiên tiến Những ưu điểm lớn kỹ thuật hướng đối tượng là:
(1) Tính đóng gói (Encapsulation): Dữ liệu thao tác xử lý cấu trúc liệu “hịa quyện” với thành thể thống
(2) Tính kế thừa (Inheritance): Một cấu trúc liệu xây dựng phát triển từ cấu trúc liệu có trước đó, kế thừa thành phần liệu phương thức từ kiểu liệu sở
(3) Tính tương ứng bội (Polymorphism) (4) Tính tái sử dụng (Reusability)
(14)14
Chương III MƠ HÌNH DỮ LIỆU QUAN HỆ NỘI DUNG:
2.1 MỘT SỐ KHÁI NIỆM VÀ ĐỊNH NGHĨA
1 Thuộc tính 2 Quan hệ 3 Bộ giá trị 4 Thể hiện 5 Khoá
6 Lược đồ quan hệ & lược đồ CSDL
2.2 CÁC THAO TÁC CƠ BẢN TRÊN MỘT QUAN HỆ
(15)15
MỘT SỐ KHÁI NIỆM VÀ ĐỊNH NGHĨA
1 THUỘC TÍNH (Attribute): Là đặc tính đối tượng cần phản ánh CSDL phục vụ việc khai thác thông tin sau
Ví dụ: Họ tên, Giới tính, Ngày sinh, Nơi sinh, Thuộc tính đặc trưng yếu tố:
a Tên gọi: Một dãy ký tự Nên đặt tên gợi nhớ
b Kiểu giá trị: Số, Chuỗi, Ngày, Logic
c Miền giá trị: Xác định tập giá trị thuộc tính nhận
(16)16
Ví dụ: CSDL quản lý NHÂN VIÊN với quan hệ
1 PhongBan (MaPB, TenPB, DiaDiem, MaNQL, KinhPhi, DoanhThu) Tân từ: Mỗi phịng ban có tên gọi (TenPB) đầy đủ, địa điểm
trú đóng (DiaDiem), mã số nhân viên phụ trách phòng (MaNQL), khoản kinh phí (KinhPhi) để hoạt động, khoản doanh thu (DoanhThu) có, mã số (MaPB) để phân biệt với phòng ban khác công ty.
2 CongViec (MaCV, TenCV, LuongMin, LuongMax, MgrFlag)
(17)17
3 NhanVien (MaNV, TenNV, MaCV, Luong, HoaHong, MaPB, GioiTinh)
Tân từ: Mỗi nhân viên (NhanVien) cấp mã số (MaNV) để phân biệt với nhân viên khác Nhân viên phải có tên gọi (TenNV) cụ thể, đảm nhận công việc MaCV, hưởng mức lương (Luong) theo chức danh công việc, kho n hoa h ng (ả ồ HoaHong) có, làm phịng ban cụ thể có mã số MaPB Mỗi nhân viên phải có giới tính xác định ‘F’ (F=Female=Nữ) ‘M’ (M = Male = Nam).
4 QuaTrinh(MaNV, Seq, Ngay_BD, Ngay_KT, Luong, FrJob, ToJob, FrPB, ToPB)
Tân từ: Nhân viên có mã số MaNV có thể có nhiều q trình thay đổi đánh số thứ tự (Seq) từ trở Một trình diễn từ ngày (Ngay_BD) đến ngày (Ngay_KT), thay đổi lương (Salary) thay đổi từ công việc (FrJob) sang công việc khác (ToJob), thuyên chuyển từ phòng (FrPB) sang phòng khác (ToPB).
(18)18
3 BỘ GIÁ TRỊ (Tuple Record Row)
Là tổ hợp giá trị thuộc tính thỏa tân từ Ví dụ: Giả sử có giá trị qhệ PhongBan: (10, ‘Tổ Chức’, …) Khi gía trị sau:
(10, ‘Kinh Doanh’, … ); vaø (20, ‘ ’, … )
là khơng hợp lệ.
4 THỂ HIỆN (Instance hay Occurence)
Là tập hợp giá trị quan hệ thời điểm Như quan hệ có nhiều thể hiện.
(19)19
5 KHỐ (Key)
a Khóa tổ hợp thuộc tính mà giá trị chúng xác định gía trị
Ví dụ: MaPB khóa PhongBan.
Giả sử phịng ban có tên khác nhau, đó: TenPB: khóa
MaPB, DiaDiem: khóa MaPB, TenPB: khóa
Cho R (A1, A2, An) là quan hệ A1 khóa Khi có: A1A2, A1A3, A1A4, A1An: khóa
A1A2A3, …, A1A2An khóa Vậy có khóa? Trả lời: 2n-1 Với n=32 thuộc tính có tỷ khóa!!!
(20)20 b Định nghóa khóa siêu khóa (Key & Super key):
R (A1,A2, …, An) là quan hệ. K { A1,A2, An } K là khóa R thỏa:
1) K khóa theo đ/n
2) K1 K mà K1 khóa theo đ/n
MaPB hoặc TenPB là khóa quan hệ PhongBan
Nếu K là khóa thì K Ai gọi siêu khóa
c Khóa định (Candidate Key): Các khóa thỏa đ/n
d Khóa (Primary Key): Trong số khóa định chọn khóa tiện lợi nhất cho việc sử dụng để xếp giá trị (theo thứ tự tăng dần) phục vụ cho việc tìm kiếm kết nối thơng tin nhanh chóng, gọi khóa
(21)21 Quy ước:
Khóa quan hệ (thì) gạch chân Không phép sửa đổi giá trị khóa e Khóa ngoại (Foreign Key):
Cho R(U) và S(V); K1 U, K2V; K1 là khóa của R
Nếu thỏa:
(i) K1, K2 có số lượng ý nghĩa thuộc tính (ii) Giữa R S có mối quan hệ 1:n
Khi K2 khóa ngọai S tham cham chiếu tới K1 của R.
Ví duï: MaPB của NhanVien là khóa ngọai tham chiếu tới MaPB của
PhongBan.
MaNQL PhongBan khóa ngọai tham chiếu tới MaNV của quan hệ NhanVien
(22)22 f Khóa lồng (Nested Key)
R(U), K1U là khóa của R.
S(V), K2V là khóa ngọai của S tham chiếu tới K1 của R. K3K2 thuộc tính khóa S. Khi đó K3 gọi thuộc tính khóa lồng
Ví duï: MaNV của QuaTrinh là thuộc tính khóa lồng vừa khóa ngọai vừa thuộc tính khóa QuaTrinh.
6 PHỤ THUỘC HÀM (Functional Dependency)
R(U); X, Y U Nếu tồn ánh xạ f từ X vào Y ta nói X xác định hàm Y hay Y phụ thuộc hàm vào X ký hiệu X Y
(23)23
7 RAØNG BUỘC TOAØN VẸN (Integrity Rule / Constraint)
Là quy tắc bất biến mà tất thao tác CSDL phải tuân theo nhằm đảm bảo tính đắn, an tồn tồn vẹn liệu CSDL
8 LƯỢC ĐỒ QUAN HỆ (Relation Schema)
Là trừu tượng hoá quan hệ Khi nói đến lược đồ quan hệ tức đề cập đến cấu trúc tổng quát quan hệ, ma trận hai chiều
Lược đồ CSDL tập hợp lược đồ quan hệ {Ri}
(24)24
1 Thêm giá trị vào quan hệ R (A1, A2, An): INSERT (R; v1,v2, , vn)
Ví dụ: “Thêm vào phịng số 10 nhân viên có mã số 300, tên Hồng Duy làm nhân viên kế tốn với lương 2700$.”
INSERT (NhanVien; 300, ‘Hoàng Duy’, ‘KeToan’, 2700, 10, NULL, ‘M’)
2 Sửa giá trị quan hệ R:
UPDATE (R; A1=e1, A2=e2, , An=en; điều kiện sửa)
Ví dụ: “Tăng lương 10% cho nhân viên phụ trách phòng/ban”
UPDATE (NhanVien; Luong = Luong*1.1; MaCV = ‘QuanLi’)
(25)25
3 Xóa quan hệ R: DELETE (R; điều kiện xố)
Ví dụ: “Xóa nhan viên phụ trách phòng/ban”
DELETE (NhanVien; MaCV = ‘QuanLi’)
(26)26
Chương IV RAØNG BUỘC TOAØN VẸN NỘI DUNG
4.1 ĐỊNH NGHĨA – CÁC YẾU TỐ CỦA MỘT RBTV o Định nghóa RBTV
o Các yếu tố RBTV 4.2 PHÂN LOẠI CÁC RBTV
o RBTV có bối cảnh quan hệ o RBTV có bối cảnh nhiều quan hệ
(27)27
ĐỊNH NGHĨA – CÁC YẾU TỐ CỦA RBTV
1 Định nghóa
Ràng buộc tồn vẹn (RBTV – Integrity Constraint) quy tắc bất biến mà tất thao tác CSDL phải tuân theo nhằm đảm bảo tính chất đắn, an tồn tồn vẹn liệu CSDL
2 Các yếu tố RBTV
a) Nội dung RBTV.
(28)28
Ví dụ R1:
“Mỗi phịng ban phải có khoản kinh phí tối thiểu 10,000$ để hoạt động” (Theo tân từ PhongBan)
Hoặc biểu thức toán học chặt chẽ hơn:
d PhongBan : d.kinhPhi 10,000
Ví dụ R2:
“Mỗi nhân viên phải có giới tính xác định ‘F’ (‘F’ = Female = Nữ) ‘M’ (‘M’ = Male = ‘Nam’)”
e NhanVien: e.GioiTinh { ‘F’, ‘M’ }
(29)29
b) Bối cảnh xảy RBTV
Xác định rõ RBTV có liên quan đến quan hệ quan hệ
c) Tầm ảnh hưởng RBTV
Caăn xađy dựng bạng goăm ct: Teđn quan h, Theđm, Xóa, Sửa Nêu thao tác vi phám RBTV đôi với quan h tái giao đieơm dòng ct ghi dâu cng (+) Nêu chư ạnh hưởng tređn thuc tính thođi ghi teđn thuc tính phía dâu cng Nêu khođng ạnh hưởng ghi daẫu trừ (-); nêu khođng ạnh hưởng lý khođng sửa ghi theđm dâu (*) phía tređn cụa dâu trừ
Ví dụ: Ảnh hưởng thuộc tính MaPB: +(MaPB) Và khơng ảnh hưởng sửa được: -(*)
(30)30
Quan hệ Thêm Xóa Sửa
PhongBan - + -(*)
NhanVien +(MaPB) - +(MaPB)
e NhanVien, d PhongBan: e.MaPB = d.MaPB
NhanVien[MaPB] PhongBan[MaPB]
(31)31
ĐỊNH NGHĨA – CÁC YẾU TỐ CỦA RBTV
d) Hành động cần tiến hành RBTV bị vi phạm.
Thông thường là: Thông báo lỗi Từ chối thao tác
Thông báo lỗi phải đầy đủ, rõ ràng lịch Hai trường hợp xử lý:
Trực tuyến (On-line InterActive): Ra hình
(32)32
PHÂN LOẠI CÁC RBTV
1 RBTV có bối cảnh quan hệ
a) RBTV miền giá trị: Thuộc tính khơng đặc trưng kiểu liệu mà cịn bị giới hạn miền giá trị kiểu liệu
“Mỗi nhân viên phải có giới tính xác định ‘F’ (‘F’ = Female = Nữ) ‘M’ (‘M’ = Male = ‘Nam’)”
e NhanVien: e.GioiTinh { ‘F’, ‘M’ }
(33)33
PHÂN LOẠI CÁC RBTV
2 RBTV coù bối cảnh nhiều quan hệ
a) RBTV khóa ngoại cịn gọi RBTV phụ thuộc tồn hay RBTV tham chiếu
RBTV tham chiếu xảy có trường hợp sau: Có diện khố ngoại
Có lồng khố quan hệ
(34)34 Vd: “Mỗi nhân viên phải thuộc phòng/ban định”:
NhanVien[MaPB] PhongBan[MaPB]
PHÂN LOẠI CÁC RBTV
Quan hệ Thêm Xóa Sửa
PhongBan - + -(*)
(35)35 b) RVTB liên thuộc tính – liên giá trị – liên quan hệ
Do diện thuộc tính tính tốn (giá trị thuộc tính tính tốn từ thuộc tính khác)
Ví dụ: Xét quan hệ
SINHVIEN (MaSV, TenSV, DTB) DIEM_SV(MaSV, MaMon, Diem) Biểu diễn:
PHÂN LOẠI CÁC RBTV
) .
( .
: sv DTB AVG dsv Diem SINHVIEN
sv
(36)36
Quan hệ Thêm Xoá Sửa
SINHVIEN + - +
DIEM_SV + + +(Diem, MaSV)
Bảng tầm ảnh hưởng:
(37)37
1 Phụ thuộc hàm F (Functional Dependency) a)Định nghóa
R(U); X, Y U Nếu tồn ánh xạ f từ X vào Y ta nói X xác định hàm Y hay Y phụ thuộc hàm vào X ký hiệu X Y
b) Phụ thuộc hàm hiển nhiên: X Y đươc gọi PTH hiển nhiên Y X
c) Phụ thuộc hàm suy diễn lơgíc từ tập PTH cho
d) Bao đóng tập PTH F: tức tập PTH suy diễn logic từ F Nếu F = F+ ta nói F họ đầy đủ PTH
(38)38
2 Hệ tiên đề Armstrong.
a) Hệ tiên đề bản.
Luaät phản xạ: X, Y U Nếu Y X XY
Luật tăng trưởng: X, Y, W U Nếu XY XWYW
Luật bắc cầu: X, Y, Z U Nếu XY YZ XZ b) Bổ đề, tiên đề mở rộng.
(iv) Luật tách: X, Y, Z U Nếu XYZ X Y XZ
(v) Luật gộp: X, Y, Z U Nếu XY XZ XYZ
(vi) Luật tựa bắc cầu:
X, Y, Z, W U Nếu XY YWZ XWZ
(39)39 c) Bao đóng tập thuộc tính.
R (U) quan hệ định nghĩa tập thuộc tính U F tập phụ thuộc hàm xác định R; X U
X+
F = A U: X A F+
Bài toán thành viên: X A F+ A X+ F
d) Ứng dụng bao đóng để tìm khóa lược đồ quan hệ: Khóa tập thuộc tính K mà bao đóng K R(K+=R) bớt khỏi K phần tử bao đóng
của khác R
Từ định nghĩa ta thấy tìm khóa tập R ta bớt dần phần tử R để nhận tập bé mà bao đóng R
(40)40
ChươngV: CHUẨN HÓA LƯỢC ĐỒ QUAN HỆ
NỘI DUNG:
Trong cơng tác quản lý xử lý hệ sở liệu, thường phải đưa CSDL dạng đơn giản nhất, xử lý nhanh Để thực mục đích phải tiến hành “chuẩn hóa” hệ CSDL Tức xét số dạng quen thuộc mà CSDL gọi dạng chuẩn
(41)41
DẠNG CHUẨN THỨ NHẤT
Dạng chuẩn (first Norm Form) ký hiệu laø 1NF
Cho lược đồ CSDL R, Q quan hệ R gọi đạt dạng chuẩn 1NF toàn miền giá trị có mặt Q chứa giá trị nguyên tố (giá trị nguyên tố giá trị tách thành giá trị khác – giá trị đơn)
(42)42
DẠNG CHUẨN THỨ HAI – 2NF
Thuộc tính phụ thuộc đầy đủ
Y phụ thuộc hoàn toàn vào X nếu: - XY bớt khỏi X dù thuộc tính A - not (X\A) Y
Quan hệ Q gọi đạt dạng chuẩn 2NF thỏa điều kiện:
Q đạt dạng chuẩn 1NF
Tất thuộc tính khơng khóa phải phụ thuộc đầy đủ vào khóa
Ví dụ: Cho quan heä Q(A,B,C,D,E,F,G) F = {ABCDEFG, BG}
(43)43 Ví dụ 3: Cho quan hệ Q(A,B,C,D,E,H)
F = {AE, CD, EDH}
Khóa quan hệ Q ABC tồn CD phụ thuộc hàm khơng đầy đủ vào khóa Vậy Q khơng đạt chuẩn 2NF
Lưu ý: Trong số trường hợp tất phần tử Q đều khóa, tức tập phần tử khơng khóa rỗng nên Q đạt chuẩn 2NF.
(44)44
DẠNG CHUẨN THỨ BA- 3NF
Quan hệ Q đạt chuẩn 3NF thỏa điều kiện - Đạt chuẩn 2NF
- Tất thuộc tính không khóa phải không phụ thuộc bắt cầu vào khóa
Ví d :ụ SinhVien(MaSV, HoTen, NgaySinh, MaLop)
cau bac PTH TenLop MaSV MaLop MaSV TenLop MaLop TenLop MaSV
(45)45 Quan hệ Q đạt chuẩn BCK hay BCNF thỏa điều kiện
- Đạt chuẩn 3NF
- Quan hệ Q không tồn PTH dạng Xx với x X
Ví dụ: Cho quan hệ R = {A, B, C, D} F = {ABC, CABD}
Các tập có bao đóng khác R là: X = {A}, X = {B}, X= {D}, X= {A, D}, X= {B, D} tập khơng có PTH dạng Xx với x X
Vậy R đạt chuẩn BCNF
Dạng chuẩn lược đồ CSDL dạng chuẩn thấp dạng chuẩn quan hệ lược đồ
DẠNG BOYCE-CODD - BCNF
Q X
(46)46
Chương VI : ĐẠI SỐ QUAN HỆ
6.1 CÁC PHÉP TOÁN TẬP HỢP TRÊN CÁC QUAN HỆ 6.2 CÁC THAO TÁC CƠ SỞ TRÊN QUAN HỆ
(47)47
CÁC PHÉP TOÁN TẬP HỢP TRÊN CÁC QUAN HỆ
1 Phép hợp quan hệ (UNION)
Cho R S quan hệ định nghĩa tập thuộc tính U = { A1, A2, , An }
Phép hợp quan hệ R S, ký hiệu R S, quan hệ Q định nghĩa tập thuộc tính U, mà
TQ = { t : t TR t TS } Phép trừ quan hệ (MINUS)
Cho R(U) S(U) quan hệ Hiệu quan hệ R S, ký hiệu R \ S, quan hệ Q định nghĩa tập
thuoäc tính U, mà
(48)48
CÁC PHÉP TOÁN TẬP HỢP TRÊN CÁC QUAN HỆ
3 Pheùp giao (INTERSECTION)
Cho R(U) S(U) quan hệ Phép giao quan hệ R S, ký hiệu R S, quan hệ Q định nghĩa tập thuộc tính U, mà
TQ = { t : t TR t TS }
4 Phép tích Đề Các (Des CARTESIAN)
Cho R(A1, A2, , An) vaø S(B1, B2, , Bn) quan hệ
Tích Đề quan hệ R S, ký hiệu R x S, quan hệ Q định nghĩa tập thuộc tính {A1, A2, ., An, B1, B2, , Bn)}, mà
(49)49 Phép chia quan hệ (DIVISION)
Khơng làm tính tổng quát, giả sử R (A,B) S(B) quan hệ Thương quan hệ R S, ký hiệu R S, quan hệ Q định nghĩa thuộc tính A, mà
TQ = { t =r.A: r TR u TS (t,u) TR}, Tức là: Q x S R
(50)50 Ví dụ: Có quan hệ với thể sau:
Quan hệ phi công: PhiCong (#p) = { 30, 31, 32 }
Quan hệ máy bay MayBay (#m) = { 100, 101, 102, 103 } Khả lái máy bay phi công: KhaNang (#p, #m ) Với giá trị: { (30,100), (30,101), (30,102), (30,103),
(31,100), (31,102), (32,100), (32,101) }
Câu hỏi: “Cho danh sách phi cơng có khả lái tất máy bay?”
Trả lời: “Phi cơng số 30 Đó kết phép chia quan hệ KhaNang cho quan hệ MayBay (KN MB) ”
(51)51 Pheùp chieáu (PROJECTION)
Cho R (U) quan hệ định nghĩa tập thuộc tính U = (A1, A2, , An); K U
Phép chiếu quan hệ R tập thuộc tính K, ký hiệu R[K] K(R), quan hệ Q (K), mà TQ = { t = r.K, r TR } Nói đơn giản, quan hệ lấy từ R sau loại bỏ cột không cần giữ lại, loại bỏ dòng giống Phép chọn (SELECTION)
Phép chọn quan hệ R thỏa điều kiện e cho, ký hiệu R : (e), (e) (R)
(52)52
Theo định nghóa, kết phép chiếu phép chọn các giá trị giống nhau
Ví dụ 1: “Cho biết mã số tên phòng ban công ty?”
Phép tốn: PhongBan [ MaPB, TenPB]
Ví dụ 2: “Cho biết nhân viên Cty làm công việc ?”
Phép tốn: NhanVien [MaCV]
Ví dụ 3: “Cho biết mã số tên, công việc, tiền lương nhân viên trong công ty?”
Phép tốn: NhanVien [ MaNV, TenNV, MaCV, Luong]
Ví dụ 4: “Cho tên tiền lương nhân viên phòng soá 40?”
Phép toán: ( NhanVien: (MaPB = 40))[ TenNV,Luong]
(53)53 Phép thêta kết ( - JOIN)
Ở phép so sánh: >, >=, <, <=, =
Cho R (U) S (V) quan hệ định nghĩa tập thuộc tính U ={A1, A2, , An} V = {B1, B2, , Bn)} AU, B V thuộc tính quan hệ
Phép - kết quan hệ R S, ký hiệu R S,
moät quan hệ Q (UV), mà TQ = { t = (u, v): u TR v TS u.A v.B}
Phép - kết R S biểu diễn tương đương: R S = (R x S) : (R.A S.B)
CÁC THAO TÁC CƠ SỞ TRÊN QUAN HỆ
(54)54 Các trường hợp đặc biệt:
Nếu phép so sánh (=) phép kết gọi phép kết nhau, hay phép kết tương đương
Nếu phép so sánh (=) thuộc tính A, B có tên giống gọi phép kết tự nhiên (NATURAL JOIN), ký hiệu R S
Ví dụ: “Cho tên phòng ban danh sách tên nhân viên”: PhongBan NhanVien [TePB, TenNV]
(55)55
CÁC PHÉP TOÁN KHÁC
1 Phép kết (INNER JOIN) Thực chất phép nhau, hay phép kết tương đương EQUI-JOIN Có thể ký hiệu phép toán dấu (*)
Kết phép kết R S: Q(A, X, B, Y)
(1, x1, 1, y1) (2, x2, 2, y2)
R(A, X) (1, x1) (2, x2) (3, x3)
(56)56 Pheùp kết vế trái (LEFT JOIN)
Phép kết vế trái R S, ký hiệu R S, quan hệ Q định nghĩa tập thuộc tính U V, mà
TQ = { t = (u, v): u TR v TS u.A = v.B Kết phép kết vế trái R S là: Q(A, X, B, Y)
(1, x1, 1, y1) (2, x2, 2, y2)
(3, x3, Null, Null) (1)
(57)57 Phép kết vế phải (RIGHT JOIN)
Phép kết vế phải R S, ký hiệu R S, quan hệ Q định nghĩa tập thuộc tính U V, mà
TQ = { t = (u, v): u TR v TS u.A = v.B Kết phép kết vế phải R S là:
Q(A, X, B, Y) (1, x1, 1, y1) (2, x2, 2, y2)
(Null, Null, 4, y4) (2)
Suy ra, dễ dàng tìm S mà khơng có giá trị tương ứng quan hệ R
(58)58 Viết biểu thức quan hệ để trả lời cho câu hỏi sau:
1: “Cho danh sách nhân viên làm phòng với Watson”
(NhanVien : (TenNV = ‘Watson’))[MaPB] NhanVien
2: “Cho tên người lãnh đạo Smith”
((((NhanVien : (TenNV =‘Smith’))[MaPB] PhongBan)[MaNQL]) NhanVien) [TenNV]
3: “Cho danh saùch nhân viên có lương 4000” NhanVien : (Luong > 4000)
(59)59
Chương VII: NGƠN NGỮ TRUY VẤN CSDL
NỘI DUNG
7.1 TRUY VẤN ĐỂ TÌM KIẾM THƠNG TIN 7.2 TRUY VẤN ĐỂ THAY ĐỔI DỮ LIỆU
(60)60
Tư tưởng chủ đạo: Cần gì? Từ đâu mà có?
1 Truy Vấn Đơn Giản: Cú phaùp:
SELECT <biểu thức1>, <biểu thức2>, … <biểu thức n>
FROM <quan heä> ;
(Những ta CẦN đặt sau SELECT Cái TỪ ĐÂU mà có đặt sau FROM)
Ghi chuù:
(*) Nếu <biểu thức> tên tất field dùng *
(*) Đặt tên lại cho biểu thức thêm AS <tên> sau <biểu thức> (*) Sử dụng DISTINCT sau SELECT để lấy dòng
(61)61 Các ví dụ minh họa:
1 “Cho mã số, tên, công việc, lương, huê hồng, mã phịng, giới tính nhân viên Cty”
SELECT MaNV, TenNC, MaCV, Luong, HoaHong, MaPB, GioiTinh FROM NhanVien;
SELECT * FROM NhanVien;
2 “Cho tên tiền lương năm nhân vieân?”
SELECT TenNV, Luong*12 AS LuongCaNam FROM NhanVien;
3 “Cho biết mã hiệu công việc mà nhân viên Công ty làm?”
SELECT DISTINCT MaCV FROM NhanVien;
(62)62 2 Sắp xếp kết in – Mệnh đề ORDER BY
Cú pháp mệnh đề:
ORDER BY <bthức 1>[ASC | DESC], … <bthứcn>[ASC | DESC] Ghi chú:
(*) Có thể thay <bthức> số thứ tự mệnh đề
SELECT
(*) Có thể dùng với TOP n [ PERCENT] để lấy dịng đầu Ví dụ:
1 “Cho danh sách nhân viên theo phòng ban.”
SELECT * FROM NhanVien ORDER BY MaPB; SELECT * FROM NhanVien ORDER BY 6;
(Vì MaPB thuộc tính thứ danh sách biểu thức sau SELECT)
(63)63 3 Chọn lọc ghi – Mệnh đề WHERE
Cú pháp mệnh đề: WHERE <điều kiện chọn > Điều kiện biểu thức lơgíc có dạng:
p1 AND | OR p2 AND | OR p3 … And | Or pn
Ở pi (i = 1, 2, …, n) biểu thức lơgíc sở, thường có dạng:
[NOT] <biểu thức 1> <phép so sánh> <biểu thức 2> [NOT] EXISTS (<câu truy vấn SQL>)
Ở đây: <phép so sánh> là: <, <=, >, >=, =, <>
IN (<danh sách giá trị cách dấu phảy>) BETWEEN <giá trị thấp> AND < giá trị cao> LIKE <mẫu - Pattern>
(64)64
1) Liệt kê nhân viên phòng 40
SELECT * FROM NhanVien WHERE MaPB=40
2) Liệt kê nhân viên quản lý có lương lớn 4000
SELECT * FROM NhanVien WHERE MaCV=’QuanLi’
AND Luong>4000
3) Cho thơng tin nhân viên có lương lớn 4000 nhân viên thuộc phòng 40
SELECT * FROM NhanVien WHERE MaPB=40 OR Luong > 4000
(65)65 4 Xác định nguồn liệu – Mệnh đề FROM
Cú pháp mệnh đề:
FROM <quan hệ 1> [<bí danh>], …, <quan hệ n> [<bí danh>]
(*) Việc liệt kê danh sách quan hệ sau FROM ln địi hỏi phải thể mối quan hệ chúng mệnh đề WHERE khiến máy phải thực phép tích Des Cartesian (*) Nên dùng bí danh cho quan hệ để tiện lợi cho cách viết lệnh
(66)66 5 Các hàm tích hợp nhóm ghi – Mệnh đề GROUP BY Các hàm tích hợp nhóm ghi gồm có:
SUM (<biểu thức số>): Hàm tính tổng
COUNT (* | [DISTINCT] <tên field>): Đếm số lượng mẫu tin
AVG (<biểu thức số>): Hàm tính giá trị trung bình
MIN (<biểu thức>) : Lấy giá trị nhỏ
MAX (<biểu thức>): Lấy giá trị lớn
(67)67
Cú pháp mệnh đề:
GROUP BY <biểu thức 1>, <biểu thức 2> , …
(*) Nếu GROUP BY tồn nhóm
(*) Ngoại trừ biểu thức có hàm tích hợp biểu thức cịn lại phải có mặt mệnh đề GROUP BY
(68)68 6 Giới hạn kết in – Mệnh đề HAVING
Cú pháp mệnh đề:
HAVING <điều kiện chọn ghi kết quả>
(*) HAVING phải kèm với mệnh đề GROUP BY
Tóm lại, cú pháp tổng quát câu lệnh truy vấn tìm kiếm laø:
SELECT [DISTINCT] [TOP n [PERCENT]] <các biểu thức>
FROM <quan hệ 1>[<bí danh>], <quan hệ 1>[<bí danh>], … [WHERE <điều kiện chọn ghi để xử lý>]
[GROUP BY <các biểu thức phân nhóm> ] [HAVING <điều kiện chọn ghi kết quả> ] [ORDER BY <các biểu thức xếp> ]
(69)69 7 Câu truy vấn (SubQuery)
Định nghĩa: Là câu truy vấn mà kết dùng câu truy vấn khác Câu truy vấn phải đặt cặp dấu ngoặc tròn ( )
Trong SQL-SERVER, ORACLE, DB2, INFORMIX, …
Câu truy vấn dùng để tạo nguồn liệu cho câu truy vấn khác, có nghĩa có mặt mệnh đề FROM
Có thể dùng nhiều biểu thức sau SELECT câu truy vấn con, xem giá trị Các phép toán so sánh với giá trị viết cách bình thường
(70)70
TRUY VẤN ĐỂ TÌM KIẾM THƠNG TIN
Các phép so sánh dùng với câu truy vấn là:
>, >=, =, <, <=, <> (Nếu Subquery cho lại giá trị) IN, =Some, =Any: Các phép toán tương đương nhau, dùng để
kiểm tra xem giá trị có nằm tập giá trị
Subquery
> All, >=All, <All, <=All
[Not] Exists : Kieåm tra SubQuery có trả mẫu tin
(71)71 “Cho danh sách nhân viên có lương cao thấp
Công ty”
Q1: Tìm mức lương cao (x) thấp (y) công ty Q2: Tìm nhân viên có lương = (x) lương = (y)
SELECT * FROM NhanVien
WHERE Luong = (SELECT MAX(Luong)
FROM NhanVien)
OR Luong = (SELECT MIN(Luong) FROM NhanVien)
(72)72
TRUY VẤN ĐỂ THAY ĐỔI DỮ LIỆU
1 Tạo bảng từ liệu câu truy vấn Cú pháp:
SELECT <các biểu thức> INTO <tên quan hệ>
FROM <các quan hệ> [Mệnh đề WHERE>] [Mệnh đề GROUP BY] [Mệnh đề HAVING] [Mệnh đề ORDER BY]
Ví dụ: “Tạo quan hệ có tên Manager để lưu n/v phụ trách phòng/ban”
Select * into Manager from NhanVien where
(73)73 Thêm giá trị vào quan heä
a Thêm từ giá trị cho: Cú pháp:
INSERT INTO <teân quan hệ>[(<các field>)]VALUES (<các giá trị>)
Ví dụ: “Thêm nhân viên có tên Hồng Duy mã số 300 vào phịng số 10 làm n/v kế tốn với lương 2700$”
INSERT INTO NhanVien
VALUES (300, ‘Hoàng Duy’, ‘KeToan’, 2700, NULL, 10, ‘M’);
* Nên viết:
Insert Into NhanVien(MaNV, TenNV, MaCV, Luong, HoaHong, MaPB, GioiTinh)
Values (300, ‘Hoàng Duy’, ‘KeToan’, 2700, NuLL, 10, ‘M’)
(74)74
b Thêm từ CSDL: Cú pháp:
INSERT INTO <teân quan hệ>[(<các field>)]
Select (<các biểu thức>)
From <các quan hệ> [Where <điều kiện>]
[Group by <các biểu thức phân nhóm>]
[Having <điều kiện chọn ghi cuối cùng>];
Ví dụ: “Thêm vào quan hệ Manager nhân viên có lương > 4000$”
INSERT INTO MANAGER
SELECT * FROM NhanVien
WHERE Luong > 4000
(75)75
4 Xóa CSDL: Cú pháp:
DELETE FROM <tên quan hệ> [WHERE <điều kiện xóa bộ>];
(*) Nếu điều kiện sau WHERE tất giá trị quan hệ bị xóa
Ví dụ: “Xóa khỏi quan hệ NhanVien nhân viên phụ trách các phòng ban”
DELETE FROM NhanVien
WHERE MaCV = ‘QuanLi’;
(76)76 Tạo cấu trúc bảng (quan hệ)
2 Sửa đổi cấu trúc bảng
a) Sửa kích thước cột (Field Size)
b) Thêm cột vào bảng (Add Column) c) Xác định miền giá trị (Domain)
d) Thiết lập giá trị mặc định (Default Value) e) Thiết lập khóa (Primary Key)
3 Thiết lập khóa ngoại (Foreign Key) Bổ sung mục (Index)
5 Tạo cấp quyền hạn cho người sử dụng
6 Hủy bỏ Khóa, Chỉ mục, Quan hệ, Người dùng
(77)77
TỐI ƯU HÓA CÂU TRUY VẤN
MỞ ĐẦU
CÁC NGUYÊN TẮC TỔNG QUÁT ĐỂ TỐI ƯU HĨA CÂU TRUY VẤN
– Các nguyên tắc baûn
– Các biểu thức tương đương
(78)78
MỞ ĐẦU
Tối ưu hóa câu truy vấn phép biến đổi (tương đương) câu truy vấn nhằm giảm thời gian xử lý không gian lưu trữ
Tối ưu
Thời gian xử lý
Không gian lưu trữ
(79)79
NGUYÊN TẮC TỐI ƯU HÓA CÂU TRUY VẤN
1 Các nguyên tắc bản
Gồm nguyên tắc:
Thực phép chọn sớm tốt
Tồ hợp phép chọn phép tích Đề-Các thành phép
kết
Tồ hợp phép quan hệ phép chọn
phép chiếu
Tìm biểu thức chung biểu thức Tiền xử lý bảng indexes
(80)80
NGUYÊN TẮC TỐI ƯU HÓA CÂU TRUY VẤN
2 Các biểu thức tương đương
Hai biểu thức gọi tương đương với thể CSDL trả kết
Kí hiệu:
Với định nghĩa tương đương ta có số quy tắc chuyển dịch đại số thông thường sau
2 E
(81)81
NGUYÊN TẮC TỐI ƯU HÓA CÂU TRUY VẤN
Các nguyên tắc liên quan đến phép kết phép tích đề
(E1⋈E2) ⋈E3 E1⋈(E2 ⋈E3)
) (
)
(E1 E2 E3 E1 E2 E3
Qui tắc kết hợp
E1 E2 E2 E1⋈ ⋈
1
2
1 E E E
E
(82)82
NGUYÊN TẮC TỐI ƯU HÓA CÂU TRUY VẤN
Các ngun tắc liên quan đến phép chọn phép chiếu Dãy phép chọn
Dãy phép chiếu
Giao hốn phép chọn phép chiếu
n
n R f f f
f f
f
R : 1) : 2 ) ) : : 1 2
((( n n n n n A A A A B B B B voi B B B B R B B B B A A A A R 3 3
1 ])[ ] [ ]
[ ( ] )[ : ( : ]
[A1 A2 An f R f A1 A2 An
(83)83 Giao hốn phép chọn phép tích Đề-các
Giao hốn phép chọn phép hợp
2
2
1 ): ( : )
(R R f R f R f liên quan R1
1
2
1 ) : ( : )
(R R f R f R f liên quan R2
) : ( ) : ( : )
(R1 R2 f R1 f1 R2 f2 f f1 f2
) : ( ) : ( : )
(R1 R2 f R1 f R2 f
(84)84 Giao hoán phép chọn phép trừ
Giao hoán phép chiếu với phép tích Đề-các
Giao hốn phép chiếu phép hợp
) : ( ) : ( : )
(R1 R2 f R1 f R2 f
] [ ] [ ] )[
(R1 R2 A1A2 AN R1 B1B2 Bm R2 C1C2 Ck
với A1 An thuộc tính bao gồm B1 Bm R1
2
1 C R
C k
]) [ ( ]) [ ( ] )[
(R1 R2 A1 An R1 A1 An R2 A1 An
(85)85
TAØI LIỆU THAM KHẢO
1 Nguyễn Đăng Tỵ, Giáo trình CSDL, ĐHQG Tp.HCM, 2001
2 Lê Tiến Vương, Nhập môn CSDL, NXB Thống kê, 2000
3 Bùi Minh Từ Diễm, Bài giảng nhập môn CSDL, KHTN, 2002 4 Nguyễn Bá Tường, CSDL Lý thuyết thực hành, NXB Khoa
học kỹ thuật