Nếu mỗi giá trị chỉ mục ứng với trên 20% số lượng bộ trong bảng, thực hiện truy vấn bình thường bằng cách duyệt qua các dòng trong bảng sẽ hiệu quả hơn.. – Cố gắng dùng các chỉ mục vớ[r]
(1)Trường Đại học Khoa học Tự nhiên Khoa Công nghệ Thông tin
Bộ môn Hệ thống Thông tin
Chương 3: Cơ thiết kế sở dữ liệu
Phạm Nguyên Thảo
(2)2
Nội dung
• Khái niệm phụ thuộc hàm • Khái niệm dạng chuẩn
• Chuẩn bị cài đặt CSDL
(3)3 Khái niệm phụ thuộc hàm
• Phụ thuộc hàm (PTH) – functional dependency thể phụ thuộc tập thuộc tính (Y) tập thuộc tính khác(X)
– Định nghĩa dựa ngữ nghĩa, qui tắc tìm hiểu từ mơi trường ứng dụng
(4)4
Khái niệm PTH (tt)
• Cho quan hệ Q(X, Y, Z), với X, Y, Z tập thuộc tính, X , Y
– Một thể TQ Q thỏa PTH XY nếu:
q,q’TQ, q.X = q’.X =>q.Y = q’.Y – TQ vi phạm PTH XY nếu:
q,q’ TQ: q.X = q’.X q.Y q’.Y
– PTH XY gọi định nghĩa Q TQ thể Q, TQ thỏa PTH
(5)5
PTH – ví dụ
• Xét lịch xếp lớp sở giảng dạy một ngày, ta có phụ thuộc hàm sau:
– (1) GV, Giờ Lớp
( biết giảng viên dạy, ta biết lớp mà giảng viên dạy vào đó)
– (2) Giờ, Lớp Phòng
(Cho học lớp học cụ thể, ta biết lớp học phòng vào đó)
Nếu biết giảng viên dạy, ta biết Phòng mà giảng viên dạy vào
(6)6
Hệ tiên đề Amstrong để suy dẫn PTH • Luật phản xạ:
Y X, XY • Luật cộng:
Nếu X Y Z W X,W Y,Z • Luật bắc cầu:
(7)7
Một số luật dẫn thông dụng khác
• Từ luật dẫn tiên đề Amstrong ta có thể suy luật dẫn khác, số sau thường sử dụng:
– Luật bắc cầu giả:
Nếu X Y Y,W Z X,W Z – Luật hội:
Nếu X Y X Z X Y,Z – Luật phân rã:
Nếu X Y Z Y X Z
(8)8
Khái niệm khóa dựa PTH
• Cho quan hệ Q F tập PTH định nghĩa Q
• K Q+ khóa Q nếu:
i f: K Q+ F+ (K xác định tất thuộc
tính cịn lại Q+)
ii. K’ K | K’ Q+
(9)9
Nội dung
• Khái niệm phụ thuộc hàm
• Khái niệm dạng chuẩn • Chuẩn bị cài đặt CSDL
(10)10
Tình trạng trùng lắp thơng tin
• Phụ thuộc hàm loại ràng buộc toàn vẹn • Khi thêm, xóa, cập nhật liệu phải đảm bảo
không vi phạm PTH
– Các PTH mà vế trái khóa: kiểm tra hiệu chế khóa HQT
(11)11
Tình trạng trùng lắp thơng tin (tt) • Ví dụ:
MON_KT(N,G,P,M,GV); F2 = {N,G,PM; M GV} Với thể hiện:
– Nhận xét trùng lắp thơng tin bất tiện thêm/ xóa/ sửa liệu?
N G P M GV
2 8:00 – 10:00 101 Giải thuật X 10:00 – 12:00 101 CSDL Y 8:00 – 10:00 103 Giải thuật X
(12)12
Tình trạng trùng lắp thơng tin (tt)
• Các bất tiện gây trùng lắp thông tin:
– Bất tiện thêm/cập nhật : để đảm bảo liệu
nhất quán, phải kiểm tra cập nhật hàng loạt thông tin trùng lắp
(13)13
Khái niệm dạng chuẩn
• Dạng chuẩn tiêu chuẩn đưa để đánh giá chất lượng lược đồ CSDL • Mục tiêu nâng cấp dạng chuẩn
(14)14
Định nghĩa dạng chuẩn
• Dạng chuẩn 1:
– Một quan hệ dạng chuẩn khơng có trường lặp trường kép, gọi cấu trúc phẳng
– Ví dụ:
LỊCH_COI_THI (GV_CT, N,G,P,M,GV)
F = {f1: GV_CTN,G,P: giảng viên coi thi coi vào ngày(N), (G)
phòng(P) f2: M GV : mơn thi (M) có giảng
viên (GV) phụ trách
(15)15
Định nghĩa dạng chuẩn (tt) • Dạng chuẩn 2:
– Một quan hệ Q dạng chuẩn tất thuộc tính khơng khóa phụ thuộc đầy đủ vào khóa, tức là:
(f: XY) F, khơng tồn X’ X cho (X’Y) F+
– Ví dụ:
MON_KT(N,G,P,M,GV);
(16)16
Định nghĩa dạng chuẩn (tt) • Dạng chuẩn 3:
– Q DC3 với phụ thuộc hàm XA không hiển nhiên định nghĩa Q (A thuộc tính đơn, X tập thuộc tính), hai điều kiện sau thỏa:
i Hoặc X chứa khóa Q
ii Hoặc A thuộc tính khóa Q
– Ví dụ:
(17)17
Định nghĩa dạng chuẩn (tt)
• Dạng chuẩn BCK (Boyce_Codd_Kent)
– Q DC BCK nếu: với PTH không hiển nhiên X A định nghĩa Q B Q+, ta
ln có (XB) PTH thuộc F+ Hay nói cách khác, X chứa khóa Q
– Ví dụ:
LICH_KT_1(M,P) ; F1 = {M P} LICH_KT_2(M,N,G); F2 =
(18)18
Tính lồng dạng chuẩn
DC
DC
DC
(19)19
Dạng chuẩn lược đồ CSDL • Định nghĩa:
Cho lược đồ CSDL C = {<Qi, Fi>}, i = n
(20)20
Nâng cấp lược đồ - Thuật tốn phân rã
• Mục tiêu: Đưa lược đồ dạng chuẩn cao • Thuật tốn:
Với quan hệ Q lược đồ đạt dạng chuẩn thấp:
– Chọn PTH XY gây dạng chuẩn thấp cho quan hệ Q
– Phân rã Q thành Q1(XY) Q2(Q+ - Y)
(21)21
Nâng cấp lược đồ - Thuật tốn phân rã (tt) • Ví dụ:
LỊCH_COI_THI (GV_CT, N,G,P,M,GV)
F = {f1: GV_CTN,G,P: giảng viên coi thi coi vào
ngày(N), (G) phòng(P)
f2: M GV : mơn thi (M) có giảng viên (GV) phụ trách
f3: N,G,P M : ngày, vào giờ,
phịng, có môn thi }
(22)22
Dạng chuẩn – nhận xét
– Dạng chuẩn cao giảm trùng lắp thông tin Lược đồ dạng chuẩn BCK khơng cịn trùng lắp thơng tin
– Tuy nhiên, dạng chuẩn cao gây khó khăn truy vấn (các quan hệ bị tách nhỏ nên phải thực nhiều phép kết hơn)
– Đôi dạng chuẩn cao gây khó khăn kiểm
tra số PTH (trong ví dụ DC BCK, để kiểm tra PTH N,G,PM, ta phải kết LICH_KT_1
(23)23
Nội dung
• Khái niệm phụ thuộc hàm
• Khái niệm dạng chuẩn
• Chuẩn bị cài đặt CSDL
(24)24
Các vấn đề
• Cân nhắc thông tin khối lượng liệu và tần suất khai thác:
– Quyết định gộp – tách bảng (Thông thường quan hệ nên đạt DC trở lên, nhiên
chấp nhận dạng chuẩn thấp để truy vấn thuận lợi hơn)
– Lựa chọn khố cho bảng (trường hợp bảng có nhiều khóa, chọn khố làm khố chính, khóa cịn lại dùng ràng buộc unique để cài đặt)
(25)25
Lựa chọn mục (index)
• Khơng có mục, HQT thực truy vấn bằng cách duyệt qua dịng bảng • Cài đặt mục cho bảng giúp truy vấn
thông tin nhanh (tìm kiếm B-Tree) • Khóa ràng buộc unique : hiển
nhiên mục bảng
(26)26
Lựa chọn mục (tt)
• Nghĩ đến việc cài đặt mục cho trường hợp sau:
– Trường hợp 1: Có nhu cầu truy vấn thường xuyên bảng Q theo số (tập)thuộc tính
Ví dụ: GiaoDich(MãGD, …,NgàyGD)
Có nhu cầu truy xuất thường xuyên giao dịch ngày khoảng thời gian
(27)27
Lựa chọn mục (tt)
– Trường hợp 2: tập thuộc tính tham gia vào phép kết câu truy vấn xảy thường xuyên
Ví dụ:
HocSinh(STT, Lop, HoTen,…)
KetQua(STTHS, Lop, Mon, Diem)
Thường xuyên có nhu cầu truy vấn: cho biết kết học tập học sinh
select hs.STT, hs.Lop, hs.HoTen, kq.Mon, kq.Diem from HocSinh hs join KetQua kq on hs.STT = kq.STT and hs.Lop = kq.Lop
(28)28
Lựa chọn mục (tt)
– Trường hợp (tt)
Tổng quát: mơ hình quan hệ, xác định đường truy xuất thường xuyên:
Từ Q1(có giá trị cụ thể A a) có nhu cầu truy xuất thường xuyên Q2 tương ứng (tìm kiếm Q2 với A = a) : khai báo mục (A) cho Q2
Truy xuất thường xuyên có ngữ nghĩa tương tự phép kết Lưu ý: mục (AB) khác với hai mục (A) (B)
1 Q
2(ABY)
(29)29
Các loại mục
• Có hai loại mục:
– Clustered index
(30)30
Clustered index
• Các xếp vật lý theo mục (thật sự nằm nút cây)
(31)31
Nonclustered index:
• Chỉ mục logic, liệu thật không xếp vật lý theo mục
(32)32
Nonclustered index (tt):
(33)33
Nonclustered index (tt)
(34)34
Lựa chọn mục (tt)
• Một số cân nhắc chọn mục:
– Sử dụng nhiều mục tăng tốc độ truy vấn, làm giảm hiệu thao tác thêm/xố/ cập nhật liệu
– Khơng nên tạo mục bảng nhỏ (vài trăm dòng)
(35)35
Một số cân nhắc chọn mục (tt)
– Các giá trị mục phải phân bố bảng
– Cố gắng dùng mục với số thuộc tính
(chiếm khơng gian cần chi phí trì mục với số thuộc tính lớn)
– Clustered index phải nhỏ (số thuộc tính ít, kích
(36)36
Nội dung
• Khái niệm phụ thuộc hàm
• Khái niệm dạng chuẩn
• Chuẩn bị cài đặt CSDL
(37)37
Một số qui định
• Một bảng có tối đa 249 nonclustered index (bao gồm index ngầm định khai báo khố mục)
• Kích thước tối đa mục (tổng kích thước thuộc tính tham gia vào mục) khơng q 900 bytes
(38)38
Cú pháp khai báo mục
Create [ Unique ][ Cluster| Nonclustered] Index index_name
(39)39
Cài đặt mục – Ví dụ
Create nonclustered index idx_STTHS_Lop
(40)40