Giáo trình Nhập môn cơ sở dữ liệu - Phạm Thị Thanh

MỤC LỤC

CHƯƠNG I: CÁC KHÁI NIỆM CƠ BẢN VỀ CSDL 4

1. Các khái niệm về hệ cơ sở dữ liệu 4

1.1. Khái niệm cơ sở dữ liệu và hệ cơ sở dữ liệu 4

1.2. Kiến trúc CSDL 4

1.3. Lược đồ và thể hiện của CSDL 6

1.4. Tính độc lập dữ liệu 7

2. Tổ chức dữ liệu mức vật lý 7

2.1. Mô hình tổ chức bộ nhớ ngoài 7

2.2. Tệp băm (Hashed file) 8

2.3. Tệp chỉ số (indexed file) 9

2.4. Cây cân bằng (Balanced tree – B cây) 11

3. Ba mô hình dữ liệu cơ bản 13

3.1. Mô hình hóa trong tin học 13

3.2. Mô hình dữ liệu 13

3.3. Các mô hình dữ liệu cơ bản 13

Kết chương 16

Câu hỏi và bài tập 16

CHƯƠNG II: NGÔN NGỮ THAO TÁC DỮ LIỆU 18

1. Cơ sở dữ liệu quan hệ 18

1.1. Khái niệm cơ bản 18

1.2. Các thao tác cập nhật dữ liệu trên quan hệ 19

1.3. Đại số quan hệ 20

1.4. Ngôn ngữ tân từ: 30

2. Ngôn ngữ hỏi có cấu trúc – SQL (Structured Query Language) 31

2.1. Ngôn ngữ định nghĩa dữ liệu 32

2.2. Ngôn ngữ thao tác dữ liệu 35

Kết chương 41

Câu hỏi và bài tập 41

CHƯƠNG III: THIẾT KẾ MỘT CƠ SỞ DỮ LIỆU 46

1. Mục đích thiết kế CSDL 46

2. Phụ thuộc hàm (Function Defendency-FD) 48

2.1. Đặt vấn đề 48

2.2. Định nghĩa phụ thuộc hàm 48

2.3. Hệ tiên đề Amstrong 48

2.4. Các luật suy ra từ hệ tiên đề 49

2.5. Bao đóng của 1 tập phụ thuộc hàm 49

2.6. Bao đóng của 1 tập thuộc tính 50

2.7. Định nghĩa khoá và siêu khoá theo ngôn ngữ phụ thuộc hàm 52

2.8. Tập phụ thuộc hàm tối thiểu 55

3. Phép tách các lược đồ quan hệ 58

3.1. Khái niệm phép tách 58

3.2. Phép tách kết nối không tổn thất 59

4. Chuẩn hoá lược đồ quan hệ 62

4.1. Các dạng chuẩn 62

4.2. Phép tách kết nối không tổn thất thành BCNF 64

4.3. Phép tách bảo toàn phụ thuộc hàm thành 3NF 67

Kết chương 68

Câu hỏi và bài tập 68

CHƯƠNG IV: MÔ HÌNH THỰC THỂ LIÊN KẾT (Entity Relationship Model) 72

1. Mô hình dữ liệu khái niệm bậc cao và quá trình thiết kế CSDL 72

2. Các thành phần cơ bản của mô hình thực thể liên kết: 73

2.1. Thực thể và thuộc tính 73

2.2. Kiểu thực thể, tập thực thể, khóa và tập giá trị 75

2.3. Kiểu liên kết, tập liên kết và các thể hiện 77

2.4. Cấp liên kết, tên vai trò và kiểu liên kết đệ quy 78

2.5 Các ràng buộc trên các kiểu liên kết 79

2.6. Thuộc tính của các kiểu liên kết 81

2.7. Các kiểu thực thể yếu 81

3. Ví dụ về thiết kế mô hình ER 82

Xác định các kiểu thực thể, các thuộc tính và các kiểu liên kết 82

CHƯƠNG V: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU 86

1. Định nghĩa một hệ quản trị CSDL: 86

2. Các chức năng của một hệ quản trị cơ sở dữ liệu 86

3. Các đặc trưng của giải pháp cơ sở dữ liệu 88

4. Ví dụ về một cơ sở dữ liệu 90

 

doc93 trang | Chia sẻ: trungkhoi17 | Lượt xem: 647 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Giáo trình Nhập môn cơ sở dữ liệu - Phạm Thị Thanh, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
ác cbgd SELECT TênCB,môn dạy, tênKH FROM cbgd, khoa WHERE cbgd.Mah= khoa.MaKH Ánh xạ lồng: Trong câu lệnh tìm kiếm có các khối lồng nhau theo nhiều mức lồng nhau. Tức là trong biểu thức điều kiện của khối này lại chứa một khối khác VD: SELECT * FROM sv WHERE MaL IN (SELECT MaL FROM lop WHERE TenL=’D2 Công nghệ’) Các từ khoá ALL, SOME, ANY trong SQL luôn đi kèm một câu hỏi con mà câu hỏi con này trả ra kết quả chỉ là một cột. VD: Tìm sinh viên nhỏ tuổi hơn mọi sinh viên lớp T13B SELECT TenSV FROM sv WHERE NS>ALL (SELECT NS FROM sv WHERE MaL=’T13B’ (Ánh xạ lồng chỉ lấy được thông tin từ một quan hệ mà điều kiện thuộc về 1 quan hệ khác, chứ không lấy được thông tin ở cả hai quan hệ) Các phép toán tập hợp Trong SQL-92 có các phép UNION, INTERSECT, EXCEPT thao tác trên các quan hệ tương ứng với phép hợp, giao và trừ của đại số quan hệ. Các quan hệ tham gia trong phép toán này phải khả hợp. Các phép toán này tự động loại bỏ các bộ trùng nhau. VD1: Xét CSDL QLDAYHOC nói trên giả sử có thêm quan hệ hoc (MaCB, TenCB, trinhđộ, chuyennganh) chứa thông tin về việc đi học của cbgd. Ta cần MaCB, TenCB của những cán bộ đi học trình độ Tiến sỹ và dạy môn CSDL (SELECT MaCB, TenCB FROM cbgd WHERE Monday=’CSDL’) INTERSECT (SELECT MaCB, TenCB FROM hoc WHERE trinhdo=’Tiến sỹ’) VD2: Cho biết MaCB, TenCB của những cán bộ đi học trình độ Tiến sỹ hoặc dạy môn CSDL (SELECT MaCB, TenCB FROM cbgd WHERE Monday=’CSDL’) UNION (SELECT MaCB, TenCB FROM hoc WHERE trinhdo=’Tiến sỹ’) VD3: Cho biết MaCB, TenCB của những cán bộ đi học trình độ Tiến sỹ nhưng không dạy môn CSDL (SELECT MaCB, TenCB FROM hoc WHERE trinhdo=’Tiến sỹ’) EXCEPT (SELECT MaCB, TenCB FROM cbgd WHERE Monday=’CSDL’) Kết chương Chương II đã giới thiệu một số ngôn ngữ thao tác dữ liệu như đại số quan hệ, ngôn ngữ tân từ và đặc biệt là ngôn ngữ hỏi có cấu trúc SQL có khuôn dạng và ví dụ cụ thể. Câu hỏi và bài tập Câu 1: Nêu các khái niệm cơ bản của mô hình quan hệ: Thuộc tính, Lược đồ quan hệ, Miền trị, Quan hệ, Khóa, Khóa kết nối. Câu 2: Khái niệm khả hợp Bài tập: Bài 1: Cho 3 quan hệ r1(A B C) r2 (D F) r3 (B E D) a1 b1 c1 d1 f1 b1 e1 d1 a2 b2 c2 d2 f2 b2 e2 d2 a1 b1 c3 d3 f3 b3 e3 d1 a2 b3 c1 r4 (A B C D) r5(C D) a b c d c d a b e f e f b c e f e d c d e d e f a b d e Tính các biểu thức sau: a) r1xr2 b)r1*r3 c)dD=d1(r1*r3) d)r1*r2*r3 e) PBC(r1*r2*r3) f) r4:r5 Bài 2: Cho CSDL gồm các lược đồ sau: congty(MaCT, TenCT, DC, DT) mathang(MaMH, TenMH, Mau, TrongLuong) sanpham(MaCT, MaMH, Soluong) Trả lời các câu hỏi sau bằng ngôn ngữ đại số quan hệ Tìm MaCT của những công ty đã cung cấp mặt hàng có mã là P2 Tìm MaCT của những công ty cung ứng ít nhất 1 mặt hàng mầu đỏ Tìm MaMH của những mặt hàng do công ty có tên SamSung cung cấp Tìm MaMH những mặt hàng chưa được công ty nào cung ứng Tìm TenCT đã cung cấp mặt hàng có tên là “Notebook” Bài 3: Cho CSDL gồm các lược đồ sau: nhanvien (ma_nv, ho_ten, ng_sinh, gioi_tinh, ma_dv, luong) phong (ma_dv, ten_phong, ma_tp) dd_dvi(ma_dv, dia_diem) du_an(ma_da, ten_da, dd_du_an, ma_dv) chamcong(ma_nv, ma_da, so_gio) Trả lời các câu hỏi bằng đại số quan hệ Tìm tên dự án có mã số D4 Cho biết họ tên và lương của những nhân viên làm việc ở phòng ‘Nghiên cứu và phát triển’ Với mỗi dự án thực hiện ở Ninh Bình, hãy cho biết mã số dự án đồng thời, cho biết họ tên, ngày sinh của trưởng phòng quản lý dự án này Tìm tên những nhân viên làm việc cho tất cả các dự án do phòng có mã P4 quản lý Tìm mã số những dự án có sự tham gia của một người lãnh đạo phòng trực tiếp quản lý dự án này Bài 4: Cho CSDL về các khách sạn gồm các lược đồ sau: Khach_san(ma_ks, ten_ks, dia_chi) Phong(ma_ph, ma_ks, loai, gia) Dat_phong(ma_ks, ma_khach, tu_ngay, den_ngay, ma_ph) Khach(ma_khach, ho_ten, dia_chi) Hãy viết các biểu thức đại số quan hệ tương ứng với mỗi câu hỏi sau: Cho biết tên tất cả các khách sạn Liệt kê tất cả các phòng có giá dưới 200.000 đ Cho biết giá và loại của tất cả các phòng thuộc khách sạn Sao mai Liệt kê họ tên của tất cả các khách đã đặt thuê phòng ở khách sạn Sao mai Cho biết thông tin chi tiết về các phòng của khách sạn Sao mai với những phòng đang có người đặt thuê thì cho biết cả họ tên và địa chỉ của khách. Bài 5: Xét CSDL gồm các lược đồ quan hệ sau: Nhan_vien (ht_nv, duong_pho, thanh_pho) Lam_viec (ht_nv, ten_cty, luong) Cong_ty(ten_cty, thanh_pho) Quan_ly(ht_nv, ten_thu_truong) Hãy biểu diễn các câu hỏi sau bằng ngôn ngữ đại số quan hệ. Tìm họ tên và thành phố sinh sống của tất cả các nhân viên làm việc cho công ty FBC Tìm họ tên, tên đường phố, thành phố sinh sống của tất cả các nhân viên làm việc cho FBC có lương lớn hơn 2triệu. Tìm tất cả nhân viên trong CSDL sinh sống cùng thành phố của công ty nơi họ làm việc Tìm tất cả nhân viên trong CSDL sống trong cùng thành phố và trong cùng phố với thủ trưởng của họ Tìm tất cả các nhân viên không làm việc cho FBC Tìm tất cả các nhân viên có lương cao hơn mọi nhân viên của công ty FBC Giả sử các công ty được đặt tại nhiều thành phố. Tìm tất cả các công ty đặt tại mọi thành phố nơi có mặt công ty FBC Tìm tất cả các nhân viên có lương cao hơn lương trung bình của mọi nhân viên công ty của họ Tìm công ty có nhiều nhân viên nhất Tìm công ty có quỹ tiền lương nhỏ nhất Tìm các công ty mà nhân viên đều có lương trung bình cao hơn lương trung bình tại FBC Bài 6: Cho csdl gồm các lược đồ quan hệ sau: tacgia(MaTG, TenTG, Dt) nxb(MaNXB, TenNXB, Dc, dt) sach(MaS, TenS, NamXB, Slg, MaTG, MaNXB) Trả lời các câu hỏi sau bằng ngôn ngữ SQL Cho biết tên cuốn sách xuất bản năm 2007 Cho biết Mã sách, tên sách xuất bản năm 2007 và số lượng xuất bản trên 1000 cuốn Tên cuốn sách xuất bản năm 2000 của NXB GD Xoá tác giả “Nguyễn Văn Thành” trong CSDL trên Thêm nhà xuất bản có mã “NB”, tên là “nhà xuất bản Ninh Bình”, Dc là “TP Ninh Bình”, dt là 0303888888) Sửa Dt của tác giả có mã TT07 thành 0983.98.98.98 Bài 7: Cho CSDL gồm các lược đồ quan hệ sau: truong(MaTr, TenT, DC, DT, Hieu truong) khoa(MaTr, MaKh, TenKh, SoSV) sinhvien(MaTr, MaKH, MaSV, TenSV, QQ) Trả lời bằng Ngôn ngữ SQL Cho biết tên trường ĐH có khoa CNTT Tổng số SV khoa CNTT ở tất cả các trường ĐH Khoa nào của trường nào có số SV đông nhất Tên Tr có tổng số SV đông nhất Bài 8: Cho CSDL gồm các lược đồ quan hệ: nhanvien (MaNV, HoTen, NgaySinh, MaPhong) phong (MaPhong, TenPhong, DiaDiem, Sodt) du_an(MaDA, TenDA, NganSach) thamgia(MaNV, MaDA, SoGioThamGia) Biểu diễn các câu tìm kiếm trên bằng Đại số quan hệ và ngôn ngữ SQL Đưa ra danh sách (họ tên, ngày sinh) của các nhân viên tham gia Dự án có tên là đào tạo từ xa hoặc tham gia dự án có tên là QLTC Đưa ra danh sách (tên phòng, địa điểm) của phòng có nhân viên mã số là ‘NV03’ làm việc Cho biết danh sách (họ tên, ngày sinh, mãPh) của các nhân viên tham gia vào dự án Cho biết có bao nhiêu dự án có ngân sách lớn hơn 100.000.000 Bài 9: Xét CSDL gồm các lược đồ quan hệ sau: Nhan_vien (ht_nv, duong_pho, thanh_pho) Lam_viec (ht_nv, ten_cty, luong) Cong_ty(ten_cty, thanh_pho) Quan_ly(ht_nv, ten_thu_truong) Hãy biểu diễn các câu hỏi sau bằng ngôn ngữ SQL. Tìm họ tên và thành phố sinh sống của tất cả các nhân viên làm việc cho công ty FBC Tìm họ tên, tên đường phố, thành phố sinh sống của tất cả các nhân viên làm việc cho FBC có lương lớn hơn 2triệu. Tìm tất cả nhân viên trong CSDL sinh sống cùng thành phố của công ty nơi họ làm việc Tìm tất cả nhân viên trong CSDL sống trong cùng thành phố và trong cùng phố với thủ trưởng của họ Tìm tất cả các nhân viên không làm việc cho FBC Tìm tất cả các nhân viên có lương cao hơn mọi nhân viên của công ty FBC Giả sử các công ty được đặt tại nhiều thành phố. Tìm tất cả các công ty đặt tại mọi thành phố nơi có mặt công ty FBC Tìm tất cả các nhân viên có lương cao hơn lương trung bình của mọi nhân viên công ty của họ Tìm công ty có nhiều nhân viên nhất Tìm công ty có quỹ tiền lương nhỏ nhất Tìm các công ty mà nhân viên đều có lương trung bình cao hơn lương trung bình tại FBC CHƯƠNG III: THIẾT KẾ MỘT CƠ SỞ DỮ LIỆU 1. Mục đích thiết kế CSDL Mục đích chính của thiết kế CSDL là nhóm các thuộc tính vào các bảng sao cho giảm được nhiều nhất sự dư thừa dữ liệu bởi vậy giảm được không gian lưu trữ cần thiết cho các quan hệ cơ sở. Nếu để dư thừa dữ liệu sẽ nảy sinh một số vấn đề. Ta xét ví dụ sau: Để lưu các thông tin về sinh viên trong một khoa với nhiều lớp ta có 2 phương án khác nhau như sau: Phương án a: dùng một lược đồ sinhvien_lop(svid, hoten, ns, qq, diachi, lopid, tenlop, nganhhoc, khoahoc) Phương án b: dùng 2 lược đồ sinhvien(svid, hoten, ns, qq, diachi) và lop(lopid, tenlop, nganhhoc, khoa) Ta nhận thấy ở phương án a các thông tin về lớp bị lặp lại rất nhiều lần khi sinh viên thuộc cùng một lớp. Trong khi ở phương án b thông tin về mỗi lớp được thể hiện là một bộ trong quan hệ lop và trong quan hệ sinhvien chỉ lopid là lặp lại với một số bộ. Khi thao tác dữ liệu sẽ xảy ra một số dị thường sau Ví dụ: quan hệ lop Lopid Tenlop Nganhhoc Khoa 1 T14A Hoá sinh Tự nhiên 2 T14B Tin Công nghệ 3 T14C Văn sử Xã hội Quan hệ sinhvien Svid Hoten Ns Qq Diachi lopid T14A1 Phạm Thị Mai 1/12/1988 Kim Sơn Chính Tâm, KS 1 T14A2 Trần Văn Giang 4/5/1989 Nho quan Gia Sinh, NQ 1 T14B1 Lê Văn Chính 3/3/1988 Yên Khánh Khánh Nhạc, YK 2 T14B2 Phạm Thu Thuỷ 7/4/1989 Hoa Lư Ninh Hoà, HL 2 Quan hệ sinhvien_lop Svid Hoten Ns Qq Diachi lopid Tenlop Nganhhoc khoa T14A1 Phạm Thị Mai 1/12/1988 Kim Sơn Chính Tâm, KS 1 T14A Hoá sinh Tự nhiên T14A2 Trần Văn Giang 4/5/1989 Nho quan Gia Sinh, NQ 1 T14A Hoá sinh Tự nhiên T14B1 Lê Văn Chính 3/3/1988 Yên Khánh Khánh Nhạc, YK 2 T14B Tin Công nghệ T14B2 Phạm Thu Thuỷ 7/4/1989 Hoa Lư Ninh Hoà, HL 2 T14B Tin Công nghệ Dị thường thêm bộ: Có 2 loại dị thường thêm bộ Khi thêm sinh viên mới vào lớp thì tất cả các bộ mới thêm đều phải có thông tin về lớp chẳng hạn thêm sinh viên vào lớp có mã lớp = 2 thì tất cả các bộ thêm vào đều phải có tên lớp = T14B, ngành học Tin, khoá hoc 2007-2010, nếu điều kiện này không thoả mãn thì tính nhất quán bị phá vỡ. Trong trường hợp dùng 2 bảng thì ta chỉ cần lopid mà không phải quan tâm đến vấn đề khác. Khi cần thêm lớp mới mà lớp này chưa có sinh viên nào thì ta phải bỏ trống các trường thông tin về sinh viên, tuy nhiên điều đó là không chấp nhận được vì ít nhất svid là khoá chính không được phép null, nếu dùng 2 bảng thì ta chỉ cần thêm vào bảng lop là xong. Dị thường xoá bộ: Nếu ta xoá một bộ nói về sinh viên duy nhất còn lại của lớp thì toàn bộ thông tin về lớp đó bị mất, khi dùng 2 bảng ta giải quyết được vấn đề đó. Dị thường sửa bộ: Khi ta muốn chuyển lớp sang khoa khác quản lý sẽ phải sửa tất cả các bộ có chứa sinh viên về lớp này, nếu dùng 2 bảng ta chỉ phải sửa một lần Tuy nhiên, việc tách thành nhiều bảng cần phải thoả điều kiện không làm mất thông tin và bảo toàn các ràng buộc quan trọng. 2. Phụ thuộc hàm (Function Defendency-FD) 2.1. Đặt vấn đề Phụ thuộc hàm là một khái niệm dùng để mô tả các ràng buộc dữ liệu trong một cơ sở dữ liệu chẳng hạn để chỉ ràng buộc mỗi giáo viên chỉ dạy một môn học: giáo viên -> môn dạy. 2.2. Định nghĩa phụ thuộc hàm Cho quan hệ R(U). X, Y là các tập con của U. Ta nói rằng Y phụ thuộc hàm vào X (hay X xác định Y), được viết X ® Y. Nếu " t1,t2 ÎR mà t1[X]=t2[X] thì t1[Y]=t2[Y] VD: Cho quan hệ sinhvien như sau: SVID Ho_ten NgaySinh QueQuan LopID C2701 Nguyễn Vân Anh 15/7/89 Hoa Lư T13B C2702 Hoàng Thị Bình 18/9/88 Yên Khánh T13B C2703 Trần Thị Tuyết 8/5/89 Kim Sơn T13B C2704 Lã Thị Vân 9/12/88 TP Ninh Bình T13B Trong ví dụ trên thì các thuộc tính Ho_ten, NgaySinh, QueQuan phụ thuộc hàm vào SVID. 2.3. Hệ tiên đề Amstrong Cho quan hệ R(U). X, Y, Z là tập con của U. Khi đó ta có A1: Tính phản xạ (reflexivity). Nếu YÍX thì X®Y A2: Tính tăng trưởng (Augmentation). Nếu X®Y thì XZ®YZ (XZ=XÈZ) A3: Tính bắc cầu (Transitivity): Nếu X®Y và Y®Z thì X®Z Tính phản xạ phát biểu rằng một tập hợp các thuộc tính luôn luôn xác định chính nó hoặc một tập con bất kỳ của nó. Vì A1 tạo ra các phụ thuộc luôn luôn đúng, những phụ thuộc như vậy được gọi là tầm thường. Một cách hình thức, một phụ thuộc hàm X®Y là tầm thường nếu XÉY, ngược lại, nó được gọi là không tầm thường. Tính tăng trưởng nói rằng việc thêm cùng một tập thuộc tính vào cả hai vế của một phụ thuộc hàm sẽ tạo ra một phụ thuộc hàm đúng đắn. Theo tính A3, các phụ thuộc hàm là bắc cầu. Chứng minh hệ tiên đề Armstrong, ta chứng minh bằng phản chứng dựa trên định nghĩa phụ thuộc hàm. A1: Giả sử X ÉY và 2 bộ t1 và t2 là các thể hiện quan hệ r của R sao cho t1[X]=t2[X]. Khi đó t1[Y] = t2[Y] bởi vì X ÉY, như vậy X®Y phải xảy ra trong r. A2: Giả sử X®Y đúng trong một thể hiện quan hệ r của R nhưng XZ®YZ không đúng. Khi đó có hai bộ t1 và t2 trong r sao cho: t1[X] = t2[X], t1[XZ] = t2[XZ] Þ t1[Z] = t2[Z] t1[Y] = t2[Y] Þt1[YZ] = t2[YZ], mẫu thuẫn với giả thiết. A3: Giả sử X®Y, Y®Z nhưng không có X®Z. t1,t2 là 2 bộ của r, khi đó t1[X] = t2[X] và X®Y nên t1[Y] = t2[Y] vì Y®Z nên t1[Z] = t2[Z], mẫu thuẫn với giả thiết. 2.4. Các luật suy ra từ hệ tiên đề Luật 1: L1: Luật hợp (Union): Nếu X®Y và X®Z thì X®YZ Luật 2: L2: Luật tựa bắc cầu (Pseudotransitivity): Nếu X®Y và YW®Z thì XW®Z Luật 3: L3: Luật tách (Decompisition): Nếu X® Y, ZÍY thì X®Z Sinh viên tự chứng minh các luật dựa theo các tích chất trong hệ tiên đề Amstrong. 2.5. Bao đóng của 1 tập phụ thuộc hàm Định nghĩa 1 phụ thuộc hàm được suy dẫn logic từ một tập phụ thuộc hàm: Cho quan hệ r(U), F là một tập phụ thuộc hàm phát biểu trên U. X, YÍU. X->Y Là một phụ thuộc hàm phát biểu trên U. Khi đó ta nói rằng phụ thuộc hàm X->Y được suy dẫn logic từ F nếu mỗi quan hệ r(U) được xác định trên U thoả F thì r cũng thoả X->Y Ký hiệu Định nghĩa bao đóng của 1 tập phụ thuộc hàm là một tập phụ thuộc hàm ký hiệu F+ = {X->Y | X->Y được suy dẫn logic từ F}. Việc tính toán bao đóng rất khó khăn và mất thời gian nên ta chỉ định nghĩa hình thức. Nếu F+ = F thì F được gọi là họ phụ thuộc hàm đầy đủ. VD Cho lược đồ quan hệ r(U) với U={A,B,C,D,E,F,G,H}. Và tập phụ thuộc hàm F={AB->C, C->DE, E->F, AF->H} + Hỏi phụ thuộc hàm AB->H có được suy dẫn logic từ F không? + Hỏi phụ thuộc hàm AB->GH có được suy dẫn logic từ F không? Trả lời: (Sử dụng các luật và các tính chất từ F để suy ra các phụ thuộc hàm đó. Nếu không suy ra được thì coi như không được suy dẫn logic từ F). + Vậy AB->H được suy dẫn lgic từ F + Trong các phụ thuộc hàm của F không có phụ thuộc hàm nào suy ra G nên AB-> G không được suy dẫn logic từ F 2.6. Bao đóng của 1 tập thuộc tính Cho lược đồ quan hệ R(U, F), XÍU, F là tập phụ thuộc hàm xác định trên U. Ta định nghĩa bao đóng của 1 tập thuộc tính X đối với tập phụ thuộc hàm F là tập thuộc tính được xác định như sau X+={A | (X®A ÎF+} Thuật toán tìm bao đóng của tập thuộc tính X Input: Lược đồ quan hệ R(U), Tập thuộc tính X là con của U Tập phụ thuộc hàm F xác định trên U Output: X+={A | X®A ÎF+} Action: Bước 1: Đặt X(0)=X Bước 2: Nếu $ (Y®Z) ÎF mà AÎZ và YÍXi-1 Nếu ngược lại Bước 3: Nếu Xi=Xi-1 thì dừng, Xi chính là X+ cần tìm VD1: Cho lược đồ quan hệ R(U, F) với U={A,B,C,D,E,F,G,H}. Và tập phụ thuộc hàm F={A®BC, B®E, CE®GH} Cho X=AD. Tìm bao đóng X+ Đặt X0=X=AD X1=ABD vì A®BC nên A®B X2=ABCD vì A®BC nên A®C X3=ABCDE vì B®E X4=ABCDEG vì CE®GH nên CE®G X5=ABCDEGH vì CE®GH nên CE®H X6=X5 dừng. Vậy X+=ABCDEGH VD2: Cho lược đồ quan hệ R(U, F) với U={A,B,C,D,E,G}. Và tập phụ thuộc hàm F= { AB®C, C®A, BC®D, D®EG, BE®C, CG®BD, ACD®B, CE ®AG } Cho X=BD. Tìm bao đóng X+ Đặt X0=X=BD X1=BDEG vì D®EG X2=BCDEG vì BE®C X3=ABCDEG vì C®A X4=X3 Vậy X+=ABCDEG Bổ đề: X®Y thì YÍX+ Sử dụng bổ đề để kiểm tra X®Y hay không Bước 1: Tính X+ Bước 2: Kiểm tra YÍX+ hay không đúng thì X®Y, sai thì X®Y VD3: Cho lược đồ quan hệ R(U, F) với U={A,B,C,D,E,G,H,I}. Và tập phụ thuộc hàm F={A®D, AB®E, BI®E, CD®I, E®C} X=AE ®I không? Tìm bao đóng X+ Đặt X0=X=AE X1=ADE vì A®D X2=ACDE vì E®C X3=ACDEI vì CD®I X4=X3 Vậy X+=ACDEI IÍX+ Vậy X®I 2.7. Định nghĩa khoá và siêu khoá theo ngôn ngữ phụ thuộc hàm Cho lược đồ quan hệ R(U, F), F là tập phụ thuộc hàm xác định trên U. K là một tập con của U (KÍU), Khi đó: + K được gọi là siêu khoá của R nếu K®U + K là khoá của R nếu K® U và "K’ ÍK thì K’®U Thuật toán tìm 1 khoá Input: Lược đồ quan hệ R(U, F), Tập thuộc tính U, Tập phụ thuộc hàm F={Ti®Pi | Ti,Pi ÍU, TiWPi =Æ, i=1n} Output: K là tập con của U sao cho K là khoá của R Action: Đặt P= ÈPi Bước 1: Đặt K0=U \ P (những thuộc tính không nằm trong vế phải FD) Bước 2: Nếu K0+ = U thì chuyển Bước 5 Bước 3: K1:=K0 È (T Ç P) Bước 4: Với mỗi Ai ÎTÇP ta thực hiện Tính Nếu (Ki-1\{Ai})+ = U Ngược lại Bước 5: Kết luận Ki là khoá VD1: Cho lược đồ quan hệ r(U) với U={A,B,C,D,E,F,G,H} F={A®BC,B®E,CE®GH} Tìm 1 khoá của R Đặt: P=BCEGH K0=U \ P = ADF Tính (K0)+ =ABCDEFGH Kết luận ADF là một khoá của R VD2: Cho lược đồ quan hệ R(U) với U={A,B,C,D,E,F,G,H} F={AB®CD, C®D, E®FG, AE®H} Tìm 1 khoá của R Đặt: P=CDFGH Tính :K0=U \ P =ABE, (ABE)+=U Kết luận ABE là khoá của R VD3:Cho lược đồ quan hệ R(U) với U={A,B,C} F={AB ®C, C®B} Tìm 1 khoá của R Đặt P=BC K0=A tính A+=A ¹ U K1=A È BC K2=AÈ B (AB)+ =ABC=U, vậy AB là một khoá của R VD4:Cho lược đồ quan hệ R(U) với U={A,B,C,D,E,G} F={AB ®C, G®A, C®B, ABD®E} Tìm 1 khoá của R Đặt P=ABCE K0=U \ P = DG tính DG+ = ADG ¹ U K1= DG È ABC K2= DGÈ AB, (ABDG)+ =ABCDEG = U vậy bỏ được C K3= DGÈ A, (ADG)+=ADG ¹ U, không bỏ được B, K3=K2 K4=DGÈ B, (BDG)+=ABCDEG=U vậy bỏ được A Kết luận BGD là một khoá của R. Thuật toán tìm mọi khoá của một quan hệ: Input: Lược đồ quan hệ R(U,F) Output: Tập KR tất cả các khoá của lược đồ R Ý tưởng: Thực hiện như thuật toán tìm một khoá nhưng thay đổi thứ tự bớt các thuộc tính Ai Giả mã: 1. Đặt T=ÈTi và P=ÈPi 2. KR:={K | K là khóa của lược đồ R(U,F) và K chứa trong siêu khóa (U\P) È(TÇP)} 3. For each K in KR do 4. For each (Ti®Pi) in F do 5. M:=TiÈ (K\Pi); 6. Test:=true; 7. for each H in KR do 8. if H Í M then test:=false; 9. If test then KR:= KR È {K | K là khóa của R(U,F) và K chứa trong T} 10. end (4) 11. end; (3) 12. Return KR VD1: Xét lại VD3 ở trên Cho lược đồ quan hệ R(U) với U={A,B,C} F={AB ®C, C®B} Tìm mọi khoá của R Đặt P=BC K0=A tính A+=A ¹ U K1=A È BC K2=AÈ B (AB)+ =ABC=U, bỏ được C, vậy AB là một khoá của R, K2’=AÈ C (AC)+=ABC=U, bỏ được B, vậy AC là một khoá của R Kết luận R có 2 khoá là AB và AC VD2: Xét lại VD4 ở trên Cho lược đồ quan hệ R(U) với U={A,B,C,D,E,G} F={AB ®C, G®A, C®B, ABD®E} Tìm mọi khoá của R Đặt P=ABCE K0=U \ P = DG tính DG+ = ADG ¹ U K1= DG È ABC K2= DGÈ AB, (ABDG)+ =ABCDEG = U vậy bỏ được C K3= DGÈ A, (ADG)+=ADG ¹ U, không bỏ được B, K3=K2 K4=DGÈ B, (BDG)+=ABCDEG=U vậy bỏ được A, DGB là một khoá của R K2’= DGÈ BC, (BCDG)+ =ABCDEG = U vậy bỏ được A K3= DGÈ C, (DGC)+=ABCDEG=U vậy bỏ được B, DGC là một khoá của R. Kết luận R có 2 khoá là DGB, DGC Chú ý: Thuật toán tìm mọi khóa cải tiến Input: Lược đồ quan hệ R(U, F), Tập thuộc tính U, Tập phụ thuộc hàm F={Ti->Pi | Ti,Pi ÍU, TiWPi =Æ, i=1n} Output: Mọi Ki là tập con của U sao cho Ki là khoá của R Action: Đặt P= ÈPi Bước 1: Đặt K0=U \ P (những thuộc tính không nằm trong vế phải FD) Bước 2: Nếu K0+ = U thì K0 là khóa duy nhất và kết thúc Bước 3: K1:=K0 Bước 4: Với mỗi Ai ÎTÇP ta thực hiện Tính Nếu (Ki-1)+ = U Ngược lại Bước 5: Kết luận các (Ki )+ là các khoá của lược đồ 2.8. Tập phụ thuộc hàm tối thiểu Các tập phụ thuộc hàm tương đương ? ĐN bao đóng của tập phụ thuộc hàm Hai phụ thuộc hàm gọi là tương đương nếu F+=G+ (nói cách khác F phủ G và G phủ F) Ký hiệu F~G Kiểm tra 2 tập phụ thuộc hàm có tương đương hay không + Lấy mỗi phụ thuộc hàm X®Y ÎF kiểm tra X®YÎG+ không? + Lấy mỗi phụ thuộc hàm X’®Y’ ÎG kiểm tra X’®Y’ÎF+ không? VD: Cho quan hệ r(U) với U={A,B,D,E,F,G} F={A®BC, D®E, AD®F} G={A®B, A®C, D®E, AD®F} Kiểm tra F~G? + Kiểm tra mỗi phụ thuộc hàm ÎG có thuộc F+ hay không Kiểm tra A®B, ta có A®BC nên A®B ÎF vậy A®B ÎF+ Kiểm tra A®C, ta có A®BC nên A®CÎF vậy A®C ÎF+ Kiểm tra D®E và AD®F đều thuộc F Vậy F phủ G + Kiểm tra mỗi phụ thuộc hàm ÎF có thuộc G+ hay không Kiểm tra A®BC, ta có A®B, và A®C nên A®BC ÎF vậy A®BC ÎG+ Kiểm tra D®E và AD®F đều thuộc F Vậy G phủ F Kết luận F~G Tập phụ thuộc hàm tối thiểu: Tập phụ thuộc hàm F được gọi là tối thiểu nếu nó thoả mãn 3 điều kiện sau: F không dư thừa phải ó mỗi phụ thuộc hàm của F đều không dư thừa phải ó mỗi phụ thuộc hàm của F có vế phải chỉ gồm 1 thuộc tính F không dư thừa phụ thuộc hàm ó không tồn tại phụ thuộc hàm dạng X®Y sao cho (F-{X->Y}+=F+ F không dư thừa trái ó mọi phụ thuộc hàm F không dư thừa trái. Dư thừa trái nghĩa là X®Y nếu $ AÎX mà (X-{A})® Y. Định lý: Mỗi tập phụ thuộc hàm F đều tương đương với 1 tập phụ thuộc hàm tối thiểu F’ nào đó. Khi đó F’ gọi là phủ tối thiểu của F Thuật toán: Tìm phủ tối thiểu của 1 tập phụ thuộc hàm Input: Cho lược đồ quan hệ R(U) Tập phụ thuộc hàm F (Li->Ri, i=1m) Output: Phủ tối thiểu F’ của F Action: 1. Xác định tập phụ thuộc hàm F1 ~ F. F1 không dư thừa phải. Nếu tồn tại phụ thuộc hàm dạng X®A1A2..An thì ta tách thành phụ thuộc hàm dạng X ®A1, X®A2,....X,®An 2. Xác định tập phụ thuộc hàm F2 ~ F1. F2 không dư thừa phụ thuộc hàm. Bước 2.0: Đặt F0=F1 nếu Fi-1\Li®Ri~ Fi-1 Bước 2.i: Tính nếu ngược lại Bước 3: Xác định tập phụ thuộc hàm F3~ F2 không dư thừa trái. Bước 3.0: Đặt F0=F2 Bước 3.i: Tính nếu $ZiÌLi sao cho Fi-1\{Li®Ri} È {Zi®Ri} ~Fi-1 Nếu ngược lại VD1: Cho lược đồ quan hệ r(U), U={A,B,C,D,E,F,G} F={A®BC, D®E, AD®F} Tìm phủ tối thiểu của F + Xác định F1~F, F1 không dư thừa phải F1={A®B, A®C, D®E, AD®F} + Xác định F2 ~ F1 không dư thừa phụ thuộc hàm B0: Đặt F0=F1={A®B, A®C, D®E, AD®F} B1: Bỏ A®B, A+=AC, không chứa B ®không bỏ được Bỏ A®C, A+=AB, không chứa C ®không bỏ được Bỏ D®E, không bỏ được Bỏ AD®F, không bỏ được F2=F1 + Xác định F3~F2, F3 không dư thừa trái B0: Đặt F0=F2={A®B, A®C, D®E, AD®F} B1: Chỉ phụ thuộc hàm AD®F là có nhiều hơn 1 thuộc tính ở vế phải của phụ thuộc hàm. Ta bỏ A, kiểm tra D®F, D+ = DE không chứa F, nên không bỏ được Ta bỏ D, kiểm tra A®F, A+=ABC không chứa F, nên không bỏ được Kết luận: F’={A®B, A®C, D®E, AD®F} VD2: Cho lược đồ quan hệ R(U, F), U={A,B,C,D,E,F,G,H} F={A®CD, C®D, EG®F, B®H, E®G}, tìm phủ tối thiểu của F + Xác định F1~F, F1 không dư thừa phải F1={A®C, A®D, C®D, EG®F, B®H, E®G} + Xác định F2 ~ F1 không dư thừa phụ thuộc hàm B0: Đặt F0=F1={A®C, A®D, C®D, EG®F, B®H, E®G} B1: Bỏ A®C, A+=AD, không chứa C -> không bỏ được Bỏ A®D, A+=CD chứa D, nên bỏ được FD A®D Bỏ C®D, không bỏ được Bỏ EG®F, không bỏ được Bỏ B®H, không bỏ được Bỏ E®G, không bỏ được F2={A®C, C®D, EG®F, B®H, E®G} + Xác định F3~F2, F3 không dư thừa trái Xét FD EG®F, bỏ E, G+=G không chứa F nên không bỏ được bỏ G, E+=EGF chứa F nên bỏ được G F3={A®C, C®D, E®F, B®H, E®G} Kết luận F’={A®C, C®D, E®F, B®H, E®G} VD3: Cho lược đồ quan hệ R(U, F), U={A,B,C,D,E,F,G,H} F={AEF®CD, A®GH, EF®B, G®H}, tìm phủ tối thiểu của F + Xác định F1~F, F1 không dư thừa phải F1={AEF®C, AEF®D, A®G, A®H, EF®B,G®H} + Xác định F2 ~ F1 không dư thừa phụ thuộc hàm F2={AEF®C, AEF®D, A®G, EF®B,G®H} + Xác định F3~F2, F3 không dư thừa trái F3=F2={AEF®C, AEF®D, A®G, EF®B,G®H} Kết luận F’={AEF®C, AEF®D, A®G, EF®B,G®H} 3. Phép tách các lược đồ quan hệ 3.1. Khái niệm phép tách + Cho lược đồ quan hệ R(U). Tập các lược đồ r=(R1(U1), R2(U2),, Rn(Un)) được gọi là phép tách của R nếu U1ÈU2ÈÈUn=U Giả sử trên U có tập phụ thuộc hàm F, với ZÍU, hình chiếu F lên Z, ký hiệu ÕZ(F), được xác định như sau: ÕZ(F)={(X®Y)ÎF+ | XYÍZ} khi đó ta ký hiệu phép chiếu F lên mỗi Ui là Fi, khi đó phép tách lược đồ R(U, F) như trên có thể viết là R1(U1, F1), R2(U2,F2),, Rn(Un,Fn)) và ký hiệu Ã=(R1, R2,, Rn) + Mục đích của phép tách là tránh dư thừa dữ liệu, tránh trùng lặp dị thường, nhất quán dữ liệu. + VD Cho lược đồ quan hệ BANHANG (TênNCC, Địa chỉ, Sphẩm, giá) và tập phụ thuộc hàm F={TênNCC®địa chỉ; TênNCC, sphẩm®giá}. Khi đó ta có thể tách lược đồ quan hệ BANHÀNG thành 2 lược đồ quan hệ là NCC (TênNCC,Địa chỉ) tập phụ thuộc hàm FNCC = TênNCC®địa chỉ và SẢNPHẨM (TênNCC,Sphẩm,giá) , Fsanpham={TênNCC, sphẩm®giá} 3.2. Phép tách kết nối không tổn thất + ĐN: Phép tách R thành {R1,R2,Rn} gọi là tách kết nối không tổn thất (tách không mất thông tin - Lossless Join Decomposition – LJ) đối với tập phụ thuộc hàm F, nếu mỗi quan hệ r trên R thoả F, ta đều có r=r1*r2*.*rn, trong đó ri = ÕUi(r) (ri là kết quả phép chiếu r trên Ui) + Tính chất không mất mát thông tin là cần thiết khi ta cần khôi phục quan hệ ban đầu từ các quan hệ đã tách Kiểm tra tính kết nối không tổn thất của 1 phép tách Input: Tập hữu hạn các thuộc tính U={A1, A2,..An}, tập phụ thuộc hàm F trên U và phép tách r={U1, U2,..Uk}, Output: Kết luận r có phải

Các file đính kèm theo tài liệu này:

  • docgiao_trinh_nhap_mon_co_so_du_lieu_pham_thi_thanh.doc
Tài liệu liên quan