Phép kết nối bằng (EQUI JOIN)

Một phần của tài liệu Bài giảng tin học ứng dụng dành cho sinh viên ngành kinh tế (Trang 33 - 35)

Ví dụ Xét truy vấn sau đây: hãy cho biết tên khoa ứng với từng sinh viên.

Truy vấn trên có thể thực hiện được dùng phép tích Descartes, sau đó áp dụng thêm một một phép chọn dựa vào điều kiện MaKH = MaKhoa.

MaSV HoSV TenSV NgaySinh GioiTinh HocBong MaKH

5202 Lê Cường 21/5/1 1 Nam 200 KT 5207 Nguyễn Sơn 17/7/1 0 Nữ 800 KT 520 Ngô Hòa 16/8/1 0 Nam 200 CN 5306 Huỳnh Nga 22/3/1 2 Nữ 400 CN 5308 Phạm Trang 12/7/1 0 Nữ 800 CN

MaKhoa TenKhoa

CN Công nghệ Thông tin KT Kinh tế

MaSV HoSV TenSV NgaySinh GioiTinh HocBong MaKH MaKhoa TenKhoa

5202 Lê Cường 21/5/1 1 Nam 200 KT CN Công nghệ Thông tin 5202 Lê Cường 21/5/1 1 Nam 200 KT KT Kinh tế

5207 Nguyễn Sơn 17/7/1 0 Nữ 800 KT CN Công nghệ Thông tin 5207 Nguyễn Sơn 17/7/1 0 Nữ 800 KT KT Kinh tế

520 Ngô Hòa 16/8/1 0 Nam 200 CN CN Công nghệ Thông tin 520 Ngô Hòa 16/8/1 0 Nam 200 CN KT Kinh tế

5306 Huỳnh Nga 22/3/1 2 Nữ 400 CN CN Công nghệ Thông tin 5306 Huỳnh Nga 22/3/1 2 Nữ 400 CN KT Kinh tế

5308 Phạm Trang 12/7/1 0 Nữ 800 CN CN Công nghệ Thông tin 5308 Phạm Trang 12/7/1 0 Nữ 800 CN KT Kinh tế

2

Cách thực hiện một tích Descartes và sau đó là một phép chọn có điều kiện bằng như vậy được gọi là phép kết nối bằng.

Cú pháp:

QuanHe1 ⋈điều-kiện-bằng QuanHe2 Ví dụ trên được viết lại là:

SinhVien ⋈MaKH = MaKhoa Khoa

Trong trường hợp các thuộc tính để kết nối bằng ở cả hai quan hệ giống tên nhau thì phép kết nối bằng được gọi là phép kết nối tự nhiên. Lúc này chỉ cần viết phép toán kết nối mà không cần viết danh sách điều-kiện-bằng đi kèm.

Ví dụ Hãy cho biết tên môn học ứng với các lớp học LopHoc ⋈ MonHoc

(ngầm hiểu điều kiện bằng là thuộc tính MaMH ở cả hai quan hệ) Kết quả:

Trong quan hệ kết quả, do có 2 thuộc tính MaMH nên có hai cách xử lý:

 Chỉ giữ lại một thuộc tính MaMH

 Dùng tên quan hệ để phân biệt: LopHoc.MaMH và MonHoc.MaMH

MaSV HoSV TenSV NgaySinh GioiTinh HocBong MaKH MaKhoa TenKhoa

5202 Lê Cường 21/5/1 1 Nam 200 KT CN Công nghệ Thông tin 5202 Lê Cường 21/5/1 1 Nam 200 KT KT Kinh tế

5207 Nguyễn Sơn 17/7/1 0 Nữ 800 KT CN Công nghệ Thông tin 5207 Nguyễn Sơn 17/7/1 0 Nữ 800 KT KT Kinh tế

520 Ngô Hòa 16/8/1 0 Nam 200 CN CN Công nghệ Thông tin 520 Ngô Hòa 16/8/1 0 Nam 200 CN KT Kinh tế

5306 Huỳnh Nga 22/3/1 2 Nữ 400 CN CN Công nghệ Thông tin 5306 Huỳnh Nga 22/3/1 2 Nữ 400 CN KT Kinh tế

5308 Phạm Trang 12/7/1 0 Nữ 800 CN CN Công nghệ Thông tin 5308 Phạm Trang 12/7/1 0 Nữ 800 CN KT Kinh tế

MaSV HoSV TenSV NgaySinh GioiTinh HocBong MaKH MaKhoa TenKhoa

5202 Lê Cường 21/5/1 1 Nam 200 KT KT Kinh tế 5207 Nguyễn Sơn 17/7/1 0 Nữ 800 KT KT Kinh tế

520 Ngô Hòa 16/8/1 0 Nam 200 CN CN Công nghệ Thông tin 5306 Huỳnh Nga 22/3/1 2 Nữ 400 CN CN Công nghệ Thông tin 5308 Phạm Trang 12/7/1 0 Nữ 800 CN CN Công nghệ Thông tin

MaLop MaMH HocKy NamHoc GiaoVien MaMH TenMH SoTinChi

01 306 1 2010 Tuấn 306 Tin học cơ sở 2 02 403 1 2010 Nga 403 Kế toán tài chính 3 03 306 2 2011 Sơn 306 Tin học cơ sở 2 04 207 1 2010 Nam 207 Cấu trúc dữ liệu 3

2

Ví dụ Hãy cho biết MaSV, HoSV, TenSV các sinh viên có theo học những lớp do giáo viên ‘Tuấn’ giảng dạy:

MaSV, HoSV, TenSV (GiaoVien=’Tuấn’[(LopHoc ⋈ KetQua) ⋈ SinhVien])

Hoặc:

 MaSV, HoSV, TenSV (GiaoVien=’Tuấn’[LopHoc ⋈ (KetQua ⋈ SinhVien)])

Hoặc:

MaSV, HoSV, TenSV ([ GiaoVien=’Tuấn’(LopHoc)] ⋈ KetQua ⋈ SinhVien)

Tuy nhiên, viết như bên dưới là không hợp lệ:

MaSV, HoSV, TenSV (GiaoVien=’Tuấn’ [LopHoc ⋈ SinhVien⋈ KetQua])

vì giữa LopHoc và SinhVien không có thuộc tính kết nối.

Ví dụ Hãy cho biết TenMH, SoTinChi, Diem của các môn học mà sinh viên có MaSV = ‘ 2 2’ đã học:

TenMH, SoTinChi, Diem ([MaSV=’5202’ (KetQua ⋈ LopHoc ⋈ MonHoc))

Một phần của tài liệu Bài giảng tin học ứng dụng dành cho sinh viên ngành kinh tế (Trang 33 - 35)

Tải bản đầy đủ (PDF)

(129 trang)