CHƯƠNG II: MÔ HÌNH QUAN HỆ
Mô hình quan hệ được Ted Codd đưa ra đầu tiên vào năm
1970 và gây được chú ý ngay tức khắc vì tính đơn giản và
các cơ sở toán học của nó. Mô hình quan hệ sử dụng khái
niệm quan hệ toán học như là khối xây dựng cơ sở và có cơ
sở lý thuyết của nó trong lý thuyết tập hợp và logic vị từ bậc
nhất. Trong chương này chúng ta sẽ nghiên cứu các khái
niệm cơ bản về mô hình quan hệ
2.1 CÁC KHÁI NIỆM CỦA MÔ HÌNH
QUAN HỆ
Mô hình quan hệ là một cách tổ chức dữ liệu
ở dạng bảng hay các quan hệ gồm ba thành
phần sau:
• A. Cấu trúc dữ liệu: được tổ chức dưới dạng
bảng hay quan hệ
• B. Thao tác dữ liệu: Những phép toán mạnh
(ngôn ngữ truy vần - SQL) để thực hiện các
thao tác trên dữ liệu
• C. Tích hợp dữ liệu: các qui tắc nghiệp vụ
nhằm duy trì tính toàn vẹn dữ liệu khi chúng
được thao tác.
2.1.1 Quan hệ, thuộc tính, miền
• Quan hệ: là một bảng dữ liệu hai chiều. Mỗi quan hệ
là tập hợp các cột mỗi cột được đặt duy nhất một cái
tên và một số tuỳ ý các hàng không được đặt tên.
Một quan hệ là sự mô tả một tập hợp các đối tượng
trong thế giới thực ta gọi là thực thể.
• Miền giá trị: Mỗi thuộc tính trong lược đồ quan hệ có
thể nhận những giá trị dữ liệu trên một tập nào đó,
tập đó gọi là miền giá trị (nói vắn tắt là miền trị) của
thuộc tính.
• Ví dụ: Trong quan hệ SINHVIEN thì thuộc tính Họtên
là tập dẫy chữ cái có độ dài nhỏ hơn 25; Giớitính là
tập hai giá trị “nam”, “nữ”; Điểm là tập hợp các số
nguyên từ 0 đến 10.
2.1.2 Các đặc trưng của các quan hệ
•
•
•
•
•
•
A. Giá trị đưa vào mỗi cột là đơn nhất: Giá trị dữ liệu
đưa vào một cột tương ứng với một hàng là đơn nhất
thuộc miền trị của thuộc tính.
B. Các giá trị đưa vào một cột phải thuộc cùng một
miền dữ liệu
Ví dụ các dữ liệu đưa vào cột điểm phải là các số
nguyên từ 0 đến 10, không thể đưa vào các chữ như
”chín” hay ”bảy”
C. Mỗi dòng là duy nhất trong bảng
D. Thứ tự các cột là không quan trọng: Các cột có thể
đổi chỗ cho nhau mà không làm thay đổi ý nghĩa của
một số quan hệ phụ thuộc đặc biệt là nguyên
nhân gây ra các dị thường. Chuẩn hoá là việc
đưa các lược đồ quan hệ về các dạng chuẩn
có cấu trúc tốt để tránh các dị thường. Người
ta đã xác định được một số các dạng chuẩn
mà chúng ta sẽ xem xét sau đây. Trước hết ta
cần một số khái niệm liên quan.
a. Phụ thuộc hàm
• Cho quan hệ R và hai tập con khác nhau A và B
của tập thuộc tính. Ta nói rằng tập thuộc tính B
phụ thuộc hàm vào tập thuộc tính A hay A xác
đinh B nếu với mỗi hàng của quan hệ R các giá
trị của A xác định duy nhất các giá trị của B và
được ký hiệu A → B.
Ta có thể định nghĩa sự phụ thuộc hàm một cách
hình thức như sau:
•
Nếu X là tập con của tập thuộc tính, ta ký
hiệu ti[X] là các giá trị ở hàng ti trên tập thuộc
tính X, khi đó A → B nếu t1 và t2 là hai hàng bất
kỳ của R mà có t1[A]=t2[A] kéo theo t1[B]=t2[B]
Hệ tiên đề Armstrong (Tham khảo)
Gọi R(U) là lược đồ quan hệ với U ={A1, A2, …,An} là tập thuộc
tính. X, Y, Z,W⊆ U. Hệ tiên đề Armstrong phát biểu như sau:
• 1. Phản xạ: Nếu Y ⊆ X thì X Y
(A1)
•
Khoá chính - primary key: Là khoá dự tuyển được chọn làm
khoá của quan hệ.
Trong số khoá dự tuyển nêu trên của quan hệ SINHVIEN, rõ
ràng nếu ta chọn (Mãsv) làm khoá thì tốt hơn.
Để chọn một khoá chính ta nên theo nguyên tắc sau:
• Khoá nên có số ít nhất các thuộc tính. Nếu tốt nhất là chỉ gồm
một thuộc tính
• Nếu khoá có nhiều thuộc tính, nên tạo ra thuộc tính thay chúng
làm kháo cho quan hệ.
• Nếu khoá cấu tạo từ nhiều thuộc tính, nên tránh sử dụng các
thuộc tính dễ thay đổi theo thời gian như tên địa danh chẳng
hạn.
Như vậy khoá chính dùng để tính nhận dạng duy nhất bản ghi
trong quan hệ.
Khoá ngoại - foreign key:
Một khoá được dùng trong một quan hệ (bảng)
để làm đại diện cho giá trị của khoá chính
trong một bảng có liên hệ.
Trong khi khoá chính thì chỉ chứa các giá trị
duy nhất thì khoá ngoại có thể chứa các giá trị
giống nhau.
Ví dụ, mã sinh viên (MãSV) là khoá chính trong
bảng SINHVIEN (mỗi sinh viên có một mã duy
nhất), còn MãSV trong bảng SINHVIEN_MON
đơn giản hơn
Nếu quan hệ không là chuẩn 1
Có nghĩa là QH có chứa các thuộc tính lặp. Khi đó
ta tách thành hai quan hệ :
•
Quan hệ thứ nhất : Gồm các thuộc tính lặp và phần
khoá xác định chúng.
•
Quan hệ thứ hai : gồm các thuộc tính còn lại và
toàn bộ khoá nhưng không chứa thuộc tính lặp.
Ví dụ, cho lược đồ quan hệ:
DONHANG(sốđơn, mãkhách, tênkh, địachỉkh, ngàyđặt, mãhàng*,
tênhàng*, đơnvịtính*, môtả*, sốlượng*)
Trong quan hệ ta đánh dấu * các thuộc tính lặp.
Để xác định khoá ta xác định các phụ thuộc hàm :
• (mãkhách) ( tênkh, địachỉkh)
• ( mãhàng) ( tênhàng, đơnvịtính, môtả)
• (sốđơn, mãhàng) ( sốlượng)
• (sốđơn) (mãkhách, ngàyđặt, mãhàng)
Từ đó ta suy ra khoá gồm các thuộc tính bên trái của các phụ
thuộc hàm : (sốđơn, mãkhách,mãhàng)
Quan hệ DONHANG được tách thành hai quan hệ sau :
• Quan hệ 1: gồm các thuộc tính các thuộc tính lặp và phần khoá
Vậy quan hệ DONHANG(sốđơn, mãkhách, tênkh,
địachỉkh, ngàyđặt) được tách thành hai quan hệ:
(1) KHÁCH(mãkhách, tênkh, địachỉkh)
(2) DONHANG(sốđơn, mãkhách, ngàyđặt)
Nếu quan hệ không là chuẩn 3,
Khi quan hệ ở dạng chuẩn 2 nhưng chưa ở
dạng chuẩn 3, có nghĩa là trong quan hệ tồn
tại các thuộc tính không khoá phụ thuộc vào
các thuộc tính không khoá khác. Để đưa về
dạng chuẩn 3 ta tách quan hệ như sau:
• Quan hệ thứ nhất: Gồm các thuộc tính
không khoá và các thuộc tính không khoá
khác (gọi là thuộc tính cầu) xác định chúng.
• Quan hệ thứ hai: Gồm các thuộc tính còn lại
và thuộc tính gọi là thuộc tính cầu nói trên.
Ví dụ: cho lược đồ VẬNCHUYỂN(sốvậnđơn,
khohàng, nơiđến, khoảngcách)
• Các phụ thuộc hàm: (sốvậnđơn)
( khohàng, nơiđến, khoảngcách) ;
( khohàng, nơiđến) ( khoảngcách).
Xác định được khoá là (vậnđơn).
• Rõ ràng trong quan hệ này (khoảngcách) là
thuộc tính không khoá nhưng lại phụ thuộc
vào các thuộc tính không khoá khác là
(khohàng, nơiđến). Do đó, lược đồ được tách
thành hai lược đồ: