Các loại khoá quan hệ Relational Keyskhông có một tập con thực sự bất kỳ K’ K lại là một siêu khoá Tính duy nhất uniqueness: các giá trị của K trong các bộ của r là duy nhất Tính t
Trang 1Chương 4
MÔ HÌNH QUAN HỆ - RELATIONAL MODEL
Trang 3Mô hình dữ liệu quan hệ (Relational data model)
Các khái niệm liên quan đến cấu trúc dữ liệu dưới dạng dòng
và cột như quan hệ, bộ, thuộc tính, khóa chính, khóa ngoại,
Được xây dựng trên cơ sở của phép toán tập hợp và phép toán quan hệ.
Ràng buộc toàn vẹn quan hệ.
hình quan hệ
3
Trang 4Mô hình dữ liệu quan hệ (Relational data model)
Quan hệ (relation) là một bảng dữ liệu hai chiều gồm nhiều hàng
(mẫu tin hay bản ghi) và nhiều cột (thuộc tính hoặc vùng tin) Mỗi cột tương ứng với một thuộc tính của thực thể Mỗi dòng chứa các giá trị dữ liệu của một đối tượng cụ thể thuộc thực thể
Mỗi hàng là duy nhất: không thể có hai hàng có cùng các giá trị ở tất cả vùng tin.
Thứ tự của các hàng và cột là không quan trọng.
4
Trang 5Bài 4 TH107 5
Trực quan về Quan hệ
Ví dụ : Để quản lý điểm sv, nếu ta lưu trữ theo bảng sau thì không đúng với mô hình quan hệ vì
TCTH01 Sơn TCTHA THVP Tin Học Văn Phòng 6.0
TCTH01 Sơn TCTHA CSDL Cơ Sở Dữ Liệu 5.0
TCTH02 Lan TCTHA CSDL Cơ Sở Dữ Liệu 3.0
Thuộc tính
Bộ
• Ta không thể lưu trữ một SV mới khi SV này chưa có điểm thi.
• Khi cần sửa đổi ten thì phải sửa tất cả các dòng có liên quan đến SV này.
• Khi có nhu cầu xóa điểm thi một SV kéo theo khả năng xóa luôn họ tên
Sv đó.
• Để lưu trữ đúng mô hình quan hệ, ta có thể lưu trữ thành các bảng như sau
Trang 7Mô hình dữ liệu quan hệ (Relational data model)
Bộ
của một lược đồ quan hệ
MA
HOC BONG
99001 TRAN AN TRUE 15-03-1977 CÑTH2B T GIANG 120000
99002 NGUYEN HA TRUE 25-04-1986 TCTH29C TPHCM 120000
Trang 8Mô hình dữ liệu quan hệ (Relational data model)
Khóa quan hệ là một tập nhỏ nhất các thuộc tính dùng để xác
định duy nhất một hàng.
Khóa thường được sử dụng làm chỉ mục (index) của bảng dữ
liệu để làm tăng tốc độ xử lý của truy vấn.
Một quan hệ phải có ít nhất một khóa và có thể có nhiều khóa.
Các thuộc tính thuộc một khóa được gọi là thuộc tính khóa (prime attribute), các thuộc tính còn lại trong lược đồ quan hệ được gọi là các thuộc tính không khóa (nonprime attribute).
Các thuộc tính khóa được gạch dưới.
Các thuộc tính khóa không được có giá trị rỗng (null value).
8
Trang 9Lược đồ quan hệ (Relation schema)
Lược đồ quan hệ bao gồm:
Tên quan hệ
Tên các thuộc tính cùng với tên domain tương ứng.
Các ràng buộc bảo toàn ( integrity constraint): là các hạn chế trên các quan hệ của lược đồ này.
Domain : là 1 tập hợp các giá trị cho phép của 1 hay nhiều thuộc tính, thường là 1 tập con cuả kiểu dữ liệu Ký hiệu dom(A) miền trị của thuộc tính A
Trang 10Lược đồ quan hệ (relation schema)
Cho A 1 , A 2 , , A n là tên các thuộc tính thuộc các miền D 1 , D 2 , , D n
Lược đồ quan hệ R với 1 tập thuộc tính {A 1 , A 2 , , A n }
R(A 1 , A 2 , , A n )
Gọi U={A 1 , A 2 , , A n } là tập các thuộc tính của lược đồ quan hệ R
Mỗi lược đồ quan hệ luôn kèm một tân từ để diễn tả ý nghĩa của nó
Biểu diễn 1 lược đồ quan hệ:
TÊN_QUAN_HỆ( thuộc tính 1, thuộc tính 2,…)
Ví dụ : lược đồ quan hệ Employee có 3 thuộc tính
NHANVIEN(MANV, Ten, MaPb, Luong)
Tân từ: Mỗi nhân viên có một MaNV duy nhất dùng để nhận diện TenNV, MaPB và Lương.
10
Trang 11Quan hệ (Relation)
Gọi D = D1 D2 … Dn
Quan hệ r trên lược đồ quan hệ R được ký hiệu r(R) là một tập hữu hạn các ánh xạ {t1,t2, ,tp} từ R vào D với điều kiện mọi ánh xạ t r thì t[Ai] Di, 1 ≤ i ≤ n
Quan hệ r là một thể hiện quan hệ (relation instance) của R tại
NV01 Nguyễn Trung Tiến 25 t1
Quan hệ NHANVIEN trên tập các thuộc tính R={Manv, HoTenNV, Tuoi) là một quan hệ 3 ngôi.
t1(NV01, ‘Nguyễn Trung Tiến’, 25) = t1(R) là một bộ của quan hệ
NHANVIEN
Trang 12Lược đồ quan hệ (Relation schema)
Lược đồ cơ sở dữ liệu
hệ là duy nhất
Lược đồ cơ sở dữ liệu:
Emp (Empnum, Name, Sal, Tax, Mgrnum, Deptnum)
Dept (Deptnum, Name, Area, Mgrnum)
Supplier (Snum, Name, City)
Supply (Snum, Pnum, Deptnum, Quan)
12
Trang 13Cơ sở dữ liệu quan hệ (Relational database)
Cơ sở dữ liệu quan hệ (relational database):
Trang 14Cấu trúc dữ liệu quan hệ (tt)
1 quan hệ nhất phân (unary relation)
2 quan hệ nh ị phân (binary relation)
3 quan hệ tam phân (ternary relation)
n quan hệ n phân (ternary relation)
14
số sẽ thay đổi khi thêm hay xoá các tuple (hàng)
Trang 15Khoá quan hệ (Relational Keys)
thuộc tính dùng để xác định duy nhất một bộ của quan hệ
Trang 16Các loại khoá quan hệ (Relational Keys)
không có một tập con thực sự bất kỳ K’ K lại là một siêu
khoá
Tính duy nhất (uniqueness): các giá trị của K trong các bộ
của r là duy nhất
Tính tối giản (irreducibility hay minimality) không có tập
con thực sự K’ K lại có tính duy nhất
16
Trang 17Các loại khoá quan hệ (Relational Keys)
Khóa đơn (simple key): là khóa có một thuộc tính
Khóa phức hợp (composite key): là khóa có nhiều hơn một
thuộc tính
Khóa chính (primary key): là một khóa dự tuyển được
chọn để xác định duy nhất một bộ của quan hệ Khóa chính
có thể chỉ có 1 thuộc tính hay khóa phức hợp
SINHVIEN(Masv, Tensv, Ngaysinh, Phai, Malop)
17
Trang 18 Định nghĩa khóa theo quan hệ toán học:
K= {Aj1, Aj2,…, Ajn} với j1, j2, jn là các số nguyên phân biệt nằm trong khoảng từ 1 đến m, phải thỏa mãn đồng thời 2 điều kiện sau:
Trang 19 Các khóa dự tuyển (candidate key) còn lại sau khi chọn khóa chính
được gọi là khóa khác (alternate key)
Khóa ngoại (foreign key): là 1 thuộc tính hay 1 tập thuộc tính của
1 quan hệ tham chiếu đến khóa dự tuyển của 1 quan hệ khác hay
của cùng 1 quan hệ
Khóa mượn (borrowed key): là 1 khóa dự tuyển có chứa khóa
ngoại
Xét các lược đồ quan hệ sau:
Employee(Emp_ID, Name, Dept_Name, Salary)
Training(Emp_ID, Course, Date_Completed)
Trang 20Mô hình dữ liệu quan hệ (Relational data model)
Ví dụ: Ta hãy xem lược đồ quan hệ sau:
Xe(SODANGBO,QUICACH,
HINHDANG,MAUSAC,SOSUON,SOMAY,MAXE,QUOCGIA)
Siêu khóa: (SOSUON,QUICACH),
Khóa chỉ định: (SODANGBO,QUOCGIA), (SOSUON), (SOMAY),
(MAXE)
Khóa chính: MAXE
Thuộc tính khóa: SODANGBO,QUOCGIA, SOSUON, SOMAY, MAXE
Thuộc tính không khóa: QUICACH, HINHDANG, MAUSAC
Khóa của Sv là (MASV), Khoá của Mh là (MAMH), khoá của Kh là
(MAKHOA), khóa của Kq là (MASV,MAMH) khóa của Lop là
MALOP, trong Lop thuộc tính MAKHOA là khóa ngoại
20
Trang 21Các ràng buộc toàn vẹn (Integrity constraints)
Một số ràng buộc dựa vào các quy tắc nghiệp vụ Các ràng buộc này thường nằm trong phần requirement Document của ứng dụng.
Nhân viên không thể có lương cao hơn giám đốc
Sinh viên phải thỏa mãn các điều kiện tiên quyết mới được đăng
21
Trang 22Toàn vẹn dữ liệu (Data integrity)
Mục đích của ràng buộc (constraint): để duy trì tính chính xác (accurary) và toàn vẹn dữ liệu (data integrity) trong CSDL
integrity
22
Trang 23Bảo toàn thực thể (Entity Integrity)
Bảo toàn thực thể dùng để bảo đảm tính duy nhất của mỗi hàng trong bảng
giá trị của khóa chính phải luôn hợp lệ
không được có giá trị rỗng (null)”
Trang 24Bảo toàn miền (Domain Integrity)
thuộc tính
số các yêu cầu sau: Tên thuộc tính, Kiểu dữ liệu, Độ dài dữ liệu, khuôn dạng của dữ liệu, các giá trị giới hạn cho phép,
ý nghĩa, có duy nhất hay không, có cho phép giá trị rỗng hay không.
“Tất cả giá trị xuất hiện trong một thuộc tính của
một quan hệ phải cùng một miền trị”
24
Trang 25 Được thể hiện trong SQL server thông qua các ràng buộc sau:
25
Bảo toàn miền (Domain Integrity)
Trang 26Toàn vẹn tham chiếu Referential integrity
Toàn vẹn tham chiếu dùng để xác định mối quan hệ giữa các bảng khi thêm hay xóa các hàng trong bảng
Mục đích: duy trì tính nhất quán (consistency) giữa các bộ của 2 quan hệ.
Trong SQL server, thì toàn vẹn tham chiếu dựa vào mối quan hệ giữa khóa ngoại và khóa chính của các bảng.
Bảng chứa khóa chính: được gọi là bảng chính (primary table)
Bảng chứa khóa ngoại: được gọi là bảng quan hệ (related table)
Nó bảo đảm giá trị khóa phải thống nhất (consistent) giữa các bảng Không thể tham chiếu đến 1 giá trị không tồn tại và nều giá trị khóa thay đổi thì tất cả tham chiếu đến giá trị khóa này cũng
Trang 27Toàn vẹn tham chiếu Referential integrity
sau:
có bản ghi tương ứng trong bảng chính
các bản ghi tương ứng trong bảng quan hệ bị mất tham chiếu
tham chiếu bởi 1 số bản ghi trong bảng quan hệ
27
Trang 28Toàn vẹn tham chiếu (Reference Integrity)
2 quan hệ
“ Nếu tồn tại 1 khóa ngoại trong 1 quan hệ, thì mỗi giá trị khóa ngoại phải tương ứng với 1 giá trị khóa chính trong một quan hệ khác (hoặc trong cùng quan hệ này) hoặc giá trị khóa ngoại phải là giá trị rỗng”
28
Trang 29N
Trang 30Ví dụ về khóa ngoại
30
Trang 31Tính toàn vẹn do người dùng xác định
(User-defined integrity)
quy tắc nghiệp vụ của tổ chức mà không thuộc vào các loại toàn vẹn khác
thuộc vào mỗi DBMS
Trang 32Quan hệ có cấu trúc tốt (Well-structured relation)
Là một quan hệ có dư thừa dữ liệu là tối thiểu và cho phép người sử dụng thêm, xóa hay sửa đổi các bộ của quan hệ mà không bị sai hay mâu thuẫn dữ liệu (data inconsistency)
32
Trang 33Bất thường dữ liệu (Data anomaly)
thừa dữ liệu
33
Trang 34trong quan hệ, nếu nhân viên này được tăng lương
có duy nhất 1 nhân viên, nếu nhân viên này bị xóa
Employee có phải là quan hệ cấu trúc tốt???Sửa lại
34
Employee(Emp_ID, Name, Dept_Name, Salary, CourseID)
Course (CourseID, Date_Completed)
Trang 35Chuyển đổi từ ERD thành các quan hệ
Sự tương ứng với mô hình ER
một kiểu mối liên kết nhiều - nhiều
thể hiện mối liên kết nhiều - nhiều
cùng nghĩa với từ mối quan hệ (relationship) trong mô hình ER
35
Trang 36Chuyển đổi từ ERD thành các quan hệ
Các bước chuyển từ ERD sang mô hình quan hệ
Bước 1: chuyển đổi kiểu thực thể thông thường (regular
entity)
entity)
Bước 2: Chuyển đổi kiểu thực thể yếu (weak entity) Bước 2: Chuyển đổi kiểu thực thể yếu (weak entity)
Bước 3: Chuyển đổi mối liên kết 2 ngôi
Bước 4: Chuyển đổi kiểu thực thể kết hợp
Bước 5: chuyển đổi mối liên kết 1 ngôi
Bước 6: chuyển đổi mối liên kết 3 ngôi
Bước 7: chuyển đổi mối liên kết siêu kiểu / kiểu con
36
Trang 37Bước 1: chuyển đổi kiểu thực thể thông thường (regular entity)
Mỗi kiểu thực thể thông thường (không phải kiểu thực thể yếu) được chuyển thành 1 quan hệ (bảng) Khoá chính của kiểu thực thể trở thành khoá chính của bảng Các thuộc tính của kiểu thực thể trở thành các cột của bảng
Trang 38Bước 1: chuyển đổi kiểu thực thể thông thường (regular entity)
thành các thuộc tính trong quan hệ
Trang 41Bước 2: Chuyển đổi kiểu thực thể yếu (weak entity)
Mỗi thực thể yếu chuyển thành 1 quan hệ Thuộc tính xác định của kiểu thực thể chủ được đưa vào như là 1 thuộc tính của quan hệ
Khóa chính cuả quan hệ = thuộc tính xác định của thực thể chủ + thuộc tính xác định của thực thể yếu 41
Chuyển đổi từ ERD thành các quan hệ
Trang 43Bước 3: Chuyển đổi mối liên kết 2 ngôi
phía 1 được đưa vào làm khoá ngoại của kiểu thực thể phía
M
43
Chuyển đổi từ ERD thành các quan hệ
Trang 44CUSTOMER( Customer_ID , Customer_Name)
ORDER( Order_ID, Order_Date, Customer_ID)
Trang 45Bước 3: Chuyển đổi mối liên kết 2 ngôi
chính của quan hệ mới bao gồm khóa chính của 2 quan hệ tương ứng với kiểu thực thể tham gia vào mối liên kết
45
Chuyển đổi từ ERD thành các quan hệ
Trang 46MATERIAL( Material_ID , Cost)
SUPPLIES(Material_ID, Vendor_ID, Unit_Price)
VENDOR( Vendor_ID , Vendor_Name)
Trang 47Bước 3: Chuyển đổi mối liên kết 2 ngôi
Với mối liên kết 1-1: là 1 trường hợp đặc biệt của 1-M Khoá chính của 1 trong 2 quan hệ sẽ được đưa vào làm khoá ngoại của quan hệ kia
chính của kiểu thực thể bắt buộc vào làm khoá ngoại của quan hệ tương ứng với kiểu thực thể nhiệm ý
47
Chuyển đổi từ ERD thành các quan hệ
Trang 48Hình 1.4.6 - Mô hình ER và mô hình quan hệ của vấn đề Người lái xe và bằng lái
Mô hình ER
Lược đồ CSDL
NGƯỜI LÁI XE (mã người lái xe, tên, địa chỉ, ngày sinh)
BẰNG LÁI(mã bằng lái, loại bằng lái, ngày hết hạn, mã người lái xe)
sở hữu được sở hữu bởi
NGƯỜI LÁI XE (mã người lái xe, tên, địa chỉ, ngày sinh, mã bằng lái)
BẰNG LÁI(mã bằng lái, loại bằng lái, ngày hết hạn)
hay
Ví dụ về quan hệ 1-1
Chuyển đổi từ ERD thành các quan hệ
Trang 49Chuyển đổi từ ERD thành các quan hệ
Biến đổi mối liên kết hai ngôi có lượng số một - một
Trang 50Bước 4: Chuyển đổi kiểu thực thể kết hợp
hợp
riêng, khoá chính của quan hệ mới bao gồm khoá chính của 2 quan hệ tương ứng với 2 kiểu thực thể có liên quan
thuộc tính này được dùng làm khoá chính cho quan hệ
Chuyển đổi từ ERD thành các quan hệ
Trang 51Ví dụ về kiểu thực thể kết hợp
51
CUSTOMER(Customer_ID, Customer_Name, )
SHIPMENT(Shipment_No, Customer_ID, Vendor_ID,Date,…)
VENDOR( Vendor_ID, Address,… )
Trang 52Bước 5: chuyển đổi mối liên kết 1 ngôi
mối liên kết này để tham chiếu đến các trị của khoá chính của quan hệ (khoá ngoại và khoá chính phải cùng miền trị)
52
Chuyển đổi từ ERD thành các quan hệ
Trang 53Chuyển đổi từ ERD thành các quan hệ
Trang 54Bước 5: chuyển đổi mối liên kết 1 ngôi
quan hệ:
Một quan hệ diễn tả chính mối liên kết với khoá chính bao gồm 2 thuộc tính lấy từ khoá chính của quan hệ tương ứng
54
Chuyển đổi từ ERD thành các quan hệ
Trang 55Ví dụ mối liên kết 1 ngôi M-N
55
ITEM(Item_No, Name, Unit_Cost)
CONTAINS(Item_No, Component_No, Quantity)
ITEM
Item_ID
Unit_Cost Name
Contains Quantity
Chuyển đổi từ ERD thành các quan hệ
Trang 56Bước 6: chuyển đổi mối liên kết 3 ngôi
chuyển thành 4 quan hệ: 3 quan hệ cho 3 kiểu thực thể liên quan và 1 quan hệ cho mối liên kết
Trang 57Bước 6: chuyển đổi mối liên kết 3 ngôi
“Mỗi kỹ sư dùng 1 case book khác nhau cho mỗi project mà họ tham gia Các kỹ sư không dùng chung case book khi làm cùng 1 project”
Eng_No, Proj_No Book_NoBook_No, Proj_No Eng_NoEng_No, Book_No Proj_No
57
Chuyển đổi từ ERD thành các quan hệ
Trang 60Bước 6: chuyển đổi mối liên kết 3 ngôi
“Sinh viên làm đề tài theo sự hướng dẫn của giáo sư Không giáo sư nào hướng dẫn cùng 1 sinh viên làm nhiều hơn 1 đề tài Không sinh viên nào làm 1 đề tài với nhiều hơn 1 giáo sư”
3 kiểu thực thể: Teacher, Student, Project
2 khoá candidate, có thể chọn 1 trong 2 khoá làm khoá chính
60
Chuyển đổi từ ERD thành các quan hệ
Trang 61Ví dụ về quan hệ 3 ngôi 1:1:N
61
STUDENT(Stud_No,…) PROJECT(Proj_No,…) TEACHER(Tea_No,…)
SUPERVISES(Tea_No, Stud_No, Proj_No,…)
PROJECT
STUDENT
TEACHER
SupervisesChuyển đổi từ ERD thành các quan hệ
Trang 62Bước 7: chuyển đổi mối liên kết siêu kiểu/ kiểu con
con
siêu kiểu cùng với thuộc tính riêng của từng kiểu con
62
Chuyển đổi từ ERD thành các quan hệ
Trang 63EMPLOYEE
Address
Date_Hired Employee_Name
Hourly_Rate
Employee_No
Employee_Type
SALARIEDE MPLOYEE
SALARIEDE MPLOYEE