Bài tập truy vấn đại số quan hệ năm 2024

Bài tập 1: Đại số quan hệ và try vấn SQL

Cho cơ sở dữ liệu BANHANG được mô tả như sau: HANGHOA(MAHH, TENHH, MALOAI) LOAIHANG(MALOAI, TENLOAI) HOADON(MAHĐ, MAHH, SOLUONG, ĐONGIA)

  1. Viết biểu thức đại số quan hệ cho biết MAHH, TENHH có tên loại là “Thực phẩm”.
  2. Viết biểu thức đại số quan hệ cho biết MAHĐ, MAHH, SOLUONG, ĐONGIA có số lượng lớn hơn 1000 và tên loại hàng hoá là “Đồ gia dụng”.
  3. Viết lệnh SQL tương ứng cho câu a và câu b.

câu c/ a] select MAHH,TENHH from HANGHOA,LOAIHANG where TENLOAI='THỰC PHẨM'

oc sen đã viết: câu c/ a] select MAHH,TENHH from HANGHOA,LOAIHANG where TENLOAI='THỰC PHẨM'

Thiếu điều kiện ràng buộc dữ liệu giữa hai bảng.

Code:

Select MAHH, TENHH from HANGHOA a, LOAIHANG b where (a.MALOAI = b.MALOAI) and (TENLOAI='THỰC PHẨM')

Câu a/ HANGHOA[MAHH,TENHH[HANGHOA*LOAIHANG(thực phẩm)]] /*Kí hiệu này em chưa quen lắm bài làm của em là:nối bằng HANGHOAva LOẠI HANG->chọn ra với điều kiện ten loai là thực phẩm->chiếu lên 2 thuộc tính MAHH và TENHH cua quan hệ HANGHOA*/ câu c/ b]

Code:

SELECT MAHĐ,MAHH,SÔLUONG,DONGIA FROM HOADON WHERE SÔLUONG>1000 AND (SELECT MAHH FROM HANGHOA as a,LOAIHANG as b WHERE (a.MALOAI=b.MALOAI) AND (TENLOAI="đồ gia dụng"))

oc sen đã viết: Câu a/ HANGHOA[MAHH,TENHH[HANGHOA*LOAIHANG(thực phẩm)]] /*Kí hiệu này em chưa quen lắm bài làm của em là:nối bằng HANGHOAva LOẠI HANG->chọn ra với điều kiện ten loai là thực phẩm->chiếu lên 2 thuộc tính MAHH và TENHH cua quan hệ HANGHOA*/ câu c/ b] SELECT MAHĐ,MAHH,SÔLUONG,DONGIA FROM HOADON WHERE SÔLUONG>1000 AND (SELECT MAHH FROM HANGHOA as a,LOAIHANG as b WHERE (a.MALOAI=b.MALOAI) AND (TENLOAI="đồ gia dụng"))

Bài này bạn giải chưa chính xác! Hãy cố gắng lên!

rắc rối quá! em nghĩ là sai rồi! thầy ơi sửa dùm em!

ý 1: https://https://i0.wp.com/2img.net/h/i834.photobucket.com/albums/zz270/zztanzzthanhzz/1-13.jpg

Bài tập truy vấn đại số quan hệ năm 2024

ý 2: https://https://i0.wp.com/2img.net/h/i834.photobucket.com/albums/zz270/zztanzzthanhzz/2-9.jpg

Bài tập truy vấn đại số quan hệ năm 2024

em vừa test thử, câu lệnh của ý 2 đúng rùi!

viết lại cho gọn là:

Code:

SELECT C.MAHD, C.MAHH, C.SOLUONG, C.DONGIA FROM HoaDon as C, (SELECT MAHH, TENHH FROM HangHoa as A, LoaiHang as B WHERE (A.MALOAI=B.MALOAI) AND (B.TENLOAI='Do gia dung')) as D WHERE (SOLUONG>'1000') AND (C.MAHH=D.MAHH);

Nhưng mà dài dòng quá! Có cách nào gọn hơn không thầy?

Bài tập truy vấn đại số quan hệ năm 2024

Truy vấn 1 lớp là được rùi, k cần phải truy vấn 2 lớp như vậy.

thầy cho em xin câu query của thầy em tham khảo nha!

Bài tập truy vấn đại số quan hệ năm 2024

Bạn không có quyền trả lời bài viết

power_settings_newLogin to reply

Dàn bài } Ngôn ngữ Truy vấn trong Mô hình Quan hệ } Các Phép toán Đại số Quan hệ } Các Thao tác Cập nhật TH107 3 Bài 3 Thế nào là Truy vấn CSDL? } Cho một CSDL, đưa ra các câu hỏi, nhận được các câu trả lời. } Vd., } Cho biết tất cả sinh viên có điểm trung bình > 8 điểm thuộc các khoa TOAN, CNTT } Cho biết các khoa có hơn 50 giảng viên } Trong số các khoa, chọn sinh viên đạt điểm trung bình cao nhất trong năm học trước TH107 4 Bài 3 Ngôn ngữ Truy vấn Query language (QL) } Ngôn ngữ truy vấn là một ngôn ngữ cho phép người dùng cập nhật và rút trích dữ liệu được lưu trong một mô hình dữ liệu. } Ngôn ngữ truy vấn ¹ Ngôn ngữ lập trình } QL không nhằm mục đích dùng cho các ứng dụng phức tạp } QL hỗ trợ truy xuất dễ dàng tới các tập hợp dữ liệu lớn © Bui MT Diem, 2007 1

Bài tập truy vấn đại số quan hệ năm 2024

Nội dung Text: Bài tập về đại số quan hệ

  1. Bài tập Cho lược đồ CSDL quản lý bán hàng như sau: KHACHTV (MAKH,HOTEN, DCHI,SODT,NGSINH,DOANHSO,NGGN) NHANVIEN (MANV,HOTEN,NGSINH,NGVL,HESO,MUCLUONG) SANPHAM (MASP,TENSP, DVT, NUOCSX, GIA) HOADON (SOHD, NGHD, MAKH, MANV, TRIGIA) CTHD (SOHD,MASP,SL) 1
  2. Phần 1: Đại số quan hệ 1. In ra số hóa đơn cùng trị giá của các hóa đơn do nhân viên có tên “Nguyễn Văn A” lập trong ngày 10/10/2005 2. In ra danh sách các sản phẩm (mã sản phẩm, tên sản phẩm) được khách hàng có tên “Nguyễn Văn A” mua. 3. Tìm các số hóa đơn đã mua cùng lúc 2 sản phẩm có mã số “SP01” và “SP02” 4. In ra danh sách các sản phẩm không bán được trong năm 2005 2
  3. Phần 2: SQL 1. Tìm số hoá đơn có trị giá cao nhất trong năm 2005. 2. Tính tổng số lượng sản phẩm có mã số “SP01” được bán ra trong tháng 10/2005. 3. Từng sản phẩm, tính tổng số lượng bán ra trong tháng 10/2005. 4. Tìm sản phẩm (mã sản phẩm, tên sản phẩm) có số lượng bán ra cao nhất trong ngày 10/10/2005. 3
  4. Phần 3: Ràng buộc toàn vẹn Bối cảnh một quan hệ: 1. Tất cả các sản phẩm có giá từ 1.000 đồng trở lên 2. Ngày gia nhập của khách hàng thành viên phải lớn hơn ngày sinh của người đó. 3. Các nhân viên có cùng hệ số lương thì phải cùng mức lương 4
  5. Phần 3: Ràng buộc toàn vẹn Bối cảnh nhiều quan hệ: 4. Ngày nhân viên bán hàng phải lớn hơn hoặc bằng ngày đầu tiên vào làm của nhân viên đó. 5. Mỗi hóa đơn phải có ít nhất một chi tiết hóa đơn. 6. Doanh số của một khách hàng thành viên là tổng các trị giá hóa đơn mà khách hàng thành viên đó đã mua 5
  6. Phần 1: Đại số quan hệ Câu 1:In ra số hóa đơn cùng trị giá của các hóa đơn do nhân viên có tên “Nguyễn Văn A” lập trong ngày 10/10/2005 Viết bằng SQL: SELECT SOHD,TRIGIA FROM NHANVIEN INNER JOIN HOADON ON NHANVIEN.MANV=HOADON.MANV WHERE HOTEN=’NguyenVanA’ AND NGHD=’10/10/2005’ Hoặc SELECT SOHD,TRIGIA FROM NHANVIEN, HOADON WHERE HOTEN=’NguyenVanA’ AND NGHD=’10/10/2005’ AND NHANVIEN.MANV=HOADON.MANV Viết bằng Đại số quan hệ: MANV ( NHANVIEN : (hoten =" NguyenVanA" )  HOADON : (nghd =

    10 / 10 / 2005# ))[ sohd , trigia ] 6

  7. Phần 1: Đại số quan hệ Câu 2: In ra danh sách các sản phẩm (mã sản phẩm, tên sản phẩm) được khách hàng có tên “Nguyễn Văn A” mua Viết bằng SQL: SELECT Distinct SP.MASP,SP.TENSP FROM SANPHAM SP,CTHD CT,HOADON HD,KHACHTV KH WHERE SP.MASP=CT.MASP AND CT.SOHD=HD.SOHD AND KH.MAKH=HD.MAKH AND KH.HOTEN=‘NguyenVanA’ Viết bằng Đại số quan hệ: MASP SOHD ((( SANPHAM CTHD ) HOADON ) MAKH ( KHACHTV : (hoten =" NguyenVanA" )))[masp, tensp ] 7
  8. Phần 2: Đại số quan hệ Câu 3: Tìm các số hóa đơn đã mua cùng lúc 2 sản phẩm có mã số “SP01” và “SP02” Viết bằng SQL: SELECT SOHD FROM CTHD WHERE MASP=’SP01’ AND SOHD IN (SELECT SOHD FROM CTHD WHERE MASP=’SP02’) Viết bằng Đại số quan hệ: R1( SOHD) ← (CTHD : ( MASP =" SP 01" ))[SOHD] R 2( SOHD) ← (CTHD : ( MASP =" SP 02" ))[SOHD] KETQUA ← R1 ∩ R 2 8
  9. Phần 1: Đại số quan hệ Câu 4:In ra danh sách các sản phẩm không bán được trong năm 2005. SELECT MASP, TENSP Viết bằng SQL FROM SANPHAM WHERE MASP NOT IN ( SELECT DISTINCT MASP FROM CTHD,HOADON WHERE CTHD.SOHD=HOADON.SOHD AND R1 ← SANPHAM [ MASP, TENSP ] YEAR(NGHD)=2005) Viết bằng Đại MASP SOHD số quan hệ R 2 ← ( SANPHAM CTHD  HOADON : ( year ( NGHD) = 2005))[ MASP, TENSP ] KETQUA ← R1 − R 2 9
  10. Phần 2: SQL Câu 1: Tìm số hoá đơn có trị giá cao nhất trong năm 2005. SELECT SOHD FROM HOADON WHERE YEAR(NGHD)=2005 AND TRIGIA = ( SELECT MAX(TRIGIA) FROM HOADON WHERE YEAR(NGHD)=2005 ) Hoặc SELECT SOHD FROM HOADON WHERE YEAR(NGHD)=2005 AND TRIGIA >= ALL ( SELECT distinct TRIGIA FROM HOADON WHERE YEAR(NGHD)=2005 ) 10
  11. Phần 2: SQL Câu 2: Tính tổng số lượng sản phẩm có mã số “SP01” bán ra trong tháng 10/2005. SELECT SUM(SL) as SLSP FROM CTHD, HOADON WHERE CTHD.SOHD=HOADON.SOHD AND MASP=’SP01’ AND NGHD between ’1/10/2005’ AND ’31/10/2005’ Hoặc: Year(NGHD)=2005 AND Month(NGHD)=10 11
  12. Phần 2: SQL Câu 3: Tính tổng số lượng bán ra trong tháng 10/2005 của từng sản phẩm. SELECT SANPHAM.MASP,TENSP, SUM(SL) FROM SANPHAM, CTHD, HOADON WHERE SANPHAM.MASP=CTHD.MASP AND CTHD.SOHD=HOADON.SOHD AND Year(NGHD)=2005 AND Month(NGHD)=10 GROUP BY SANPHAM.MASP,TENSP 12
  13. Phần 2: SQL Câu 4: Tìm sản phẩm có số lượng bán ra cao nhất trong ngày 10/10/2005. SELECT SANPHAM.MASP,TENSP, SUM(SL) as TONGSL FROM SANPHAM,CTHD, HOADON WHERE SANPHAM.MASP=CTHD.MASP AND CTHD.SOHD=HOADON.SOHD AND NGHD=’10/10/2005’ GROUP BY SANPHAM.MASP, TENSP HAVING SUM(SL) >= ALL ( SELECT SUM(SL) FROM CTHD, HOADON WHERE CTHD.SOHD=HOADON.SOHD AND NGHD=’10/10/2005’ GROUP BY MASP ) 13
  14. Phần 3: RBTV Câu 0: Khoá ngoại: các sản phẩm bán ra phải có trong danh mục các sản phẩm  ∀c ∈ CTHD, ∃ s ∈ SANPHAM: c.MASP = s.MASP hoặc CTHD[MASP] ⊆ SANPHAM[MASP]  Bối cảnh: CTHD, SANPHAM  Bảng tầm ảnh hưởng: Thêm Xóa S ửa CTHD +(MASP) - + (MASP) SANPHAM - + - (*) 14
  15. Phần 3: RBTV Câu 1: Tất cả các sản phẩm có giá từ 1.000 trở lên  Phát biểu: ∀s ∈ SANPHAM: s.GIA ≥ 1.000  Bối cảnh: SANPHAM  Bảng tầm ảnh hưởng: Thêm Xóa S ửa SANPHAM +(GIA) - + (GIA) 15
  16. Phần 3: RBTV Câu 2: Ngày gia nhập của khách hàng thành viên phải lớn hơn ngày sinh của người đó  Phát biểu: ∀k ∈ KHACHTV: k.NGGN> k.NGSINH  Bối cảnh: KHACHTV  Bảng tầm ảnh hưởng: Thêm Xóa S ửa KHACHTV + (NGGN, - + (NGGN,NGSINH) NGSINH) 16
  17. Phần 3: RBTV Câu 3: Những nhân viên cùng hệ số lương thì cùng mức lương  ∀n1,n2 ∈ NHANVIEN: n1.HESO=n2.HESO -> (n1.MUCLUONG = n2.MUCLUONG)  Bối cảnh: NHANVIEN  Bảng tầm ảnh hưởng: Thêm Xóa S ửa NHANVIEN + - + (MUCLUONG,HESO) 17
  18. Phần 3: RBTV Câu 4: Ngày nhân viên bán hàng phải lớn hơn hoặc bằng ngày đầu tiên vào làm của nhân viên đó.  ∀h ∈ HOADON, ∃ n ∈ NHANVIEN/ (h.MANV = n.MANV) ∧(n.NGVL
  19. Phần 3: RBTV Câu 5: Mỗi hóa đơn phải có ít nhất một chi tiết hóa đơn  ∀h ∈ HOADON, ∃ c ∈ CTHD/ h.SOHD=c.SOHD Hoặc ∀h ∈ HOADON, Count(c.SOHD) >=1 với ∀c∈CTHD/ c.SOHD=h.SOHD  Bối cảnh: HOADON, CTHD  Bảng tầm ảnh hưởng: Thêm Xóa S ửa HOADON + - - CTHD - + + (SOHD) 19
  20. Phần 3: RBTV Câu 6: Doanh số của một khách hàng thành viên là tổng các trị giá hóa đơn mà khách hàng thành viên đó đã mua  ∀k ∈ KHACHTV, k.DOANHSO= ∑(h.TRIGIA), ∀h∈HOADON/ h.MAKH=k.MAKH  Bối cảnh: KHACHTV, HOADON  Bảng tầm ảnh hưởng: Thêm Xóa S ửa HOADON + + + (MAKH,TRIGIA) KHACHTV + - + (DOANHSO) 20