Phần 2 Giáo trình Cơ sở dữ liệu 1 trình bày nội dung chương 3 đến chương 6. Nội dung phần này gồm: Lý thuyết thiết kế cơ sở dữ liệu, ngôn ngữ định nghĩa và thao tác dữ liệu, tối ưu hóa câu hỏi, an toàn và toàn vẹn dữ liệu.
Giáo trình Cơ sở liệu – Bộ mơn Hệ thống thông tin CHƯƠNG LÝ THUYẾT THIẾT KẾ CƠ SỞ DỮ LIỆU 3.1 Giới thiệu 3.1.1 Vấn đề thiết kế sở liệu Một sở liệu quan hệ gồm tập quan hệ Muốn xây dựng sở liệu quan hệ cần xác định sở liệu có quan hệ gì, quan hệ có thuộc tính nào, liên kết quan hệ nào? Từ sở phân tích xây dựng nên sơ đồ thực thể liên kết, xác định quan hệ liên kết cần thiết, chỉnh sửa chuẩn hoá quan hệ hệ thống sở liệu / Bước cuối nhập liệu theo dõi bảo trì cập nhật, hồn thiện quan hệ, liên kết hệ thống theo u cấu người dùng 3.1.2 Bài tốn ví dụ Giả sử cửa hàng bán lẻ nhân viên mở sổ theo dõi việc bán hàng hàng ngày bảng (quan hệ) sau: Nhận xét: - Cơ sở liệu có bảng (quan hệ) - Một số thuộc tính lặp lại nhiều lần như: Tên hàng, Đơn giá Ta tách bảng thành bảng: BH1 30 Giáo trình Cơ sở liệu – Bộ môn Hệ thống thông tin BH2 BH3 Với cách tổ chức ta thấy: - Cơ sở liệu gồm bảng (quan hệ) - Trong quan hệ khơng có dư thừa liệu 3.1.3 Kết luận Cách tổ chức liệu thứ hai tết thuận lợi cho việc áp dụng máy tính vào xử lý khắc phục tượng nảy sinh cập nhật, sửa chữa liệu như: -Dư thừa - Không quán Cơ sở để tách quan hệ dựa phụ thuộc thuộc tính (gọi phụ thuộc hàm) nghĩa từ thuộc tính suy thuộc tính kia: Ví dụ: Từ mã hàng ta suy tên hàng Mã hàng “A1” “tên hàng” phải xe đạp Mã hàng “A2” “tên hàng” phải xe máy Việc tách quan hệ thành quan hệ ta gọi phép chuẩn hoá 3.2 Sơ đồ quan hệ 3.2.1 Phụ thuộc hàm Cho tập thuộc tính U Một phụ thuộc hàm U công thức dạng: Nếu f:X → Y phụ thuộc hàm U ta nói tập thuộc tính Y phụ thuộc hàm vào tập thuộc tính X (hay tập thuộc tính X xác định hàm tập thuộc tính Y 31 Giáo trình Cơ sở liệu – Bộ môn Hệ thống thông tin Cho quan hệ R(U) PTH f: x → Y U Ta nói quan hệ R thoả PTH f viết R(f) với ti, tj ∈ R giống X chúng giống Y Hay R(X → Y) ⇔ ( ∀ u,v ∈ R): u.X=v.X ⇒ u.Y = v.Y Trong u, v hai thuộc quan hệ R Nếu Y khơng phụ thuộc hàm vào X ta viết X! ⇒ Y Ví dụ: Trong bảng sau ta có phụ thuộc hàm thuộc tính “họ tên” vào thuộc tính “mã sinh viên” - Trên quan hệ ta tìm thấy tập phụ thuộc hàm, gọi tập phụ thuộc hàm tập F Mỗi sở liệu thực tế thường có tập F lớn nên ta phải chọn cho thích hợp Trong quan hệ ta có: - Tên sinh viên phụ thuộc vào mã sinh viên (mã sinh viên → tên ) - Quê quán phụ thuộc hàm vào mã sinh viên (mã sinh viên → quê quán) - Ký hiệu phụ thuộc hàm f Ký hiệu tập phụ thuộc hàm F: F = {X → Y, X → Z, XZ → K } 3.2.2 Lược đồ quan hệ Một lược đồ quan hệ r cặp (U,F) U tập hữu hạn thuộc tính, F tập phụ thuộc hàm xác định U Ví dụ: Cho lược đồ quan hệ r(U,F), với U = { A,B,C,D,E } VÀ F = {A → BC, B → D, AD → E} Một lược đồ quan hệ tương đương với lược đồ quan hệ khác tết việc áp dụng thao tác liệu, sở cho việc chuẩn hoá lược đồ quan hệ 3.3 Hệ tiên đề cho tập phụ thuộc hàm 3.3 Đặt vấn đề Ta thấy với toán quản lý khác ta phải làm việc với loại liệu khác nhau, phương pháp tổng quát cho loại liệu Hay nói cách khác khơng có lý thuyết mà áp dụng cho sở liệu Điều dẫn đến tốn tổ chức sở liệu toán thủ cơng 32 Giáo trình Cơ sở liệu – Bộ môn Hệ thống thông tin áp dụng cơng cụ tốn học q trình xử lý máy tính Từ người ta giải pháp cho khái qt hố sở liệu mơ hình tốn học áp dụng cơng cụ tốn học Trong sở liệu khái quát đó, thuật tốn xử lý khơng phụ thuộc vào ý nghĩa thuộc tính cụ thể mà phụ thuộc vào ràng buộc xác định qua tập thuộc tính tập phụ thuộc hàm Ví dụ: Ta có lược đồ quan hệ r(U, F) với U tập hữu hạn thuộc tính U: {A, B, C} , F tập PTH F : {A → BC} Ta coi A số báo danh; B tên; C tuổi Cũng coi A tên hàng; B đơn giá; C khối lượng Dù tên cụ thể A, B, C tập U F khô phụ thuộc vào tên cụ thể thuộc tính Từ vấn đề Armstrong nghiên cứu đưa mô hình tốn khái qt với tiên đề áp dụng cho sở liệu 3.3.2 Hệ tiên đề Armstrong Cho lược đồ quan hệ r(U,F) với U= { A1, A2,…An} tập thuộc tính Giả sử X, Y, Z ∈ U, ta có hệ tiên đề Armstrong sau: Tiên đề phản xạ Mọi tập X phụ thuộc hàm vào X Nếu Y ⊆ X X → Y Tiên đề tăng trưởng NẾU Z ∈ U ; X → Y XZ → YZ Tiên đề bắc cầu NẾU X → Y; Y → Z X → Z Từ tiên đề ta có tính chất sơ đồ quan hệ r(U,F); X,Y,Z,W ⊆ U Tính phản xạ chặt NẾU X → X Tính tựa bắc cầu : Nếu X → Y YZ → W XZ → W Tính mở rộng vế trái thu hẹp vê phải NẾU X → Y XZ → Y\W 33 Giáo trình Cơ sở liệu – Bộ môn Hệ thống thông tin Tính cộng đầy đủ Nếu X → Y Z → W XZ → YW Tính mở rộng vê trái NẾU X → Y mà WX → Y Tính cộng vê phải Nếu X → Y X → Z X → YZ Tính phận vê phải Nếu X → YZ X → Y Tính tích luỹ NẾU X → YZ, Z → W X → YZW Khi giải tốn ta áp dụng tiên đề Amstrong tính chất 3.3.3 Bài toán áp dụng Cho lược đồ quan hệ R(U,F) với U={A, B, C} F = {AB → C; C → A } Chứng minh BC → ABC Giải: Từ C → A (gt) Theo tiên đề tăng trưởng thêm vào hai vế B ta có: BC → AB (l) Từ AB → C (gt) Thêm AB vào hai vế ta có: AB → ABC (2) Từ (1) (2) theo tiên đề bắc cầu ta có: BC → ABC điều phải chứng minh 3.3.4 Kiểm tra tính đắn hệ tiên đề Amstrong Giả sử có bảng DS cán bộ: MÃCB, Tên CB, Mã lương, Bậc lương Trong đó: Mã CB → Tên CB, Mã lương, Bậc lương Mã lương → Bậc lương Mơ hình hố thuộc tính sau: Cho lược đồ quan hệ R(U,F) Trong U = {A,B,C,D} 34 Giáo trình Cơ sở liệu – Bộ mơn Hệ thống thông tin F = {A → B,C,D; C → D} Kiểm tra tiên đề Nếu đặt X = AB rõ ràng A ⊆ AB Với hai ti, tj ta có Nếu ti.AB = tj.AB Thì ti.A = tj.A Hiển nhiên ta thấy AB → A Kiểm tra tiên đề Đặt X = AB XC = ABC Đặt Y = D YC = DC Với hai ti, tj ta thấy Nếu ti.ABC = tj.ABC Thì ti.DC = tj.DC Như tiên đề thứ hai đắn Kiểm tra tiên đề Theo tiên đề ta thấy A → C ; C → D suy A → D Với hai ti, tj Nếu t1.A = t2.A Thì t1.D = t2.D Vậy tiên đề hoàn toàn 3.4 Bao đóng tập phụ thuộc hàm - Gọi F tập phụ thuộc hàm lược đồ quan hệ R(U) X,Y ⊆ U Nếu quan hệ xác định R(U) thoả X → Y X → Y phụ thuộc hàm thuộc F đặt F ∪ X → Y = F+ F+ gọi bao đóng F Ta nói X → Y suy diễn lôgic từ F F+ = {f:X → V| X,Y ∈ U F f} - Nếu có F = F+ F họ đầy đủ phụ thuộc hàm - Ví dụ: Cho lược đồ quan hệ r(U,F), với U : { A,C,B} F : { A → B, B → C} ta suy A → C Rõ ràng phụ thuộc hàm A → C suy diễn từ F Ta có F+ = {A → B, B → C, A → C} 35 Giáo trình Cơ sở liệu – Bộ môn Hệ thống thông tin 3.5 Phép tách quan hệ 3.5.1 Định nghĩa Cho lược đồ quan hệ r xác định tập thuộc tính U F tập phụ thuộc hàm Phép tách lược đồ quan hệ r(U) việc thay lược đồ quan hệ r(U) tập lược đồ r1(U1), r2(U2),…rm(Um), cho r(U) = r1(U1) ∪ r2(U2) ∪ rm(Um) Trong ri(Ui) ⊆ r(U), i=l,…,m ký hiệu phép tách r ρ ρ = {r1(U1), r2(U2),…rm(Um)} Nói ρ phép tách - kết nối không mát thông tin F với quan hệ R xác định r thoả F R = Π U1(R) * Π U2(R) * Π U3(R) * * Π Um(R) ) 3.5.2 Định lý Cho quan hệ R(U), Gọi R1(U1)và R2(U2) phép tách hai không mát thông tin R(U) nếu: Chứng minh: Ta phải chứng minh hai vấn đề: ♦ Giả sử xét bảng liệu sau: Tên Nam Bắc Nam Phách 01 02 03 Điểm U = {tên, phách, điểm} Nếu tách U1 = {tên}; U2 = {phách, điểm} Thì U1 ∩ U2 = Φ Rõ ràng ta thấy liệu khơng cịn xác Minh hoạ bảng sau ta thấy: 36 Giáo trình Cơ sở liệu – Bộ môn Hệ thống thông tin ♦ Giả sử chọn t thuộc R Khi tách thành R1, R2 ta t1, t2 Ta thấy t = t1 * t2 hay R ⊆ Rl * R2 Mặt khác ∀ t1 ∈ R1 ; ∀ t2 ∈ R2 ta có: t1[U1 ∩ U2] = t2[U1 ∩ U2] Theo tính chất phép tốn kết nối tự nhiên ta có: t1 * t2 = t Hay R1* R2 ⊆ R Như ta có R1 * R2 = R Định lý chứng minh Nhận xét: Nếu ta tách lần hai quan hệ , tách hai lần quan hệ muốn tách m quan hệ phải tách (m - 1) lần 3.5.3 Kiểm tra phép tách không mát thông tin - Cho lược đồ quan hệ r(U,F), Trong đó, tập thuộc tính U = {A1,A2,…An} tập phụ thuộc hàm F; phép tách ρ Hãy kiểm tra phép tách ρ : ρ = (R1, R2,…Rm) có mát thơng tin khơng? Thuật tốn: Bước l: Lập bảng gồm có n cột, m hàng Cột thứ i ứng với thuộc tính Aj hàng thứ i ứng với lược đồ ri Tại hàng i cột j viết ký hiệu aj Aj ∈ ri; ngược lại điền ký hiệu bij Bước 2: Áp dụng quy trình thay đuổi bảng trên: Xét phụ thuộc hàm từ F (dạng X → Y); xét hàng có giá trị thuộc tính X làm giá trị thuộc tính Y theo nguyên tắc: hàng nhay có có giá trị thuộc tính Y aj thay giá trị thuộc tính Y khác aj ngược lại thay bu tuỳ ý áp dụng cho phụ thuộc hàm đến không tạo bảng hay xuất hàng có đủ giá trị a1, a2, a3,…an Bước 3: Xét bảng kết xuất hàng có đủ giá trị a1, a2, a3,…an ta kết luận phép tách ρ không mát thông tin (bảo tồn thơng tin) Ngược lại phép tách ρ khơng bảo tồn thơng tin (mất mát thơng tin) ví dụ: 37 Giáo trình Cơ sở liệu – Bộ môn Hệ thống thông tin Cho quan hệ: HOCSINH (SBD, TEN, DTOAN, DTIN) Với phụ thuộc hàm: SBD → TEN; SBD → DTOAN, DTIN Tách thành hai quan hệ: HS1(SBD, TEN) HS2(SBD, DTOSN,DTIN) + Lập bảng kiểm tra sau: SBD TEN HSI a1 a2 HS2 a1 b22 DTOAN DTIN b13 a3 b14 a4 + Làm giá trị Ta thấy dịng thuộc tính TEN có giá tri a2 b22 mà SBD hai dịng có giá trị a2 Vậy theo phụ thuộc hàm SBD → TEN nên ta thay giá trị b22 thuộc tính TEN dịng a2 Ta có bảng: SBD TEN DTOAN DTIN HS1 a1 a2 b13 b14 HS2 a1 a2 a3 a4 Vậy bảng có dịng tồn giá trị aj (j = 4), nên phép tách không mát thông tin 3.6 Chuẩn hoá lược đồ quan hệ Khi thiết kế lược đồ quan hệ phải tuân theo số nguyên tắc để thao tác sở liệu không dẫn đến dị thường vê liệu Công việc thiết kế liệu theo dạng chuẩn gọi chuẩn hố liệu 3.6.1 Các dạng chuẩn lược đồ quan hệ Do việc cập nhật liệu (qua phép chèn, loại bỏ sửa đổi) gây nên dị thường, quan hệ thiết phải biến đổi thành dạng phù hợp, q trình gọi q trình chuẩn hoá Quan hệ chuẩn hoá quan hệ miền thuộc tính chứa giá trị nguyên tố, tức không phân nhỏ giá trị quan hệ nguyên tố Quan hệ có chứa miền giá trị không nguyên tố gọi quan hệ khơng chuẩn hố Một quan hệ chuẩn hố tách thành nhiều quan hệ chuẩn 38 Giáo trình Cơ sở liệu – Bộ mơn Hệ thống thơng tin hố khác khơng làm mát thơng tin Có dạng chuẩn sau: 1NF, 2NF, 3NF, BCNF 3.6.2 Một số định nghĩa a) Thuộc tính khố - Cho lược đồ quan hệ rộn với tập thuộc tính U, Ai → U; A gọi thuộc tính khố R tồn K ⊆ U, Nếu A ∈ K mà K khố A thuộc tính khố Nếu A ∉ K A thuộc tính khơng khố b) Phụ thuộc hàm đầy đủ Cho R(U) X,Y ⊆ U, Y gọi phụ thuộc hàm đầy đủ vào X, Nếu X → Y ∀ A ∈ X; (X - {A})! → Y Phụ thuộc hàm đầy đủ ký hiệu X+ → Y c) Phụ thuộc hàm bắc cầu - Cho R(U) X,Y ⊆ U Y gọi phụ thuộc hàm bắc cầu vào X ∃ Z ⊆ U: Y- Z ≠ φ , X → Z, Z! → X, Z → Y, Y! → X Nếu không ta nói Y phụ thuộc hàm trực tiếp vào X Phụ thuộc hàm bắc cầu ký hiệu X% → Y 3.6.3 Dạng chuẩn 1NF (1st Normal Form) Lược đồ quan hệ r gọi dạng chuẩn giá trị xuất r giá trị nguyên tố Ví dụ: TÊN HÀNG số LƯỢNG H1 H2 NHẬP XUẤT 15 10 20 18 Lược đồ quan hệ khơng phải dạng chuẩn giá trị thuộc tính SỐ LƯỢNG khơng phải ngun tố 3.6.4 Dạng chuẩn 2NF (2nd Normal Form) Lược đồ quan hệ r gọi dạng chuẩn 2NF dạng chuẩn thuộc tính khơng khố r phụ thuộc hàm đầy đủ vào khoá 3.6.5 Dạng chuẩn 3NF (3rd Normal Form) 39 Giáo trình Cơ sở liệu – Bộ môn Hệ thống thông tin danh sách chọn câu lệnh SELECT Trong trường hợp này, danh sách chọn không sử dụng tên cột hay biểu thức hàm gộp Ví dụ: Để thống kê trung bình điểm thi tất môn học ta sử dụng câu lệnh sau: SELECT AVG(DiemThi) AS Tinh_Trung_Binh_Diem FROM Diem f.2 Thống kê liệu nhóm Trong trường hợp cần thực tính tốn giá trị thống kê nhóm liệu, ta sử dụng mệnh đề GROUP BY để phân hoạch liệu vào nhóm Các hàm nhóm sử dụng thực thao tác tính tốn nhóm cho biết giá trị thống kê theo nhóm liệu Ví dụ: Câu lệnh cho biết sĩ số sinh viên lớp SELECT Lop.Malop, Tenlop, COUNT(MaSV) AS SiSo FROM LOP, Sinhvien WHERE Lop.MaLop = SinhVien Malop GROUP BY Lop.MaLop, TenLop Chú v: • Biểu thức điều khiển việc phân nhóm liệu biểu thức phải liệt kê sau mệnh đề GROUP BY • Trong trường hợp danh sách chọn câu lệnh SELECT có hàm nhóm biểu thức khơng phải đối số hàm nhóm biểu thức phải liệt kê đầy đủ mệnh đề GROUP BY, không câu lệnh khơng hợp lệ Ví dụ: Dưới câu lệnh sai thiếu trường Tenlop sau mệnh đề GROUP BY SELECT Lop.MaLop, TenLop, COUNT(MaSV) AS SiSo FROM Lop, SinVien WHERE Lop.MaLop = SinhVien MaLop GROUP BY Lop.MaLop g) Mệnh đề điều kiện hàm nhóm - HAVING Mệnh đề HAVING mệnh đề đặt điều kiện lên nhóm liệu Mệnh đề HAVING thường khơng thực có nghĩa khơng sử dụng kết hợp với mệnh đề GROUP BY Một điểm khác biệt HAVING WHERE điều kiện WHERE nam nhóm HAVING lại cho phép sử dụng hàm nhóm điều kiện Ví dụ: Đưa danh sách sinh viên có trung bình điểm thi lớn 64 Giáo trình Cơ sở liệu – Bộ mơn Hệ thống thông tin SELECT SinhVien.MaSV, HoDem, Ten, SUM(DiemThi*SoDvht)/SUM(SoDvht) FROM Sinhvien , MonHoc , Diem WHERE SinhVien.MaMon = Diem.MaMon AND MonHoc.MaMon=Diem.MaMon GROUP BY SinhVien.MaSV, HoDem, Ten HAVING SUM(DiemThi*SoDvht)/SUM(SoDvht) >=5 h) Truy vấn (Subquery) Truy vấn câu lệnh SELECT lồng vào bên câu lệnh SELECT, INSERT, UPDATE, DELETE bên truy vấn khác Loại truy vấn sử dụng để biểu diễn cho truy vấn điều kiện truy vấn liệu cần phải sử dụng đến kết truy vấn khác + Tìm tên cơng ty cung cấp mặt hàng H2 SELECT TenCongTy FROM CongTy, CungCap WHERE (CongTy.MaCongTy = CungCap.MaCongTy) AND (MaHang = ‘H2’) Hoặc viết sau: SELECT TenCongTy FROM CongTy WHERE MaCongTy IN (SELECT MaCongTy FROM CungCap WHERE MaHang = ‘H2’) Ví du: Câu lệnh sau liệt kê tên công ty chưa cung cấp mặt hàng SELECT TenCongTy FROM CongTy WHERE MaCongTy NOT IN (SELECT MaCongTy FROM Cungcap) Hoặc viết sau: SELECT * FROM CongTy WHERE MaCongTy ALL (SELECT MaCongTy FROM CungCap) + Tìm cơng ty cung cấp mặt hàng màu đỏ 65 Giáo trình Cơ sở liệu – Bộ môn Hệ thống thông tin SELECT TenCongTy FROM CongTy WHERE MaCongTy IN (SELECT MaCongTy FROM Cungcap WHERE MaHang IN (SELECT MaHang FROM HangHoa WHERE màu = “đỏ”)) + Câu lệnh sau liệt kê tên công ty chưa cấp mặt hàng có mã H1 SELECT TenCongTy FROM CongTy WHERE EXISTS (SELECT MaCongTy FROM Cungcap CC WHERE CC.MaCongTy=CongTy.MaCongTy AND MaHang ‘H1’) 2) Bổ sung liệu Dữ liệu bảng thề dòng (bản nghi) Để bổ xung thêm dòng liệu vào bảng, ta sử dụng câu lệnh INSERT SQL cung cấp cách để thực thao tác bổ sung liệu cho bảng: Bổ sung dòng liệu với câu lệnh INSERT Bổ sung nhiều dòng liệu cách truy xuất liệu tù bảng liệu khác a) Bổ sung dòng liệu với lệnh INSERT INSERT INTO [()] VALUES () Trong câu lệnh INSERT, danh_sách_tên_cột sau tên bảng không cần thiết phải định giá trị trường cửa ghi định đầy đủ danh sách giá trị Trong trường hợp này, thứ tự giá trị danh sách trị phải số lượng trường bảng cần bổ sung liệu phải tuân theo thứ tự trường bảng định nghĩa Ví dụ: Câu lệnh bồ sung thêm công ty vào quan hệ cong ty INSERT INTO CongTy VALUES (C12, ‘Hồ bình’, 600000000, ‘Thái ngun’, ’0280754379’) Trong trường hợp nhập giá trị cho số cột bảng, ta phải định 66 Giáo trình Cơ sở liệu – Bộ môn Hệ thống thông tin danh sách cột cần nhập liệu sau tên bảng Khi cột khơng nhập liệu nhận giá trị mặc định (nếu có) nhận giá trị NULL (nếu cột cho phép nhận giá trị NULL) Nếu cột khơng có giá trị mặc định không chấp nhận giá trị NULL mà không nhập liệu, câu lệnh bị lỗi Ví dụ: Câu lệnh sau bổ sung ghi cho bảng CongTy INSERT INTO CongTy ( MaCongTy, TenCongTy, Diachi, NganSach) VALUES (C13, ‘Trần Anh’, ‘Hà nội’, 500000000) Khi trường SODT nhận giá trị NULL Câu lệnh cịn viết sau: INSERT INTO CongTy VALUES (CI3, ‘Trần Anh’, 500000000, ‘Hà nội’, NULL) b) Bổ sung nhiều dòng liệu từ bảng khác Một cách sử dụng khác câu lệnh INSERT sử dụng để bổ sung nhiều dòng liệu vào bảng, dòng liệu lấy từ bảng khác thông qua câu lệnh SELECT Ờ cách này, giá trị liệu bổ sung vào bảng khơng chì định tường minh mà thay vào câu lệnh SELECT truy vấn liệu từ bảng khác Cú pháp câu lệnh có dạng sau: INSERT INTO [()] Ví dụ: Giả sử ta có bảng LuuCongTy bao gồm trường MaCongTy, TenCongTy, NganSach, DiaChi Câu lệnh bô sung vào bảng LuuCongTy dịng liệu có từ câu truy vấn SELECT INSERT INTO LuuCongTy SELECT MaCongTy, TenCongTy, NganSach, DiaChi FROM CongTy WHERE Diachi = ‘Hà nội’ Ghi chú: Kết câu lệnh SELECT phải có số cột với số cột định bảng đích phải tương thích kiểu liệu 3) Cập nhật liệu Câu lệnh UPDATE SQL sử dụng để cập nhật liệu bảng Câu lệnh có cú pháp sau: UPDATE SET = [,…, = ] 67 Giáo trình Cơ sở liệu – Bộ môn Hệ thống thông tin [FROM ] [WHERE ] Sau UPDATE tên bảng cần cập nhật liệu Một câu lệnh UPDATE cập nhật liệu cho nhiều cột cách định danh sách tên cột biểu thức tương ứng sau từ khoá SET Mệnh đề WHERE câu lệnh UPDATE thường tược sử dụng đề định dòng liệu chịu tác động câu lệnh (nêu không định, phạm vi tác động câu lệnh tồn dịng bảng) Ví dụ: Cập nhật lại địa cơng ty có mã CT1 UPDATE TABLE CongTy SET DiaChi = ‘Thái nguyên’ WHERE MaCongTy = ‘CTl’ 4) Xoá liệu Để xoá liệu bảng, ta sử dụng câu lệnh DELETE Cú pháp câu lệnh sau: DELETE FROM [FROM ] [WHERE ] Trong đó, tên bàng cần xoá liệu định sau DELETE FROM Mệnh đề WHERE câu lệnh sử dụng để định điều kiện dòng liệu cần xố Nếu câu lệnh DELETE khơng có mệnh đề WHERE tồn dịng bảng bị xoá Mệnh đề FROM định danh sách bảng có liệu liên quan đến việc xố liệu + Ví dụ: Câu lệnh sau xố khỏi bảng CONGTY cơng ty có địa Hà nội DELETE FROM CongTy WHERE DiaChi = ‘Hà nội’ Ví dụ: Xố khỏi bảng CongTy danh sách cơng ty cung cấp mặt có mã H1 DELETE FROM CongTy FROM Cungcap WHERE Cungcap.MaCongTy = CongTy.MaCongTy AND MaHang= ‘H1’ + Xố khỏi bảng CongTy cơng ty chưa cung cấp mặt hàng DELETE FROM CongTy WHERE MaCongTy NOT IN (SELECT DISTINCT MaCongTy FROM CungCap) + Xoá tất thông tin bảng Cungcap : DELETE FROM CungCap 68 Giáo trình Cơ sở liệu – Bộ môn Hệ thống thông tin BÀI TẬP CÂU HỎI Cho CSDL gồm quan hệ CC(MSNCC, TEN_CC, DCCC) MH(MSNCC, MSMH) Trong đó: MSNCC: Mã số người cung cấp TEN CC: Tên người cung cấp DCCC: Địa cung cấp MSMH: Mã số mặt hàng Hãy cho quan hệ liệu Hãy biểu diễn yêu cáu sau ngơn ngữ SQL a Tìm mã số người cung cấp Ql: mặt hàng Q2: không cung cấp mặt hàng Q3: cung cấp mặt hàng có MSMH 15 Q4: cung cấp mặt hàng khơng có mặt hàng có mã số 15 b Mặt hàng có mã số 12, 13, 15 dược cung cấp nhà cung cấp địa nào? c Lập danh sách gồm cột MSNCC, TEN_CC, MSMH) từ sở liệu Cho CSĐL gồm quan hệ sau: DAIHOC(TENTRUONG,HIEUTRUONG,DIACHI) KHOA(TENTRUONG,MSKHOA,TENKHOA,SOSINHVIEN) SINHVIEN(TENTRUONG,MSKHOA,MSSV,TENSV,DIACHISV) Trong đó: SOSINHVIEN: số lượng sum Viên MSKHOA: mã số khoa TENSV: tên sinh viên DIACHISV: địa sinh viên (hiểu quê quán) Hãy cho quan hệ liệu Biểu diễn câu hỏi sau ngôn ngữ SQL 1/ Trường Đại học có khoa TINHOC 2/ Tổng số sinh viên học tất trường đại học 69 Giáo trình Cơ sở liệu – Bộ môn Hệ thống thông tin 3/ Sinh viên học quê nhà (giả sử lấy tên tỉnh, thành phố) 4/ Khoa trường có số sinh viên cao nhất? 5/ Cho biết tên hiệu trưởng trường có khoa TINHOC Cho CSDL với quan hệ: NHANVIEN(MSNV,TENNHANVIEN,MSCOQUAN,CONGVIEC, THUTRUONG,LUONG) COQUAN(MSCOQUAN,TENCOQUAN,DIACHI) Hãy cho quan hệ liệu Biểu diễn ngôn ngữ SQL, đại số quan hệ yêu cầu sau đây: Ql: Tìm tên nhân viên quan có mã số 50 Q2: lân mã số tất quan từ quan hệ NHANVIEN Q3: Tìm tên nhân viên quan có mã số 15, 20, 25 Q4: Tìm tên người làm việc Đồ Sơn 70 Giáo trình Cơ sở liệu – Bộ mơn Hệ thống thơng tin CHƯƠNG TỐI ƯU HỐ CÂU HỎI Nói chung ngơng ngữ bậc cao, địi hỏi thực máy tính tốn thời gian Do trước thực câu hỏi thuộc ngơn ngữ cần thiết phải biến đổi hợp lý để giảm thời gian tính tốn Việc làm tạm thời gọi “tối ưu hố” Trong chương chủ yếu trình bày vài phương pháp tối ưu hoá biểu thức quan hệ, đặc biệt xử lý biểu thức có liên quan tới phép kết nối phép tích Đề Sau trình bày chi tiết phương pháp tối ưu ho lớp phổ cập biểu thức quan hệ 5.1 Các chiến lược tối ưu 1- Thức phép chọn sớm Biến đổi câu hỏi để đưa phép chọn vào thực trước nhằm làm giảm bớt kích cỡ kết trung gian chi phí phải trả giá cho việc truy nhập nhớ thứ cấp lưu trữ nhớ nhỏ 2- Tổ hợp phép chọn với phép tích Đề thành phép kết nối Như biết, phép kết nối, đặc biệt phép kết nối thực “rẻ” thực phép tích Đề-các quan hệ Nếu kết tích Đề-các R x S đối số phép chọn phép chọn liên quan tới phép so sánh thuộc tính R S rõ ràng phép tích Đề-các phép kết nối 3- tổ hợp dãy phép tính thành Một dãy phép phép chọn phép chiếu mà kết chúng phụ thuộc vào quan hệ độc lập nhóm phép lại 4- Tìm biểu thức chung biểu thức F = Fl x F2 ∪ Fl x F3 ⇒ F = Fl x (F2 ∪ F3) 5- Xử lý độc lập tệp trước xử lý chung CSDL Có thể xếp thiết lập tệp số cho quan hệ độc lập trước xử lý 6- Lựa chọn thứ tự thực phép tốn Một cần chọn trình tự thực phép tính biểu thức chọn hai đối số phép hai ngơi cần tính tốn xem chi phí thực phép tính (thường số phép tính, thời gian, dung tích nhớ theo tỷ lệ kích cỡ quan hệ…) Từ có chi phí phải trả cho cách khác để thực câu hỏi 71 Giáo trình Cơ sở liệu – Bộ môn Hệ thống thông tin 5.2 Các phép biến đổi tương đương l- Phép giao hoán Nếu R1 R2 hai quan hệ, F điều kiện thuộc tính Rl R2 Rl*R2 ≡ R2* Rl; Rl x R2 ≡ R2 x Rl 2- Phép kết hợp Nếu R1, R2 R+3 quan hệ, Fl F2 biểu thức điều kiện (Rl x R2) x R3 ≡ Rl x (R2 x R3); 3- Xử lý dãy phép toán chọn σ F1( σ F2( σ F3…( σ F1n(r))) ≡σ F1^F2^F3^…^Fn(r) 4- Xử lý dãy phép toán chiếu Nếu có: A1A2…An ⊆ B1B2…Bn Thì Π A1A2 An( Π B1B2 Bn(R)) ≡ Π A1A2 An(R) 5- Giao hoán phép chọn phép chiếu σ F( Π A1A2 An(R)) ≡ Π A1A2 An( σ F(R)) 6-Giao hoán phép chọn phép tích Đề -các - Nếu điều kiện chọn liên quan đến R1 σ F(R1 x R2) ≡ σ F1(Rl) x (R2) - Nếu F = Fl ∧ F2 Fl liên quan đến Rl; F2 liên quan đến R2 σ F(Rl x R2) ≡ σ F1(Rl) x σ F2(R2) - Nếu F1 liên quan đến Rl, F2 liên quan đến Rl R2 σ F(Rl x R2) ≡ σ F1( σ F1(Rl) x R2) 7- Giao hoán phép chọn phép hợp σ F(Rl ∪ R2) ≡ σ F(Rl) ∪ σ F(R2) 8- Giao hoán phép chọn phép trừ σ F(Rl - R2) ≡ σ F(Rl) - σ F(R2) 9- Giao hoán phép chiếu phép tích Đề Nếu thuộc tính Al, A2,…An ∈ Rl; Bl, B2,…Bn ∈ R2 Ta có: Π A1A2 An,B1B2…BN(Rl x R2) ≡ Π A1A2 An(Rl) x Π B1B2 Bn(R2) 72 Giáo trình Cơ sở liệu – Bộ môn Hệ thống thông tin 10- Giao hoán phép chiếu phép hợp Π A1A2 An(Rl ∪ R2) ≡ Π A1A2 An(Rl) ∪ Π A1A2 An(R2) Ví dụ: Cho biết tên cơng ty cung cấp mặt hàng màu đỏ *Dùng đại số quan hệ Π TenCongTy( σ mau = “đỏ”( σ CongTy.MaCongTy = CungCap.MaCongTy ( σ CungCap.MaHang=HangHoa.MaHang(congty x hanghoa x cungcap)))) - Đẩy phép chọn lên trước Π TenCongTy( σ mau = “đỏ”( σ CongTy.MaCongTy = CungCap.MaCongTy (CongTy x σ CungCap.MaHang=HangHoa.MaHang(HangHoa x Cungcap))) - Chuyển phép chọn phép tích Đề thành phép kết nối Π TenCongTy( σ mau=“đỏ”( σ CongTy.MaCongTy = CungCap.MaCongTy (CongTy x (HangHoa * Cungcap))) MaHang - Chuyển phép chọn phép tích Đề thành phép kết nối Π TenCongTy( σ mau=“đỏ”(CongTy * HangHoa * CungCap)) MaCongTy MaHang - Đẩy phép chọn lên trước Π TenCongTy(CongTy * ( σ mau=“đỏ”(HangHoa) * CungCap)) *Dùng SQL - Không tối ưu: SELECT TenCongTy FROM Congty, HangHoa,CungCap WHERE (CongTy.MaCongTy = CungCap.MaCongTy) AND (CungCap.MaHang = HangHoa.MaHang) AND (HangHoa.Mau = “Đỏ”) - Tối ưu : SELECT TenCongTy FROM CongTy WHERE MaCongTy IN ( SELECT MaCongTy FROM Cungcap WHERE MaHang lN ( SELECT MaHang FROM HangHoa WHERE Mau = “Đỏ”))) 73 Giáo trình Cơ sở liệu – Bộ môn Hệ thống thông tin CHƯƠNG AN TOÀN VÀ TOÀN VẸN ĐỮ LIỆU 6.1 An toàn liệu 6.1.1 Giới thiệu - Một hệ sở liệu bao gồm liệu chương trình ứng dụng để thực thao tác liệu - Người sử dụng (enduser) truy cập vào sở liệu sử dụng chương trình ứng dụng để thao tác liệu Để đảm bảo an toàn hệ thống phải xác định: + User hợp pháp: Là người phép truy nhập vào liệu với số quyền + User bất hợp pháp: Là người không phép truy nhập vào liệu 6.1.2 Thực việc an toàn liệu - Xác định user hợp pháp: Sử dụng mật để xác minh - Xác minh khung nhìn user: Hệ thống cho phép user truy nhập vào phán sở liệu - Xác minh quyền user: Hệ thống cho phép user có quyền sở liệu 6.1.3 Các lệnh an tồn liệu SQL a) Lệnh tạo khung nhìn CREAT VIEW (danh sách tên cột) AS Ví dụ: - Tạo View DSmoi CREAT VIEW DSmoi AS SELECT * FROM Nhanvien WHERE Ma phong = “M2” Tạo View “Tong” từ bảng “cungcap” với số lượng tăng thêm 20 đơn vị 74 Giáo trình Cơ sở liệu – Bộ môn Hệ thống thông tin CREAT VIEW Tong (MaCongTy, MaHang, Tổng số lượng) AS SELECT MaCongTy, MaHang, ( Soluong + 20) FROM Cungcap b) Lệnh trao quyền cho user GRANT On TO [WITH GRANT OPTION] Các quyền gồm CREAT: Tạo sở liệu READ: Đọc SELECI: Chọn WRITE: Ghi INSERT: Bổ sung UPDATE: Cập nhật DELETE: Xố RUN: Chạy chương trình ứng dụng Trong đó: - Đối tượng: Là bảng, view, chương trình ứng dụng - Tên user: Là tên người, nhóm, danh sách dùng từ khố PUBLIC, WORLD cho users - Tuỳ chọn GRANT OPTION: Khi có tuỳ chọn user phép trao quyền cho user khác Ví dụ: GRANT Select, Delete, Update ON Dsluong TO abc WITH GRANT OPTION GRANT Select ON Dsluong TO def c) Thu hồi quyền REVOKE ON FROM Ví dụ: REVOKE Delete ON Write FROM abc 6.2 Tính tồn vẹn liệu 6.2.1 Khái niệm ràng buộc liệu Khi nhập liệu vào ta có số ràng buộc để hợp lệ hố nhập liệu có giá trị khơng hợp lệ chương trình thơng báo u cầu nhập lại Hoặc ràng báo sửa chữa cập nhật liệu để tránh tình trạng dị thường sở liệu 75 Giáo trình Cơ sở liệu – Bộ môn Hệ thống thông tin 6.2.2 Các ràng buộc - Ràng buộc tập giá trị cho phép: Dùng phép so sánh để ràng buộc Ví dụ: Bổ xung thêm nhân viên INSERT INTO Nviên ( MãNV, TênNV, Địa chỉ, Lương) VALUES (NV05, “Trần Long”, “Hà nội”, 500 000) Nếu có ràng buộc 1000000 < lương < 2000000 giá trị lương khơng hợp lệ Ràng buộc giá trị NULL: Nếu thuộc tính bắt buộc phải có giá trị dùng ràng buộc NOT NULL, khơng để trống -Ràng buộc khố chính: Mối quan hệ phải có thuộc tính khố, thuộc tính có giá trị cho không trùng lặp Dùng ràng buộc chương trình kiểm tra tính trùng lặp trị khoá Ràng buộc khoá ngoài: Hạn chế phát sinh lỗi khỉ sửa chứa cập nhật quan hệ có liên kết với 76 Giáo trình Cơ sở liệu – Bộ mơn Hệ thống thông tin TÀI LIỆU THAM KHẢO [l] Tô Văn Nam, Giáo trình sở liệu Nhà xuất giáo dục [2] Nguyễn Xuân Huy Bài giảng sớ liệu [3] Vũ Đức Thi, Cơ sở liệu - Kiến thức thực hành Nhà xuất bán Thông kê, 1997 [4] TS.Nguyễn Bá Tường, Nhập môn sở liệu phân tán, Nhà xuất Khoa học Kỹ thuật Hà Nội, 2005 [5] Nguyễn Bá Tường, Cơ sở liệu - Lý thuyết thực hành, Nhà xuất bàn Khoa học Kỹ thuật, 2001 [6] Lê Tiến Vương Nhập môn sở liệu quan hệ, Nhà xuất Khoa học Kỹ thuật, 1997 [7] M.Tamer Ôzsu, Patrick Valduriez, Nguyên lý hệ sở liệu phân tán, Nhà xuất bán Thống kê, 2000 [8] J.Ulman, Nguyên lý hệ sở liệu sớ tri thức, Nhà xuất Thống kê, 1998 77 Giáo trình Cơ sở liệu – Bộ môn Hệ thống thông tin MỤC LỤC Trang MỘT SỐ CÁC QUY ƯỚC CHƯƠNG NHẬP MÔN CƠ SỞ DỮ LIỆU 1.1 Giới thiệu thống quản lý tệp truyền thống 1.2 Định nghĩa sở liệu 1.3 Hệ sở liệu Tính độc lập liệu 10 Hệ quản trị sở liệu 10 1.6 Các mơ hình liệu 10 BÀI TẬP VÀ CÂU HỎI 18 CHƯƠNG 19 MƠ HÌNH DỮ LIỆU QUAN HỆ 19 2.1 Thuộc tính 19 2.2 Quan hệ 19 2.3 Khoá quan hệ 20 2.4 Các phép toán đại số quan hệ 21 BÀI TẬP VÀ CÂU HỎI 28 CHƯƠNG 30 LÝ THUYẾT THIẾT KẾ CƠ SỞ DỮ LIỆU 30 3.1 Giới thiệu 30 3.2 Sơ đồ quan hệ 31 3.3 Hệ tiên đề cho tập phụ thuộc hàm 32 3.4 Bao đóng tập phụ thuộc hàm 35 3.5 Phép tách quan hệ 36 3.6 Chuẩn hoá lược đồ quan hệ 38 3.7 Các thuật toán 40 3.8 Phụ thuộc đa trị 47 BÀI TẬP VÀ CÂU HỎI 49 CHƯƠNG 51 NGÔN NGỮ ĐỊNH NGHĨA VÀ THAO TÁC DỮ LIỆU 51 4.1 Giới thiệu mô hình xử lý liệu 51 4.2 Ngôn ngữ đại số quan hệ 51 4.3 Ngôn ngữ SQL (Structure Quay Language) 53 BÀI TẬP CÂU HỎI 69 CHƯƠNG 71 TỐI ƯU HOÁ CÂU HỎI 71 5.1 Các chiến lược tối ưu 71 5.2 Các phép biến đổi tương đương 72 CHƯƠNG 74 AN TOÀN VÀ TOÀN VẸN ĐỮ LIỆU 74 6.1 An toàn liệu 74 6.2 Tính tồn vẹn liệu 75 TÀI LIÊU THAM KHẢO 77 78 ... B2,…Bn ∈ R2 Ta có: Π A1A2 An,B1B2…BN(Rl x R2) ≡ Π A1A2 An(Rl) x Π B1B2 Bn(R2) 72 Giáo trình Cơ sở liệu – Bộ mơn Hệ thống thơng tin 1 0- Giao hốn phép chiếu phép hợp Π A1A2 An(Rl ∪ R2) ≡ Π A1A2... r2 nên tách: R21 = (CT); r 22 = (CHNS) F= {HS → N; HN → C}, khố r 22 HS Trong r21 thoả mãn BCNF, r 22 không thoả mãn BCNF Bước : Xét r 22: Có HN → C mà CH khơng khố nên tách: r 221 = (CHN) ; r 222 ... 71 Giáo trình Cơ sở liệu – Bộ môn Hệ thống thông tin 5 .2 Các phép biến đổi tương đương l- Phép giao hoán Nếu R1 R2 hai quan hệ, F điều kiện thuộc tính Rl R2 Rl*R2 ≡ R2* Rl; Rl x R2 ≡ R2 x Rl 2-