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 ER | Mô hình dữ liệu quan hệ |
Thực thể (Entity), Relation | Bả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
MAKH | TENKH | DIACHI |
5567 | Jones | Cross Road |
2913 | Anderson | River Lane |
4890 | Murray | West Street |
1622 | Richards | Mill 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):
MADA | TENKS | THOIGIAN_PC |
A2367 | Conelly | 31-Nov-07 |
G0814 | Chapman | 22-Dec-07 |
G0814 | McDonald | 12-Jun-07 |
P9890 | Conelly | 01-Feb-07 |
V0122 | McDonald | 23-Apr-07 |
V0122 | Stewart | 15-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)
Make | Model | Engine Size | Daily Rental | Mileage Charge p. |
Ford | Excort | 1400 | 15 | 10 |
Ford | Mondeo | 1600 | 20 | 15 |
Nissan | Almera | 1400 | 16 | 10 |
Renault | Megane | 1400 | 16 | 10 |
Renault | Vectra | 1600 | 22 | 15 |
Vauxhaull | Vectra | 2000 | 25 | 15 |
Để ý 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
MAKS | TENKS | MADA |
12 | Kelly | X99 |
34 | Ross | S03 |
56 | Smith | Z22 |
Và bảng DUAN
MADA | TENDA |
X99 | Venus |
Z22 | Apollo |
S03 | Mercury |
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
MaKhoahoc | TenKhoahoc | Khoa |
A123 | Toán | Toán |
B654 | Kinh tế | Kinh tế |
C299 | Lập trình | Tin học |
SINHVIEN
MaSinhvien | TenSinhvien | MaKhoahoc |
990134 | Jones | B654 |
992011 | Smith | D333 |
992888 | Brown | A123 |
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.