ĐẠI SỐ QUAN HỆ

Ngày đăng: 11/11/2020   -    Cập nhật: 11/11/2020

1. Đại số quan hệ là gì?


Đại số quan hệ là ngôn ngữ hình thức cho mô hình quan hệ được phát triển trước SQL. Đại số quan hệ còn có thể được hiểu là tập các thao tác trên mô hình quan hệ, được sử dụng như là cơ sở cho việc cài đặt và tối ưu các câu lệnh truy vấn.


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



Đại số quan hệ trong SQL


Đạ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ụ:


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


 
πMSSV, hoten(SINHVIEN)


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

 
π MSSV, hotennamsinh=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 đó.


Trong đó: 

 
  • 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ụ:


  • SMSSV, 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


πmssvmonhoc=’CSDL’(SINHVIEN))  ᴖ  πmssvmonhoc=’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:
 

Minh họa phép trừ trong CSDL

 

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: hello@niithanoi.edu.vn
Fanpage: https://facebook.com/NIIT.ICT/
 
#niit #niithanoi #niiticthanoi #hoclaptrinh #khoahoclaptrinh #hoclaptrinhjava #hoclaptrinhphp #java #php #python
Bình luận Facebook
Đăng ký tư vấn
Nhân viên gọi điện tư vấn miễn phí sau khi đăng ký
Được cập nhật các ưu đãi sớm nhất
Hotline: 0383180086
Tên không được để trống
Số điện thoại không được để trống
Email không được để trống
Hãy đăng ký để nhận những thông tin mới nhất về học bổng mới nhất tại NIIT - ICT Hà Nội
top
Đóng lại Đăng ký học tại NIIT - ICT Hà Nội
6260+ học viên đã theo học tại NIIT - ICT Hà Nội và có việc làm tốt trong ngành lập trình. Nắm lấy cơ hội ngay hôm nay!
Chọn khóa học
  • KHÓA HỌC LẬP TRÌNH FRONT END VỚI REACT.JS
  • KHÓA HỌC LẬP TRÌNH PHP WEB
  • Khóa học PHP Full stack [2023] cho người mới bắt đầu
  • Khóa học BIG DATA với Hadoop và Spark
  • Khóa học Lập trình Android tại Hà Nội
  • [Tuyển sinh 2023] Lập trình viên Quốc tế DigiNxt
  • Khóa học Tiền lương & Phúc lợi (C&B Excel) tại Hà Nội
  • LẬP TRÌNH GAME
    • Khóa học Lập trình Game Unity
  • LẬP TRÌNH WEB FRONT END
    • KHÓA HỌC PYTHON HƯỚNG ĐỐI TƯỢNG
    • KHÓA HỌC ANGULAR & TYPESCRIPT (FRONT END)
  • LẬP TRÌNH WEB BACK END
    • LẬP TRÌNH JAVA WEB VỚI FRAME WORK
    • Lập trình Web với Django
    • Lập trình PHP với Laravel Framework
  • CHƯƠNG TRÌNH ĐÀO TẠO ỨNG DỤNG CÔNG NGHỆ
    • Khóa học Tiền lương & Phúc lợi (C&B Excel) tại TP HCM
  • LẬP TRÌNH WEB FULL STACK
    • Khóa học Java Full stack (IJFD)
  • LẬP TRÌNH MOBILE
    • FRONT-END VỚI REACTJS VÀ REACT NATIVE
    • Lập trình Android Nâng cao
  • ĐÀO TẠO CHO DOANH NGHIỆP
    • KHÓA HỌC BUSINESS ANALYSIC TỪ CƠ BẢN ĐẾN NÂNG CAO 2023
    • Khóa học Magento: Làm chủ CMS TMĐT lớn nhất
    • Khóa học IOT: Xây dựng Sản phẩm IOT với Raspberry Pi
    • Khóa học Automation Testing Chuyên nghiệp
  • KHÓA HỌC DỰ ÁN
    • Học sử dụng bộ Office: Word, Excel, Power Point, Mail chuyên nghiệp
  • KHÓA HỌC KHÁC
    • VBA Excel Toàn Tập (Cơ Bản - Nâng Cao)
    • VBA Excel Nâng cao
    • Khóa học JMeter: Performance Testing
    • Khóa học Tester đạt chuẩn Quốc tế ISTQB Foundation Level
    • Khoá Học Tester đạt chuẩn quốc tế ISTQB Advanced Level
Bạn chưa chọn khóa học cần đăng ký
Tên không được để trống
Số điện thoại không được để trống
Email không được để trống
Đăng ký học thành công!
Cảm ơn bạn đã đăng ký học tại NIIT - ICT HÀ NỘI!