DBMS - Đại số Relational

Xin chào, những pháp sư cơ sở dữ liệu tương lai! Tôi rất vui mừng được hướng dẫn các bạn trên hành trình đầy thú vị qua thế giới kỳ diệu của Đại số Relational. Là người đã dạy khoa học máy tính trong nhiều năm hơn tôi muốn thừa nhận (hãy chỉ nói rằng tôi nhớ khi đĩa mềm thực sự柔软), tôi có thể đảm bảo với các bạn rằng việc thành thạo chủ đề này sẽ giống như có siêu năng lực trong lĩnh vực cơ sở dữ liệu. Vậy, hãy cùng lặn vào!

DBMS - Relational Algebra

Đại số Relational

Hãy tưởng tượng bạn đang sắp xếp bộ sưu tập lớn các nhân vật hành động siêu anh hùng (hoặc có lẽ đó chỉ là tôi). Đại số Relational giống như có một bộ siêu năng lực đặc biệt cho phép bạn manipulatie và truy vấn bộ sưu tập của mình theo những cách vô cùng hữu ích. Nó là nền tảng của cách chúng ta tương tác với các cơ sở dữ liệu quan hệ, cung cấp một khung lý thuyết cho các hoạt động trên các mối quan hệ (bảng).

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

Trước khi chúng ta bắt đầu sử dụng các ký hiệu sang trọng, hãy thiết lập một số quy tắc cơ bản:

  1. Các mối quan hệ là các tập hợp các bộ (hàng)
  2. Các thuộc tính là các tiêu đề cột
  3. Các hoạt động tạo ra các mối quan hệ mới jako kết quả

Bây giờ, hãy nhìn vào các siêu năng lực (hoạt động) chúng ta có trong tay:

Hoạt động Ký hiệu Mô tả
Chọn σ Lọc các hàng dựa trên một điều kiện
Chiếu Chọn các cột cụ thể
Hợp Kết hợp hai mối quan hệ tương thích
Trừ Loại bỏ các bộ từ một mối quan hệ xuất hiện trong mối quan hệ khác
Tích笛卡尔 Χ Kết hợp mỗi hàng của một mối quan hệ với mỗi hàng của mối quan hệ khác
Đổi tên ρ Đổi tên các thuộc tính hoặc mối quan hệ

Hoạt động Chọn (σ)

Hoạt động chọn giống như có khả năng nhìn xuyên qua cơ sở dữ liệu của bạn. Nó cho phép bạn lọc các hàng dựa trên một điều kiện cụ thể.

Cú pháp: σ<điều kiện>(mối quan hệ)

Giả sử chúng ta có một bảng叫做 Heroes:

| Name   | Power        | Age |
|--------|--------------|-----|
| Bruce  | Intelligence | 35  |
| Clark  | Flight       | 30  |
| Diana  | Strength     | 5000|
| Barry  | Speed        | 28  |

Nếu chúng ta muốn tìm tất cả các siêu anh hùng dưới 100 tuổi:

σ Age < 100 (Heroes)

Điều này sẽ cho chúng ta:

| Name   | Power        | Age |
|--------|--------------|-----|
| Bruce  | Intelligence | 35  |
| Clark  | Flight       | 30  |
| Barry  | Speed        | 28  |

Thấy không? Chúng ta đã lọc bỏ Diana, người phụ nữ vô thời gian của chúng ta!

Hoạt động Chiếu (∏)

Hoạt động chiếu giống như có một这台缩小射线。 Nó cho phép bạn chọn các cột cụ thể, giảm chiều rộng của mối quan hệ của bạn.

Cú pháp: ∏<danh sách thuộc tính>(mối quan hệ)

Sử dụng bảng Heroes, nếu chúng ta chỉ muốn tên và siêu năng lực:

∏ Name, Power (Heroes)

Kết quả:

| Name   | Power        |
|--------|--------------|
| Bruce  | Intelligence |
| Clark  | Flight       |
| Diana  | Strength     |
| Barry  | Speed        |

Chúng ta đã thu nhỏ bảng của mình, tập trung chỉ vào những gì chúng ta cần!

Hoạt động Hợp (∪)

Hoạt động hợp giống như fusion trong Dragon Ball Z - nó kết hợp hai mối quan hệ tương thích.

Cú pháp: Mối quan hệ1 ∪ Mối quan hệ2

Giả sử chúng ta có một bảng khác gọi là Sidekicks:

| Name   | Power   | Age |
|--------|---------|-----|
| Robin  | Acrobat | 22  |
| Jimmy  | None    | 25  |

Chúng ta có thể kết hợp HeroesSidekicks:

Heroes ∪ Sidekicks

Kết quả:

| Name   | Power        | Age |
|--------|--------------|-----|
| Bruce  | Intelligence | 35  |
| Clark  | Flight       | 30  |
| Diana  | Strength     | 5000|
| Barry  | Speed        | 28  |
| Robin  | Acrobat      | 22  |
| Jimmy  | None         | 25  |

Bây giờ chúng ta có một đội siêu anh hùng!

Hoạt động Trừ (−)

Hoạt động trừ giống như có một tia phân hủy. Nó loại bỏ các bộ từ một mối quan hệ mà xuất hiện trong mối quan hệ khác.

Cú pháp: Mối quan hệ1 − Mối quan hệ2

Nếu chúng ta muốn tìm các siêu anh hùng không phải là các người bạn đồng hành:

Heroes − Sidekicks

Điều này sẽ cho chúng ta bảng Heroes ban đầu, vì không có ai trong Sidekicks.

Hoạt động Tích笛卡尔 (Χ)

Hoạt động tích笛卡尔 giống như tạo ra các vũ trụ thay thế nơi mỗi siêu anh hùng gặp mỗi người bạn đồng hành.

Cú pháp: Mối quan hệ1 Χ Mối quan hệ2

Heroes Χ Sidekicks

Điều này sẽ kết quả trong một bảng với mọi sự kết hợp có thể của siêu anh hùng và người bạn đồng hành. Đây là một bảng lớn, vì vậy tôi sẽ không hiển thị tất cả, nhưng đây là một phần:

| HName  | HPower       | HAge | SName | SPower  | SAge |
|--------|--------------|------|-------|---------|------|
| Bruce  | Intelligence | 35   | Robin | Acrobat | 22   |
| Bruce  | Intelligence | 35   | Jimmy | None    | 25   |
| Clark  | Flight       | 30   | Robin | Acrobat | 22   |
| Clark  | Flight       | 30   | Jimmy | None    | 25   |
...

Hoạt động Đổi tên (ρ)

Hoạt động đổi tên giống như có khả năng thay đổi thực tế. Nó cho phép bạn thay đổi tên các thuộc tính hoặc mối quan hệ.

Cú pháp: ρ tên_mới (tên_cũ)

Nếu chúng ta muốn đổi tên thuộc tính Power thành Superpower:

ρ Superpower←Power (Heroes)

Kết quả:

| Name   | Superpower   | Age |
|--------|--------------|-----|
| Bruce  | Intelligence | 35  |
| Clark  | Flight       | 30  |
| Diana  | Strength     | 5000|
| Barry  | Speed        | 28  |

Đại số Relational

Bây giờ, để kết thúc, hãy cùng nói qua về Đại số Relational. Nếu Đại số Relational là về "cách" lấy dữ liệu, thì Đại số Relational là về "dữ liệu gì" để lấy. Đây là một cách宣言 để xác định truy vấn cơ sở dữ liệu.

Có hai loại:

  1. Đại số Tuple Relational (TRC)
  2. Đại số Domain Relational (DRC)

Ví dụ, trong TRC, để tìm tất cả các siêu anh hùng có "Flight" là siêu năng lực của họ:

{H | H ∈ Heroes ∧ H.Power = "Flight"}

Điều này có nghĩa là "Cho tôi tất cả các bộ H từ Heroes nơi H's Power là Flight."

Và thế là xong, các học trò trẻ! Bạn vừa nâng cấp kỹ năng cơ sở dữ liệu của mình. Nhớ rằng, với quyền lực lớn đi kèm với trách nhiệm lớn - sử dụng các hoạt động đại số quan hệ một cách khôn ngoan, và bạn sẽ truy vấn cơ sở dữ liệu như một chuyên gia trong thời gian không lâu. Bây giờ, hãy đi tổ chức dữ liệu của bạn với sự chính xác của một siêu anh hùng thực sự!

Credits: Image by storyset