A. Tập Thực Thể "Sách": Thuộc Tính: Mã Sách [PK] Tiêu Đề Nhà Xuất Bản Tác Giả Số Trang Số Lượng Bản Sao Giá Tiền Ngày Nhập Kho Vị Trí Đặt Sách Mã Loại [FK] Quan Hệ: Mối Quan Hệ 1-N với Thực Thể "Nhân Viên" (1 văn phòng có nhiều nhân viên) Mối Quan Hệ 1-1 với Thực Thể "Trưởng Văn Phòng" (mỗi văn phòng có một trưởng văn phòng) B. Tập Thực Thể "Loại Sách": Thuộc Tính: Mã Loại [PK] Tên Loại Quan Hệ: Mối Quan Hệ N-N với Thực Thể "Thân Nhân" (mỗi nhân viên có thể có nhiều thân nhân) C. Tập Thực Thể "Sinh Viên": Thuộc Tính: Mã Sinh Viên [PK] Tên Sinh Viên Ngày Hết Hạn Chuyên Ngành Email Số Điện Thoại Quan Hệ: Mối Quan Hệ 1-1 với Thực Thể "Văn Phòng" (mỗi văn phòng có một trưởng phòng) D. Tập Thực Thể "Phiếu Mượn": Thuộc Tính: Số Phiếu [PK] Ngày Mượn Ngày Trả Trạng Thái Mã Sinh Viên [FK]
E. Tập Thực Thể "Phiếu Mượn Chi Tiết ":
Thuộc Tính: Số Phiếu [PK] [FK] Mã Sách Ghi Chú Quan Hệ: Mối Quan Hệ N-N với Thực Thể "Văn Phòng" (mỗi văn phòng có nhiều BĐS, và mỗi BĐS thuộc một văn phòng)
2. Mối Quan Hệ:
Mối Quan Hệ 1-N giữa Thực Thể "Sách" và "Loại Sách" (Một sách chỉ có thể thuộc một loại sách, nhưng một loại sách có thể có nhiều sách). Mối Quan Hệ 1-N giữa Thực Thể "Sách" và "Phiếu Mượn Chi Tiết" (Một sách có thể được mượn nhiều lần, nhưng một lần mượn chỉ có thể mượn một sách). Mối Quan Hệ 1-N giữa Thực Thể "Phiếu Mượn" và "Phiếu Mượn Chi Tiết" (Một phiếu mượn có thể có nhiều chi tiết mượn, nhưng một chi tiết mượn chỉ thuộc về một phiếu mượn.). Mối Quan Hệ 1-N giữa Thực Thể "Sinh Viên và "Phiếu Mượn" (Một sinh viên có thể mượn nhiều phiếu mượn, nhưng một phiếu mượn chỉ có thể được mượn bởi một sinh viên.). Y3. create database Quanlythuvien go use Quanlythuvien go
INSERT INTO Sach (MaSach, TenSach, MaLoaiSach, GiaTien, TacGia) VALUES
(1, 'SQL huong dan', 1, 25.99, 'Tac gia a'), (2, 'Sach Hoa Hoc', 4, 19.99, 'Tac gia b'), (3, 'IT Huong Dan', 1, 15.99, 'Tac gia c'), (4, 'Sach Tieng Viet', 3, 29.99, 'Tac gia d'), (5, 'Sach Toan', 2, 29.99, 'Tac gia e');
INSERT INTO SinhVien (MaSinhVien, TenSinhVien, Email) VALUES
('SV001', 'Nguyen Van A', 'vana@gmail.com'), ('SV002', 'Tran Thi B', 'tranb@gmail.com'), ('SV003', 'Le Van C', 'levanc@gmail.com'), ('SV004', 'Pham Thi D', 'phamd@gmail.com'), ('SV005', 'Hoang Van E', 'hoange@gmail.com');
INSERT INTO PhieuMuon (MaPhieuMuon, MaSach, MaSinhVien, NgayMuon, NgayTra) VALUES
(1, 1, 'SV001', '2017-01-05', '2017-01-20'), (2, 2, 'SV002', '2017-01-10', '2017-01-25'), (3, 3, 'SV003', '2017-02-01', '2017-02-15'), (4, 4, 'SV004', '2017-02-05', '2017-02-20'), (5, 5, 'SV005', '2017-02-10', '2017-02-25'); --y6 --6.1 SELECT TenSach, MaSach, GiaTien, TacGia FROM Sach WHERE MaLoaiSach = ( SELECT MaLoaiSach FROM LoaiSach WHERE MaLoaiSach = 'IT'); --6.2 SELECT pm.MaPhieuMuon, pm.MaSach, pm.NgayMuon, pm.MaSinhVien FROM PhieuMuon pm WHERE pm.NgayMuon BETWEEN '2017-01-01' AND '2017-01-31'; --6.3 SELECT * FROM PhieuMuon WHERE NgayTra IS NULL ORDER BY NgayMuon ASC; --6.4 SELECT ls.MaLoaiSach, ls.TenLoaiSach, COUNT(s.MaSach) AS TongSoLuong FROM Sach s JOIN LoaiSach ls ON s.MaLoaiSach = ls.MaLoaiSach GROUP BY ls.MaLoaiSach, ls.TenLoaiSach; --6.5 SELECT COUNT(DISTINCT MaSinhVien) AS SoLuotMuon FROM PhieuMuon; --6.6 SELECT * FROM Sach WHERE TenSach LIKE '%SQL%'; --6.7 SELECT pm.MaSinhVien, sv.TenSinhVien, pm.MaPhieuMuon, s.TenSach, pm.NgayMuon, pm.NgayTra FROM PhieuMuon pm, SinhVien sv, Sach s WHERE pm.MaSinhVien = sv.MaSinhVien AND pm.MaSach = s.MaSach ORDER BY pm.NgayMuon; --6.8 SELECT s.MaSach, s.TenSach, COUNT(*) AS SoLanMuon FROM PhieuMuon pm, Sach s WHERE pm.MaSach = s.MaSach GROUP BY s.MaSach, s.TenSach HAVING COUNT(*) > 20; --6.9 UPDATE Sach SET GiaTien = GiaTien * 0.7 WHERE YEAR((SELECT NgayMuon FROM PhieuMuon WHERE Sach.MaSach = PhieuMuon.MaSach)) < 2014; --6.10 UPDATE PhieuMuon SET TrangThai = 'DaTra' WHERE MaSinhVien = 'PD12301'; --6.11 --6.12 UPDATE Sach SET SoLuongBanSao = SoLuongBanSao + 5 WHERE MaSach IN ( SELECT MaSach FROM PhieuMuon GROUP BY MaSach HAVING COUNT(*) > 10 ); --6.13 DELETE FROM PhieuMuon WHERE NgayMuon < '2010-01-01' OR (NgayTra IS NOT NULL AND NgayTra < '2010-01-01');