Download as ppt, pdf, or txt
Download as ppt, pdf, or txt
You are on page 1of 40

Chương 3

Mô hình dữ lịêu quan hệ

1
Nội dung

 Các định nghĩa cơ bản của mô hình dữ liệu


quan hệ
 Quan hệ
 Lược đồ quan hệ
 Quan hệ toán học
 Lược đồ quan hệ và quan hệ
 Khóa quan hệ
 Ràng buộc toàn vẹn

2
Mô hình dữ liệu quan hệ
(Relational data model)
 Được đề xuất bởi E.F. Codd năm 1970.
 Hầu hết các DBMS đều dựa theo mô hình
này
 Nhưng hiện nay DBMS bắt đầu theo hướng
đối tượng

3
Mô hình dữ liệu quan hệ
(Relational data model)
 Mô hình quan hệ được xây dựng trên 1 cấu
trúc toán học tự nhiên và đơn giản: quan hệ
(relation)
 Các quan hệ (relation) có 1 tập hợp các toán
tử mạnh mức cao và các ngôn ngữ tạo dữ liệu
(manipulation language) dựa vào nền tảng
vững chắc của logic toán học .

4
Mô hình dữ liệu quan hệ
(Relational data model)
 Theo nguyên lý toán học thì các biểu thức quan hệ có thể phân tích
được. Vì vậy, bất kỳ biểu thức nào cũng có thể được chuyển đổi (
bởi DBMS) sang 1 biểu thức tương đương khác có thể thực thi
hiệu quả hơn. Quá trình biến đổi này gọi là tối ưu hóa truy vấn
(query optimization)
 Các lập trình viên ứng dụng không cần phải nghiên cứu kỹ chi tiết
bên trong của mỗi CSDL và cũng không cần phải biết bộ đánh giá
truy vấn làm việc như thế nào.
 Các lập trình viên ứng dụng chỉ cần xây dựng truy vấn (query) theo
cách tự nhiên và đơn giản, rồi để cho bộ tối ưu hóa truy vấn tìm
truy vấn tương đương để thực thi 1 cách hiệu quả

5
Các khái niệm cơ bản

 Mô hình quan hệ có 2 khái niệm cơ bản:


 Relation instance ( thể hiện quan hệ): thường
được gọi tắt là quan hệ ( relation)
 Relation Schema ( lược đồ quan hệ)

6
Quan hệ (relation)
 Quan hệ chính là 1 bảng gồm các hàng và
cột
 Hàng (row) được gọi là tuple, không thể có 2 tuple
giống nhau trong cùng 1 quan hệ, tương tự như
các record trong 1 file. Thứ tự các tuple trong 1
quan hệ là không quan trọng.
 Relation instance is a set of unique tuples
 Cột (column) hay còn gọi là attribute. Mỗi cột đều
có tên gọi riêng. Thứ tự các cột là không quan
trọng.

7
Quan hệ (relation) (tt)

 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
 Ví dụ: thuộc tính Address của quan hệ STUDENT
có domain là tập hợp các chuỗi. Thuộc tính điểm
có domain là các số thực trong phạm vi từ 0 đến
10.

8
STUDENT Table Attribute Values

9
Lượ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.

10
Cấu trúc dữ liệu quan hệ (tt)
 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
EMPLOYEE(Emp_ID, Name, Dept_Name, Salary)
Biểu diễn 1 tuple trong 1 quan hệ:
Ví dụ: Nhân viên Magaret mã NV 100 ở phòng
Marketing với mức lương 48000 USD
t = (100, ‘Magaret’, ‘Marketing’, 48000)

11
Cơ sở dữ liệu quan hệ
(Relational database)
 Cơ sở dữ liệu quan hệ (relational database):
 Là 1 tập hợp hữu hạn các quan hệ (relations)
 Dữ liệu được lưu trữ trong các quan hệ (bảng)
 Có nhiều mối quan hệ giữa các bảng

12
Cấu trúc dữ liệu quan hệ (tt)

 Bậc (degree): là số lượng các thuộc tính của quan


hệ.

Số thuộc tính Bậc của quan hệ


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)

13
Cấu trúc dữ liệu quan hệ (tt)

 Lượng số (cardinality): số lượng các bộ của


quan hệ. Lượng số sẽ thay đổi khi thêm hay
xoá các tuple (hàng).

14
Quan hệ toán học
 Miền (domain): là một tập hợp các giá trị. Tên
miền thường bắt đầu bằng chữ D
 Tích Descartes (Cartesian product):

D1xD2x..xDn =
{ (d1,d2,..,dn)| di  Di, 1 ≤ i ≤ n}
 Quan hệ (relation) là một tập con của tích
Descartes

15
Ví dụ về quan hệ và tích Descartes

 Cho 2 tập hợp D1={1,3}, D2={2,4,6}


 Tích D = D1 x D2 =
{(1,2), (1,4), (1,6), (3,2), (3,4), (3,6)}
 Xác định quan hệ r chứa các cặp có thứ tự với thành
phần thứ 2 là 6
r={(x,y)| x  D1 và y = 6} = {(1,6), (3,6)}
 Xác định quan hệ s có thành phần thứ 2 gấp đôi

thành phần thứ 1


s = {(x,y)| x  D1 và y  D2 và y = 2x}
= {(1,2)}

16
Lược đồ quan hệ
(relation schema)
 Cho A1, A2, .., An là tên các thuộc tính thuộc
các miền D1, D2,.., Dn
 Lược đồ quan hệ R với 1 tập thuộc tính {A1,
A2, .., An}
R(A1, A2, .., An)
 Gọi U={A1, A2,.., An} là tập các thuộc tính
của lược đồ quan hệ R
 Vị từ (predicate) của R(U) là một phát biểu
cho biết ngữ nghĩa của R trong thế giới thực,
ký hiệu ||R(U)||
17
Lược đồ quan hệ
(relation schema)
 Ví dụ: vị từ của lược đồ quan hệ Employee
là:
“Một nhân viên có các thuộc tính gồm mã nhân
viên Emp_ID duy nhất, tên nhân viên Name,
làm tại phòng Dept_Name và có tiền lương
Salary”

18
Quan 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 1 một thời điểm
 Mỗi ánh xạ của quan hệ là 1 bộ của quan hệ và được ký
hiệu (A1:d1, A2: d2,…,An:dn) với di  Di, 1 ≤ i ≤ n
 Thành phần Ai của bộ t được ký hiệu là t[Ai] hoặc t.Ai

19
Khoá quan hệ (Relational Keys)

 Siêu khoá ( superkey) là một thuộc tính hoặc


một tập các thuộc tính dùng để xác định duy
nhất một bộ của quan hệ
 Một siêu khoá có thể chứa thêm các thuộc tính
không cần thiết để xác định duy nhất một bộ
 Siêu khoá hiển nhiên là tập tất cả các thuộc tính
của quan hệ

20
Khoá quan hệ (Relational Keys)

 Khoá dự tuyển (candidate key): là một siêu


khoá K mà 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.

21
Khoá quan hệ (Relational Keys)
 Thuộc tính khoá ( key attribute, prime
attribute): là thuộc tính tham gia vào khoá dự
tuyển
 Thuộc tính không khóa (non-key attribute): là
thuộc tính không tham gia vào khóa dự tuyển
 Khóa phức hợp (composite key): là khóa có
nhiều hơn một thuộc tính

22
Khoá quan hệ (Relational Keys)
 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.

23
Khoá quan hệ (Relational Keys)

 Định nghĩa khóa theo quan hệ toán học:


Khóa (key) của R(U) với U={A1, A2,. . ,Am} là một tập
con 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:
1) r(R),  t1, t2 r, nếu t1 t2 thì t[K1]  t[K2]
2) Không tồn tại K’  K sao cho K’ thỏa mãn điều
kiện (1)

24
Khoá quan hệ (Relational Keys)

 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

25
Ví dụ

 Xét lược đồ quan hệ sau:


Employee(Emp_ID, Name, Dept_Name, Salary)
Training(Emp_ID, Course, Date_Completed)
Department(Dept_Name, Location,Fax)

26
Cá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 ký môn học đó
 Các ràng buộc khác thường là ràng buộc type và
domain, xuất hiện trong sơ đồ thiết kế và được thiết
kế bởi nhà thiết kế CSDL.

27
Các ràng buộc toàn vẹn
(Integrity constraints)
 Ngay khi các ràng buộc đã được xác định
trong lược đồ thì trách nhiệm của các DBMS
là phải bảo đảm sao cho chúng không bị vi
phạm khi có bất kỳ giao dịch (transaction)
nào được thực thi trong CSDL đó.

28
Toà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.
 Các loại toàn vẹn dữ liệu :
 Entity integrity

 Domain integrity

 Referential integrity

 User-defined integrity

29
Bả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.
 Để bảo toàn thực thể thì mỗi quan hệ có 1 khóa chính và giá
trị của khóa chính phải luôn hợp lệ.
 “Trong một quan hệ cơ sở, mọi thuộc tính khóa chính không
được có giá trị rỗng (null)”
 Được thể hiện trong SQL server thông qua các ràng
buộc sau:
 Ràng buộc khóa chính (primary key)
 Ràng buộc duy nhất (unique)
 Chỉ mục (index)
 Thuộc tính identity
30
Giá trị Null
 Dùng để chỉ:
 Giá trị chưa biết của thuộc tính
 Giá trị đã biết nhưng đang bị thiếu
 Giá trị null khác số 0 hay chuỗi rỗng “”

31
Bảo toàn miền
(Domain Integrity)
 Bảo toàn miền để bảo đảm tính hợp lệ của
dữ liệu trong 1 thuộc tính
 “Tất cả giá trị xuất hiện trong 1 thuộc tính của 1
quan hệ phải cùng 1 miền trị”
 Được thể hiện trong SQL server thông qua
các ràng buộc sau:
 Kiểu dữ liệu (Data types)
 Ràng buộc CHECK
 Định nghĩa RULE, DEFAULT, NOT NULL.

32
Toà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
phải đồng loạt thay đổi theo.

33
Toàn vẹn tham chiếu
Referential integrity

 Tính toàn vẹn tham chiếu được thể hiện thông qua
3 quy tắc sau:
 Không thể thêm các bản ghi vào bảng quan hệ nếu không
có bản ghi tương ứng trong bảng chính.
 Không thể thay đổi giá trị trong bảng chính nếu làm cho
các bản ghi tương ứng trong bảng quan hệ bị mất tham
chiếu
 Không thể xóa các bản ghi trong bảng chính nếu nó được
tham chiếu bởi 1 số bản ghi trong bảng quan hệ

34
Toàn vẹn tham chiếu
(Reference Integrity)
 Mục đích: duy trì tính nhất quán (consistency)
giữa các bộ của 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”

35
Ví dụ về khóa ngoại

36
Tính toàn vẹn do người dùng xác định
(User-defined integrity)

 Tính toàn vẹn do người dùng xác định cho phép xác
định các 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.
 Mức độ hỗ trợ cho các toàn vẹn do người dùng xác
định phụ thuộc vào mỗi DBMS.
 Được thể hiện trong SQL server thông qua:
 Các ràng buộc mức bảng
 Stored procedure
 Trigger
 Ví dụ: “ Mỗi văn phòng chi nhánh chỉ có tối đa 20
nhân viên”

37
Quan 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)

38
Bất thường dữ liệu
(Data anomaly)
 Bất thường là 1 lỗi sai hay sự không nhất
quán xảy ra khi dư thừa dữ liệu
 Ba loại bất thường:
 Bất thường khi thêm vào
 Bất thường khi xóa bỏ
 Bất thường khi sửa đổi

39
Ví dụ về bất thường dữ liệu
 Xét quan hệ:
Employee(Emp_ID, Name, Dept_Name, Salary, Course,
Date_Completed)
- Khi thêm 1 nhân viên mới mà nhân viên này không tham gia bất
kỳ khóa học nào
- Khi 1 nhân viên tham gia nhiều khóa học, xuất hiện nhiều lần
trong quan hệ, nếu nhân viên này được tăng lương
- Nếu 1 nhân viên chỉ tham gia 1 khóa học và khóa học này chỉ 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???

40

You might also like