Trong phần trước đã trình bày về mô hình ER, mô hình ER là mô hình dễ lập vì nó phản ánh sát sao các đối tượng trong thực tế. Tuy nhiên mô hình ER chưa phải là tránh được các nhược điểm. Vì vậy qua bước sơ bộ dùng mô hình ER để lập được lược đồ dữ liệu, ta phải hoành chỉnh tiếp lược đồ bằng cách: - Chuyển qua mô hình quan hệ để thực hiện sự chuẩn hóa - Bổ sung các ràng buộc toàn vẹn, tức là các điều kiện mà lược đồ dữ liệu phải thỏa mãn. Mô hình CSDL quan hệ lần đầu tiên được E.F.Codd và tiếp sau đó được công ty IBM giới thiệu vào năm 1970. Ngày nay, hầu hết các tổ chức đã áp dụng CSDL quan hệ để quản lý dữ liệu trong đơn vị mình. Mô hình quan hệ do Codd đề ra có các ưu điểm sau: - Đơn giản: các dữ liệu được biểu diễn dưới một dạng duy nhất, là quan hệ, tức là các bảng giá trị, khá tự nhiên và dễ hiểu đối với người dùng không chuyên tin học. - Chặt chẽ: các khái niệm được hình thức hóa cao, cho phép áp dụng các công cụ toán học, các thuật toán. - Trừu tượng hóa cao: mô hình chỉ dừng ở mức quan niệm, nghĩa là độc lập với mức vật lý, với sự cài đặt, với các thiết bị. Nhờ đó làm cho tính độc lập giữa dữ liệu và chương trình cao. - Cung cấp các ngôn ngữ truy nhập dữ liệu ở mức cao, dễ sử dụng và trở thành chuẩn. Mô hình cơ sở dữ liệu quan hệ là cách thức biểu diễn dữ liệu dưới dạng bảng hay còn gọi là quan hệ, mô hình được xây dựng dựa trên cơ sở lý thuyết đại số quan hệ.
Trang 1BÀI 2: MÔ HÌNH CƠ SỞ DỮ LIỆU QUAN HỆ
Trong phần trước đã trình bày về mô hình ER, mô hình ER là mô hình dễ lập vì nó phản ánh sát sao các đối tượng trong thực tế Tuy nhiên mô hình ER chưa phải là tránh được các nhược điểm Vì vậy qua bước sơ bộ dùng mô hình ER để lập được lược đồ dữ liệu, ta phải hoành chỉnh tiếp lược đồ bằng cách:
- Chuyển qua mô hình quan hệ để thực hiện sự chuẩn hóa
- Bổ sung các ràng buộc toàn vẹn, tức là các điều kiện mà lược đồ dữ liệu phải thỏa mãn
Mô hình CSDL quan hệ lần đầu tiên được E.F.Codd và tiếp sau đó được công ty IBM giới thiệu vào năm 1970 Ngày nay, hầu hết các tổ chức đã áp dụng CSDL quan hệ
để quản lý dữ liệu trong đơn vị mình Mô hình quan hệ do Codd đề ra có các ưu điểm sau:
- Đơn giản: các dữ liệu được biểu diễn dưới một dạng duy nhất, là quan hệ, tức là
các bảng giá trị, khá tự nhiên và dễ hiểu đối với người dùng không chuyên tin học
- Chặt chẽ: các khái niệm được hình thức hóa cao, cho phép áp dụng các công cụ
toán học, các thuật toán
- Trừu tượng hóa cao: mô hình chỉ dừng ở mức quan niệm, nghĩa là độc lập với
mức vật lý, với sự cài đặt, với các thiết bị Nhờ đó làm cho tính độc lập giữa dữ liệu và chương trình cao
- Cung cấp các ngôn ngữ truy nhập dữ liệu ở mức cao, dễ sử dụng và trở thành chuẩn
Mô hình cơ sở dữ liệu quan hệ là cách thức biểu diễn dữ liệu dưới dạng bảng hay còn gọi là quan hệ, mô hình được xây dựng dựa trên cơ sở lý thuyết đại số quan hệ
1 CÁC KHÁI NIỆM TRONG MÔ HÌNH QUAN HỆ
Mô hình quan hệ biểu diễn cơ sở dữ liệu như một tập các quan hệ Mỗi quan hệ có thể được biểu diễn như một bảng tương ứng với một kiểu thực thể, mỗi dòng của bảng biểu diễn một tập hợp các giá trị dữ liệu liên quan với nhau tương ứng với một thực thể
cụ thể hoặc một liên kết của thế giới thực, mỗi cột của bảng tương ứng với một thuộc tính của kiểu thực thể Tên bảng và tên các cột dùng để giúp giải thích ý nghĩa của các giá trị trong mỗi dòng Mọi giá trị trong một cột đều cùng một kiểu dữ liệu
Theo thuật ngữ mô hình quan hệ hình thức, mỗi dòng được gọi là một bộ, mỗi đầu cột được gọi là một thuộc tính, và bảng được gọi là một quan hệ Tập hợp các giá trị của một cột gọi là miền giá trị của cột
1.1 Thuộc tính (Attribute)
Thuộc tính trong mô hình quan hệ thể hiện một đặc trưng hay một tính chất của quan hệ
Trang 21.2 Miền giá trị (Domain)
Một miền giá trị, ký hiệu là D là một tập hợp các giá trị nguyên tử, không thể phân
chia được trong phạm vi mô hình quan hệ Để đặc tả một miền một phạm vi nhận giá trị của một thuộc tính nào đó, người ta chỉ ra một tên, một kiểu dữ liệu và khuôn dạng dữ liệu Một số ví dụ về định nghĩa miền giá trị:
• Họ tên: Tập hợp các dãy chữ cái có độ dài <= 30
• Tuổi: Tập các số nguyên nằm trong khoảng từ 1 đến 80
• Giới tính: Tập hợp gồm hai giá trị “Nam”, “Nữ”
Miền giá trị trong mô hình quan hệ ký hiệu là D, miền giá trị của một thuộc tính Ai
bất kì ký hiệu là Dom(Ai)
1.3 Bộ dữ liệu (Data Tube)
Bộ trong mô hình quan hệ là các dòng thể hiện giá trị của quan hệ trừ dòng tiêu đề
Bộ dùng để thể hiện dữ liệu cụ thể của các thuộc tính trong quan hệ
1.4 Quan hệ (Relation)
Một quan hệ R(U) trong đó U là tập thuộc tính (A1, ,An), là một tập hợp n-bộ r = {
t1, , tn}
Mỗi bộ t là một danh sách có thứ tự của n giá trị, ti = <v1, v2, …, vn>, với mỗi vi
thuộc Dom(Ai) mà 1<= i <= n
R(U) là tập con của tích Đê các: D1 x x Dn Với Ai là thuộc tính và miền giá trị của các thuộc tính Ai là: D1 = Dom(A1), D2 = Dom(A2),…, Dn = Dom(An)
Giá trị thứ i của bộ t tương ứng với thuộc tính Ai, ký hiệu là t[Ai]
Ví dụ:
1.5 Lược đồ quan hệ
Như trình bày trên, một quan hệ là một bảng hai chiều các giá trị, đó là tập hợp các
bộ của quan hệ tại thời điểm nào đó Tuy nhiên, trên quan hệ lại thường xuyên có các
phép cập nhật (bổ sung, loại bỏ, điều chỉnh), do đó quan hệ thay đổi theo thời gian
Tuy quan hệ thay đổi về giá trị do thực hiện thao tác cập nhật nhưng quan hệ đó vẫn giữ được các đặc trưng về mặc ngữ nghĩa Các đặc trưng không thay đổi đó của quan hệ
được gọi là lược đồ quan hệ
Lược đồ quan hệ được sử dụng để mô tả một quan hệ, bao gồm: Tên quan hệ, các thuộc tính và bậc của quan hệ (số lượng các thuộc tính)
Trang 3Ký hiệu lược đồ quan hệ: R(A1,…,An)
Trong đó:
- R là tên quan hệ cần biểu diễn,
- Ai là tên các thuộc tính, mỗi Ai có miền giá trị tương ứng Dom(Ai)
Lược đồ quan hệ là sự tạo thành từ hai yếu tố cơ bản:
- Một cấu trúc cơ bản, gồm tên quan hệ và một danh sách các thuộc tính (mỗi
thuộc tính gắn với một miền), thường cho dưới dạng R(A1, A2, …, An),
- Một tập hợp các ràng buộc toàn vẹn, tức là các điều kiện mà mọi quan hệ trong
lược đồ đều phải thỏa mãn
Như vậy, Lược đồ quan hệ là một khuôn mẫu, là một bộ lọc cho phép thiết lập một họ các quan hệ có cùng ngữ nghĩa với nhau
Ví dụ, ta có lược đồ quan hệ SINHVIÊN (Mã_số, Họ_tên, Ngày_sinh, Giới_tính, Địa_chỉ) với các ràng buộc toàn vẹn như sau:
- Một bộ <ms, ht, ns, gt, dc> có nghĩa là một sinh viên nào đó có một mã số, một họ tên, một ngày sinh, một giới tính và một địa chỉ xác định,
- Miền xác định của giới tính chỉ nhận hai giá trị “Nam” hoặc “Nữ”
Lược đồ cơ sở dữ liệu: là tập các lược đồ quan hệ của một hệ thống quản lý
Ví dụ: Bài toán quản lý sinh viên ta có lược đồ cơ sở dữ liệu như sau:
KHOA(Mã_Khoa, Tên_Khoa)
LỚP(Mã_Lớp, Tên_Lớp, Mã_Khoa)
SINHVIÊN (Mã_SV, Họ_tên, Ngày_sinh, Giới_tính, Địa_chỉ, Mã_Lớp)
2 RÀNG BUỘC TOÀN VẸN TRONG QUAN HỆ
2.1 Giới thiệu
RBTV (Entegrity constraint) là các qui định, điều kiện từ thực tế được cài đặt để đảm bảo dữ liệu lưu trữ trong CSDL phải thỏa mãn các qui định này Các điều kiện này phải luôn đúng sau mỗi thao tác (thêm, sửa, xóa) làm thay đổi trạng thái của CSDL
Ràng buộc là những quy tắc được áp đặt lên trên dữ liệu đảm bảo tính tin cậy và độ
chính xác của dữ liệu Các luật toàn vẹn được thiết kế để giữ cho dữ liệu phù hợp và đúng
đắn Các RBTV là những điều kiện bất biến mà mọi thể hiện của quan hệ đều phải thỏa mãn ở bất kỳ thời điểm nào Như vậy, RBTV là những qui tắc, qui phạm được áp đặt lên trên các đối tượng của thế giới thực
Ví dụ:
- Mức lương của một người nhân viên không được vượt quá trưởng phòng mà nhân viên đó làm,
- Người quản lý trực tiếp (của một nhân viên) phải là một nhân viên trong công ty
RBTV luôn được kiểm tra khi:
- Thực hiện một thao tác cập nhật CSDL
Trang 4- Kiểm tra định kỳ hay đột xuất, nghĩa là việc kiểm tra RBTV được tiến hành một cách độc lập đối với các thao tác cập nhật dữ liệu
RBTV rất quan trọng vì:
- Giúp CSDL thể hiện trung thực thế giới thực mà CSDL đang mô tả
- Ngăn chặn các thao tác gây sai sót trên CSDL
- Giúp CSDL luôn đúng đắn so với thực tế tại mọi thời điểm
Có 4 nhóm kiểu ràng buộc chính: Ràng buộc miền giá trị (Domain Constraints),
Ràng buộc khoá (Key Constraints), Ràng buộc thực thể (Entity Integrity Constraints), và Ràng buộc toàn vẹn tham chiếu (Referential Integrity Constraints)
2.2 Các đặc trưng RBTV
Mỗi một ràng buộc toàn vẹn khi mô tả được xác định qua ba đặc trưng: Bối cảnh,
Nội dung và tầm ảnh hưởng
Bối cảnh
Dùng để xác định những quan hệ có khả năng xảy ra hay vi phạm RBTV khi thực hiện các phép cập nhật hay nói cách khác bối cảnh dùng để xác định các quan hệ cần phải được kiểm tra RBTV Bối cảnh có thể là một hoặc nhiều quan hệ của một Cơ sở dữ liệu
Ví dụ: “Mức lương của một người nhân viên không được vượt quá trưởng phòng”
Ràng buộc trên sẽ có khả năng xảy ra vi phạm khi thực hiện trong trường hợp:
- Cập nhật lương cho nhân viên đã có,
- Thêm một nhân viên mới vào phòng ban,
- Bổ nhiệm một người làm trưởng phòng của một phòng ban
Vậy ràng buộc toàn vẹn trên xảy ra khi thực hiện thao tác trên hai quan hệ là
“NHAN VIEN” và “PHONG BAN” Vì vậy bối cảnh của RBTV là “NHAN VIEN” và
“PHONG BAN”
Nội dung
Dùng để mô tả hay biểu diễn một cách hình thức nội dung hay yêu cầu của một ràng
buộc toàn vẹn, thông thường một ràng buộc toàn vẹn thường được phát biểu bằng: ngôn
ngữ tự nhiên hay bằng ngôn ngữ hình thức (sử dụng các phép toán như: tồn tại (∃), với mọi (∀), phủ định (!), chiếu (π), chọn (σ), kết nối (*))
Tầm ảnh hưởng
Là một bảng để xác định thao tác nào cần phải kiểm tra ràng buộc toàn vẹn khi thực hiện hoặc xác định thời điểm cần phải tiến hành kiểm tra ràng buộc toàn vẹn
Bảng tầm ảnh hưởng có hai loại: bảng tầm ảnh hưởng cho một RBTV và bảng tầm
ảnh hưởng cho nhiều RBTV
Nguyên tắc xây dựng bảng tầm ảnh hưởng:
- Bảng gồm 4 cột và ít nhất 2 hàng, mỗi hàng tương ứng cho một quan hệ
¡ Cột 1 chứa tên các quan hệ liên quan tới RBTV
Trang 5¡ 3 cột tiếp theo là tên các thao tác: Thêm / Sửa / Xoá
- Điền nội dung vào bảng theo nguyên tắc:
¡ Nếu RBTV cần được kiểm tra nguy cơ dẫn tới vi phạm cho quan hệ thì đánh dấu cộng (+);
- Có thể chỉ rõ các thuộc tính nào nếu được cập nhật mới dẫn đến vi phạm
bằng cách liệt kê chúng dưới dấu (+)
¡ Nếu không có nguy cơ bị vi phạm thì đánh dấu trừ (-);
¡ Nếu không bị vi phạm vì không được phép sửa đổi thì kí hiệu là trừ với dấu nhân: (- (*))
Dạng bảng tầm ảnh hưởng của một RBTV
Trong đó:
Dấu (+) thể hiện trạng thái Xảy ra Vi phạm RBTV,
Dấu (−) thể hiện trạng thái Không xảy ra vi phạm RBTV,
Dấu +(Thuộc tính) thể hiện trạng thái xảy ra RBTV khi thao tác trên thuộc tính tương ứng,
Dâu -(*) thể hiện trạng thái không thể gây ra vi phạm RBTV do thao tác không thực hiện được
Ví dụ: Giới tính của nhân viên chỉ nhận giá trị “Nam” hoặc “Nữ”
Có nghĩa là: ràng buộc này xảy ra khi thêm mới hoặc khi sửa trên thuộc tính có tên
là “giới tính”
Dạng bảng tầm ảnh hưởng tổng hợp
Trang 62.3 Phân loại RBTV
Các ràng buộc toàn vẹn gắn kết với một mô hình quan hệ thường được chia thành
hai nhóm chính: ràng buộc trên một quan hệ và ràng buộc trên nhiều quan hệ
* Ràng buộc trên một quan hệ là ràng buộc chỉ tác động trên một quan hệ, thường gồm các trường hợp sau:
- Ràng buộc miền giá trị
- Ràng buộc liên bộ
- Ràng buộc liên thuộc tính
- Ràng buộc giá trị theo thời gian
* Ràng buộc nhiều quan hệ là ràng buộc tác động trên nhiều quan hệ khác nhau, thường bao gồm các trường hợp sau:
- Ràng buộc tham chiếu
- Ràng buộc liên bộ, liên quan hệ
- Ràng buộc liên thuộc tính, liên quan hệ
- Ràng buộc thuộc tính hỗn hợp
a Ràng buộc miền giá trị
Là quy tắc về các kiểu dữ liệu và những giá trị giới hạn mà một thuộc tính có thể nhận được
Thông thường việc xác định miền giá trị của các thuộc tính bao gồm một số các yêu
cầu sau: Tên thuộc tính, Kiểu dữ liệu, Độ dài dữ liệu, Khuôn dạng của dữ liệu, Các giá
trị giới hạn cho phép, Ý nghĩa, có duy nhất hay không, có cho phép giá trị rỗng hay
không
Ví dụ: Cho lược đồ DIEM THI (MSV, MaMon, DiemThi)
Ràng buộc: “Thuộc tính Điểm có kiểu là nguyên dương, độ dài 2, chỉ nhận các giá
trị trong khoảng từ 0 đến 10”
- Bối cảnh: DIEM THI
- Nội dung:
Tự nhiên: Điểm là số nguyên dương chỉ nhận giá trị trong khoảng 0 đến 10
Trang 7Hình thức: ∀ x∈ DIEM THI: x.Diem > 0 and x.Diem < 10
- Bảng tầm ảnh hưởng
Ví dụ: Cho lược đồ LAM VIEC ( MNV, MDA, SoGio )
Ràng buộc: “Thời gian tham gia dự án của một nhân viên không quá 60 giờ”
- Bối cảnh: NHAN VIEN, DE AN, LAM VIEC
- Nội dung:
Tự nhiên: Thời gian tham gia dự án của nhân viên không quá 60 giờ
Hình thức: ∀ x∈ LAM VIEC: x.Sogio < 60
- Bảng tầm ảnh hưởng
b Ràng buộc liên bộ
Là ràng buộc giữa các bộ giá trị trong một quan hệ thể hiện sự tồn tại của một hay nhiều bộ phụ thuộc vào sự tồn tại của một hay nhiều bộ khác trong cùng một quan hệ Ràng buộc liên bộ thường là các ràng buộc về khóa chính Ràng buộc này thường được
hệ quản trị CSDL tự động kiểm tra khi thực hiện thao tác cập nhật trên bảng quan hệ đó
Ví dụ: cho lược đồ PHONGBAN( MaP, TenP, NgayNC)
Ràng buộc: “Mỗi phòng ban có một mã phòng duy nhất”
- Bối cảnh: PHONGBAN
- Nội dung:
+ Tự nhiên: Mỗi phòng ban có một mã duy nhất
+ Hình thức: ∀ p1, p2 ∈ PHONGBAN: p1 ≠ p2 ⇒ p1.MAP ≠ p2.MAP
- Bảng tầm ảnh hưởng:
Ví dụ: Cho lược đồ NHANVIEN( MaNV, HoTen, HeSo, MucLuong)
Ràng buộc: “Các nhân viên có cùng hệ số lương thì cùng mức lương”
- Bối cảnh: NHANVIEN
- Nội dung:
+ Tự nhiên: Các nhân viên có cùng hệ số lương thì cùng mức lương
+ Hình thức: ∀n, n2 ∈ NHANVIEN: nếu n1.HeSo = n2.HeSo thì
Trang 8(n1.MucLuong = n2.MucLuong)
- Bảng tầm ảnh hưởng:
c Ràng buộc liên thuộc tính
Là ràng buộc giữa các thuộc tính trong cùng một quan hệ
Ví dụ: Cho DUAN (MADA, TDA, DD, MAP, NGBD, NGKT)
Ràng buộc: “Mỗi một dự án thì ngày bắt dầu dự kiến phải trước ngày kết thúc dự
kiến”
- Nội dung:
Tự nhiên: Với mỗi dự án, ngày bắt đầu dự kiến (NGBD) phải trước ngày kết thúc
dự kiến (NGKT)
Hình thức: ∀d ∈ DUAN, d.NGBD < d.NGKT
- Bối cảnh: DUAN
- Bảng tầm ảnh hưởng:
d Ràng buộc giá trị thuộc tính theo thời gian
Là ràng buộc mô tả giá trị thuộc tính thay đổi theo thời gian do thao tác cập nhật gây ra, ràng buộc này cho biết mối quan hệ giữa giá trị cũ và giá trị mới của một thuộc tính
Ví dụ: Cho lược đồ NHANVIEN(MANV, TENNV, LUONG, PHONG)
Ràng buộc: “Lương của nhân viên chỉ tăng chứ không giảm”
- Nội dung:
•Tự nhiên: Lươngcủa nhân viên chỉ tăng chứ không được giảm
•Hình thức: ∀nv∈NHANVIEN, nv.LUONG(Cũ) <= nv.LUONG(Mới)
- Bối cảnh: NHANVIEN
- Bảng tầm ảnh hưởng:
e Ràng buộc tham chiếu
Ràng buộc toàn vẹn tham chiếu là một bộ giá trị trong một quan hệ có liên kết đến một quan hệ khác thì phải liên kết đến một bộ giá trị tồn tại trong quan hệ đó
Trang 9Ràng buộc toàn vẹn tham chiếu phải xác định trên 2 quan hệ khác nhau: quan hệ tham chiếu và quan hệ được tham chiếu Ràng buộc toàn vẹn tham chiếu còn gọi là ràng buộc khóa ngoại
Chúng ta có thể biểu diễn các ràng buộc tham chiếu bằng sơ đồ Để làm điều đó ta
vẽ một cạnh có hướng từ mỗi khoá ngoài đến quan hệ mà nó tham chiếu đến
Ví dụ: Thuộc tính DNo của quan hệ EMPLOYEE tham chiếu tới thuộc tính
DNumber của quan hệ DEPARTMENT
Ví dụ: Xét các lược đồ quan hệ PHONGBAN (MAP, TENP, TRP, NGNC) và
NHANVIEN (MANV, HT, NS, GT, LUONG)
Ràng buộc: “Mỗi trưởng phòng là một nhân viên trong công ty”
- Nội dung:
*Tự nhiên: Mỗi trưởng phòng phải là một nhân viên trong công ty
* Hình thức: ∀p ∈ PHONGBAN, ∃n ∈ NHANVIEN: n.MANV = p.TRP
- Bối cảnh: NHANVIEN, PHONGBAN
- Bảng tầm ảnh hưởng:
f Ràng buộc liên bộ - liên quan hệ
Là ràng buộc xảy ra giữa các bộ khác nhau trên nhiều quan hệ khác nhau
Ví dụ: Xét các lược đồ quan hệ PHONGBAN(MAPHG, TENPHG, TRPHG,
NGNC) và DIADIEM_PHG(MAPHG, DIADIEM)
Trang 10Ràng buộc: “Mỗi phòng ban phải có ít nhất một địa điểm phòng”
- Bối cảnh: PHONGBAN, DIADIEM_PHG
- Nội dung:
Hình thức: ∀d∈DIADIEM_PHG, ∃p∈PHONGBAN: d.MAPHG = p.MAPHG
Tự nhiên: Mỗi phòng ban phải có ít nhất một địa điểm phòng
- Bảng tầm ảnh hưởng:
Ví dụ: Xét các lược đồ quan hệ SV (SV#, HT, NS, GT, Que) và BTL (SV#,
Mamon, Diem )
Ràng buộc: “Mỗi sinh viên phải có ít nhất một bài tập lớn”
- Nội dung:
¡ Tự nhiên: Mỗi sinh viên phải có ít nhất một bài tập lớn
¡ Hình thức: ∀s ∈ SV, ∃b ∈ BTL: s.SV# = b.SV#
- Bối cảnh: SV, BTL
- Bảng tầm ảnh hưởng:
g Ràng buộc liên thuộc tính – liên quan hệ
Là ràng buộc thể hiện điều kiện liên quan giữa các thuộc tính khác nhau trên nhiều quan hệ khác nhau
Ví dụ: Xét các lược đồ quan hệ DATHANG(MADH, MAKH, NGAYDH) và
GIAOHANG(MAGH, MADH, NGAYGH)
Ràng buộc: “Với mỗi một đơn hàng, phải có ngày đặt hàng trước ngày giao hàng”
- Bối cảnh: DATHANG, GIAOHANG
- Nội dung:
Tự nhiên: Với mỗi một đơn hàng, phải có ngày đặt hàng trước ngày giao hàng Hình thức: ∀g∈GIAO_HANG, ∃d∈DAT_HANG: d[MADH] =g[MADH] ∧ d[NGAYDH] < g[NGAYGH]
- Bảng tầm ảnh hưởng: