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

Phép chọn, phép chiếu và phép chia trong Đại số quan hệ

0 0 56

Người đăng: Lâm

Theo Viblo Asia

Trong phần trước chúng ta đã đi tìm hiểu về phép toán quan trọng và được sử dụng nhiều nhất trong Đại số quan hệ đó là phép kết. Ngày hôm nay chúng ta sẽ đi tìm hiểu các phép toán lựa chọn còn lại trong Đại số quan hệ đó là Phép chọn (selection), phép chiếu (projection) và phép chia (divsion). Đây là những phép toán hỗ trợ giúp loại bỏ những bộ hoặc những thuộc tính không cần thiết trong một quan hệ hoặc từ kết quả của việc kết hợp nhiều phép toán khác giữa các quan hệ với nhau.

Phép chọn

Phép chọn được sử dụng khi muốn lấy ra những bộ trong một quan hệ thỏa mãn một điều kiện nào đó. Hãy cũng xem qua ví dụ sau:

Khi thực hiện phép chọn trên quan hệ Employees với điều kiện {Age < 30, Salary > 4000} ta được một quan hệ mới có cùng bậc với quan hệ Employees nhưng số bộ đã bị giảm đi.

Phép chiếu

Phép chọn giúp ta chọn ra hoặc loại bỏ đi những bộ không thoản mãn một yêu cầu nào đó. Vậy khi muốn loại bỏ đi những thuộc tính không cần thiết thì phải làm thế nào. Phép chiếu sẽ giúp chúng ta làm điều đó:

Khi chiếu quan hệ Employees lên hai thuộc tính {Surname, FirstName} ta được một quan hệ mới có cùng số bộ với quan hệ Employees nhưng có bậc nhỏ hơn. Dễ dàng nhận thấy điểm khác nhau giữa phép chọnphép chiếu:

Phép chọn thao tác trên quan hệ theo chiều "dọc", ngược lại, phép chiếu thao tác trên quan hệ theo chiều "ngang".

Phép chia

Nhắc lại một chút về phép tích mà chúng ta đã được tìm hiểu trong phần đầu tiên của series. Dưới đây là ví dụ khi thực hiện phép tích giữa hai quan hệ EmployeesProjects:

Giống như trong toán học đại số, khi ta lấy quan hệ kết quả khi thực hiện phép tích giữa EmployeesProjects (Results = Employeess x Projects) để chia cho một trong hai quan hệ ban đầu thì kết quả sẽ là quan hệ còn lại (Results -:- Employees = Projects). Vậy các bước thực hiện để có được kết quả đó như thế nào?

Đầu tiên từ quan hệ Results chúng ta lấy ra tất cả những bộ có cặp thuộc tính {Employee, Project} khớp với cặp thuộc tính tương ứng trong quan hệ Employees [{Smith, A}, {Black, A}, {Black, B}]. Sau đó chúng ta sử dụng phép chiếu lên quan hệ vừa mới thu được để loại bỏ đi các thuộc tính trùng với quan hệ Employees. Kết quả ta sẽ thu được một quan hệ với các bộ là các cặp thuộc tính {Code, Name} tương ứng như sau: [{A, Venus}, {A, Venus}, {A, Venus}, {B, Mars}, {B, Mars}, {B, Mars}]. Tiếp tục loại bỏ đi những bộ trùng nhau ta được [{A, Venus}, {B, Mars}]. Đây chính xác là những bộ có trong quan hệ Projects.

Vậy bản chất của phép chia là gì? Đó là việc thực hiện đồng thời phép kết (join) và phép chiếu (projection). Cụ thể trong ví dụ trên chúng ta có thể thực hiện kết bằng giữa ResultsEmployees trên các thuộc tính của Employee, sau đó là thực hiện phép chiếu lên các thuộc tính của Results mà không thuộc Employess.

Kết luận

Như vậy là chúng ta đã hoàn thành xong việc tìm hiểu về các phép toán cơ bản nhưng quan trọng nhất trong Đại số quan hệ. Đến đây chắc hẳn chúng ta cũng đã nhận ra những nét tương đồng giữa các phép toán đó với các câu truy vấn trong SQL. Việc tìm hiểu về Đại số quan hệ giúp ta có cái nhìn tổng quan về cách thức hoạt động của các ngôn ngữ truy vấn nói chung và SQL nói riêng từ đó góp phần hiệu quả khi thao tác trên cơ sở dữ liệu.

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 500

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

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

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

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

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