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

Phép kết trong đại số quan hệ

0 0 39

Người đăng: Lâm

Theo Viblo Asia

Ở phần trước mình đã giới thiệu với các bạn các phép toán tập hợp trong đại số quan hệ. Đó đều là các phép toán cơ bản nhưng cũng là nền tảng để thực hiện các phép toán khác phức tạp hơn. Khi làm việc với một cơ sở dữ liệu, việc kết hợp quan hệ với nhau để đưa ra kết quả đắp ứng một yêu cầu nào đó không phải lúc nào cũng là một việc dễ dàng. Tuy nhiên trong nhiều trường hợp kết quả trả về của việc kết hợp đó lại gây nên sự bùng nổ về mặt tổ hợp và tồn tại những bộ không có một ý nghĩa rõ ràng. Vì vậy, người ta đưa ra các phép toán lựa chọn nhằm khắc phục vấn đề trên. Các phép toán lựa chọn trong đại số quan hệ bao gồm: Phép chọn (selection), phép chiếu (projection), phép chia (set division) và phép kết (join). Trong các phép toán này thì phép kết là phép toán được sử dụng nhiều nhất và có phần phức tạp hơn cả. Nó cũng là nền tảng toán học khi thực hiện các phép join trong SQL. Với ý nghĩa quan trọng như vậy nên mình xin giành riêng bài viết này để đi sâu về việc tìm hiểu phép toán trên. Phép kết thể hiện ở 2 dạng chính: Kết tự nhiên (natural join) và kết theta (theta join).

Kết tự nhiên

Khi thực hiện phép kết tự nhiên, chúng ta sẽ thu được một quan hệ kết quả bao gồm các bộ có một hay nhiều thuộc tính có giá trị là giá trị chung tương ứng trong hai bộ thuộc hai quan hệ tham gia. Chúng ta cùng xem qua ví dụ sau:

Chúng ta thực hiện phép kết trên hai quan hệ PaternityMaternity, để ý rằng hai quan hệ có chung một thuộc tính là "Child", phép kết được thực hiện bằng việc so sánh các giá trị thông qua thuộc tính này. Vậy trong trường hợp hai quan hệ không có chung thuộc tính nào thì sao? Khi đó phép kết sẽ trở thành phép tích quen thuộc mà chúng ta đã được tìm hiểu trong phần trước.

Một biến thể nữa của phép kết tự nhiên khi đảm bảo sự xuất hiện của tất cả các bộ của một toán hạng hoặc của cả hai toán hạng trong quan hệ kết quả. Hãy cùng xem qua ví dụ sau đây để hiểu rõ hơn:

Chúng ta thấy sự tương đồng giữa các phép toán trên với các phép join trong SQL. Khi thực hiện phép kết trái (left join), toàn bộ các bộ thuộc quan hệ đứng bên trái phép toán được giữ lại bao gồm cả những bộ không thỏa mãn điều kiện kết. Tương tự đối với phép kết phải (right join) và phép kết toàn phần (full join)

Kết theta

Điểm khác nhau giữa phép kết tự nhiên và phép kết theta là phép kết theta chỉ rõ các thuộc tính trên các quan hệ cùng với các phép toán sẽ được sử dụng để làm điều kiện kết. Các phép toán có thể sử dụng giữa các thuộc tính đó là =, >, <, >=, <=, ...Trong trường hợp là dấu “=” ta gọi đó là phép kết bằng (equi-join).

Kết luận

Đến đây chúng ta có thể thấy bản chất của phép kết là phép tích khi kết hợp thêm các điều kiện lọc nhằm loại bỏ đi những bộ không cần thiết trong quan hệ kết quả. Trong phần sau chúng ta sẽ đi tìm hiểu nốt các phép toán trong bộ các phép toán lựa chọn trong đại số quan hệ đó là Phép chọn (selection), phép chiếu (projection), phép chia (set division).

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 525

- 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 397

- 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 738

- 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 358

- 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 450

- 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 433