Bài tập đại số quan hệ có lời giải

Academia.edu no longer supports Internet Explorer.

To browse Academia.edu and the wider internet faster and more securely, please take a few seconds to upgrade your browser.

Mục Lục

  • 1. Đại số quan hệ là gì?
  • 2. Các phép toán cơ bản
  • 3. Một số phép toán khác
  • Tổng kết

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



Bài tập đại số quan hệ có lời giải



Đạ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, 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 đó.



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


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

Bài tập đại số quan hệ có lời giải

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ÌNHvà ở 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:

Website:https://niithanoi.edu.vn

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

#niit #niithanoi #niiticthanoi #hoclaptrinh #khoahoclaptrinh #hoclaptrinhjava #hoclaptrinhphp #java #php #python