Các phép toán trên đại số quan hệ năm 2024

Uploaded by

Nguyễn Việt Hoàng

0% found this document useful (0 votes)

1K views

23 pages

SQL2

Copyright

© © All Rights Reserved

Available Formats

PPTX, PDF, TXT or read online from Scribd

Share this document

Did you find this document useful?

Is this content inappropriate?

0% found this document useful (0 votes)

1K views23 pages

Bài 2. Các phép toán đại số quan hệ

Uploaded by

Nguyễn Việt Hoàng

SQL2

Jump to Page

You are on page 1of 23

Search inside document

Reward Your Curiosity

Everything you want to read.

Anytime. Anywhere. Any device.

No Commitment. Cancel anytime.

Các phép toán trên đại số quan hệ năm 2024

Ở 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:

Các phép toán trên đại số quan hệ năm 2024

Chúng ta thực hiện phép kết trên hai quan hệ Paternity và Maternity, để ý 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.

Các phép toán trên đại số quan hệ năm 2024

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:

Các phép toán trên đại số quan hệ năm 2024

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).

Các phép toán trên đại số quan hệ năm 2024

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).

Một số khái niệm của đại số quan hệ được tích hợp vào các câu lệnh truy vấn của SQL, do đó việc tìm hiểu về đại số quan hệ là bệ phóng để xây dựng và thực thi các câu lệnh SQL một cách có hiệu quả.

Các phép toán trên đại số quan hệ năm 2024

Đại số quan hệ được định nghĩa bằng công thức: α = (R, O)

Trong đó:

  • R: Là các quan hệ trong CSDL hoặc kết hợp với các phép toán quan hệ
  • O: Là tập các phép toán quan hệ với đầu vào là một hoặc nhiều quan hệ để được đầu ra là một quan hệ mới – quan hệ kết quả.

    2. Các phép toán cơ bản

    Phép toán một ngôi:

    Là phép toán chỉ thao tác trên một quan hệ. Đầu vào là một quan hệ và trả về kết quả là một quan hệ mới. Phép toán một ngôi bao gồm các phép toán cơ bản:

    • Phép chọn (Selection): Được sử dụng để chọn ra một tập hợp con các bộ từ một quan hệ thoả mãn một điều kiện chọn. Kí hiệu: ϭ

    Cho quan hệ R(U) và E – biểu thức logic gồm (<, <=, >, >=, ^, , , v) à Phép chọn ϭ trên quan hệ R theo điều kiện E, kí hiệu ϭE(R) có kết quả là một tập hợp con của R, gồm các bộ t thuộc R thoã điều kiện E.

    ϬE(R) = {t / t ꞓ R ^ t(E) }

    Ví dụ: Tìm các sinh viên sinh năm 2000 của quan hệ sinh viên ta làm như sau:

    Ϭsinhvien=2000(SINHVIEN)

    • Phép chiếu (Projection): Được sử dụng để chọn một vài cột hay thuộc tính từ một bảng, ký hiệu π

    Cho quan hệ R(U), X là tập con của U, X khác rỗng à Phép chiếu π trên quan hệ R theo tập thuộc tính X, kí hiệu πX(R) có kết quả là tập hợp các bộ t thuộc R nhưng chỉ lấy giá trị trên X.

    πX(R) = { t / t ꞓ R ^ t[X] }

    πX(R) chỉ gồm các bộ phân biệt – các bộ trùng nhau trong kết quả chỉ giữ lại một.

    Ví dụ:

    1. Liệt kê mã số và tên của tất cả sinh viên:

    πMSSV, hoten(SINHVIEN)

    1. Liệt kê mã và tên của các sinh viên sinh năm 2000:

    π MSSV, hoten(ϭnamsinh=2000(SINHVIEN))

    • Phép đặt lại tên: Là phép dùng để đặt lại tên cho thuộc tính hoặc quan hệ nào đó.
    • ᵽS(A1, A2,…An)(R): Đặt lại tên quan hệ và thuộc tính
    • ᵽS(R) : Đặt lại tên quan hệ và giữ nguyên các thuộc tính

    Ví dụ:

    • ᵽS(πMSSV, hoten(SINHVIEN) )
    • ᵽS(ma, ten) (πMSSV, hoten(SINHVIEN) ) à MSSV, hoten được đặt lại là ma, ten.

    Thêm nữa, chúng ta có phép toán trên tập hợp.

    • Các phép toán trên tập hợp: Bao gồm giao, hợp, trừ - và chỉ sử dụng được khi đó là 2 quan hệ tương thích (hai quan hệ cùng bậc và các thuộc tính thư j có cùng miền giá trị)

    Phép hợp: Hợp của hai quan hệ tương thích R và S gồm các bộ thuộc ít nhất một trong hai quan hệ đã cho.

    Ví dụ: Khi dùng phép hợp để liệt kê danh sách tên sinh viên và giáo viên:

    πhoten(SINHVIEN) ᴗ πhoten(GIAOVIEN)

    Phép giao: Giao của hai quan hệ S và R gồm các bộ thuộc về cả hai quan hệ đã cho.

    Ví dụ: Tìm MSSV vừa học CSDL, vừa học JAVA

    πmssv(ϭmonhoc=’CSDL’(SINHVIEN)) ᴖ πmssv(ϭmonhoc=’JAVA’(SINHVIEN))

    Phép trừ (Hiệu): Của hai quan hệ tương thích R và S, kí hiệu R \ S gồm các bộ chỉ thuộc R không thuộc S.

    Ví dụ: R \ S theo dữ liệu trong bảng sau:

    Các phép toán trên đại số quan hệ năm 2024

    3. Một số phép toán khác

    * Các phép toán kết nối Theta:

    Cho quan hệ R(U) và S(V)

    θ là một trong các phép toán so sánh : <, <= , >, ≥, =, ≠

    Phép kết nối theo điều kiện θ giữa quan hệ R theo thuộc tính A ꞓ U và quan hệ S theo thuộc tính B ꞓ V - là một quan hệ gồm các bộ có dạng (u, v), trong đó u ꞓ R, v ꞓ S, giá trị của chúng trên A và B thỏa θ.

    Chú ý rằng phép toán này thực hiện được khi θ giữa A và B thực hiện được.

    * Phép kết nối tự nhiên: Phép kết nối tự nhiên trên 2 quan hệ R(U) và S(V), ký hiệu R*S, là phép kết nối θ dựa trên phép so sánh = của 2 thuộc tính cùng tên và cùng miền giá trị của 2 quan hệ R và S, một trong 2 thuộc tính cùng tên này sẽ bị loại bỏ qua phép chiếu.

    * Phép kết nối mở rộng: Cho phép thực hiện nối kết tự nhiên trên các giá trị null của thuộc tính dùng nối kết. Phép kết nối này gồm mở rộng trái, mở rộng phải và mở rộng hai bên.

    * Phép chia: Phép chia quan hệ R cho S, ký hiệu R/S, cho kết quả là một quan hệ gồm các bộ t có n-m thuộc tính nhận giá trị trên U\V thuộc tính sao cho mỗi bộ v ꞓ S thì bộ (t,v) ꞓ R. . Với n, m lần lượt là bậc của R(U) và S(V).

    * Tích Descartes: Phép tích Descartes của quan hệ R và S, ký hiệu RxS, là một quan hệ có |R|.|S| bộ có dạng (u,v), mỗi bộ có n + m thuộc tính, u ꞓ R và v ꞓ S. Với n, m lần lượt là bậc của R(U) và S(V).

    * Các hàm kết tập: là các hàm có đầu vào là một tập các giá trị của thuộc tính, đầu ra là một giá trị duy nhất. Với quan hệ R(U) và thuộc tính A ꞓ U, ta có các hàm kết tập sau:

    • AGVA(R) : tính giá trị trung bình của thuộc tính A
    • MINA(R) : tìm giá trị nhỏ nhất của thuộc tính A
    • MAXA­(R) : tìm giá trị lớn nhất của thuộc tính A
    • SUMA(R) : tính tổng các giá trị của thuộc tính A
    • COUNTA(R) : đếm số các giá trị của thuộc tính A

      Tổng kết

      Lượng kiến thức của phần này có vẻ khó hiểu một tý, nhưng nó là thành phần nền tảng quan trọng đã được tích hợp trong các hệ quản trị CSDL.

      Nắm vững đại số quan hệ giúp bạn tính toán, ước lượng được độ phức tạp từ đó tối ưu được các truy vấn SQL, lĩnh hội SQL một cách nhanh chóng và chuyên nghiệp hơn.

      Nếu bạn có thể thành thạo dùng đại số quan hệ để kiểm tra tính toàn vẹn của CSDL thì việc thực hiện truy vấn SQL của bạn cũng ít nan giải hơn bảy phần.

      \> Thông thường, để bắt đầu HỌC LẬP TRÌNH và ở mức Junior thì bạn có thể bỏ qua bài này :D. Khi nào bạn đã là lập trình viên rồi, cần tối ưu truy vấn (chuyện sau này) thì có thể xem lại sau.

      ---

      HỌC VIỆN ĐÀO TẠO CNTT NIIT - ICT HÀ NỘI

      Học Lập trình chất lượng cao (Since 2002). Học làm Lập trình viên. Hành động ngay!

      Đc: Tầng 3, 25T2, N05, Nguyễn Thị Thập, Cầu Giấy, Hà Nội

      SĐT: 02435574074 - 0914939543

      Email: [email protected]

      Fanpage: https://facebook.com/NIIT.ICT/

      niit

      niithanoi

      niiticthanoi

      hoclaptrinh

      khoahoclaptrinh

      hoclaptrinhjava

      hoclaptrinhphp

      java

      php

      python