I. Một vài khái niệm cơ bản trong mô hình dữ liệu quan hệ

Bảng (Table) – Cột (Column) – Hàng (Row)

Trong mô hình ER chúng ta có các khái niệm thực thể, thể hiện và thuộc tính. Trong mô hình dữ liệu quan hệ, các khái niệm tương đương được mô tả như bảng sau:

Mô hình ERMô hình dữ liệu quan hệ
Thực thể (Entity), RelationBảng (Table)
Thuộc tính (Attribute)Cột (Column)
Thể hiện (Instance, Tuple)Hàng (Row)
Quan hệ (Relationship) hay quy định nghiệp vụ (Bussiness Rule)Ràng buộc (Constraint)

Hiểu được sự tương đương này có vai trò quan trọng trong việc chuyển một mô hình ER sang mô hình dữ liệu quan hệ sẽ được tìm hiểu trong mục II.

Khóa chính (Primary Key)

Khóa chính (Primary Key) của một bảng (table) là một cột (column) hay là một kết hợp nhiều cột dùng để xác định tính duy nhất của các hàng trong bảng. Ví dụ bảng KHACHHANG

MAKHTENKHDIACHI
5567JonesCross Road
2913AndersonRiver Lane
4890MurrayWest Street
1622RichardsMill Lane

MAKH là khóa chính của bảng KHACHHANG vì nó xác định tính duy nhất cho mỗi khách hàng. Tên khách hàng (TENKH) có thể trùng, địa chỉ (DIACHI) có thể trùng nhưng MAKH là duy nhất.

Khóa chính kết hợp (Composite primary key)

Trong nhiều trường hợp, khóa chính là sự kết hợp của nhiều cột gọi là khóa chính kết hợp. Ví dụ chúng ta có bảng PHANCONG thể hiện các dự án (thông qua mã dự án MADA) được đảm nhiệm bởi các kỹ sư (thông qua tên kỹ sư TENKS) với thời gian phân công cụ thể (THOIGIAN_PC):

MADATENKSTHOIGIAN_PC
A2367Conelly31-Nov-07
G0814Chapman22-Dec-07
G0814McDonald12-Jun-07
P9890Conelly01-Feb-07
V0122McDonald23-Apr-07
V0122Stewart15-Apr-07

Khóa chính trong bảng này là cặp (MADA, TENKS) xác định tính duy nhất cho mỗi hàng. Giá trị mỗi cột có thể lặp nên không thể xác định tính duy nhất.

Phụ thuộc hàm (Functional dependency)

Một cột B của một bảng là phụ thuộc hàm một trên cột A ở bảng khác ký hiệu là A à B (đọc là A xác định B) có nghĩa là mỗi lần một giá trị cụ thể xuất hiện trong cột A thì một giá trị cụ thể khác sẽ xuất hiện trong cột B. Ví dụ bảng dữ liệu mẫu từ một công ty cho thuê xe (a car hire company)

MakeModelEngine SizeDaily RentalMileage Charge p.
FordExcort14001510
FordMondeo16002015
NissanAlmera14001610
RenaultMegane14001610
RenaultVectra16002215
VauxhaullVectra20002515

Để ý rằng Engine Size à Mileage Charge ví dụ Engine Size 1400 luôn là Mileage Charge 10.

Trong thực tế, xác định phụ thuộc hàm không đơn giản chỉ căn cứ vào bảng dữ liệu đơn giản như trên. Các phụ thuộc thường được kế thừa từ các quy định nghiệp vụ (business rules).

Khóa ngoại (Foreign key)

Khóa chính dùng để tham chiếu đến một cột cụ thể của một bảng. Các giá trị khóa chính có thể được đặt trong một cột của bảng khác có quan hệ với bảng đầu tiên (bảng nó là khóa chính). Cột chứa các giá trị khóa chính gọi là khóa ngoại (foreign key). Hay định nghĩa cách khác: một khóa ngoại là một cột trong một bảng tham chiếu đến khóa chính của một bảng khác. Ví dụ chúng ta có bảng KYSU

MAKSTENKSMADA
12KellyX99
34RossS03
56SmithZ22

Và bảng DUAN

MADATENDA
X99Venus
Z22Apollo
S03Mercury

MADA là khóa chính từ bảng DUAN nhưng là khóa ngoại trong bảng KYSU.

Khóa ứng viên (Candidate key)

Khóa ứng viên là các cột có thể được chọn làm khóa chính trong một bảng. Một trong số các khóa ứng viên sẽ được chọn là khóa chính và trong hầu hết các trường hợp thì lựa chọn này là hiển nhiên. Ví dụ MAKS trong bảng KYSU sẽ hiển nhiên được chọn là khóa chính nhưng nếu đảm bảo tên các kỹ sư là không trùng nhau thì TENKS cũng có thể được chọn là khóa chính.

Null

Chúng ta thường gọi là giá trị null nhưng null có nghĩa là không có giá trị. Một cột nhận giá trị null nghĩa là cột đó không có giá trị hay rỗng. Khóa chính của một bảng luôn khác Null (hay ràng buộc NOT NULL).

Toàn vẹn thực thể (Entity Integrity)

Là nguyên tắc đảm bảo khóa chính trong mỗi bảng không được phép nhận giá trị Null.

Toàn vẹn tham chiếu (Referential Integrity)

Là nguyên tắc liên quan đến quan hệ giữa các bảng thông qua khóa chính và khóa ngoại. Toàn vẹn tham chiếu đảm bảo giá trị khóa ngoại ở một bảng phải giống giá trị khóa chính ở bảng khác. Ví dụ xét hai bảng:

KHOAHOC

MaKhoahocTenKhoahocKhoa
A123ToánToán
B654Kinh tếKinh tế
C299Lập trìnhTin học

SINHVIEN

MaSinhvienTenSinhvienMaKhoahoc
990134JonesB654
992011SmithD333
992888BrownA123

Hàng đầu tiên trong bảng SINHVIEN đảm bảo tính toàn vẹn tham chiếu vì MaKhoahoc B654 tham chiếu đến một hàng tồn tại trong KHOAHOC. Tuy nhiên hàng thứ 2 vi phạm nguyên tắc vì giá trị D333 không tham chiếu đến bất cứ giá trị nào trong bảng KHOAHOC. Điều này có nghĩa rằng sinh viên Smith đã đăng ký một khóa học không tồn tại.

Cũng cần chú ý là khóa học có MaKhoahoc C299 không tham chiếu đến bất cứ sinh viên nào trong bảng SINHVIEN. Điều này là bình thường, nó chỉ phản ánh rằng chưa có sinh viên nào đăng ký khóa học Lập trình.

Nguyên tắc toàn vẹn tham chiếu đảm bảo rằng các phần mềm cơ sở dữ liệu sẽ không được phép thay đổi (chỉnh sửa hay xóa) cơ sở dữ liệu. Tuy nhiên, các hệ quản trị cơ sở dữ liệu như Access, SQL Server,…có hỗ trợ các tính năng cho phép xóa hay chỉnh sửa. Ví dụ tính năng Cascaded Delete nếu được chọn thì khi xóa hàng có MaKhoahoc là B654 trong bảng KHOAHOC thì các hàng trong bảng SINHVIEN có giá trị B654 tại cột MaKhoahoc cũng sẽ bị xóa.