Giới thiệu

Chương 3

 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, ...

Mô hình cơ sở dữ liệu quan hệ (The Relational Database Model)

 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ệ.

1

2

Quan hệ

Các khái niệm

 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ó :

 Quan hệ / bảng  Thuộc tính  Bộ  Lược đồ quan hệ  Khóa

 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

3

4

Quan hệ và bảng

Thuộc tính

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)

 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ể,

Một thuộc tính bao gồm :  Tên 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ữ

MASV MAMH MAKHOA DIEMTHI hay mối kết hợp)  Kiểu dữ liệu thuộc tính 99001 CSDL CNTT 3.0

 Có thể NULL

5

6

99002 99001 99005 CSDL THVP THVP CNTT CNTT AV 8.0 6.0 5.0 liệu

Bộ và quan hệ

Lược đồ Quan hệ

 Lược đồ quan hệ - relation schema

 Mỗi bộ (dòng) là một tổ hợp các giá trị tương ứng với

 Mô tả cấu trúc 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

 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ả

 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ệ)

ý 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: r(Ketqua)  Không có 2 bộ trùng nhau trong một quan hệ

 Ký hiệu:

khóa

Ketqua( MASV, MAMH, MAKHOA, DIEMTHI)

 Lược đồ CSDL

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.

 Tập hợp các lược đồ quan hệ trong cùng một

7

8

CSDL

các thuộc tính của quan hệ

Khóa _ ví dụ 1

 Monhoc(Mamon, Tenmon, Sotiet) rMonhoc

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

Mamon Tenmon THVP LTC Tin hoc văn phòng Lập trình C Sotiet 30 60

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

CSDL1 Co so du lieu CSDL2 Co so du lieu 45 45

tính

9

10

 Thuộc tính khóa và thuộc tính không khóa

Siêu khóa : {Mamon}, {Mamon, Tenmon}, {Mamon, Sotiet}, {Mamon, Tenmon, Sotiet} Khóa (khóa dự tuyển, khóa chính) : {Mamon}

Khóa _ ví dụ 2

Khóa _ ví dụ 3

 Ketqua(MaSV, MaMH, Makhoa, Diemthi) rKQ

 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

MAMH MAKHOA DIEMTHI MASV

99004 Do van Thuan

Nam

99001 99002 99001 99005 CSDL CSDL THVP THVP CNTT CNTT CNTT AV 3.0 8.0 6.0 5.0

11

12

Siêu khóa: {MaSV, MaMH}, {MaSV,MaMH,MaKhoa},… Siêu khóa : {MaSV} , {MaSV, Hoten}, … , {soCMND} , {soCMND, Hoten},… Khóa (khóa dự tuyển, khóa chính , khóa phức): {MaSV, MaMH} Khóa (khóa dự tuyển): {MaSV} , {soCMND} Khóa ngoại : {Makhoa} Khóa chính : {MaSV}

Đại số quan hệ

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ữ

 Khái niệm  Các phép toán đại số quan hệ  Ví dụ

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

 Bao gồm tập các phép toán thao tác trên các

quan hệ

13

14

từ một hay nhiều quan hệ trong DB

Các phép toán (operation)

Ký hiệu

 5 phép toán cơ bản

 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

 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*

 Các phép toán so sánh =, , <, ≤, >, 

 Các phép toán luận lý not (), and (), or ()

15

16

 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)

PhPhéép chp chọọn (selection)

n (selection) –– vvíí ddụụ 11

n (selection) PhPhéép chp chọọn (selection)

Relation r A B C D

  1 7

r(A=B)

 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 }

A B C D   12 3   1 7   23 10   5 7   12 3 A B C D

r(A=B ^ D>5)

17

17

18

* Phép chọn và phép chiếu là phép toán một toán hạng

  23 10   1 7   23 10

PhPhéép chi

u (Projection) p chiếếu (Projection)

PhPhéép chi

p chiếếu (Projection)

u (Projection) –– vvíí ddụụ 11

 Relation r

r[A,C]

A B C

A C

A C

 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

10

1

1

1

 Phép chiếu r trên tập thuộc tính X cho kết

20

1

1

1

quả là 1 quan hệ

30

1

1

2

r[X] = r.X = {t |  u r sao cho t = u[X]}

40

2

2

 Phép chiếu loại bỏ những bộ trùng nhau

19

19

20

Phép hiệu (Set Difference)

p (union) PhPhéép hp hợợp (union)

 Phép hợp của 2 quan hệ r và s

 Phép hiệu của 2 quan hệ r và s

r + s = r  s = { t | t  r  t  s}

r - s = { t | t  r  t  s }

trong đó: r và s là hai quan hệ khả hợp

trong đó: r và s là hai quan hệ khả hợp

r + s

r - s

21

22

Bài tập

Phép giao (Intersection)  Phép giao của 2 quan hệ r và s r * s = r  s = {t | t  r  t  s}

 Cho 2 quan hệ định nghĩa trên 2 lược đồ Quan hệ : Customer( Cuscode, cusName, cusPhone, City) Supplier ( SupCode, SupName, SupPhone, City)

r * s

 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?

trong đó: r và s là hai quan hệ khả hợp

23

24

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ị

PhPhéép tp tíích Descartes

ch Descartes –– vvíí ddụụ 11

ch Descartes PhPhéép tp tíích Descartes

 Relations r, s:

r x s

MASV MAMH

DIEM

MAMH

TENMH

99001

CSDL

5.0

CSDL

COSO DULIEU

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.

99002

FOX

2.0

FOX

FOXPRO

99003

MANG 8.0

MASV MAMH

DIEM

MAMH

TENMH

 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)

99001

CSDL

5.0

CSDL

COSO DULIEU

r x s ={ t |  tr  r và ts  s

99001

CSDL

5.0

FOX

FOXPRO

99002

FOX

2.0

CSDL

COSO DULIEU

99002

FOX

2.0

FOX

FOXPRO

với t[A1, A2,.., Am] = tr và t[B1, B2, ….,Bn] = ts }

99003

MANG 8.0

CSDL

COSO DULIEU

25

26

25

99003

MANG 8.0

FOX

FOXPRO

Phép kết (join)

ch Descartes PhPhéép tp tíích Descartes

 ứng dụng :

 thay thế phép (r x s) (F)

phép tích Descartes là một phép tính vô nghĩa

với F là biểu thức điều kiện có dạng r.A  s.Bs.B

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ệ.

 Bao gồm :

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)

 Theta join (--joinjoin)  Equijoin  Natural join  Outer join

28

27

27

Phép kết  - Theta join

 Ví dụ : Hiển thị ứng với mã mỗi môn học và

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)

các môn học tiếp sau nó ?

MONHOC ( MaMon, TenMon, SoTC, Hocky)

 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 

MaMon TenMon SoTC Aaaa A Bbbb B

3 4

Hocky 1 1

 Phép kết  của r và s trên 2 thuộc tính Ai và Bj

r

s Ai  Bj

C D

Cccc Dddd

3 2

2 3

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

Chú ý : Sử dụng phép gán để tạo ra một biến quan hệ tạm:

29

30

29

30

q(Q) = {t |  tr  r và ts  s với t[R] = tr và t[S] = ts và t[Ai]  t[Bj] }

s  r [MaMon, Hocky] , với r  MONHOC

nhiên PhPhéép kp kếết bt bằằng vng vàà kkếết tt tựự nhiên

 Phép kết Theta với  là phép so sánh bằng ,

Phép kết  - Theta join r s MaMon Hocky r.Hocky < s.Hocky A B

1 1 MaMon Hocky A B 1 1

s

r

C D 2 3 C D 2 3

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

32

31

MaMon A MaMonsau C

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ố 32 Customer( Cuscode, cusName, cusPhone, City) Supplier ( SupCode, SupName, SupPhone, City)

A B B C D C D D

Phân biệt các phép join

PhPhéép kp kếết ngo

Outer join t ngoàài i -- Outer 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

 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

Trên 2 thuộc tính cùng kiểu dữ liệu

Natural join

phép bằng

 Ưu điểm : giữ được thông tin mà lẽ ra bị mất trong

Trên 2 thuộc tính chung

Không lặp lại thuộc tính chung

phép kết  Ký hiệu :

r

s

34

34

33

PhPhéép chia

Division p chia -- Division

PhPhéép kp kếết ngo

Outer join t ngoàài i -- Outer join

 Cho quan hệ r định nghĩa trên R với tập

r

s

MASV MAMH

DIEM

thuộc tính A

MAMH

TENMH

99001

CSDL

5.0

CSDL

COSO DULIEU

 Cho quan hệ s định nghĩa trên S với tập

99002

FOX

2.0

FOX

FOXPRO

thuộc tính B , với B  A

99003

MANG 8.0

 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

MASV MAMH

DIEM

MAMH

TENMH

 Phép chia r  s cho kết quả là một quan hệ

99001

CSDL

5.0

CSDL

COSO DULIEU

99002

FOX

2.0

FOX

FOXPRO

99003

MANG 8.0

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

36

35

PhPhéép chia r

Division p chia –– Division s

PhPhéép chia

Division p chia –– Division

A

B

A B

 Ví dụ : cho lược đồ CSDL

r  s

1

2

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 ?

s

KetQua[MaSV, MaMon]  Monhoc[MaMon]

38

37

          

1 2 3 1 1 1 3 4 6 1 2

Ràng buộc toàn vẹn

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ế

 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

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

40

39

Ràng buộc toàn vẹn thực thể

Khái niệm

 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)

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 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.

42

41

R1 rSV

Theâm +

Söûa + (MASV)

Xoùa -

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ữ 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, liệu) cần phải tiến hành kiểm tra RBTV t1,t2  rSV t1.MASV  t2.MASV Bảng tầm ảnh hưởng

Ràng buộc tòan vẹn tham chiếu

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

 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

 Đượ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.

các bộ của 2 quan hệ.

 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

R2

tham chiếu bởi 1 số bản ghi trong bảng quan hệ

rSV

Theâm +

Söûa +

Xoùa -

43

44

rKhoa

-

+

+

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 :

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

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ệ

 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.

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 Mô tả R3 “học bổng có 2 mức: loại khá được 500 , loại giỏi được 700 ” như sau 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

Theâm

Söûa Xoùa

R4 rHoaDon

+

+

-

46

R3 rHocbong

Söûa + (Sotien)

Xoùa 45 -

Bối cảnh : Hocbong Biểu diễn : rHbong  HOCBONG, Bối cảnh : Hoadon Biểu diễn: R4 :  t  rHoaDon Bảng tầm ảnh hưởng t.NGAYLAP <= t.NGAYXUAT Bảng tầm ảnh hưởng : t  rHbong , t.Sotien = 500 or t.Sotien = 700 Theâm +

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:

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:

rSV

rSV’

rSV  Sinhvien, rSV’  rSv t  rSV, t’  rSV’ , D 

t.Malop = t’.Malop

R5:  t1  rDatHang, t2  rHoaDon Nếu t1.SODH = t2.SODH Thì t1.NGAYDH <= t2.NGAYGIAO

Bảng tầm ảnh hưởng :

Theâm Söûa

Xoùa

R5

rDatHang

+

+

-

Theâm Söûa Xoùa

+

+

-

rHoaDon

47

48

Bảng tầm ảnh hưởng: thì Count t  D t.MaSV <= 100 R6 rSV + + -

Hỗ trợ của các DBMS

 SQL server 2000 hỗ trợ cài đặt các loại ràng

Domain integrity

Entity integrity

buộc sau :  Default  Check  NULL / NOT NULL  Unique  Primary key  Foreign key

Referential integrity

49