- vừa được xem lúc

Đại số quan hệ và các phép toán tập hợp

0 0 24

Người đăng: Lâm

Theo Viblo Asia

Đại số quan hệ (Relational algebra) là một bộ các toán tử và quy tắc được sử dụng để thao tác trên các quan hệ và kết quả trả về là một quan hệ mới. Sau khi Edgar F. Codd đưa ra mô hình dữ liệu quan hệ vào năm 1970, đại số quan hệ được xem là nền tảng cho các ngôn ngữ truy vấn dữ liệu nói chung và SQL nói riêng. SQL cung cấp cú pháp đơn giản nhưng mạnh mẽ, giúp người dùng có được các kết quả mong muốn mà không cần nêu rõ cách thức để đạt được điều đó như thế nào. Tuy nhiên, với những vấn đề và yêu cầu mang tính phức tạp, việc viết một câu truy vấn chính xác và hiệu quả đòi hỏi phải có hiểu biết về cấu trúc dữ liệu và cách thức hoạt động của ngôn ngữ truy vấn. Vì vậy nắm vững các kiến thức về đại số quan hệ sẽ là nền tảng để việc tìm hiểu về SQL trở nên dễ dàng hơn. Các phép toán trong đại số quan hệ có thể được chia thành ba loại: Phép toán tập hợp, phép chọncác phép toán mở rộng. Trong bài viết này chúng ta sẽ đi tìm hiểu về các phép toán tập hợp, đây là các phép toán cơ bản nhất cũng là quan trọng nhất của đại số quan hệ. Những phép toán tập hợp bao gồm: Phép hội (set union), phép giao (set intersection), phép hiệu (set defference) và phép tích (castesian product)

1. Phép hội

Trước tiên chúng ta hãy cùng xem qua ví dụ sau:

Qua ví dụ trên chúng ta có thể thấy khi hội hai quan hệ sẽ được một quan hệ mới có các bộ chỉ thuộc một quan hệ. Các bộ trùng nhau sẽ bị loại đi, trong trường hợp này là bộ {Number: 9824, Surname: Darkes, Age: 38}. Chúng ta cũng có thể biểu diễn phép hội qua biểu thức sau:

2. Phép giao

Chúng ta thực hiện phép giao trên hai quan hệ Graduates và Managers

Kết quả trả về là một quan hệ mới chỉ bao gồm các bộ đồng thời thuộc hai qua hệ ban đầu. Dưới đây là biểu thức biểu diễn phép giao giữa hai quan hệ:

3. Phép hiệu

Phép hiệu trong đại số quan hệ cũng có nét tương đồng với phép hiệu đại số thông thường. Chúng ta hãy cùng xem qua ví dụ sau đây đển hiểu rõ hơn.

Quan hệ kết quả trong trường hợp trên chỉ có một bộ duy nhất. Đây cũng là bộ duy nhất thuộc quan hệ Graduates mà không thuộc quan hệ Managers. Vậy tổng quát chúng ta có thể định nghĩa phép hiệu của hai quan hệ qua biểu thức:

Phép hiệu của R và S sẽ cho kết quả là một quan hệ bao gồm các bộ chỉ thuộc R mà không thuộc S.

4. Phép tích

Bây giờ trên hai quan hệ Employees và Projects, chúng ta hãy cùng xem kết quả trả về khi thực hiện phép tích giữa hai quan hệ đó là gì.

Kết quả chúng ta nhận được là một quan hệ mới có số bộ bằng tích số giữa số bộ của quan hệ Employees và số bộ của Projects trong khi lược đồ của nó lại là tổ hợp của hai lược đồ ban đầu.

Đây là điều khác biệt giữa phép tích và các phép toán chúng ta đã được tìm hiểu ở trên. Phép hội, phép giao và phép hiệu chỉ thực hiện được khi hai quan hệ đầu vào có cùng lược đồ và kết quả cũng là một quan hệ có lược đồ giống với lược đồ của hai quan hệ ban đầu. Như vậy có thể thấy, phép tích sẽ làm phát sinh tổ hợp cả về “hai chiều”, điều đó làm nảy sinh trường hợp tồn tại những bộ trong quan hệ kết quả không mang nhiều ý nghĩa. Do đó phép tích thường đi kèm với một điều kiện nào đó để loại trừ đi những kết quả không mong muốn.

Kết luận

Các phép toán tổ hợp thể hiện mối tương quan giữa các quan hệ với nhau. Trong các ngôn ngữ truy vấn, trong những trường hợp để có được kết quả cần có sự kết hợp giữa các bảng với nhau thì các phép toán tổ hợp sẽ được thực hiện trước sau đó các phép toán chọn sẽ được áp dụng để loại bỏ các kết quả không thỏa mãn. Phần sau chúng ta sẽ đi sâu vào các phép toán chọn cũng như tìm hiểu sự tương đồng giữa chúng và các từ khóa trong SQL.

Bình luận

Bài viết tương tự

- vừa được xem lúc

Giới thiệu Typescript - Sự khác nhau giữa Typescript và Javascript

Typescript là gì. TypeScript là một ngôn ngữ giúp cung cấp quy mô lớn hơn so với JavaScript.

0 0 528

- vừa được xem lúc

Cài đặt WSL / WSL2 trên Windows 10 để code như trên Ubuntu

Sau vài ba năm mình chuyển qua code trên Ubuntu thì thật không thể phủ nhận rằng mình đã yêu em nó. Cá nhân mình sử dụng Ubuntu để code web thì thật là tuyệt vời.

0 0 409

- vừa được xem lúc

Đặt tên commit message sao cho "tình nghĩa anh em chắc chắn bền lâu"????

. Lời mở đầu. .

1 1 773

- vừa được xem lúc

Tìm hiểu về Resource Controller trong Laravel

Giới thiệu. Trong laravel, việc sử dụng các route post, get, group để gọi đến 1 action của Controller đã là quá quen đối với các bạn sử dụng framework này.

0 0 372

- vừa được xem lúc

Phân quyền đơn giản với package Laravel permission

Như các bạn đã biết, phân quyền trong một ứng dụng là một phần không thể thiếu trong việc phát triển phần mềm, dù đó là ứng dụng web hay là mobile. Vậy nên, hôm nay mình sẽ giới thiệu một package có thể giúp các bạn phân quyền nhanh và đơn giản trong một website được viết bằng PHP với framework là L

0 0 461

- vừa được xem lúc

Bạn đã biết các tips này khi làm việc với chuỗi trong JavaScript chưa ?

Hi xin chào các bạn, tiếp tục chuỗi chủ đề về cái thằng JavaScript này, hôm nay mình sẽ giới thiệu cho các bạn một số thủ thuật hay ho khi làm việc với chuỗi trong JavaScript có thể bạn đã hoặc chưa từng dùng. Cụ thể như nào thì hãy cùng mình tìm hiểu trong bài viết này nhé (go).

0 0 436