Các bước thiết kế một Cơ sở dữ liệu Bước 1: Phân tích toàn bộ các yêu cầu Bước 2: Nhận diện những thực thế Bước 3: Nhận diện các mối liên quan giữa các thực thể Bước 4: Xác đinh
Trang 1Hoàng Thị Hà 1
02/07/24
CHƯƠNG 5: LÝ THUYẾT THIẾT KẾ CSDL
QUAN HỆ
Trang 2Bài 1: Giới thiệu
I Đặt vấn đề
Trang 3Hoàng Thị Hà 3
02/07/24
Xét ví dụ:
S# SNAME STATUS CITY P#, PNAM
E COLOR WEIGHT PRICE QTY
d o n
P2 B2 Xanh 17 150 250
Trang 4Câu hỏi?
Vậy làm thế nào để thiết kế một CSDL cho
tốt?
Trang 5Hoàng Thị Hà 5
02/07/24
Nhận xét
Ưu điểm: Khi thực hiện truy vấn SQL chỉ cần
thực hiện các phép toán một ngôi do đó biếu diễn câu hỏi dễ dàng, thời gian chi phí đáp ứng nhỏ
Trang 6Nhận xét (cont)
Nhược điểm:
* Dư thừa dữ liệu (Redundancy): Dễ dàng thấy rằng mỗi khi xuất hiện
tên nhà cung cấp thì địa chỉ của ông ta lại lặp lại trong mối quan hệ.
* Không nhất quán (Inconsistency) (dị thường xuất hiện khi sửa dữ
liệu): Là hệ quả của việc dư thừa dữ liệu VD: khi sửa đổi địa chỉ của nhà cung cấp ở bộ nào đó còn các bộ khác giữ nguyên thì một nhà
cung cấp có nhiều địa chỉ.
* Dị thường khi thêm bộ (Insertion anomalies): Nếu một nhà cung
cấp chưa cung cấp một mặt hàng nào cả, khi đó ta không thể đưa
thông tin về nhà cung cấp đó vì …sẽ phải đưa giá trị nào vào các thuộc tính còn lại.
* Dị thường khi xoá bộ (Deletion anomalies): Là vấn đề ngược lại của
vấn đề trên Nếu vô tình một nhà cung cấp chỉ mới cung cấp một mặt hàng duy nhất (giả sử S2, P2) thì sẽ bị mất thông tin về nhà cung cấp đó.
Trang 7Hoàng Thị Hà 7
02/07/24
Cách giải quyết thế nào?.
Để khắc phục những nhược điểm trên thì cần
tách quan hệ trên thành các quan hệ khác nhau
ta được một lược đồ CSDL (tập các lược đồ quan hệ) sao cho tốt hơn
Trang 8Lược đồ VT có thể tách thành 3 lược đồ như sau
Trang 9tăng lên.
Nhận xét
Trang 10II Các bước thiết kế một Cơ sở dữ liệu
Bước 1: Phân tích toàn bộ các yêu cầu
Bước 2: Nhận diện những thực thế
Bước 3: Nhận diện các mối liên quan giữa các thực
thể
Bước 4: Xác đinh khoá chính
Bước 5: Nhận diện khoá ngoại lai
Bước 6: Thêm các thuộc tính không phải khoá vào
bảng dữ liệu
Bước 8: Khai báo phạm vi của mỗi thuộc tính
Bước 9: Kiểm tra tính chuẩn của các quan hệ(3NF)
Trang 11Hoàng Thị Hà 11
02/07/24
BÀI 2: PHỤ THUỘC HÀM.
Trang 12I Khái niệm PTH
Định nghĩa: Cho R(U) là một sơ đồ quan hệ với
U= {A1, A2, …, An} là tập các thuộc tính X,Y U
Ta nói rằng X xác định Y (hay Y phụ thuộc hàm
vào X) nếu với hai bộ t1, t2 bất kỳ chúng bằng
nhau trên tập X thì cũng bằng nhau trên tập
Y( t1[X] = t2[X] thì t1[Y] = t2[Y] ).
SNAME, SID SADDR
Trang 13Hoàng Thị Hà 13
02/07/24
II Hệ tiên đề Amstrong đối với các phụ thuộc hàm
2 Hệ tiên đề Amstrong đối với các phụ thuộc hàm
Cho R(U) là một sơ đồ quan hệ với U = {A1, A2,
…, An} là tập các thuộc tính X,Y, Z, W U
Ta ký hiệu XY= X Y
Hệ tiên đề Amstrong:
XZ YZ
Trang 14Định lý:
Hệ tiên đề Amstrong là đúng và đầy đủ(đã được chứng minh)
Trang 15WY Z thì WX Z
Trang 16III Bao đóng(closures of attribute sets)
Đặt vấn đề: Cho quan hệ r, tập PTH F, và tập
phụ thuộc tính X,Y U Hỏi rằng X Y có thõa mãn trong r?
Để trả lời được câu hỏi trên có 2 cách:
vậy, ta phải tính F+ , nhưng việc tính F+ là rất khó.
hơn so với cách thức nhất.
Trang 17Hoàng Thị Hà 17
02/07/24
Bao đóng(cont)
Bao đóng của tập thuộc tính X
Định nghĩa: Bao đóng của tập thuộc tính X (ký
hiệu X+) bao gồm các thuộc tính A U sao cho
X A F+
thuộc tính mà X xác định nó
Trang 18Thuật toán tìm bao đóng của tập thuộc tính X:
Input: Tập hữu hạn các thuộc tính U, tập các
PTH F trên U và X U
Output: Bao đóng của X đối với F (XF+)
Thuật toán:Tính liên tiếp X0, X1, X2, …X(k) theo
Trang 19Hoàng Thị Hà 19
02/07/24
Ví dụ
Ví dụ: Cho lược đồ R(U, F) , U= {A, B, C, D,E}
F= {A BC, C DE, E A}
Trang 21Hoàng Thị Hà 21
02/07/24
Bao đóng của tập PTH F (F+)
Định nghĩa: Cho một lược đồ quan hệ R(U,F),
bao đóng của tập PTH F (ký hiệu là F+) là tất cả các PTH được suy diễn logic từ F mà mọi quan
hệ trên lược đồ R đều thõa mãn điều kiện sau:
F+ thì không thể thêm được một PTH nào khác ngoài các PTH trong F+
Trang 23Hoàng Thị Hà 23
02/07/24
Thuật toán tìm bao đóng của tập phụ thuộc hàm F(F+)
Input: Lược đồ quan hệ R (U,F)
Output: F+ là bao đóng của F
Thuật toán:
Trang 24 Cho lược đồ quan hệ R(A,B,C) với
F = {AB → C,C → B}
Hãy tính F+
Trang 25Hoàng Thị Hà 25
02/07/24
B1: Các tập con của U
Trang 26B2: Tìm bao đóng của tất cả các tập con của R
Trang 27Hoàng Thị Hà 27
02/07/24
V Phủ của các tập phụ thuộc hàm
V.1 Hai tập phụ thuộc hàm tương đương
Định nghĩa: Cho F và G là tập các PTH trên tập
thuộc tính U Ta nói F và G là tương đương nếu F+ = G+ ( F phủ G hay G phủ F) Ký hiệu là F G
Trang 28Thuật toán xác định F và G có tương đương không
Bước 1: Với mỗi PTH XY của F ta xác định xem XY có là thành viên của G không?
Bước 2: Với mỗi PTH XY của G ta xác định
xem XY có là thành viên của F không?
Nếu cả hai bước trên đều đúng thì F G
Trang 30V.2 Phủ tối thiểu của một tập phụ thuộc hàm (minimal cover):
Tập phụ thuộc hàm F là tối thiểu nếu:
có một thuộc tính.
của X sao cho F\ {X → Y}{Z→Y}tương đương với F.
Trang 31Hoàng Thị Hà 31
02/07/24
Tập phụ thuộc hàm không dư thừa
Cho F là một tập phụ thuộc hàm, ta nói F là
không dư thừa nếu không tồn tại một phụ thuộc hàm X → Y trong F , sao cho F\ X → Y tương
đương với F
Trang 32Thuật toán tìm tập phụ thuộc hàm F không
dư thừa
Giả sử F={ X i→ Yi }i=1,n
Lần lượt xét các phụ thuộc hàm X → Y của F để tính các tập F0, F1, F2, …, Fn theo các bước
sau:
- Bước 0: F0 = F
- Bước i: Tính Fi từ Fi-1 theo công thức:
Fi-1, ngược lại ta đặt Fi = Fi-1.
không dư thừa.
Trang 33Hoàng Thị Hà 33
02/07/24
Ví dụ
1 Cho R(A,B,C) F={AB→C; B→C}
2 Cho R(A,B,C,D) F = {A → BC,B → C,AB → D}
Trang 34Thuật toán loại khỏi F các PTH có vế trái dư thừa
Bước 1: Lần lượt thực hiện bước 2 cho các PTH
X → Y thuộc F
Bước 2: Với mọi tập con thật sự X’ của X nếu
X’ → Y F+ thì thay X→ Y bằng X’ → Y thực hiện lại bước 2
Trang 35F ≡ {A → BC,B → C,A → D}
Trang 36Thuật toán loại khỏi F các PTH dư thừa
Bước 1: Lần lượt xét các PTH X → Y thuộc F
Bước 2: Nếu X → Y là thành viên của F - {X → Y}
thì loại bỏ X → Y khỏi F
Bước 3: Thực hiện bước 2 cho các PTH còn lại
của F
Trang 37Hoàng Thị Hà 37
02/07/24
Chú ý
Từ một tập PTH F ta luôn tìm được ít nhất một
PTH Ftt, nếu thứ tự loại bỏ các PTH trong F là
khác nhau thì ta thu được các Ftt khác nhau
Trang 38VD:
Trang 39Hoàng Thị Hà 39
02/07/24
Ví dụ
Trang 40VI Khóa của một lược đồ quan hệ
Định nghĩa: Cho một lược đồ quan hệ R(U) và
một tập PTH F, K là tập con của U Ta nói K là
khóa của quan hệ R(U) nếu:
K + = U
Tập thuộc tính S được gọi là siêu khóa nếu: S K
Thuộc tính A được gọi là thuộc tính khóa nếu A thuộc bất kỳ khóa nào của R(U), ngược lại A được gọi là thuộc tính
không khóa
Chú ý: Một lược đồ quan hệ có thể có nhiều khóa và
thuộc tính không khóa có thể bằng rỗng
Trang 41 Bước i: Ki = * Ki-1\{A} nếu Ki-1\{A} ->U
* Ngược lại ,K i = K i-1
Đặt K=K n
Trang 43Hoàng Thị Hà 43
02/07/24
Ví dụ 2
Cho sơ đồ quan hệ R(ABCDEG), F={AB→C,
C→A, BC→D, ACD→B, D→EG,
BE→C,CG→BD, CE→AG}
Hãy tìm một khóa tối thiểu của R
Trang 44Lưu ý
Thuật toán tìm khóa trên chỉ nên sử dụng trong trường hợp tìm một khóa
Trang 47Hoàng Thị Hà 47
02/07/24
Trang 48 Vậy, lược đồ trên có hai khóa là {C,S} và {S,Z}
Nhận xét:
phép duyệt để tìm ra tất cả các tập con của U là không
hiệu quả Do vậy, cần thu hẹp không gian duyệt
Trang 49Hoàng Thị Hà 49
02/07/24
Thuật toán cải tiến
Trước hết cần xét một số khái niệm:
Tập thuộc tính nguồn(TN) là tập tất cả các thuộc tính chỉ xuất hiện ở vế trái mà không xuất hiện ở
vế phải của các PTH và những thuộc tính không xuất hiện ở cả vế trái và vế phải của các PTH
Tập thuộc tính đích(TD) là tập tất cả các thuộc
tính chỉ xuất hiện ở vế phải mà không xuất hiện ở
vế tráicủa các PTH
Tập thuộc tính trung gian(TG) là tập tất cả các
thuộc tính xuất hiện ở cả 2 vế của các PTH
Trang 50Hệ quả
Nếu K là khóa của R(U) thì
TN ⊆ K và TD ∩ K =
Trang 51Hoàng Thị Hà 51
02/07/24
Chứng minh hệ quả
Trang 52Thuật toán tìm tất cả các khóa của R(U)
Input: R(U,F)
Output: Tập tất cả các khóa của R(U)
Thuật toán:
Trang 53Hoàng Thị Hà 53
02/07/24
Thuật toán
Trang 56 Vậy tập các khóa là {S,C} và {S,Z}
Trang 57Hoàng Thị Hà 57
02/07/24
Bài tập
Trang 58Bài tập(cont)
Trang 59Hoàng Thị Hà 59
02/07/24
Bài tập (Cont)
Trang 60Bài tập (cont)
Trang 61Hoàng Thị Hà 61
02/07/24
Trang 62Bài tập (cont)
Trang 63Hoàng Thị Hà 63
02/07/24
VII CHUẨN HÓA CÁC LƯỢC ĐỒ QUAN HỆ (normal
forms for relation schemes)
Trang 65Hoàng Thị Hà 65
02/07/24
TẠI SAO PHẢI CHUẨN HÓA LƯỢC ĐỒ
QUAN HỆ?
Xét một số khái niệm sau:
Toàn vẹn dữ liệu: Tất cả các dữ liệu trong Database là phù hợp
Dư thừa dữ liệu: Dữ liệu bị lặp lại trong Database.
Vì vậy, mục đích của chuẩn hóa các lược đồ quan hệ là tránh sự dư thừa dẫn đến sự sai sót của dữ liệu
Trang 66I Định nghĩa các dạng chuẩn
1. Dạng chuẩn 1NF: Một lược đồ quan hệ R được
gọi là ở dạng chuẩn 1 (1NF) nếu và chỉ nếu toàn
bộ các miền có mặt trong R đều chỉ chứa các
giá trị nguyên tố(hay các thuộc tính của mọi bộ đều mang giá trị đơn)
không được chứa các thuộc tính có thể xuất hiện nhiều lần đối với cùng một kiêủ thực thể.
Trang 67B
D
C
B
Trang 70 Mặc dù cách giải quyết này có cải tiến nhưng
sẽ gặp phải một số vấn đề:
student_no không thể làm primary key vì bị lặp lại
Vì vậy phải tìm một khóa mới, trong trường hợp này
nó phải là khóa phức- có nhiều hơn một thuộc tính
Khóa mới là student_no và subject.
Nhưng dữ liệu lại bị lặp lại nhiều, dư thừa dữ liệu ->
việc xử lý dữ liệu có thể sai sót Mà sự dư thừa dữ liệu lại là nguyên nhân chính gây nên sự dị thường của dữ liệu mỗi khi thực hiện các thao tác chèn, xóa, và cập nhật dữ liệu.
1NF
Trang 71Hoàng Thị Hà 71
02/07/24
1NF
Dị thường khi thêm bộ: Ta không thể thêm một
sinh viên mới vào database nếu như sinh viên đó chưa tham gia học môn nào(vì ta không thể bỏ
trống trường Subject)
Dị thường khi cập nhật dữ liệu
Dị thường khi xóa bộ
Trang 72Vậy phải làm thế nào?
Ta sẽ phải chia bảng Student ban đầu thành 2
bảng, khóa chính trong quan hệ ban đầu có trong
cả 2 quan hệ:
Trang 74 Trường Student_no sẽ liên kết hai bảng Sinh
viên và điểm, giúp ta tìm được các thông tin về
các môn học cùng với điểm các môn học của các
sinh viên.Trong bảng Diem trường Student_no
sẽ làm khóa ngoại lai
Trang 75nằm trong quan hệ Student và không nằm trong quan hệ
Record cho đến khi sinh viên này sinh viên này học ít
nhất một môn
Khi xóa: Ta có thể xóa tất cả các bản ghi trong bảng Diem nhưng sinh viên có mã student 960145 vẫn còn tồn
tại trong bảng Student
Khi update dữ liệu
Trang 76Dạng chuẩn 2NF
2NF là dạng chuẩn chặt hơn dạng chuẩn 1NF
Một quan hệ là ở 2NF nếu và chỉ nếu nó ở dạng 1NF và mỗi thuộc tính không khóa đều phụ thuộc hàm đầy đủ vào
khóa chính.
Nhận xét: Nếu quan hệ ở 1NF và có khóa chỉ là một
thuộc tính thì nó đã tồn tại ở 2NF.
Trang 78 Xét quan hệ Student với các thuộc tính sau:
address, course_name, grade)
Trang 79Hoàng Thị Hà 79
02/07/24
2NF
Trong quan hệ trên ta nhận thấy:
student_no student_name, address
student_no không xác định course_name
course_no course_name, nhưng không xác định
student_name, và address
PTH sau:
Trang 80 Sơ đồ trên cho thấy các thuộc tính không khóa của
của quan hệ Student liên quan với các thuộc tính khóa
Một mũi tên áp dụng cho một PTH, ngược lại không áp dụng cho PTHStudent
Student
student_no course_no student_name address course_name grade
Trang 81
Hoàng Thị Hà 81
02/07/24
2NF
Vậy, quan hệ trên không ở 2NF
Ta sẽ chia quan hệ trên thành 3 quan hệ:
Quan hệ Student_detail với các thuộc tính mà chỉ có
thuộc tính student_no làm khóa chính
Quan hệ thứ hai là Course bao gồm các thuộc tính chỉ PTH vào thuộc tính course_no, trong quan hệ này khóa chính là course_no.
Thuộc tính grade PTH vào cả hai thuộc tính là khóa của
2 quan hệ trên (student_no, course_no), vì vậy tách
thành quan hệ riêng bao gồm các thuộc tính
student_no, course_no và grade
Trang 83Hoàng Thị Hà 83
02/07/24
2NF
Với cách chia trên ta nhận thấy, trong các quan hệ
mới tất cả các thuộc tính sẽ PTH đầy đủ vào khóa
chính Vì xậy, các quan hệ này đều là ở 2NF.
Trang 84Dạng chuẩn 3NF
Dạng chuẩn 3NF là một dạng chuẩn chặt, trong dạng chuẩn này đã loại bỏ được tất cả các dị
thường xảy ra trong DataBase
Định nghĩa:Một quan hệ là ở 3NF nếu và chỉ nếu
nó ở 2NF và mọi thuộc tính không khóa đều PTH trực tiếp vào khóa chính(hay không có thuộc tính không khóa này lại PTH vào thuộc tính không
khóa khác)
Nhận xét: Nếu một quan hệ ở 2NF và không
có hoặc có một thuộc tính không khóa thì nó sẽ tồn tại ở 3NF
Trang 85 Theo quan hệ trên ta nhận thấy address phụ thuộc vào giá
trị trong cột manager Vì vậy, manager address
project_no manager address p1 Black, B 32 High Street p2 Smith, J 11 New street p3 Black, B 32 High Street p4 Black, B 32 High Street p5 Thomas, J 69 Back Street
Project
Trang 86Ví dụ 1
Trong sơ đồ trên xuất hiện sự dư thừa của dữ liệu Ta thấy địa chỉ của manager vị lặp lại nếu như một
manager tham gia nhiều hơn một project
Để loại bỏ sự dư thừa này ta phải tách quan hệ trên thành 2
quan hệ:
Một quan hệ bao gồm các thuộc tính mà có PTH trực tiếp vào khóa chính
Một quan hệ bao gồm các thuộc tính còn lại
Vậy, chia quan hệ Project thành Project và Manager
Quan hệ Manager có khóa chính là manager
Khóa chính ban đầu trở thành thuộc tính khóa trong
quan hệ Projects mới.
Trang 87Hoàng Thị Hà 87
02/07/24
Example - 3
Bây giờ, ta chỉ cần lưu trữ địa chỉ một lần
project_no manager manager address p1 Black, B Black, B 32 High Street p2 Smith, J Smith, J 11 New street p3 Black, B Thomas, J 69 Back Street p4 Black, B
p5 Thomas, J
Trang 88Tóm tắt_1
Một quan hệ ở 1NF nếu và chỉ nếu toàn bộ các miền
giá trị của các thuộc tính trong quan hệ đều chỉ chứa các giá trị nguyên tố(các giá trị không thể phân chia
được)
Làm phẳng bảng và thay đổi khóa chính.
Chia quan hệ thành những quan hệ nhỏ hơn, một quan hệ chứa các giá trị lặp và một quan hệ không chúa các giá trị lặp Chú ý, đặt khóa chính vào cả hai quan hệ mới.
Trang 89Hoàng Thị Hà 89
02/07/24
Tóm tắt- 2
không khóa của nó đều PTH đầy đủ vào khóa chính.
Trang 90Tóm tắt- 3
không khóa đều PTH trực tiếp vào khóa chính
bỏ các thuộc tính liên quan đến những PTH bị vi phạm
và đặt chúng trong một quan hệ mới
thuộc tính không khóa đều ở 3NF.
Các quan hệ ở dạng chuẩn 3NF rất tốt cho hầu hết các bài toán thiết kế CSDL thực tế Mặc dù vậy, 3NF không dảm bảo rằng tất cả các dị thường đều bị xóa hết.
Trang 91Hoàng Thị Hà 91
02/07/24
DẠNG CHUẨN Boye-Codd(BCNF)
Định nghĩa: Một sơ đồ quan hệ R(U) với tập PTH
F được gọi là ở dạng chuẩn Boye – Codd nếu với mọi X→A thuộc F+ và A X thì X chứa một khóa của R
Xét ví dụ: Cho sơ đồ quan hệ R(C,S,Z), giả sử
trên sơ đồ này có các PTH CS→Z, Z→C Ta
đã biết sơ đồ này có hai khóa tối thiểu là CS và
SZ, như vậy sơ đồ này không có thuộc tính không khóa và ở dạng 3NF, tuy nhiên nó không ở BCNF
do Z→C thuộc F nhưng Z không chứa khóa của R
Trang 92 Mục đích của BCNF: Loại bỏ sự dư thừa dữ liệu
và tránh các dị thường cập nhật do thao tác thêm
và thao tác xóa Tuy nhiên, dạng chuẩn BCNF
còn có thể loại bỏ được một số dị thường mà
dạng chuẩn 3NF không loại bỏ được
Ví dụ:
Định lý: Một quan hệ ở BCNF thì ở 3NF
Trang 93Hoàng Thị Hà 93
02/07/24
PHÉP TÁCH CÁC SƠ ĐỒ QUAN HỆ
Giả sử sơ đồ quan hệ R được phân tách thành các sơ đồ con R1, R2,…,Rk và F là các PTH trên R, ta nói phép tách này là không mất mát thông tin nếu R1*R2*…*Rk R
Trang 94Định lý tách
Cho R(U), = {R1(u1), R2(u2)} là phép tách 2
không làm mất thông tin nếu u1u2 u1\u2
hoặc u1u2 u2\u1
Hệ quả tách:
(Z=U\XY) thì không làm mất mát thông tin,
Trang 95thì gán t1[Ri]=t2[Ri], ưu tiên các biến ai
Trang 96THUẬT TOÁN TÁCH BẢO TOÀN TẬP PHỤ THUỘC
HÀM VỀ DẠNG CHUẨN 3NF.
Vào: - R(U); Tập phụ thuộc hàm F Không mất
tính tổng quát giả sử F là phủ tối thiểu
Ra: - một phép tách bảo toàn tập phụ thuộc
hàm bao gồm 1 tập các sơ đồ con, trong đó mỗi
sơ đồ con đều ở dạng chuẩn 3NF với các phụ
thuộc hàm là hình chiếu của F lên sơ đồ đó