Nếu chúng ta có một phương pháp để cắt một bảng lớn như thế thành các bảng nhỏ hơn và nhờ đó có thể loại bỏ được những vấn đề này, cơ sở dữ liệu sẽ hiệu quả và đáng tin cậy hơn.. Các [r]
Trang 1bi 1: Q(A,B,C,D,E,G)
F={AB?C;C?A;
BC?D;ACD?B;D?EG;BE?C;CG?BD;CE?G}
xác định dạng chuẩn của lược đồ quan hệ Q.
bi 2: Cho F={AB?E,AG?I,BE?I,E?G,GI?H}.
Hãy chứng tỏ phụ thuộc hàm AB?GH được suy diễn từ F nhờ
luật dẫn Armstrong
bi 3: cho F = {AB?C,B?D,CD?E,CE?GH,G?A}
Trang 2I DẠNG CHUẨN (NORMAL FORM)
1 Đặt vấn đề
Cho một lược đồ CSDL C có các lược đồ quan hệ Q và tập phụ
thuộc hàm F.
Trong thực tế một ứng dụng có thể phân tích, thiết kế thành nhiều
lược dồ CSDL khác nhau và tất nhiên chất lượng thiết kế của các lược đồ CSDL này là khác nhau.
Chất lượng thiết kế của một lược đồ CSDL có thể được đánh giá
dựa trên tiêu chuẩn sau: sự trùng lắp thông tin, chi phí kiểm DẠNG CHUẨN (NORMAL FORM) VÀ VẤN
ĐỀ CHUẨN HÓA LƯỢC ĐỒ CƠ SỞ DỮ LIỆU
Trang 3Ví dụ:
Ngọc An 21/8/05
Nha Trang Nguyễn Mai
1865 Máy hút bụi
Thanh Hà 20/8/05
Quảng Ngãi
Lê Thái Hòa 1817
Máy CD
Thuận Thành 22/7/05
Lâm Đồng Dương Khang
519
Ti vi
Liên Bình 12/4/05
Hà nội Nguyễn Thị Lan
2460
Tủ lạnh
Mỹ An 12/9/05
TP.HCM Hoàng Dung
2730 Máy vi tính
Ngọc An 7/5/05
Đà Nẵng Hoàng Ngọc
1458 Máy hút bụi
NVIÊN
-BÁN HÀNG
NGÀY ĐCHỈ-KH
TÊN KH ĐĐH
TÊN SẢN PHẨM
Trang 4- Sự trùng lắp thông tin nhiều tốn không gian lưu trữ
- Khi tìm kiếm thì rất tốn thời gian
- Khi xóa một khách hàng thì chúng ta xóa mất địa chỉ, điện
thoại.
Trang 5Nếu chúng ta có một phương pháp để cắt một bảng lớn như
thế thành các bảng nhỏ hơn và nhờ đó có thể loại bỏ
được những vấn đề này, cơ sở dữ liệu sẽ hiệu quả và
đáng tin cậy hơn Các lớp lược đồ cơ sở dữ liệu quan hệ hoặc các định nghĩa bảng, được gọi là các dạng chuẩn
(normal form), thường được sử dụng để đạt được mục
tiêu này Quá trình tạo ra một bảng dữ liệu đạt dạng
chuẩn gọi là quá trình chuẩn hóa (normalization) Quá
trình này được thực hiện bằng cách phân tích sự phụ
thuộc qua lại giữa từng thuộc tính đi kèm với những bảng này và chiếu (trên tập con của các cột) các bảng lớn để
tạo ra các bảng nhỏ hơn.
Trang 6(SELECT matho FROM hop_dong INNER JOIN chitiet_HD ON hop_dong.sohd =
chitiet_HD.sohd
WHERE ng_ngthu > date() OR ISNULL(ng_ngthu)) b)SELECT sohd,ngayhd,makh,tenkh,dchi,soxe,trigiahd,ng_giao_dk,ng_ngthu
FROM hop_dong WHERE ng_giao_dk <= DATE() AND (TRIGIAHD >
(SELECT SUM(SOTIENTHU) FROM phieu_thu WHERE phieu_thu.sohd = hop_dong.sohd) OR sohd Not In (Select
sohd
From phieu_thu))
c)SELECT sohd,ngayhd,makh,tenkh,dchi,soxe,trigiahd,ng_giao_dk,ng_ngthu
FROM hop_dong WHERE ng_giao_dk > #12/21/95# AND ng_giao_dk <= #12/31/95#
d)SELECT chitiet_hd.matho,tentho,COUNT(macv) AS soluongcv
FROM chiTiet_hd INNER JOIN tho ON chiTiet_hd.matho = tho.matho GROUP BY chiTiet_hd.matho,tentho
HAVING COUNT(macv) >= ALL (SELECT COUNT(macv) FROM
Trang 7e SELECT chiTiet_hd.matho,tentho,SUM(trigia_cv) AS congtrigia_cv
FROM chiTiet_hd INNER JOIN tho ON chiTiet_hd.matho = tho.matho GROUP BY chiTiet_hd.matho,tentho
HAVING SUM(trigia_cv) >= ALL (SELECT SUM(trigia_cv) FROM chiTiet_hd GROUP BY matho)