1.1Một thư viện tổ chức việc cho mượn sách như sau:Mỗi quyển sách được đánh một mã sách MASH dùng để phân biệt với các quyển sách khác giả sử nếu một tác phẩm có nhiều bản giống nhau hoặ
Trang 1ĐẠIHỌCDUYTÂN TRƯỜNGKHOAHỌCMÁYTÍNH
-BÀITIỂULUẬN MÔN:CƠSỞDỮLIỆU
Đềtài: “ Quảnlýthưviện ”
GVHD : CôTrầnHuệChi Lớp: IS301E
MSSV : 28211131349 ĐàNẵng,tháng10năm2023
Trang 21.1Một thư viện tổ chức việc cho mượn sách như sau:
Mỗi quyển sách được đánh một mã sách (MASH) dùng để phân biệt với các quyển sách khác (giả sử nếu một tác phẩm có nhiều bản giống nhau hoặc có nhiều tập thì cũng xem là có mã sách khác nhau), mỗi mã sách xác định các thông tin khác như : tên sách (TENSACH), tên tác giả
(TACGIA), nhà xuất bản (NHAXB), năm xuất bản (NAMXB)
1.2Mỗi đọc giả được thư viên cấp cho một thẻ thư viện, trong đó có ghi rõ
mã đọc giả(MAĐG), cùng với các thông tin khác như : họ tên (HOTEN), ngày sinh (NGAYSINH), địa chỉ(ĐIACHI), nghề nghiệp(NGHENGHIEP)
Cứ mỗi lượt mượn sách, đọc giả phải ghi các quyển sách cần mượn vào một phiếu mượn,mỗi phiếu mượn có một số phiếu mượn (SOPM) duy nhất, mỗi phiếu mượn xác định các thông tin như: ngày mượn
(NGAYMUON), đọc giả mượn, các quyển sách mượn và ngày trả
(NGAYTRA) Các quyển sách trong cùng một phiếu mượn không nhất thiết phải trả trong trong cùng một ngày
II.Vẽmôhìnhthựcthểliênkết:
Trang 3Môhìnhquanhệquảnlýsinhviên
Nhậpdữliệu:
Môhìnhquanhệquảnlýsinhviên:
Phiếumượn:
Trang 4Phần2:Biểuthứcđạisốquanhệ:
1.Liệt kê những độc giả có nghề nghiệp là sinh viên
ᵟNGHENGHIEP=”Sinh viên”(THETHUVIEN)
2 Liệt kê những quyển sách của tác giả “Nam Cao”
ᵟTACGIA=”Nam Cao”(SACH)
3 Liệt kê những phiếu mượn trong tháng 8 Mapm, madg, ngaymuon
ᵟMONTH(NGAYMUON)=8(PHIEUMUON)
4 Liệt kê những độc giả có mượn sách “số đỏ” Mash, tensach, madg
πMASH,TENSACH,MADG TENSACH=”Số(ᵟ
đỏ”(PHIEUMUON*MUONSACH*SACH))
5 Liệt kê những quyển sách xuất bản năm 2000 Mash, tensach, namxb
πMASH,TENSACH,NAMXB NAMXB=2000(ᵟ (SACH))
6 Lập danh sách những quyển sách chưa trả Masach, tensach, ngaymuon, ngaytra (dieu kien ngaytra is null)
πMASH,TENSACH,NGAYMUON,NGAYTRA NGAYTRA=NULL(ᵟ =(PHIEUMUON*MUONSAC H*SACH))
7 Lập danh sách những quyển sách chưa ai mượn
πMASH(SACH) – πMASH(MUONSACH)
8 Lập danh sách những độc giả mượn sách “số đỏ” và “ không gia đình”
Trang 5πMADG TENSACH=”Số đỏ”(ᵟ (PHIEUMUON*MUONSACH*SACH))U
πMADG TENSACH=”Không gia đình”(ᵟ (PHIEUMUON*MUONSACH*SACH)) Phần3:CâulệnhSQL:
Tạo CSDL QL bán hàng
Khachhang(makh, hoten, phai, sdt)
Hang(mah, tenh, dvt)
Hoadon(mahd, ngayhd, makh)
Chitiet(mahd, mah, soluong, dongia)
Thực hành phần SQL cho bài thực hành cá nhân:
Tạocơsởdữliệu
1 Tạo bảng khachhang
Create table khachhang(makh text primary key, hoten text, phai yesno, sdt text)
2 Tạo bảng hang
Create table hang(mah text primary key,tenh text,dvt text)
3 Tạo bảng hoadon
Create table hoadon(mahd text primary key,ngayhd datetime,makh text)
4 Tạo bảng chitiet
5 Nhập dữ liệu cho mỗi bảng Khachhang, hoadon, hang: mõi bảng 5 dòng
Trang 66 Nhập dữ liệu cho bảng chitiet: 10 dòng
Trang 7(nhập bằng tay không cần viết câu lệnh)
Thực hành truy vấn dữ liệu theo yêu cầu sau:
Truyvấntừ1bảng
7 Lấy những khách hàng phái Nữ: makh, hoten, phai, sdt
Select * from khachhang where phai= 0
8 Lấy những mặt hàng có dvt là “kg” (hoặc dvt khác): mah, tenh, dvt Select * from hang where dvt=”kg”
Trang 89 Lấy những hóa đơn trong năm 2023: mahd, nam, makh
Select mahd,year(ngayhd) as nam,makh from hoadon where year(ngayhd)=2023
10 Lấy những mặt hàng có số lượng từ 10 đến 20 Sắp xếp tăng dần theo số lượng: mahd, mah, soluong, dongia
Select * from chitiet where soluong between 10 and 20 order by soluong
11 ASC Lấy 2 mặt hàng có đơn giá cao nhất mah, soluong, dongia Select top 2 MaH,SoLuong,DONGIA from chitiet order by DONGIA desc
Truyvấntừnhiềubảng
12 Liệt kê những hóa đơn của khách họ Lê (hoặc họ khác): makh, hoten, mahd, ngayhd
Trang 9Select a.MAKH, HOTEN, MaHD, NgayHD from KHACHHANG
a, HOADON b where a.MAKH = b.MAKH and HOTEN like 'Lê*'
13 Liệt kê những mặt hàng Bia có đơn giá >400000 Mah, tenh, soluong, dongia
Select a.MaH, TenH, SoLuong, DONGIA from hang a, chitiet b where a.MaH = b.MaH and DONGIA > 400000 and TenH like 'Bia*'
14 Liệt kê những hóa đơn trong tháng 10 Mahd, thang, mah, soluong
Select a.MaHD, MaH, SoLuong, month(NgayHD) as thang from hoadon a, chitiet b where a.MaHD = b.MaHD and month(NgayHD)
= 10
15 Liệt kê những khách hàng mua “Snack oishi”: Makh, mah, tenh, soluong
Select a.MAKH, b.MaH, TenH, SoLuong from KHACHHANG a, HANG b, CHITIET c, HOADON d where a.MAKH = d.MAKH and b.MaH = c.MaH and d.MaHD=c.MaHD and TenH = 'Snack oishi'
16 Liệt kê những khách phái nam có mua “Bia larue” Makh, hoten, phai, mah, tenh, soluong
Trang 10Select a.MAKH, HOTEN, PHAI, b.MaH, TenH, SoLuong from KHACHHANG a, HANG b, CHITIET c , HOADON d where a.MAKH = d.MAKH and b.MaH = c.MaH and d.MaHD=c.MaHD and PHAI = yes and TenH='Bia larue'
Truyvấnsửdụnghàm
17 Đếm số hóa đơn của kh01
Select COUNT(*) as SoLuongHD from HOADON where makh = '001'
18 Tính số lượng cao nhất của mặt hàng “Bia larue”
Select max(SoLuong) as SoLuongMax from CHITIET a, HANG b where a.MaH = b.MaH and TenH = 'Bia Larue'
19 Tính tổng tiền đã bán được trong năm 2023
Select sum(SoLuong * DONGIA) as TongTien from CHITIET a, HOADON b where a.MaHD = b.MaHD and year(NgayHD) = 2023
20 Tính đơn giá thấp nhất của mặt hàng 01A
Select min(DONGIA) as DonGiaMin from CHITIET where MaH
= '01A'
Trang 1121 Tính số lượng trung bình của hóa đơn 02
Select avg(SoLuong) as SLTB from CHITIET where MaHD = '02'
Truyvấngộpnhóm
22 Tính tổng số lượng đã bán của từng mặt hàng: mah, tenh, tong_sl
SELECT c.MaH, h.TenH, SUM(c.SoLuong) AS tong_sl FROM CHITIET c, HANG h where c.MaH = h.MaH GROUP BY c.MaH, h.TenH
23 Tính tổng tiền của mỗi hóa đơn: Mahd, ngayhd, makh, tong_tien SELECT h.MaHD, NgayHD, SUM(c.SoLuong*c.DONGIA) AS tong_tien FROM CHITIET c, HOADON h WHERE c.MaHD = h.MaHD GROUP BY h.MaHD,h.NgayHD
Trang 1224 Lấy khách hàng mua với tổng tiền >1.000.000 Makh, hoten, tongtien
SELECT a.MAKH,HOTEN, SUM(c.SoLuong*c.DONGIA) AS tong_tien FROM KHACHHANG a, HOADON b, CHITIET c where a.MAKH = b.MAKH and b.MaHD = c.MaHD GROUP BY a.MAKH, a.HOTEN HAVING SUM(c.SoLuong * c.DONGIA) > 1000000
25 Lấy mặt hàng bán với trung bình đơn giá >10.000: Mah, tenh, TB_dongia
Select a.MaH, TenH, avg(DONGIA) as TB_dongia from CHITIET
a, HANG b where a.MaH = b.MaH group by a.MaH, TenH having avg(DONGIA) > 10000
26 Lấy những mặt hàng được mua 2 lần trở lên: Mah, tenh, so_lan Select b.mah, tenh, count(a.mah) as so_lan from chitiet a, hang b where a.mah = b.mah group by b.mah, tenh having count(a.mah)
>= 2
Truyvấnlồngnhauvàkhác
27 Lấy mặt hàng chưa có người mua: Mah, tenh, dvt
Trang 13Select * from hang where mah not in (select mah from chitiet)
28 Lấy hóa đơn có tổng tiền cao nhất
Select mahd , sum(soluong*dongia) as tong from chitiet Group by mahd having sum(soluong *dongia) >= all (select sum
(soluong*dongia) From chitiet group by mahd)
29 Lấy khách hàng mua cả bia lẫn rượu
Select makh from hoadon a, hang b, chitiet c where a.mahd = c.mahd and b.mah = c.mah and tenh like 'Bia*'
UNION
Select makh from hoadon a, hang b, chitiet c where a.mahd = c.mahd and b.mah = c.mah and tenh like 'Rượu*'
30 Lấy hóa đơn mua tất cả cả món hàng
Select MaHD, count(MaH) as SOMON from chitiet Group by MaHD having count(MaH)= (Select count(MaH) from hang)
31 Cập nhật đơn giá lên 10% cho mặt hàng H01
Update chitiet set dongia = dongia * 1.1 where mah = '02A'
Trang 1432 Xóa mặt hàng không có người mua
Delete from hang a, chitiet b where a.mah = b.mah having count(mahd) <= 0