Mô hình Cơ sở dữ liệu Quan hệ (gọi tắt là Mô
hình Quan hệ) do E.F Codd đề xuất năm 1971
Mô hình Quan hệ thể hiện dữ liệu dưới góc độ logic
Mô hình này bao gồm:
Các khái niệm nhằm mô tả dữ liệu dưới dạng dòng và cột
như quan hệ, bộ, thuộc tính, khóa chính, khoá ngoại, ...
Các phép toán thao tác với dữ liệu_ Đại số quan hệ
Ràng buộc toàn vẹn quan hệ
Các Hệ quản trị CSDL quan hệ (RDBMS) được xây
dựng dựa trên lý thuyết mô hình quan hệ.
Các khái niệm
Quan hệ / bảng
Thuộc tính
Bộ
Lược đồ quan hệ
Khóa
9 trang |
Chia sẻ: candy98 | Lượt xem: 852 | Lượt tải: 0
Bạn đang xem nội dung tài liệu Bài giảng Cơ sở dữ liệu - Chương 2: Mô hình cơ sở dữ liệu quan hệ - Nguyễn Việt Cường, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
1Mô hình cơ sở dữ liệu quan hệ
(The Relational Database Model)
Chương 3
2
Giới thiệu
Mô hình Cơ sở dữ liệu Quan hệ (gọi tắt là Mô
hình Quan hệ) do E.F Codd đề xuất năm 1971
Mô hình Quan hệ thể hiện dữ liệu dưới góc độ logic
Mô hình này bao gồm:
Các khái niệm nhằm mô tả dữ liệu dưới dạng dòng và cột
như quan hệ, bộ, thuộc tính, khóa chính, khoá ngoại, ...
Các phép toán thao tác với dữ liệu_ Đại số quan hệ
Ràng buộc toàn vẹn quan hệ
Các Hệ quản trị CSDL quan hệ (RDBMS) được xây
dựng dựa trên lý thuyết mô hình quan hệ.
3
Các khái niệm
Quan hệ / bảng
Thuộc tính
Bộ
Lược đồ quan hệ
Khóa
4
Quan hệ
Dữ liệu lưu trữ trong CSDL Quan hệ được tổ
chức thành các Quan hệ (relation)
Quan hệ (relation) thể hiện ra như là bảng
(table)
Một quan hệ có :
Một tên
Tập hợp các thuộc tính (attribute), có tên và kiểu dữ
liệu
Tập hợp các bộ (tuple), có thể thay đổi theo thời gian
5
Quan hệ và bảng
MASV MAMH MAKHOA DIEMTHI
99001 CSDL CNTT 3.0
99002 CSDL CNTT 8.0
99001 THVP CNTT 6.0
99005 THVP AV 5.0
Thuật ngữ tương đương :
• Quan hệ, bộ, thuộc tính (Relation, tuple, attribute)
• Bảng, dòng, cột (Table, row, column)
6
Thuộc tính
Một thuộc tính bao gồm :
Tên thuộc tính
Tên phân biệt
Giúp diễn giải ý nghĩa thuộc tính (thuộc tính của thực thể,
hay mối kết hợp)
Kiểu dữ liệu thuộc tính
Số nguyên, số thực, văn bản, logic,
Miền giá trị xác định
Có thể bị áp đặt bởi qui tắc nghiệp vụ, hay ràng buộc dữ
liệu
Có thể NULL
7Bộ và quan hệ
Mỗi bộ (dòng) là một tổ hợp các giá trị tương ứng với
các thuộc tính của quan hệ
mô tả về một thực thể , hay một mối kết hợp có trong thế
giới thực
Một tập các bộ xác định tại một thời điểm, gọi là
một thể hiện của lược đồ quan hệ (hay quan hệ)
Ký hiệu: r(Ketqua)
Không có 2 bộ trùng nhau trong một quan hệ
khóa
Trật tự của các bộ (và các thuộc tính) là không quan trọng
đối với DBMS.
8
Lược đồ Quan hệ
Lược đồ quan hệ - relation schema
Mô tả cấu trúc của quan hệ
Các thuộc tính và Mối liên hệ giữa các thuộc tính
Mỗi lược đồ quan hệ luôn kèm một tân từ để diễn tả
ý nghĩa của nó.
Vd, tân từ: Mỗi Sinh viên thuộc một khoa, học một
môn học thì có kết quả thi môn học đó.
Ký hiệu:
Ketqua( MASV, MAMH, MAKHOA, DIEMTHI)
Lược đồ CSDL
Tập hợp các lược đồ quan hệ trong cùng một
CSDL
9
Khóa
(Key hay candidate key)
Gọi S là một tập các thuộc tính của lược đồ quan hệ R
S được gọi là một siêu khóa (superkey) của lược đồ quan hệ
R, nếu với hai bộ bất kỳ trong R thì giá trị của các thuộc tính
trong S là khác nhau
Siêu khoá có ít thuộc tính nhất được gọi là khóa (key) hay
khóa dự tuyển (candidate key)
Một lược đồ quan hệ có thể có nhiều khóa (khóa dự tuyển)
Một khóa được chọn để cài đặt gọi là khóa chính (primary
key)
Không chứa giá trị NULL
khóa ngoại (foreign key) là thuộc tính của LĐQH này nhưng
lại là khóa chính của LĐQH khác
Khóa phức (composite key) là khóa có nhiều hơn một thuộc
tính
Thuộc tính khóa và thuộc tính không khóa 10
Khóa _ ví dụ 1
Monhoc(Mamon, Tenmon, Sotiet)
rMonhoc
Mamon Tenmon Sotiet
THVP Tin hoc văn phòng 30
LTC Lập trình C 60
CSDL1 Co so du lieu 45
CSDL2 Co so du lieu 45
Siêu khóa : {Mamon}, {Mamon, Tenmon}, {Mamon, Sotiet},
{Mamon, Tenmon, Sotiet}
Khóa (khóa dự tuyển, khóa chính) : {Mamon}
11
Khóa _ ví dụ 2
Ketqua(MaSV, MaMH, Makhoa, Diemthi)
rKQ MASV MAMH MAKHOA DIEMTHI
99001 CSDL CNTT 3.0
99002 CSDL CNTT 8.0
99001 THVP CNTT 6.0
99005 THVP AV 5.0
Siêu khóa: {MaSV, MaMH}, {MaSV,MaMH,MaKhoa},
Khóa (khóa dự tuyển, khóa chính , khóa phức): {MaSV, MaMH}
Khóa ngoại : {Makhoa} 12
Khóa _ ví dụ 3
Sinhvien(MaSV, Hoten, Phai, soCMND)
rSV MaSV Hoten Phai soCMND
99001 Nguyen van anh Nam 01245012
99002 Tran Le Tuan Nam 02209875
99003 Nguyen Thi Hong Nu 04563711
99004 Do van Thuan Nam
Siêu khóa : {MaSV} , {MaSV, Hoten}, ,
{soCMND} , {soCMND, Hoten},
Khóa (khóa dự tuyển): {MaSV} , {soCMND}
Khóa chính : {MaSV}
13
Đại số quan hệ
Khái niệm
Các phép toán đại số quan hệ
Ví dụ
14
Giới thiệu
Đại số quan hệ (và phép tính quan hệ) được
định nghĩa bởi Codd 1971
được xem như là nền tảng của các ngôn ngữ
quan hệ khác như SQL
Là ngôn ngữ thủ tục bậc cao
Được dùng để chỉ ra cách xây dựng một quan hệ mới
từ một hay nhiều quan hệ trong DB
Bao gồm tập các phép toán thao tác trên các
quan hệ
15
Các phép toán (operation)
5 phép toán cơ bản
Phép chọn (selection)
Phép chiếu (projection)
Phép hợp (union)
Phép trừ (set difference)
Phép tích Descartes (Cartesian product)
3 phép toán suy dẫn*
Phép kết (Join)
Phép giao (Intersection)
Phép chia (Division)
(*Có thể được biểu diễn dưới dạng các phép toán cơ bản) 16
Ký hiệu
Quan hệ r là một thể hiện của lược đồ quan
hệ R(A1, A2, , Am)
Điều kiện F là 1 biểu thức luận lý có giá trị
true/false. F bao gồm:
Các toán hạng là hằng hoặc tên thuộc tính
Các phép toán so sánh =, , ,
Các phép toán luận lý not (), and (), or ()
17
Phép chọn (selection)
Phép chọn trên quan hệ r(R) theo điều kiện
F, ký hiệu là r(F) hay r:F , cho kết quả là 1
quan hệ bao gồm các bộ của r thỏa mãn
điều kiện F
r(F) = r:F = { t |t r và F(t) = true }
17* Phép chọn và phép chiếu là phép toán một toán hạng 18
Phép chọn (selection) – ví dụ 1
Relation r
A B C D
1
5
12
23
7
7
3
10 r(A=B ^ D>5)
A B C D
1
23
7
10
r(A=B)
A B C D
1
12
23
7
3
10
19
Phép chiếu (Projection)
Cho quan hệ r trên R(A1, A2,..,Am) và tập
con các thuộc tính X={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ép chiếu r trên tập thuộc tính X cho kết
quả là 1 quan hệ
r[X] = r.X = {t | u r sao cho t = u[X]}
Phép chiếu loại bỏ những bộ trùng nhau
19 20
Phép chiếu (Projection) – ví dụ 1
Relation r
A B C
10
20
30
40
1
1
1
2
A C
1
1
1
2
A C
1
1
2
r[A,C]
21
Phép hợp (union)
Phép hợp của 2 quan hệ r và s
r + s = r s = { t | t r t s}
trong đó: r và s là hai quan hệ khả hợp
r + s
22
Phép hiệu (Set Difference)
Phép hiệu của 2 quan hệ r và s
r - s = { t | t r t s }
trong đó: r và s là hai quan hệ khả hợp
r - s
23
Phép giao (Intersection)
Phép giao của 2 quan hệ r và s
r * s = r s = {t | t r t s}
trong đó: r và s là hai quan hệ khả hợp
Hai quan hệ r và s là khả hợp ( union-compatible) khi :
•Có cùng số thuộc tính
•Các thuộc tính tương ứng có cùng miền giá trị
r * s
24
Bài tập
Cho 2 quan hệ định nghĩa trên 2 lược đồ Quan hệ :
Customer( Cuscode, cusName, cusPhone, City)
Supplier ( SupCode, SupName, SupPhone, City)
Hiển thị danh sách các thành phố có khách hàng và
đồng thời có nhà cung cấp?
Hiển thị danh sách các thành phố có khách hàng và
không có nhà cung cấp?
25
Phép tích Descartes
Cho quan hệ r trên lược đồ R(A1, A2,..,Am)
và s trên lược đồ S(B1,B2,,Bn)
Nếu R và S có các thuộc tính trùng tên, thì
phải đổi tên.
Phép tích Descartes của r và s là 1 quan hệ
trên lược đồ T(A1, A2,.., Am, B1, B2, .,Bn)
r x s ={ t | tr r và ts s
với t[A1, A2,.., Am] = tr
và t[B1, B2, .,Bn] = ts }
25 26
Phép tích Descartes – ví dụ 1
Relations r, s: r x s
MASV MAMH DIEM
99001 CSDL 5.0
99002 FOX 2.0
99003 MANG 8.0
MAMH TENMH
CSDL COSO DULIEU
FOX FOXPRO
MASV MAMH DIEM MAMH TENMH
99001 CSDL 5.0 CSDL COSO DULIEU
99001 CSDL 5.0 FOX FOXPRO
99002 FOX 2.0 CSDL COSO DULIEU
99002 FOX 2.0 FOX FOXPRO
99003 MANG 8.0 CSDL COSO DULIEU
99003 MANG 8.0 FOX FOXPRO
27
Phép tích Descartes
ứng dụng :
phép tích Descartes là một phép tính vô nghĩa
nếu đứng riêng. Tuy nhiên, nếu kết hợp sau phép
toán này một phép chọn phù hợp , kết quả sẽ có
nghĩa : kết hợp các bộ có liên quan từ hai quan
hệ.
Vd : Hiển thị bảng điểm của các sinh viên. Bao
gồm MaSV, MaMH, Diem, TenMH
=> Viết biểu thức đại số quan hệ ?
(r x s) ( r.MaMH = s.MaMH)
27
28
Phép kết (join)
thay thế phép (r x s) (F)
với F là biểu thức điều kiện có dạng r.A s.B
Bao gồm :
Theta join (-join)
Equijoin
Natural join
Outer join
29
Phép kết - Theta join
Cho r và s là hai quan hệ tương ứng trên các
lược đồ R(A1, A2,..,Am) và S(B1,B2,,Bn)
Gọi Q(A1, A2,.., Am, B1, B2, .,Bn)
là 1 phép so sánh
Ai R và Bj S là 2 thuộc tính có thể so sánh
với nhau bởi phép
Phép kết của r và s trên 2 thuộc tính Ai và Bj
ký hiệu , cho kết quả là 1 quan hệ q trên
lược đồ quan hệ Q, bao gồm các bộ t
q(Q) = {t | tr r và ts s với t[R] = tr
và t[S] = ts và t[Ai] t[Bj] } 29
r s
Ai Bj
30
Phép kết - Theta join
Ví dụ : Hiển thị ứng với mã mỗi môn học và
các môn học tiếp sau nó ?
MONHOC ( MaMon, TenMon, SoTC, Hocky)
30
MaMon TenMon SoTC Hocky
A Aaaa 3 1
B Bbbb 4 1
C Cccc 3 2
D Dddd 2 3
Chú ý : Sử dụng phép gán để tạo ra một biến quan hệ tạm:
s r [MaMon, Hocky] , với r MONHOC
31
Phép kết - Theta join
MaMon Hocky
A 1
B 1
C 2
D 3
MaMon Hocky
A 1
B 1
C 2
D 3
r s
r.Hocky < s.Hocky
MaMon MaMonsau
A C
A D
B C
B D
C D 32
Phép kết bằng và kết tự nhiên
Phép kết Theta với là phép so sánh bằng ,
thì được gọi là phép kết bằng _ Equijoin
Phép kết Theta với là phép so sánh bằng
được thực hiện trên các thuộc tính chung
(cùng tên) của R và S , thì được gọi là phép
kết tự nhiên – Natural join. Ký hiệu
Quan hệ kết quả q không lặp lại các thuộc tính
chung của R và S
VD: Hiển thị danh sách các khách hàng và nhà cung cấp ở cùng một thành phố
Customer( Cuscode, cusName, cusPhone, City)
Supplier ( SupCode, SupName, SupPhone, City)
32
r s
33
Phân biệt các phép join
Phép so sánh Áp dụng trên Tập kết quả
Theta join Tất cả Trên 2 thuộc
tính cùng kiểu
dữ liệu
Equijoin phép bằng Trên 2 thuộc
tính cùng kiểu
dữ liệu
Natural join phép bằng Trên 2 thuộc
tính chung
Không lặp lại
thuộc tính chung
34
Phép kết ngoài - Outer join
Bao gồm : Left/Right Outer Join, Full Outer Join
Phép kết Left Outer Join giữa r và s, cho phép
các bộ của r không kết được với các bộ của s
cũng được xuất hiện trong quan hệ kết quả
Những giá trị tương ứng với các bộ trong quan hệ
bị thiếu sẽ được gán trị Null
Ưu điểm : giữ được thông tin mà lẽ ra bị mất trong
phép kết
Ký hiệu :
34
r s
35
r s
MASV MAMH DIEM
99001 CSDL 5.0
99002 FOX 2.0
99003 MANG 8.0
MAMH TENMH
CSDL COSO DULIEU
FOX FOXPRO
MASV MAMH DIEM MAMH TENMH
99001 CSDL 5.0 CSDL COSO DULIEU
99002 FOX 2.0 FOX FOXPRO
99003 MANG 8.0
Phép kết ngoài - Outer join
36
Phép chia - Division
Cho quan hệ r định nghĩa trên R với tập
thuộc tính A
Cho quan hệ s định nghĩa trên S với tập
thuộc tính B , với B A
Gọi C = A - B , là tập thuộc tính chỉ có trong
tập thuộc tính A của R
Phép chia r s cho kết quả là một quan hệ
với tập thuộc tính C và bao gồm các bộ
sao cho đối với mọi bộ của s , thì tồn tại
bộ thuộc r
37
Phép chia – Division
r s
A
B
1
2
A B
1
2
3
1
1
1
3
4
6
1
2
s
s
r
38
Phép chia – Division
Ví dụ : cho lược đồ CSDL
SV( MaSV, HoSV, TenSV, Phai)
Monhoc( MaMon, TenMon, SoTC )
KetQua( MaSV, MaMon, Diem)
Hiển thị danh sách các Sinh viên (MaSV) đã có kết
quả học tập của tất cả các môn học ?
KetQua[MaSV, MaMon] Monhoc[MaMon]
39
Ràng buộc toàn vẹn
Ràng buộc tòan vẹn là gì
Các loại ràng buộc toàn vẹn
Biểu diễn ràng buộc toàn vẹn
40
Khái niệm
Ràng buộc toàn vẹn (integrity constraint) là qui tắc mà tất cả
các dữ liệu trong CSDL phải thỏa mãn
Nguồn gốc : xuất phát từ các qui tắc nghiệp vụ trong thế
giới thực và những đặc tính của mô hình quan hệ
đảm bảo dữ liệu phản ánh đúng thế giới thực, đảm bảo
những đặc trưng của mô hình quan hệ
Các dạng :
Ràng buộc toàn vẹn thực thể (ràng buộc khóa chính)_
Entity integrity
Ràng buộc toàn vẹn tham chiếu (ràng buộc phụ thuộc tồn
tại / ràng buộc khóa ngọai)_ Referential integrity
Ràng buộc toàn vẹn miền giá trị _ Domain integrity
Ràng buộc toàn vẹn do người dùng định nghĩa _ User-
defined integrity
41
Mô tả một ràng buộc toàn vẹn (RBTV): thông
qua 3 yếu tố
Bối cảnh : nêu ra tên một hay một số quan hệ mà RBTV
đó có hiệu lực
Biểu diễn : nội dung của một RBTV được biểu diễn
bằng ngôn ngữ tự nhiên hoặc bằng một ngôn ngữ
hình thức
Bảng tầm ảnh hưởng: xác định thời điểm (cập nhật dữ
liệu) cần phải tiến hành kiểm tra RBTV
Khái niệm
42
Ràng buộc toàn vẹn thực thể
Ràng buộc khóa chính
Thể hiện: giá trị của khóa chính là duy nhất và NOT NULL
Mục tiêu: mỗi dòng sẽ được nhận diện duy nhất
VD: cho Sinhvien(MaSV, Hoten, Phai, Ngaysinh)
Tân từ : Mỗi sinh viên có một Mã sinh viên duy nhất, xác định
một họ tên, phái và ngày sinh.
Mô tả R1 ”Mỗi sinh viên có một Mã sinh viên duy nhất” như sau
Bối cảnh : Sinhvien
Biểu diễn : rSV SINHVIEN,
t1,t2 rSVt1.MASV t2.MASV
Bảng tầm ảnh hưởng R1 Theâm Söûa Xoùa
rSV + + (MASV) -
43
Ràng buộc tòan vẹn tham chiếu
Ràng buộc khóa ngoại
Thể hiện: gía trị của khóa ngoại có thể NULL, hoặc
phải là một trong những giá trị của khóa chính của
một bảng khác
Mục tiêu : duy trì tính nhất quán (consistency) giữa
các bộ của 2 quan hệ.
Đượ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ệ
44
Ràng buộc tòan vẹn tham chiếu
VD: cho lược đồ CSDL , bao gồm
Khoa(Makhoa, Tenkhoa)
Tân từ : Mỗi khoa có một mã khoa duy nhất, một tên khoa
Sinhvien(MaSV, Hoten, Phai, Ngaysinh, Makhoa)
Tân từ : Mỗi sinh viên có một Mã sinh viên duy nhất, xác định
một họ tên, phái và ngày sinh. Mỗi sinh viên thuộc một khoa
Mô tả R2 “Mỗi sinh viên thuộc một khoa” như sau
Bối cảnh: Khoa, Sinhvien
Biểu diễn : rSV SINHVIEN , rKhoa KHOA
rSV[MAKHOA] rKHOA[MAKHOA]
Bảng tầm ảnh hưởng : R2 Theâm Söûa Xoùa
rSV + + -
rKhoa - + +
45
Ràng buộc toàn vẹn miền giá trị
Thể hiện : giá trị của một thuộc tính phải nằm trong một miền
giá trị xác định
Mục tiêu : tuân thủ các qui tắc nghiệp vụ trong thế giới thực
VD: Hocbong(MaSV, Namhoc, Xeploai, Sotien)
Tân từ : Hàng năm, nếu đạt kết quả học tập lọai khá trở lên thì
sinh viên được học bổng. Học bổng có 2 mức: loại khá được
500 , loại giỏi được 700.
Mô tả R3 “học bổng có 2 mức: loại khá được 500 , loại giỏi
được 700 ” như sau
Bối cảnh : Hocbong
Biểu diễn : rHbong HOCBONG,
t rHbong ,
t.Sotien = 500 or t.Sotien = 700
Bảng tầm ảnh hưởng R3 Theâm Söûa Xoùa
rHocbong + + (Sotien) -
46
Ràng buộc do user định nghĩa
Bao gồm các ràng buộc không thuộc các loại trên , như :
ràng buộc liên bộ / liên thuộc tính trong một quan hệ;
ràng buộc liên thuộc tính giữa các quan hệ;
ràng buộc do thuộc tính tính toán,
VD1: cho lược đồ quan hệ
Hoadon(MaHD, MaKH, Điachi, Ngaylap, NgayXuat )
Tân từ : Mỗi hóa đơn có một mã Hóa đơn duy nhất, bán
cho một khách hàng có Mã KH, có địa chỉ. Ngày lập HD
phải trước hoặc trùng ngày xuất hàng
Bối cảnh : Hoadon
Biểu diễn:
R4 : t rHoaDon
t.NGAYLAP <= t.NGAYXUAT
Bảng tầm ảnh hưởng :
R4 Theâm Söûa Xoùa
rHoaDon + + -
47
Ràng buộc do user định nghĩa
VD2: R5 “Ngày đặt hàng phải trước ngày giao hàng”
Hoadon(MaHD, MaKH, Điachi, NgayLap, NgayGiao, SoDH )
Dathang(SoDH, MaKH, NgayDH)
Bối cảnh: Hoadon, Dathang
Biểu diễn:
R5: t1 rDatHang, t2 rHoaDon
Nếu t1.SODH = t2.SODH
Thì t1.NGAYDH <= t2.NGAYGIAO
Bảng tầm ảnh hưởng : R5 Theâm Söûa Xoùa
rDatHang + + -
rHoaDon + + - 48
Ràng buộc do user định nghĩa
VD3 : R6 “ Mỗi lớp học chỉ có tối đa 100 sinh viên”
Sinhvien(MaSV, Hoten, Phai, Malop)
Lop(Malop, Tenlop, Siso)
Bối cảnh: Sinhvien
Biểu diễn:
rSV Sinhvien, rSV’ rSv
t rSV, t’ rSV’ , D
thì Count t D t.MaSV <= 100
Bảng tầm ảnh hưởng:
rSV rSV’
t.Malop = t’.Malop
R6 Theâm Söûa Xoùa
rSV + + -
49
Hỗ trợ của các DBMS
SQL server 2000 hỗ trợ cài đặt các loại ràng
buộc sau :
Default
Check
NULL / NOT NULL
Unique
Primary key
Foreign key
Domain integrity
Entity integrity
Referential integrity