Tải bản đầy đủ (.ppt) (47 trang)

Phụ thuộc hàm và chuẩn hóa cơ sở dữ liệu quan hệ

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (295.2 KB, 47 trang )

Phụ thuộc hàm và chuẩn hóa
cơ sở dữ liệu quan hệ

Lê Thị Lan


Nội dung
 Một số khái niệm
 Các vấn đề trong thiết kế sơ đồ quan hệ
 Chuẩn hóa
 1NF
 2NF
 3NF
 Boyce Codd (BCNF)


Nội dung
 Một số khái niệm
 Các vấn đề trong thiết kế sơ đồ quan hệ
 Chuẩn hóa
 1NF
 2NF
 3NF
 Boyce Codd (BCNF)


Một số khái niệm







Phụ thuộc hàm
Luật của phụ thuộc hàm
Bao đóng của tập phụ thuộc hàm
Các loại khóa
Thuộc tính thuộc khóa


Phụ thuộc hàm
 Phụ thuộc hàm (functional dependency) được sử
dụng như 1 độ đo để đánh giá chất lượng của tập
sơ đồ quan hệ được thiết kế
 Các phụ thuộc hàm và các khóa được dùng để
xác định các chuẩn của quan hệ
 Phụ thuộc hàm là các ràng buộc được xác định
từ ngữ nghĩa và mối quan hệ bên trong của các
thuộc tính


Phụ thuộc hàm
 Một tập thuộc tính X xác định tập thuộc tính Y nếu giá
trị trong X cho phép xác định một giá trị duy nhất trong
Y
 Y phụ thuộc hàm vào X
 X Y là đúng nếu bất cứ hai bộ nào có cùng giá trị X thì
phải có cùng giá trị Y
Nếu t1[X]=t2[X], thì t1[Y]=t2[Y] với mọi bộ r(R)
 X  Y trong R xác định một ràng buộc cho tất cả các
thể hiện r(R)

 Phụ thuộc hàm chính là các ràng buộc trên dữ liệu


Ví dụ về phụ thuộc hàm
 Mã số bảo hiểm cho phép xác định tên nhân viên
SSN  ENAME

 Mã dự án cho phép xác định tên dự án và địa
điểm dự án
PNUMBER  {PNAME, PLOCATION}

 Mã số bảo hiểm của nhân viên SSN và mã dự án
xác định số giờ mà nhân viên phải làm trong dự
án
{SSN, PNUMBER}  HOURS


Phụ thuộc hàm
 Một phụ thuộc hàm là một tính chất của các
thuộc tính trong lược đồ quan hệ R
 Một ràng buộc phải đúng cho tất cả các thể hiện
của lược đồ quan hệ r(R)


Các luật cho phụ thuộc hàm
 Với một tập phụ thuộc hàm F, ta có thể suy ra các
phụ thuộc hàm mới
 Luật Armstrong
A1. (Phản xạ - Reflexive) Nếu Y là tập con của X thì X  Y
A2. (Tăng trưởng - Augmentation) Nếu X  Y, thì XZ 

YZ (Chú ý: XZ có nghĩa là X U Z)
A3. (Bắc cầu - Transitive) Nếu X  Y và Y  Z, thì X  Z

 A1, A2, A3 tạo một tập các luật đúng và đầy đủ


Các luật cho phụ thuộc hàm
 Luật tách - Decomposition


If X  YZ, then X  Y and X  Z

 Luật hợp


If X  Y and X  Z, then X  YZ

 Luật tựa bắc cầu - Psuedotransitivity


If X  Y and WY  Z, then WX  Z

 Bao đóng của F cho tập phụ thuộc hàm là tập F+
của các phụ thuộc hàm suy diễn từ F


Phụ thuộc hàm đầy đủ
 Phụ thuộc hàm đầy đủ (Full functional
dependency): Y  Z là phụ thuộc hàm đầy đủ
nếu bỏ đi bất cứ một thuộc tính nào trong Y thì

phụ thuộc hàm này không còn đúng
 {SSN, PNUMBER}  HOURS là một phụ thuộc hàm đầy đủ
bởi vì SSN  HOURS hoặc PNUMBER  HOURS không
còn đúng
 {SSN, PNUMBER}  ENAME không phải là phụ thuộc hàm
đầy đủ (gọi là phụ thuộc hàm bộ phận) bởi vì SSN 
ENAME


Một số khái niệm khác
 Phụ thuộc hàm tầm thường (Trivial functional
dependency)
 {Employee ID, Employee Address} →
{Employee Address} là phụ thuộc hàm tầm
thường vì {Employee Address} → {Employee
Address}.


Khóa
• Siêu khóa (Superkey)
K→R
• Khóa (Candidate Key)
K→R
Không tồn tại K’ ⊂ K, sao cho K’ → R (tối thiểu)
• Khóa chính (Primary Key)
Khóa chính
Khóa

• Thuộc tính thuộc khóa (Prime attribute) là 1 thuộc tính
trong khóa

Siêu khóa
chính K


Khóa - ví dụ
 Bảng employee (employeeID, name, job, và
departmentID)
 Siêu khóa: {employeeID }, {employeeID,
Name}, {employeeID, Name, job}, và
{employeeID, Name, job, departmentID}.
 employeeID là một khóa


Bao đóng của tập thuộc tính
Định nghĩa:
X, Y là các thuộc tính của R:
X → Y nằm trong F+ ⇔ Y ⊆ X+
Algorithm:

•X(0) := X
•Repeat
X(i+1) := X(i) ∪ Z,
where Z is the set of
attributes such that there
exists Y→Z in F, and Y ⊂ X(i)
•Until X(i+1) := X(i)
•Return X(i+1)


Bao đóng của tập thuộc tính

R = (A, B, C, D, E)
F = {A→BC, CD→E, B→D, E→A}
Tính A+ và B+:
A+ := {A}
:= {A, B, C}
A→BC và {A} ⊂ A+
:= {A, B, C, D} B→D và {B} ⊂ A+
:= {A, B, C, D, E}CD→E và {C, D} ⊂ A+
không thay đổi


Bao đóng của tập thuộc tính
B+ := {B}
:= {B, D} B→D và {B} ⊂ B+
dừng giải thuật vì B+ không thay đổi nữa


Bao đóng của tập thuộc tính
 A+ là bao đóng của tập thuộc tính
 Nếu A+ = R, thì A là một siêu khóa của quan hệ
R


Tính khóa dựa trên bao đóng
tập thuộc tính
R = (A, B, C, D, E)
F = {A→BC, CD→E, B→D, E→A}
Liệt kê tất cả các khóa của R
• A+ = {A, B, C, D, E}do đó A→ABCDE, thì A là khóa
của quan hệ R.

• Vì E→A, nên E→ABCDE. (bắc cầu)
• Vì CD→E, nên CD→ABCDE. (bắc cầu)
• Vì B→D, nên BC→CD, BC→ABCDE. (tăng trưởng,
bắc cầu)
So A, E, CD, BC are candidate keys of R.


Thuộc tính khóa - Ví dụ
 Cho lược đồ quan hệ R trên tập thuộc tính U={A, B, C,
D} với các phụ thuộc hàm AB->C và B->D và BC->A.


Xác định thuộc tính khóa và thuộc tính không khóa


Nội dung
 Một số khái niệm
 Các vấn đề trong thiết kế sơ đồ quan hệ
 Chuẩn hóa
 1NF
 2NF
 3NF
 Boyce Codd (BCNF)


Các quy tắc cho thiết kế cơ sở
dữ liệu quan hệ
 Thiết kế cơ sở dữ liệu quan hệ: cách nhóm các
thuộc tính đề tạo thành các lược đồ quan hệ
 Các chuẩn 1NF 2NF 3NF BCNF



Dư thừa dữ liệu và các dị
thường khi cập nhật
 Dư thừa dữ liệu
 Các dị thường:
Dị thường khi thêm bộ
 Dị thường khi xóa bộ
 Dị thường khi thay đổi



Ví dụ về các dị thường
Ví dụ quan hệ:
EMP_PROJ ( Emp#, Proj#, Ename, Pname, No_hours)


Dị thường khi cập nhật




Chuyển tên của dự án từ P1 từ “Billing” thành “CustomerAccounting” phải cập nhật nhiều lần do 100 nhân viên đang làm
trong dự án P1

Dị thường khi thêm bộ



Không thể thêm một dự án không có nhân viên.

Không thể thêm một nhân viên nếu nhân viên đó chưa được chỉ
định vào 1 dự án cụ thể.


Ví dụ về các dị thường


Dị thường xóa bộ






Khi xóa 1 dự án thì toàn bộ nhân viên làm cho dự án bị xóa
Khi xóa một nhân viên của dự án chi bao gồm 1 nhân viên thì kết
quả là dự án bị xóa theo

Dư thừa dữ liệu
Không nhất quán

 Đảm bảo cơ sở dữ liệu thiết kế không chứa các dị
thường thêm, xóa và cập nhật


×