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
49 trang |
Chia sẻ: vutrong32 | Lượt xem: 1146 | Lượt tải: 0
Bạn đang xem trước 20 trang tài liệu Chương 2. Mô hình cơ sở dữ liệu quan hệ (The Relational Database Model), để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
*Mô hình cơ sở dữ liệu quan hệ (The Relational Database Model)Chương 2*Giới thiệuMô 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 1971Mô hình Quan hệ thể hiện dữ liệu dưới góc độ logicMô 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ệmQuan hệ / bảngThuộc tínhBộLược đồ quan hệKhóa*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ênTậ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*Quan hệ và bảngMASVMAMHMAKHOADIEMTHI99001CSDLCNTT3.099002CSDLCNTT8.099001THVPCNTT6.099005THVPAV5.0Thuật ngữ tương đương : Quan hệ, bộ, thuộc tính (Relation, tuple, attribute) Bảng, dòng, cột (Table, row, column)*Thuộc tínhMột thuộc tính bao gồm :Tên thuộc tínhTên phân biệtGiú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ínhSố nguyên, số thực, văn bản, logic,Miền giá trị xác địnhCó thể bị áp đặt bởi qui tắc nghiệp vụ, hay ràng buộc dữ liệuCó thể NULL*Bộ 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ựcMộ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óaTrậ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ệLược đồ quan hệ - relation schemaMô 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ínhMỗ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 đồ CSDLTập hợp các lược đồ quan hệ trong cùng một CSDL*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ệ RS đượ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 nhauSiê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ị NULLkhó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ínhThuộc tính khóa và thuộc tính không khóa*Khóa _ ví dụ 1Monhoc(Mamon, Tenmon, Sotiet)rMonhocMamonTenmonSotietTHVPTin hoc văn phòng30LTCLập trình C60CSDL1Co so du lieu45CSDL2Co so du lieu45Siê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ụ 2Ketqua(MaSV, MaMH, Makhoa, Diemthi)rKQMASVMAMHMAKHOADIEMTHI99001CSDLCNTT3.099002CSDLCNTT8.099001THVPCNTT6.099005THVPAV5.0Siê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}*Khóa _ ví dụ 3Sinhvien(MaSV, Hoten, Phai, soCMND)rSVMaSVHotenPhaisoCMND99001Nguyen van anhNam0124501299002Tran Le TuanNam0220987599003Nguyen Thi HongNu0456371199004Do van ThuanNamSiêu khóa : {MaSV} , {MaSV, Hoten}, , {soCMND} , {soCMND, Hoten},Khóa (khóa dự tuyển): {MaSV} , {soCMND}Khóa chính : {MaSV}*Đại số quan hệKhái niệmCác phép toán đại số quan hệVí dụ*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 DBBao 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ảnPhé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)*Ký hiệuQuan 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 (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 Fr(F) = r:F = { t |t r và F(t) = true }** Phép chọn và phép chiếu là phép toán một toán hạng*Phép chọn (selection) – ví dụ 1Relation rABCD15122377310r(A=B ^ D>5)ABCD123710r(A=B)ABCD112237310*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 mPhé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ụ 1Relation rABC102030401112AC1112AC112r[A,C]*Phép hợp (union)Phép hợp của 2 quan hệ r và sr + s = r s = { t | t r t s} trong đó: r và s là hai quan hệ khả hợp r + s*Phép hiệu (Set Difference)Phép hiệu của 2 quan hệ r và sr - s = { t | t r t s } trong đó: r và s là hai quan hệ khả hợpr - s*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ợpHai quan hệ r và s là khả hợp ( union-compatible) khi : Có cùng số thuộc tínhCác thuộc tính tương ứng có cùng miền giá trịr * s*Bài tậpCho 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? *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 }**Phép tích Descartes – ví dụ 1Relations r, s:r x sMASVMAMHDIEM99001CSDL5.099002FOX2.099003MANG8.0MAMHTENMHCSDLCOSO DULIEUFOXFOXPROMASVMAMHDIEMMAMHTENMH99001CSDL5.0CSDLCOSO DULIEU99001CSDL5.0FOXFOXPRO99002FOX2.0CSDLCOSO DULIEU99002FOX2.0FOXFOXPRO99003MANG8.0CSDLCOSO DULIEU99003MANG8.0FOXFOXPRO*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)**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.BBao gồm :Theta join (-join)Equijoin Natural joinOuter join*Phép kết - Theta joinCho 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ộ tq(Q) = {t | tr r và ts s với t[R] = tr và t[S] = ts và t[Ai] t[Bj] }*rsAi Bj*Phép kết - Theta joinVí 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)*MaMonTenMonSoTCHockyAAaaa31BBbbb41CCccc32DDddd23Chú ý : 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 *Phép kết - Theta joinMaMonHockyA1B1C2D3MaMonHockyA1B1C2D3rsr.Hocky sao cho đối với mọi bộ của s , thì tồn tại bộ thuộc r*Phép chia – Division r sAB12AB12311134612ssr*Phép chia – DivisionVí dụ : cho lược đồ CSDLSV( 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]*Ràng buộc toàn vẹnRàng buộc tòan vẹn là gìCác loại ràng buộc toàn vẹnBiểu diễn ràng buộc toàn vẹn*Khái niệmRà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ãnNguồ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 integrityRà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 integrityRàng buộc toàn vẹn miền giá trị _ Domain integrityRà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ựcBiể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ứcBả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 RBTVKhái niệm*Ràng buộc toàn vẹn thực thểRàng buộc khóa chínhThể hiện: giá trị của khóa chính là duy nhất và NOT NULLMục tiêu: mỗi dòng sẽ được nhận diện duy nhấtVD: 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 rSV t1.MASV t2.MASV Bảng tầm ảnh hưởng R1TheâmSöûaXoùarSV++ (MASV)-*Ràng buộc tòan vẹn tham chiếuRàng buộc khóa ngoạiThể 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ếuKhô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ệ *Ràng buộc tòan vẹn tham chiếuVD: cho lược đồ CSDL , bao gồmKhoa(Makhoa, Tenkhoa)Tân từ : Mỗi khoa có một mã khoa duy nhất, một tên khoaSinhvien(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 khoaMô tả R2 “Mỗi sinh viên thuộc một khoa” như sau Bối cảnh: Khoa, SinhvienBiểu diễn : rSV SINHVIEN , rKhoa KHOA rSV[MAKHOA] rKHOA[MAKHOA]Bảng tầm ảnh hưởng : R2TheâmSöûaXoùarSV++-rKhoa-++*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 địnhMục tiêu : tuân thủ các qui tắc nghiệp vụ trong thế giới thựcVD: 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ư sauBối cảnh : HocbongBiểu diễn : rHbong HOCBONG, t rHbong , t.Sotien = 500 or t.Sotien = 700Bảng tầm ảnh hưởngR3TheâmSöûaXoùarHocbong++ (Sotien)-*Ràng buộc do user định nghĩaBao 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.NGAYXUATBảng tầm ảnh hưởng :R4TheâmSöûaXoùarHoaDon++-*Ràng buộc do user định nghĩaVD2: 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, DathangBiểu diễn:R5: t1 rDatHang, t2 rHoaDonNếu t1.SODH = t2.SODH Thì t1.NGAYDH <= t2.NGAYGIAOBảng tầm ảnh hưởng :R5TheâmSöûaXoùarDatHang++-rHoaDon++-*Ràng buộc do user định nghĩaVD3 : 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: SinhvienBiể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: rSVrSV’t.Malop = t’.MalopR6TheâmSöûaXoùarSV++-*Hỗ trợ của các DBMSSQL server 2000 hỗ trợ cài đặt các loại ràng buộc sau :DefaultCheckNULL / NOT NULLUniquePrimary keyForeign keyDomain integrityEntity integrityReferential integrity
Các file đính kèm theo tài liệu này:
- chuong2_mohinhqhe_8936.ppt