Chương 2: Mô hình dữ liệu quan hệ
Mô hình dữ liệu dựa trên khái niệm quan hệ, mô hình tổ chức, lưu trữ và quản lý dữ liệu một cách logic, nhất quán trong các hệ thống cơ sở dữ liệu hiện đại.
1. Các khái niệm của mô hình quan hệ
1.1. Thuộc tính
Là mô tả đặc trưng của đối tượng cần quản lý. Thuộc tính được cấu thành từ 3 yếu tố: Tên gọi, Kiểu dữ liệu và Miền giá trị.
1.1.1. Tên gọi
Là một dãy ký tự, có tính chất gợi nhớ.
Ví dụ: , , , .
1.1.2. Kiểu dữ liệu
Là cách phân loại dữ liệu. Trong CSDL chỉ chấp nhận các kiểu dữ liệu cơ bản như số (integer), chuỗi (string), thời gian (datetime), luận lý (boolean),... Và không chấp nhận các kiểu dữ liệu phức tạp như danh sách, mảng, bản ghi,...
Ví dụ: MaNV: integer, HoTen: string, GioiTinh: string, NgaySinh: datetime.
1.1.3. Miền giá trị
Là tập giá trị mà thuộc tính có thể nhận. Với thuộc tính , kí hiệu miền giá trị của thuộc tính đó là .
Ví dụ: GioiTinh có kiểu dữ liệu là chuỗi, giá trị nhận được là 'Nam' hoặc 'Nu'. Ký hiệu: Dom(GioiTinh) IN ('Nam', 'Nu').
Lưu ý: Tại một thời điểm, một thuộc tính nếu không có giá trị hoặc chưa xác định được giá trị thì giá trị của nó là null (không có giá trị).
1.2. Quan hệ
Là một tập hữu hạn các thuộc tính.
Kí hiệu: . Trong đó:
- : Tên quan hệ.
- : Tập các thuộc tính của quan hệ R.
Ví dụ:
1.3. Bộ
Là các thông tin của của một đối tượng thuộc quan hệ, còn được gọi là mẫu tin.
Kí hiệu: Một bộ của quan hệ là
Ví dụ: Quan hệ có bộ t = ('24250001', 'Nam', 'Nguyen Van A', '2006-01-01', 'TP.HCM', 'MTKH2024'). Bộ này cho biết một sinh viên có MSSV là 24250001, giới tính Nam, họ tên là Nguyen Van A, sinh ngày 01/01/2006 ở TP.HCM, thuộc lớp MTKH2024.
Lưu ý: Quan hệ được coi là một bảng với các cột là các thuộc tính, mỗi dòng là một bộ.
1.4. Thể hiện của quan hệ
Là tập hợp các bộ giá trị của quan hệ tại một thời điểm nhất định.
Kí hiệu: Thể hiện của quan hệ là .
Ví dụ: là thể hiện của quan hệ tại thời điểm hiện tại, có các bộ như dưới đây.
| MSSV | GioiTinh | HoTen | NgaySinh | DiaChi | LopSH |
|---|---|---|---|---|---|
| 24250001 | Nam | Nguyen Van A | 01/01/2006 | TP.HCM | MTKH2024 |
| 24250002 | Nu | Nguyen Thi B | 02/03/2005 | Tay Ninh | PMKT2024 |
| 24250003 | Nam | Tran Van C | 05/04/2005 | Lam Dong | NTTT2024 |
| 24250004 | Nu | Tran Thi D | 06/06/2006 | Da Nang | DLKH2024 |
1.5. Tân từ
Là quy tắc dùng để mô tả một quan hệ.
Kí hiệu: Tân từ của quan hệ là .
Ví dụ:
: Một lớp học sẽ giảng dạy một môn học duy nhất, do một giảng viên phụ trách với sĩ số lớp đã được ấn định.
1.6. Lược đồ quan hệ
Dùng để mô tả cấu trúc của một quan hệ và mối liên hệ giữa các thuộc tính trong quan hệ đó. Lược đồ quan hệ đặc trưng bởi một tên phân biệt, một tập hữu hạn các thuộc tính và một mô tả xác định ý nghĩa và mối liên hệ giữa các thuộc tính.
Kí hiệu: Lược đồ quan hệ gồm thuộc tính là .
Ví dụ:
Tân từ: Quan hệ này lưu trữ thông tin của sinh viên. Các thông tin bao gồm: giới tính (), họ và tên (HoTen), ngày sinh (), địa chỉ thường trú () và lớp sinh hoạt của sinh viên đó (). Mỗi sinh viên có một mã số sinh viên () để phân biệt với các sinh viên khác.
1.7. Lược đồ CSDL
Là tập hợp các lược đồ quan hệ và các mối liên hệ giữa chúng trong cùng một hệ thống quản lý.
Ví dụ: Lược đồ CSDL quản lý bán hàng của một cửa hàng.
Tân từ: Quan hệ khách hàng sẽ lưu trữ thông tin của khách hàng thành viên gồm có các thuộc tính: mã khách hàng, họ tên, địa chỉ, số điện thoại, ngày sinh, ngày đăng ký và doanh số (tổng trị giá các hóa đơn của khách hàng thành viên này).
Tân từ: Mỗi nhân viên bán hàng cần ghi nhận họ tên, ngày vào làm, điện thọai liên lạc, mỗi nhân viên phân biệt với nhau bằng mã nhân viên.
Tân từ: Mỗi sản phẩm có một mã số, một tên gọi, đơn vị tính, nước sản xuất và một giá bán.
Tân từ: Khi mua hàng, mỗi khách hàng sẽ nhận một hóa đơn tính tiền, trong đó sẽ có số hóa đơn, ngày mua, nhân viên nào bán hàng, trị giá của hóa đơn là bao nhiêu và mã số của khách hàng nếu là khách hàng thành viên.
Tân từ: Diễn giải chi tiết trong mỗi hóa đơn gồm có những sản phẩm gì với số lượng là bao nhiêu.
2. Khóa
Chú ý: Các bộ trong quan hệ phải khác nhau từng đôi một.
2.1. Siêu khóa
Là một tập con các thuộc tính của mà giá trị của chúng có thể phân biệt được 2 bộ bất kì khác nhau trong cùng một thể hiện
Một lược đồ có ít nhất là một siêu khóa và có thể có nhiều siêu khóa.
Ví dụ: Trong quan hệ có thể hiện như dưới đây, ta có thể chọn các siêu khóa là: , , ,...
| MSSV | GioiTinh | HoTen | NgaySinh | DiaChi | LopSH |
|---|---|---|---|---|---|
| 24250001 | Nam | Nguyen Van A | 01/01/2006 | TP.HCM | MTKH2024 |
| 24250002 | Nu | Nguyen Thi B | 02/03/2005 | Tay Ninh | PMKT2024 |
| 24250003 | Nam | Tran Van C | 05/04/2005 | Lam Dong | NTTT2024 |
| 24250004 | Nu | Tran Thi D | 06/06/2006 | Da Nang | DLKH2024 |
2.2. Khóa
Gọi là tập con các thuộc tính của . được gọi là khóa nếu thỏa mãn các điều kiện dưới đây:
- là một siêu khóa của .
- Không tồn tại siêu khóa có số thuộc tính thấp hơn là tập con khác rỗng của khóa (tức là siêu khóa "nhỏ nhất" của ).
Thuộc tính tham gia vào một khóa được gọi là thuộc tính khóa, ngược lại là thuộc tính không khóa.
Ví dụ 1: Trong quan hệ ở trên, ta thấy các siêu khóa và không có siêu khóa nào "nhỏ hơn" nó nên và là các khóa của quan hệ.
Ví dụ 2: Trong quan hệ ở trên, siêu khóa không phải là khóa vì có siêu khóa "nhỏ hơn" siêu khóa .
2.3. Khóa chính
Trong quá trình cài đặt bảng cho quan hệ, ta chỉ được chọn một khóa để làm cơ sở nhận biết. Khóa được chọn được gọi là khóa chính.
Khóa chính có số lượng thuộc tính ít nhất trong tất cả các khóa.
Ví dụ 1: Trong quan hệ ở trên có hai khóa là và . Khóa có số thuộc tính ít hơn nên nó là khóa chính.
Khi biểu diễn khóa chính trên lược đồ quan hệ, thường sẽ sử dụng đường gạch dưới. Nếu khóa chính có nhiều thuộc tính thì đường gạch dưới phải nối liền hết toàn bộ các thuộc tính đó.
Ví dụ 2:
2.4. Khóa ngoại
2.4.1. Tham chiếu
Quan hệ tham chiếu quan hệ nếu trong quan hệ có một thuộc tính nhận giá trị từ một thuộc tính của quan hệ .
Ví dụ: Giá trị của thuộc tính trong quan hệ có từ giá trị của thuộc tính trong quan hệ . Ta nói tham chiếu đến .

2.4.2. Khóa ngoại
Xét quan hệ có tập thuộc tính , quan hệ có tập thuộc tính . là khóa chính của , là tập hợp con thuộc tính của . Ta nói là khóa ngoại của tham chiếu đến khóa chính của nếu thỏa các điều kiện sau:
- và có cùng số thuộc tính và cùng ngữ nghĩa.
- Giữa và tồn tại mối quan hệ 1-nhiều trên và .
- Với mọi bộ thuộc , có duy nhất một bộ thuộc mà tại đó, giá trị của và bằng nhau.
Ví dụ: Trong quan hệ ở trên, thuộc tính là khóa chính. Thuộc tính trong quan hệ là khóa ngoại, tham chiếu đến là khóa chính trong quan hệ .
Lưu ý:
- Trong một lược đồ quan hệ, một thuộc tính vừa có thể tham gia vào khóa chính, vừa tham gia vào khóa ngoại.
- Khóa ngoại có thể tham chiếu đến khóa chính trên cùng 1 lược đồ quan hệ.
- Có thể có nhiều khóa ngoại tham chiếu đến cùng một khóa chính.
3. Các đặc trưng của quan hệ
- Mỗi quan hệ có một tên duy nhất
- Mỗi thuộc tính của một quan hệ đều có tên khác nhau
- Mỗi bộ là duy nhất, không có 2 bộ nào trùng nhau
- Mỗi giá trị trong một bộ hoặc là một giá trị nguyên tố, hoặc là giá trị rỗng (
NULL) - Thứ tự của các bộ không quan trọng
- Thứ tự của thuộc tính không thực sự quan trọng
- Thứ tự giữa các giá trị trong một bộ là quan trọng
4. Chuyển lược đồ ER sang mô hình quan hệ
Trong phần này, trừ khi có ví dụ đặc biệt thì mặc định là chúng ta đang xét đến lược đồ ER đã được xây dựng ở cuối chương 1.

4.1. Tập thực thể
Các tập thực thể chuyển thành các quan hệ có cùng tên và tập thuộc tính.
Ví dụ: Trong lược đồ có các thực thể , và .

4.2. Mối quan hệ Nhiều-Nhiều
Tạo một quan hệ mới có tên là tên của mối kết hợp, thuộc tính gồm các thuộc tính khóa của các tập thực thể liên quan và thuộc tính của mối kết hợp đó (nếu có).
Ví dụ: Trong lược đồ có mối kết hợp giữa và . Tạo thêm quan hệ với các thuộc tính (thuộc tính khóa của ), (thuộc tính khóa của ) và .

4.3. Mối quan hệ Một-Nhiều
Thêm vào quan-hệ-nhiều thuộc tính khóa của quan-hệ-một.
Ví dụ: Trong lược đồ có mối kết hợp giữa và , mối kết hợp giữa và . Thêm thuộc tính (thuộc tính khóa của ) vào quan hệ và .

4.4. Mối quan hệ Một-Một
Có hai cách:
- Thêm vào quan hệ này thuộc tính khóa của quan hệ kia.
- Thêm thuộc tính khóa vào cả hai quan hệ.
Chúng ta thống nhất sẽ sử dụng cách thứ nhất, và thêm khóa vào quan hệ có ít thuộc tính hơn.
Ví dụ: Trong lược đồ có mối kết hợp giữa và . Thêm thuộc tính (là , thuộc tính khóa của ) và vào quan hệ .

4.5. Mối kết hợp 1 ngôi (Đệ quy)
Thêm vào quan hệ tham gia vào mối kết hợp đó thuộc tính khóa cùng ngữ nghĩa nhưng với tên gọi khác để tránh nhầm lẫn.
Ví dụ: Trong lược đồ có mối kết hợp , mối kết hợp này chỉ có thực thể tham gia. Thêm thuộc tính (là , thuộc tính khóa của ) vào để phân biệt với đã có từ trước.

4.6. Mối kết hợp 3 ngôi
Chuyển mối kết hợp thành một quan hệ mới (bất kể bản số), có khoá chính gồm 3 thuộc tính khoá của 3 thực thể tham gia mối kết hợp. Thuộc tính mối kết hợp (nếu có) trở thành thuộc tính của quan hệ mới.
Ví dụ: Trong lược đồ dưới đây, mối kết hợp có 3 thực thể , và tham gia. Tạo quan hệ bao gồm (thuộc tính khóa của ), (thuộc tính khóa của ), (thuộc tính khóa của ), và (thuộc tính của mối kết hợp ).

Ta có mô hình quan hệ của lược đồ trên như sau:
Ta cũng có mô hình quan hệ của lược đồ được nhắc đến ở đầu phần này là: