Bài học

Tôi đã nhận được cấu trúc bài giảng cho Chương 3. Mô hình dữ liệu quan hệ. Tôi sẽ chuyển đổi cấu trúc này thành nội dung học thuật hoàn chỉnh, tuân thủ các quy tắc định dạng HTML nghiêm ngặt.

CHƯƠNG 3. MÔ HÌNH DỮ LIỆU QUAN HỆ

Chương này đi sâu vào Mô hình Dữ liệu Quan hệ (Relational Data Model), nền tảng của hầu hết các Hệ quản trị CSDL thương mại hiện nay. Sinh viên sẽ nắm vững các khái niệm lý thuyết, quy tắc chuyển đổi từ Mô hình E-R sang Mô hình Quan hệ, và cách sử dụng Đại số Quan hệ để truy vấn dữ liệu.

3.1. Các khái niệm cơ bản

Mô hình Quan hệ được xây dựng dựa trên các khái niệm toán học về Tập hợp và Logic. Dữ liệu được tổ chức dưới dạng các bảng (Table) hai chiều, gọi là Quan hệ (Relation).

3.1.1. Quan hệ (Relation)

Quan hệ là một bảng hai chiều. Trong môi trường CSDL, Quan hệ được gọi là Bảng (Table).

3.1.2. Bộ (Tuple)

Bộ là một hàng (Row) trong Quan hệ. Mỗi Bộ đại diện cho một bản ghi (Record) hoặc một thực thể cụ thể (ví dụ: thông tin của một sinh viên).

3.1.3. Thuộc tính (Attribute)

Thuộc tính là một cột (Column) trong Quan hệ. Mỗi Thuộc tính mô tả một đặc tính của thực thể (ví dụ: Tên, Mã số).

3.1.4. Miền giá trị (Domain)

Miền giá trị là tập hợp tất cả các giá trị hợp lệ mà một thuộc tính có thể nhận (ví dụ: miền giá trị của thuộc tính NgàySinh là tập hợp các ngày hợp lệ).

3.1.5. Lược đồ Quan hệ (Relational Schema)

Lược đồ Quan hệ là mô tả tên của Quan hệ cùng với tập hợp các thuộc tính của nó.

Ký hiệu: $R(A_1, A_2, ..., A_n)$, trong đó $R$ là tên quan hệ và $A_i$ là các thuộc tính.

3.1.6. Khóa (Keys)

Khóa là một thuộc tính hoặc tập hợp các thuộc tính giúp định danh duy nhất một Bộ trong Quan hệ.

  • Siêu khóa (Superkey): Bất kỳ tập hợp thuộc tính nào có thể định danh duy nhất một Bộ.
  • Khóa ứng viên (Candidate Key): Là một Siêu khóa tối thiểu (không thể loại bỏ bất kỳ thuộc tính nào khỏi nó mà vẫn giữ được tính duy nhất).
  • Khóa chính (Primary Key - PK): Là Khóa ứng viên được chọn để định danh duy nhất các Bộ trong Quan hệ. Khóa chính phải luôn có giá trị (NOT NULL) và duy nhất.
  • Khóa ngoại (Foreign Key - FK): Là một thuộc tính hoặc tập hợp các thuộc tính trong một quan hệ $R_1$ tham chiếu đến Khóa chính của một quan hệ khác $R_2$. Khóa ngoại thiết lập mối quan hệ giữa các bảng và đảm bảo tính toàn vẹn tham chiếu (Referential Integrity).

3.2. Chuyển đổi mô hình thực thể mối quan hệ sang mô hình dữ liệu quan hệ

Quy trình chuyển đổi (Mapping) Mô hình E-R sang Mô hình Quan hệ là bước thiết kế logic quan trọng, tuân theo các quy tắc sau:

3.2.1. Chuyển đổi Thực thể Mạnh (Strong Entity)

Mỗi Thực thể mạnh được chuyển đổi thành một Quan hệ (Bảng). Các thuộc tính của thực thể trở thành các cột, và Thuộc tính khóa chính của thực thể trở thành Khóa chính (PK) của quan hệ.

3.2.2. Chuyển đổi Mối quan hệ 1:1

Có hai cách:

  1. Gộp hai thực thể vào một bảng (nếu tùy ý tham gia).
  2. Tạo khóa ngoại (FK) từ khóa chính của một bảng sang bảng kia. Khóa ngoại này cũng có thể là duy nhất (UNIQUE) để đảm bảo tính 1:1.

3.2.3. Chuyển đổi Mối quan hệ 1:N

Tạo một Khóa ngoại (FK) trong bảng đại diện cho phía "Nhiều" để tham chiếu đến Khóa chính của bảng đại diện cho phía "Một".

3.2.4. Chuyển đổi Mối quan hệ M:N

Tạo một Quan hệ mới (Bảng liên kết/Intersection Table) đại diện cho mối quan hệ đó. Khóa chính (PK) của bảng mới này là sự kết hợp của Khóa chính của hai bảng tham gia mối quan hệ. Bảng này cũng chứa các thuộc tính riêng của mối quan hệ (nếu có).

3.2.5. Chuyển đổi Thực thể Yếu (Weak Entity)

Thực thể yếu được chuyển thành một bảng. Khóa chính của bảng này là sự kết hợp giữa Khóa chính của Thực thể mạnh xác định và Thuộc tính phân biệt (Partial Key) của Thực thể yếu. Bảng thực thể yếu cũng chứa Khóa ngoại tham chiếu đến bảng thực thể mạnh.

3.3. Các phép toán đại số quan hệ và ứng dụng

Đại số Quan hệ (Relational Algebra) là ngôn ngữ truy vấn thủ tục (Procedural Query Language) được sử dụng để thao tác dữ liệu trong mô hình quan hệ. Nó sử dụng các toán tử để tạo ra các quan hệ mới từ các quan hệ hiện có.

3.3.1. Các phép toán cơ bản (Fundamental Operations)

  1. Phép chọn (Selection - $\sigma$): Chọn các Bộ (hàng) thỏa mãn một điều kiện cho trước.

    Ký hiệu: $\sigma_{\text{điều kiện}}(R)$

  2. Phép chiếu (Projection - $\pi$): Chọn các Thuộc tính (cột) cụ thể từ một quan hệ, loại bỏ các Bộ trùng lặp.

    Ký hiệu: $\pi_{\text{danh sách thuộc tính}}(R)$

  3. Phép hợp (Union - $\cup$): Kết hợp các Bộ từ hai quan hệ, loại bỏ trùng lặp. Hai quan hệ phải tương thích về lược đồ (cùng số lượng và kiểu dữ liệu thuộc tính).
  4. Phép trừ (Set Difference - $-$): Trả về các Bộ có trong quan hệ thứ nhất nhưng không có trong quan hệ thứ hai. Hai quan hệ phải tương thích về lược đồ.
  5. Phép tích Descartes (Cartesian Product - $\times$): Kết hợp mọi Bộ của quan hệ thứ nhất với mọi Bộ của quan hệ thứ hai.

    Ký hiệu: $R \times S$

  6. Phép đổi tên (Rename - $\rho$): Đổi tên quan hệ hoặc thuộc tính.

    Ký hiệu: $\rho_{\text{tên mới}}(R)$

3.3.2. Các phép toán dẫn xuất (Derived Operations)

  1. Phép giao (Set Intersection - $\cap$): Trả về các Bộ chung giữa hai quan hệ.
  2. Phép nối (Join - $\bowtie$): Kết hợp các Bộ từ hai quan hệ dựa trên một điều kiện nối (Join Condition). Phép nối tự nhiên (Natural Join) là phổ biến nhất.
  3. Phép chia (Division - $\div$): Thường được sử dụng để tìm các Bộ "chứa tất cả" các giá trị của một tập hợp khác.

3.3.3. Ứng dụng

Đại số Quan hệ là cơ sở lý thuyết cho Ngôn ngữ truy vấn có cấu trúc (SQL). Mọi truy vấn SQL phức tạp đều có thể được phân rã thành một chuỗi các phép toán Đại số Quan hệ. Việc hiểu Đại số Quan hệ giúp sinh viên tối ưu hóa và hiểu sâu hơn về cách DBMS thực thi các truy vấn dữ liệu.