Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 82 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
82
Dung lượng
1,95 MB
Nội dung
ĐẠI HỌC CÔNG NGHỆ THÔNG TIN Tài liệu giảng dạy CƠ SỞ DỮ LIỆU KHOA HỆ THỐNG THÔNG TIN Nội dung • Chương 1: Tổng quan: Giới thiệu khái niệm hệ CSDL, Các mô hình CSDL • • • • • Chương 2: Mô hình liệu quan hệ Chương 3: Ngôn ngữ đại số quan hệ Chương 4: Ngôn ngữ SQL Chương 5: Ràng buộc toàn vẹn CSDL Chương 6: Phụ thuộc hàm dạng chuẩn Chương 4: Ngôn ngữ truy vấn SQL NGÔN NGỮ TRUY VẤN SQL • Là ngôn ngữ chuẩn để truy vấn thao tác CSDL quan hệ • Là ngôn ngữ phi thủ tục • Khởi nguồn SQL SEQUEL - Structured English Query Language, năm 1974) • Các chuẩn SQL – SQL89 – SQL92 (SQL2) – SQL99 (SQL3) NGÔN NGỮ TRUY VẤN SQL, BAO GỒM: • Ngôn ngữ định nghĩa liệu (Data Definition Language - DDL): cho phép khai báo cấu trúc bảng, mối quan hệ ràng buộc • Ngôn ngữ thao tác liệu (Data Manipulation Language - DML): cho phép thêm, xóa, sửa liệu • Ngôn ngữ truy vấn liệu (Structured Query Language – SQL): cho phép truy vấn liệu • Ngôn ngữ điều khiển liệu (Data Control Language – DCL): khai báo bảo mật thông tin, cấp quyền thu hồi quyền khai thác sở liệu 2.1 Ngôn ngữ định nghĩa liệu - DDL Lệnh tạo bảng (CREATE) 3.1.1 Cú pháp 3.1.2 Một số kiểu liệu Lệnh sửa cấu trúc bảng (ALTER) 3.2.1 Thêm thuộc tính 3.2.2 Sửa kiểu liệu thuộc tính 3.2.3 Xoá thuộc tính 3.2.4 Thêm ràng buộc toàn vẹn 3.2.5 Xoá ràng buộc toàn vẹn Lệnh xóa bảng (DROP) 2.1 Ngôn ngữ định nghĩa liệu Lệnh tạo bảng Cú pháp CREATE TABLE ( [not null], [not null], … [not null], khai báo khóa chính, khóa ngoại, ràng buộc ) 2.1 Ngôn ngữ định nghĩa liệu Một số kiểu liệu Kiểu liệu Chuỗi ký tự SQL Server varchar(n), char(n),nvarchar(n), nchar(n) Số tinyint,smallint, int, numeric(m,n), decimal(m,n),float, real, smallmoney, money Ngày tháng smalldatetime, datetime Luận lý bit 2.1 Ngôn ngữ định nghĩa liệu Lược đồ CSDL quản lý bán hàng gồm có quan hệ sau: KHACHHANG (MAKH, HOTEN, DCHI, SODT, NGSINH, DOANHSO, NGDK, CMND) NHANVIEN (MANV,HOTEN, NGVL, SODT) SANPHAM (MASP,TENSP, DVT, NUOCSX, GIA) HOADON (SOHD, NGHD, MAKH, MANV, TRIGIA) CTHD (SOHD,MASP,SL) 2.1 Ngôn ngữ định nghĩa liệu Create table KHACHHANG ( MAKH char(4) primary key, HOTEN varchar(40), DCHI varchar(50), SODT varchar(20), NGSINH smalldatetime, DOANHSO money, NGDK CMND smalldatetime, varchar(10) ) 10 Phủ tối thiểu (3) Phụ thuộc hàm không dư thừa F tập phụ thuộc hàm không dư thừa không tồn F’ ⊂ F cho F’ ≡ F Ngược lại F gọi tập phụ thuộc hàm dư thừa Thuật toán tìm phủ tối thiểu tập phụ thuộc hàm Bước 1: Phân rã phụ thuộc hàm có vế phải nhiều thuộc tính thành phụ thuộc hàm có vế phải thuộc tính Bước 2: Loại thuộc tính có vế trái dư thừa phụ thuộc hàm (bỏ thuộc tính bên vế trái, bao đóng thuộc tính lại có chứa thuộc tính đó) Bước 3: Loại phụ thuộc hàm dư thừa khỏi F (Các thuộc tính vế phải PTH xuất lần loại bỏ Còn lại tính bao đóng tập thuộc tính vế trái có xuất thuộc tính vế phải loại bỏ thuộc tính PTH dư thừa) 68 Phủ tối thiểu (4) Ví dụ: Cho lược đồ quan hệ Q(A,B,C,D) tập phụ thuộc hàm F={AB → CD, B → C, C → D} Tìm phủ tối thiểu? Bước 1: Tách phụ thuộc hàm cho vế phải thuộc tính + ta có F={AB → C, AB → D, B → C, C → D} Bước 2: Bỏ thuộc tính dư thừa vế trái + B → C, C → D Không xét vế trái có thuộc tính + + + xét AB → C : Nếu Bỏ A B =BCD không chứa A nên Bỏ A Nếu Bỏ B A =A không bỏ thuộc tính + + + xét AB → D : Nếu Bỏ A B =BCD không chứa A nên Bỏ A Nếu Bỏ B A =A không bỏ thuộc tính Bước 3: Loại khỏi F phụ thuộc hàm dư thừa + xét AB->C : Tính AB+=ABCD chứa C nên loại bỏ AB->C + xét AB->D : tính AB+=ABCD chứa D nên loại bỏ AB->D + B->C : tính B+=B bỏ + C->D : tính C+=C bỏ Phủ tối thiểu {B->C, C->D} 69 Khoá Định nghĩa + Cho lược đồ quan hệ Q(A1, A2, …, An), Q tập thuộc tính quan hệ Q, F tập phụ + thuộc hàm Q, K tập Q Khi K gọi khóa Q nếu: + + (i) K F = Q + + (ii) Không tồn K’⊂ K cho K’ F = Q Thuộc tính A gọi thuộc tính khóa A∈ K, K khóa Q Ngược lại thuộc tính A gọi thuộc tính không khóa K’ gọi siêu khóa K ⊆ K’ 70 Thuật toán tìm khoá (1) Sử dụng đồ thị có hướng để tìm khóa sau: Bước 1: - Mỗi nút đồ thị tên thuộc tính lược đồ quan hệ R - Cung nối hai thuộc tính A B thể phụ thuộc hàm A → B - Thuộc tính có mũi tên (nghĩa nằm vế trái phụ thuộc hàm) gọi nút gốc - Thuộc tính có mũi tên tới (nghĩa nằm vế phải phụ thuộc hàm) gọi nút Bước 2: + - Xuất phát từ tập nút gốc (X), dựa tập phụ thuộc hàm F, tìm bao đóng X F + + - Nếu X F= Q X khóa, ngược lại bổ sung thuộc tính không thuộc nút vào X thực tìm bao đóng X Dừng tìm khóa R 71 Thuật toán tìm khoá (2) Ví dụ: Cho lược đồ quan hệ R(A, B, C, D, E, G, H) tập phụ thuộc hàm F={ B → A , DA → CE, D → H, GH → C, AC → D} Tìm khóa R? Phân rã vế phải ta có F ={ B → A , DA → C, DA → E, D → H, GH → C, AC → D} 72 Thuật toán tìm khoá (3) Nhận thấy từ đồ thị trên, nút B G nút gốc Khóa R phải chứa thuộc tính B G, ví dụ chọn B + + + B F = BA, Vì B F ≠ Q nên B không khóa Nhận thấy D thuộc tính vế trái ba phụ thuộc hàm F nên bổ sung thuộc tính D vào để xét khóa + + + BD F = BDACEH, BD F ≠ Q nên BD không khóa Bổ sung thuộc tính G + + + BDG F = BDGACEH, BDG F = Q nên BDG khóa 73 Các dạng chuẩn (1) Dạng chuẩn (1NF) Lược đồ Q dạng chuẩn thuộc tính mang giá trị nguyên tố Giá trị nguyên tố giá trị không phân nhỏ Các thuộc tính đa trị (multi-valued), thuộc tính đa hợp(composite) không nguyên tố Ví dụ: Thuộc tính ĐiaChỉ : Số 175 Đường 3/2 Phường 10 Quận không nguyên tố ĐịaChỉ → (SốNhà, Đường, Phường, Quận) 74 Các dạng chuẩn (2) Ví dụ: HOADON(MaHD, MaKH, NgayHD, CtietMua, SoTien) CtietMua không nguyên tố nên không thỏa dạng chuẩn 75 Dạng chuẩn (2NF) (1) Lược đồ Q dạng chuẩn thoả: (1) Q đạt dạng chuẩn (2) Mọi thuộc tính không khóa Q phụ thuộc đầy đủ vào khóa Kiểm tra dạng chuẩn Bước 1: Tìm khóa Q Bước 2: Với khóa K, tìm bao đóng tập tất tập thực S i K + Bước 3: Nếu tồn bao đóng Si chứa thuộc tính không khóa Q không đạt dạng chuẩn 2, ngược lại Q đạt dạng chuẩn 76 Dạng chuẩn (2NF) (2) Ví dụ: Cho Q1 (A, B, C, D), F={A→B, B→DC} Lược đồ có khóa A, nên thuộc tính phụ thuộc đầy đủ vào khóa Do Q1 đạt dạng chuẩn Ví dụ: Cho Q2 (A, B, C, D), F={AB → D, C → D} Lược đồ có khóa ABC, có C ⊂ABC mà C → D, D thuộc tính không khóa (nghĩa thuộc tính D không phụ thuộc đầy đủ vào khóa) Do Q2 không đạt dạng chuẩn 77 Dạng chuẩn (3NF) (1) + Lược đồ Q dạng chuẩn phụ thuộc hàm X → A ∈ F , với A ∉ X có: (1) X siêu khóa, (2) A thuộc tính khóa Hay thuộc tính không khóa Q không phụ thuộc bắc cầu vào khóa Q Kiểm tra dạng chuẩn Bước 1: Tìm khóa Q Bước 2: Phân rã vế phải phụ thuộc hàm F để tập F trở thành tập phụ thuộc hàm có vế phải thuộc tính Bước 3: Nếu phụ thuộc hàm X → A ∈ F, mà A ∉ X thỏa (1) X siêu khóa (vế trái chứa khóa), (2) A thuộc tính khóa (vế phải tập khóa) Q đạt dạng chuẩn 3, ngược lại Q không đạt dạng chuẩn 78 Dạng chuẩn (3NF) (2) Ví dụ: Cho Q (A, B, C, D), F={AB → D, C → D} Bước 1: Q có khóa ABC Bước 2: Mọi phụ thuộc hàm F có vế phải thuộc tính Bước 3: Với AB → D, nhận thấy D ∉ AB có • Vế trái (AB) siêu khóa • Hơn vế phải (D) không thuộc tính khóa Vậy Q không đạt dạng chuẩn 79 Dạng chuẩn Boyce Codd (BCNF) (1) + Lược đồ Q dạng chuẩn BC phụ thuộc hàm X → A ∈ F , với A ∉ X có X siêu khóa Nhắc lại: + Siêu khóa : tập thuộc tính Q mà giá trị chúng phân biệt khác thể TQ Nghĩa là: ∀ t1, t2 ∈ TQ, t1[K] ≠ t2[K] ⇔ K siêu khóa Q 80 Dạng chuẩn Boyce Codd (BCNF) (2) Kiểm tra dạng chuẩn BCNF Bước 1: Tìm khóa Q Bước 2: Phân rã vế phải phụ thuộc hàm F để tập F trở thành tập phụ thuộc hàm có vế phải thuộc tính Bước 3: Nếu phụ thuộc hàm X → A ∈ F, mà A ∉ X thỏa X siêu khóa (vế trái chứa khóa), Q đạt dạng chuẩn BC, ngược lại Q không đạt dạng chuẩn BC 81 Dạng chuẩn Boyce Codd (BCNF) (3) Ví dụ: Cho Q (A, B, C, D, E, I), F={ACD → EBI, CE → AD} Bước 1: Q có hai khóa {ACD, CE} Bước 2: Phân rã vế phải phụ thuộc hàm F, ta có: F={ACD → E, ACD → B, ACD → I, CE → A, CE → D} Bước 3: Mọi phụ thuộc hàm F có vế trái siêu khóa Vậy Q đạt dạng chuẩn BC 82 [...]... phẩm do Trung Quốc sản xuất có giá thấp hơn 10000 DELETE FROM SANPHAM WHERE (Gia