Chương 2Mô hình cơ sở dữ liệu quan hệ The Relational Database Model 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ệ
Trang 1Chương 2
Mô hình cơ sở dữ liệu quan hệ
(The Relational Database Model)
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 Quan hệ 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
Lược đồ 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)
Tập hợp các bộ (tuple)
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)
Trang 2 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
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
Tập các bộ trong một quan hệ thay đổi theo thời gian 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ệ)
Không có 2 bộ trùng nhau trong một quan hệ
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
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 LĐQH Ketqua( MASV, MAMH, MAKHOA, DIEMTHI)
Ký hiệu r(Ketqua) là một thể hiện của LĐQH trên
Lược đồ CSDL
Tập hợp các lược đồ quan hệ trong cùng một CSDL
Trang 3 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
Monhoc(Mamon, Tenmon, Sotiet)
rMonhoc
THVP Tin hoc văn phòng 30
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}
Ketqua( MaSV, MaMH, Makhoa, Diemthi)
rKQ
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 : {MaMH} , {MaKhoa}
Sinhvien(MaSV, Hoten, Phai, soCMND)
rSV
Trang 4Siêu khóa : {MaSV} , {MaSV, Hoten}, … , {soCMND} , {soCMND, Hoten},…
Khóa (khóa dự tuyển): {MaSV} , {soCMND}
Khóa chính : {MaSV}
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ệ
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)
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 (Ú)
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 }
Phép chọn (selection) – ví dụ 1
Trang 5 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
Phép chiếu (Projection) – ví dụ 1
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
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
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
Trang 6 Bài tập
Cho 2 quan hệ định nghĩa trên 2 lược đồ Quan hệ :
Customer( Cuscode, cusName, cusPhone, City)
Branch( BraCode, BraName, BraPhone, City)
Hiển thị danh sách các thành phố có khách hàng và đồng thời có chi nhánh ?
Hiển thị danh sách các thành phố có khách hàng và không có chi nhánh ?
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 }
Ứ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ệ ?
q (r x s)
q ( r.MaMH = s.MaMH)
Trang 7 Phép kết (join)
Thay thế phép (r x s) (F)
Theta join (-join-join)
Equijoin
Natural join
Outer 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] }
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)
Trang 8 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
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
Customer( Cuscode, cusName, cusPhone, City)
Branch ( BraCode, BraName, BraPhone, City)
VD 1 : Hiển thị danh sách các khách hàng và các chi nhánh ở cùng một thành phố Thông tin yêu cầu : CusCode, CusName, BraCode, BraName, City
VD 2 : Hiển thị danh sách các khách hàng ở những thành phố chưa có chi nhánh
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 :
Trang 9 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ộ <a> sao cho đối với mọi bộ <b> của s , thì tồn tại bộ <a,b> thuộc r
Trang 10 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] Monhoc[MaMon]
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
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
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
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,
"t 1 ,t 2 Î rSV t1.MASV t2.MASV
Bảng tầm ảnh hưởng
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:
o 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
Trang 11o 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
o 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ệ
VD: cho lược đồ CSDL , bao gồm
Sinhvien(MaSV, Hoten, Phai, soCMND)
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
KetQua(MaSV, MaMH, Makhoa, Diemthi)
Tân từ : Mỗi sinh viên, học môn học nào thì sẽ dự thi và có điểm thi của môn học đó
Mô tả R2 “Mỗi sinh viên học mônhọc sẽ thi và có điểm ”
Bối cảnh: Sinhvien, Ketqua
Biểu diễn : "rSV Î SINHVIEN , "rKQ Î KETQUA
rKQ[MASV] rSV[MASV]
Bảng tầm ảnh hưởng :
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
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,…
Trang 12Hoadon(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:
R 4 : " t Î rHoaDon t.NGAYLAP <= t.NGAYXUAT
Bảng tầm ảnh hưởng :
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 :
- 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:
Trang 13 Bài tập
Một trung tâm ngoại ngữ muốn tin học hoá công tác quản lý ghi danh và kết quả học tập cuả học viên, cũng như theo dõi các lớp học, đã thiết kế lược đồ CSDL sau:
KHOAHOC(MAKH, TENKH, BD, KT)
Mô tả : Mỗi một khoá học có một mã số (MAKH) duy nhất phân biệt với các khoá học khác, có tên
khoá học (TENKH), ngày bắt đầu (BD) và ngày kết thúc khoá học (KT)
HOCVIEN(MAHV, HO, TEN, NTNS, DCHI, NNGHIEP)
Mô tả : Mỗi một học viên có một mã số (MAHV) duy nhất để phân biệt với các học viên khác, có họ
(HO), tên (TEN), ngày tháng năm sinh (NTNS), địa chỉ (DCHI),
Nghề nghiệp (NNGHIEP)
GIAOVIEN(MAGV, HOTEN, NTNS, DC)
Mô tả : Mỗi một giáo viên có một mã số (MAGV) duy nhất để phân biệt với các giáo viên khác, có họ
tên (HOTEN), ngày tháng năm sinh (NTNS), địa chỉ (DC)
LOPHOC(MALOP, TENLOP, MAKH, MAGV, SISODK, LTRG,PHHOC)
Mô tả: Mỗi một lớp học có một mã số (MALH) duy nhất để phân biệt với các lớp học khác, có tên lớp
(TENLOP) Mỗi một lớp học thuộc về một khoá học duy nhất (MAKH) và do một giáo viên (MAGV) duy nhất phụ trách, và có một lớp trưởng (LTRG) Vào đầu khoá học người ta dự định một sĩ số dự kiến (SISODK) cho mỗi lớp, và một phòng học (PHHOC) sử dụng trong suốt khoá học
BIENLAI(MAKH, MALH, MAHV, SOBL, DIEM, KQUA, XEPLOAI, TIENNOP)
Mô tả : Mỗi học viên ghi danh vào một lớp (MALH) trong khoá (MAKH), sẽ có một số biên lai duy
nhất (SOBL) trong khoá đó , trong đó có ghi nhận số tiền học viên thực nộp (TIENNOP) Nếu học viên được miễn học phí thì TIENNOP= 0 hoặc Null Cuối mỗi khoá học, mỗi học viên sẽ có một kết quả đánh giá, bao gồm: điểm kiểm tra (DIEM), xếp loại (XEPLOAI) và kết quả đậu rớt (KQUA) Điểm kiểm tra được tính trên thang 10, xếp loại có 4 mức: Giỏi, Khá, TB, Yếu
YÊU CẦU : Xác định khóa chính, khóa ngoại và các ràng buộc tòan vẹn theo tân từ?