Mô hình CSDL quan hệ
Mô hình CSDL quan hệ là mô hình bao gồm một hệ thống các kí hiệu để mô tả dữ liệu dưới dạng bảng (các hàng, các cột) như quan hệ bộ, thuộc tính, khoá chính, khoá ngoại. Trong mô hình bao gồm một tập hợp các phép toán tập hợp, các phép toán quan hệ, các ràng buộc toàn vẹn quan hệ.
¨ Thuộc tính (trường) là đặc điểm của đối tượng cần quản lý.
Ví dụ: Đối tượng Sinh Viên có các thuộc tính như: Mã SV, Tên SV, Ngày Sinh, …
¨ Lược đồ quan hệ là tập hợp tất cả các thuộc tính cần quản lý của một đối tượng với mối liên hệ giữa chúng.
Ví dụ: SinhVien(MaSV,TenSV,NgaySinh,Lop)
¨ Nhiều lược đồ quan hệ cùng nằm trong một hệ thống quản lý gọi là 1 lược đồ CSDL.
Ví dụ: Để quản lý Điểm của sinh viên, ta có 1 lược đồ CSDL sau:
SinhVien(MaSV,TenSV,NgaySinh,DiaChi,Lop)
Diem(MaSV,MaMH,DiemTB)
MonHoc(MaMH,TenMH,HeSo,HocKi)
¨ Bản ghi (cách gọi khác: bộ) là tập nội dung của các thuộc tính nằm trên cùng một hàng trong lược đồ quan hệ.
Ví dụ: Trong đối tượng SinhVien chúng ta có nhiều sinh viên, mỗi sinh viên là 1 bộ bao gồm các thuộc tính liên quan đến sinh viên đó.
MaSV | TenSV | NgaySinh | NoiSinh |
001 | Nguyễn Văn Anh | 01/11/1990 | Đà Nẵng |
002 | Lê Văn Bình | 01/11/1991 | Quảng Nam |
003 | Nguyễn Văn Anh | 01/11/1990 | Đà Nẵng |
004 | Trần Thy Anh | 05/07/1990 | Quảng Ngãi |
005 | Trương Quang Bình | 01/11/1990 | Đà Nẵng |
006 | Võ Duy Minh | 07/07/1989 | Đà Nẵng |
007 | Lê Thị Ngọc Minh | 25/07/1989 | Quảng Nam |
Chú ý:
– Các thuộc tính phân biệt với nhau qua tên gọi. Mỗi thuộc tính phải thuộc kiểu dữ liệu nhất định và tương ứng với một miền trị.
Ví dụ: thuộc tính DiemTB thuộc kiểu số nguyên và có giá trị từ 0-10
– Trong các thuộc tính của mỗi đối tượng phải có ít nhất một thuộc tính là nét đặc trưng để phân biệt các thành phần khác nhau của đối tượng đó (khoá).
Ví dụ: đối tượng sinh viên có thể giống nhau về TenSV,NgaySinh,… nhưng MaSV phải khác nhau
– Thứ tự thuộc tính trong lược đồ nên sắp xếp cho gần gũi với thực tế, với người khai thác dữ liệu.
Ví dụ: SinhVien(MaSV,TenSV,NgaySinh,DiaChi,Lop) à hợp lý
SinhVien(NgaySinh,Lop,TenSV,MaSV,DiaChi) à không hợp lý, khó nhìn
Thêm vào lược đồ r một bộ mới là t, với giá trị các thuộc tính tương ứng của t là A1=d1, A2=d2, …, An=dn
r = r∪t Insert( r ; A1=d1, A2=d2, …, An=dn ) |
Ví dụ: Insert( Diem ; MaSV="001", MaMH="LTC01",DiemTB=7 )
Các yếu tố phụ xảy ra trong phép thêm:
– Thêm 1 bộ không phù hợp với lược đồ ban đầu
Ví dụ:
Insert( Diem ; masv='001', mahp="LTC", luong=500000 )
à ko phù hợp vì trong Diem ko có thuộc tính luong
– Thêm 1 bộ mà giá trị của nó vượt khỏi miền trị tương ứng
Ví dụ:
Insert( Diem ; masv="001", mahp="LTC",diem=15 )
à diem chỉ nằm từ 0-10
– Thêm 1 bộ có khoá trùng với giá trị thuộc tính khoá của bộ khác đã có trong CSDL
Ví dụ: Trong lược đồ đã có masv='003' mà ta lại thêm vào 1 bộ có masv='003' àtrùng lặp
– Thêm 1 bộ mà ngữ nghĩa ko phù hợp
Ví dụ: luong=1 tỷ
r = (r-t)∪t' Change( r ; A1=d1, A2=d2, …, An=dn ; C1=c1, C2=c2, …, Cn=cn ; ) |
Các yếu tố phụ xảy ra trong phép sửa giống như phép thêm
Xoá khỏi lược đồ r một bộ t, với giá trị các thuộc tính tương ứng của t là A1=d1, A2=d2, …, An=dn
r = r-t Delete( r ; A1=d1, A2=d2, …, An=dn ) |
Trong CSDL, tồn tại nhiều mối liên hệ giữa các thuộc tính, giữa các bản ghi. Sự liên hệ này có thể xảy ra trong 1 lược đồ quan hệ hoặc giữa các lược đồ quan hệ với nhau trong cùng 1 CSDL. Các mối quan hệ này là điều kiện bất biến mà tất cả các bộ của những quan hệ có liên quan trong CSDL điều phải thoả mãn ở mọi thời điểm. Những điều kiện bất biến đó gọi là ràng buộc toàn vẹn.
Ràng buộc toàn vẹn được xem là công cụ để diễn đạt ngữ nghĩa của 1 CSDL
Công việc ràng buộc toàn vẹn thường được tiến hành vào thời điểm cập nhật dữ liệu (thêm, sửa, xoá). Những ràng buộc phát sinh phải được ghi nhận và xử lý bởi 1 hàm hay 1 đoạn chương trình.
Là sự ràng buộc giữa các bản ghi trong cùng 1 quan hệ (còn gọi là ràng buộc toàn vẹn về khoá chính).
Là sự ràng buộc liên quan đến miền giá trị của các thuộc tính trong 1 quan hệ (tức là tính hợp lệ của giá trị dữ liệu nhập vào cho thuộc tính).
Là mối liên hệ giữa các thuộc tính trong 1 lược đồ quan hệ
Mô tả sự phát sinh ràng buộc
Dấu cộng "+" à ràng buộc phát sinh, yêu cầu phải ghi nhận và có phương pháp xử lý
Dấu trừ "–" à không quan tâm
Ví dụ: Với lược đồ CSDL sau:
SinhVien(MaSV,TenSV,NgaySinh,DiaChi,Lop,NgayNhapHoc)
Diem(MaSV,MaMH,DiemTB)
MonHoc(MaMH,TenMH,HeSo,HocKi)
Gọi t là bản ghi bất kỳ:
" t1, t2 Î SinhVien ; t1[MaSV] ¹ t2[MaSV] è ràng buộc toàn vẹn liên bộ (khoá)
" t1, t2 Î Diem ; t1[MaSV,MaMH] ¹ t2[MaSV,MaMH] è ràng buộc toàn vẹn liên bộ (khoá)
" t Î Diem ; t[DiemTB]≥0 and T[DiemTB]≤10 è ràng buộc toàn vẹn miền giá trị
" t Î SinhVien ; t[NgaySinh]<t[NgayNhapHoc] è ràng buộc toàn vẹn liên thuộc tính
Là sự ràng buộc về khoá ngoại
Khoá ngoại hay khoá tham chiếu là tập thuộc tính (các thuộc tính không khoá hoặc chỉ là một phần của khoá chính) của lược đồ này nhưng là khoá chính cho lược đồ khác.
Nói cách khác: một khoá chính của lược đồ này nhưng trong lược đồ kia nó không phải là khoá hoặc chỉ là một phần của khoá chính. Thì trong lược đồ kia nó là khoá ngoại.
Khoá ngoại dùng để liên kết các lược đồ quan hệ.
Ví dụ:
Gọi r là quan hệ của lược đồ Diem(MaSV,MaMH,Diem)
s là quan hệ của lược đồ MonHoc(MaMH,TenMH)
Thì r[MaMH] Í s[MaMH]
Là mối quan hệ giữa các thuộc tính trong nhiều lược đồ quan hệ.
Ví dụ:
Gọi r là quan hệ của lược đồ DatHang(MaH,NgayDat)
s là quan hệ của lược đồ XuatHang(MaH,NgayXuat,ThanhTien)
Với mọi t1Îr và t2 tương ứng (cùng MaH với t1) Îs thì t1[NgayDat] ≤ t2[NgayXuat]
Là ràng buộc được xác định trong trường hợp thuộc tính A của một lược đồ quan hệ Q được tính toán giá trị từ các thuộc tính khác của Q hoặc của các lược đồ quan hệ khác.
Ví dụ:
Với r & s là quan hệ của PhongKS & HoaDon, TienTra là thuộc tính thuộc lược đồ HoaDon thì:
TienTra=(HoaDon.NgayDi – HoaDon.NgayDen)*PhongKS.GiaTien
Chú ý:
Giả sử ngân hàng có 2 lược đồ quan hệ là Gui(MaKH, TienGui, NgayGui)
và Nhan(MaKH,TienNhan,NgayNhan)
NgayGui<NgayNhan à là ràng buộc toàn vẹn liên thuộc tính liên quan hệ
TienGui<TienNhan à không phải là ràng buộc toàn vẹn liên thuộc tính liên quan hệ vì TienNhan là ràng buộc toàn vẹn về thuộc tính tổng hợp, TienNhan được máy tính toán nên luôn thoả mãn ràng buộc về việc TienGui<TienNhan