Để xây dựng một mô hình quản lý thư viện ta cần : - Quản lý Sách: Thực thể sách gồm có các thuộc tính : mã sách, tên sách,mã tác giả, mã nhà xuất bản, mã lĩnh vực, năm xuất bản, lần xu
Mô Hình CSDL
NHANVIEN (MaNV, TenNV, Diachi, Dienthoai)
SACH (Masach, Tensach, MaTG, MaNXB, Malinhvuc, NamXB,
DOCGIA (MaDG, HotenDG, Makhoa, Khoahoc, Gioitinh, Ngaysinh,
TACGIA (MaTG, TenTG, Diachi, Dienthoai)
NHAXUATBAN (MaNXB, TenNXB, Diachi, Dienthoai)
PHIEUMUON (Sopmuon, MaNV, MaDG, Tiendatcoc, Ngaylap,
PHIEUNHACTRA (Sopnhactra, Masach, MaDG, Ngaylap)
PHIEUPHAT (Sopphat, Masach, MaDG, Ngaylap, Tienphat)
* NHANVIEN (MaNV, TenNV, Diachi, DienThoai)
TT Tên thuộc tính Kiểu dữ liệu Ràng buộc Ghi chú
1 MaNV nvarchar(10) PK mã nhân viên
2 TenNV nvarchar(30) họ tên nv
3 Diachi nvarchar(50) địa chỉ nv
4 Dienthoai nvarchar(12) sdt nhân viên
* DOCGIA (MaDG, HotenDG, Makhoa, Khoahoc, Gioitinh, Ngaysinh,
TT Tên thuộc tính Kiểu dữ liệu Ràng buộc Ghi chú
1 maDG nvarchar(10) PK mã độc giả
2 HotenDG nvarchar(30) tên độc giả
3 Makhoa nvarchar(10) FK mã khoa
10 Ngayhethan nvarchar(30) ngày hết hạn
*SACH (Masach, Tensach, MaTG, MaNXB, Malinhvuc, NamXB,
TT Tên thuộc tính Kiểu dữ liệu Ràng buộc Ghi chú
1 Masach nvarchar(10) PK mã sách
3 MaTG nvarchar(10) FK mã tác giả
4 MaNXB nvarchar(10) FK mã NXB
5 Malinhvuc nvarchar(10) FK mã lĩnh vực
6 NamXB int năm xuất bản
7 LanXB int lần xuất bản
8 Soluonghienco int sốlượng hiện có
* TACGIA (MaTG, TenTG, Diachi, Dienthoai)
TT Tên thuộc tính Kiểu dữ liệu Ràng buộc Ghi chú
1 MaTG nvarchar(10) PK mã tác giả
2 TenTG nvarchar(50) tên tác giả
TT Tên thuộc tính Kiểu dữ liệu Ràng buộc Ghi chú
1 Makhoa nvarchar(10) PK mã khoa
TT Tên thuộc tính Kiểu dữ liệu Ràng buộc Ghi chú
1 Malinhvuc nvarchar(10) PK mã lĩnh vực
2 Tenlinhvuc nvarchar(30) tên lĩnh vực
* NHAXUATBAN (MaNXB, TenNXB, Diachi, Dienthoai)
TT Tên thuộc tính Kiểu dữ liệu Ràng buộc Ghi chú
1 MaNXB nvarchar(10) PK mã nhà XB
2 TenNXB nvarchar(10) tên nhà XB
*PHIEUMUON (Sopmuon, MaNV, MaDG, Tiendatcoc, Ngaylap,
TT Tên thuộc tính Kiểu dữ liệu Ràng buộc Ghi chú
1 Sopmuon nvarchar(10) PK số phiếu mượn
2 MaNV nvarchar(10) FK mã nhân viên
3 MaDG nvarchar(10) FK mã độc giả
4 Tiendatcoc float Tiền đặt cọc
6 Ngayhentra date ngày hẹn trả
TT Tên thuộc tính Kiểu dữ liệu Ràng buộc Ghi chú
1 Sopmuon nvarchar(10) PK số phiếu mượn
2 Masach nvarchar(10) FK mã sách
*PHIEUNHACTRA (Sopnhactra, Masach, MaDG, Ngaylap)
TT Tên thuộc tính Kiểu dữ liệu Ràng buộc Ghi chú
1 Sopnhactra nvarchar(10) PK số phiếu nhắc trả
2 Masach nvarchar(10) FK mã sách
3 MaDG nvarchar(10) FK mã độc giả
*PHIEUPHAT (Sopphat, Masach, MaDG, Ngaylap, Tienphat)
TT Tên thuộc tính Kiểu dữ liệu Ràng buộc Ghi chú
1 Sopphat nvarchar(10) PK số phiếu phạt
2 Masach nvarchar(10) FK mã sách
3 MaDG nvarchar(10) FK mã độc giả
Mô tả bài toán thự c t ế
T ạ o datebase
Xây dựng cơ sở d ữ li ệ u cho h ệ th ố ng
o Dữ liệu tạo các bảng
Masach NVARCHAR(10) PRIMARY KEY NOT NULL,
MaDG NVARCHAR(10) PRIMARY KEY NOT NULL , HotenDG NVARCHAR(30) NOT NULL ,
CONSTRAINT PK_CHITIETPHIEUMUON PRIMARY KEY(Sopmuon,Masach),
Dữ liệu bảng nhân viên
Dữ liệu bảng độc giả
Dữ liệu bảng tác giả
Dữ liệu bảng lĩnh vực
Dữ liệu bảng nhà xuất bản
Dữ liệu bảng phiếu mượn
Dữ liệu bảng chi tiết phiếu mượn
Dữ liệu bảng phiếu nhắc trả
Dữ liệu bảng phiếu phạt
Th ự c hi ện các truy vấ n, view, th ủ t ục, hàm, trigger
a Thực hiện các truy vấn
Sau đây chúng em xin đưa ra 1 số truy vấn tiêu biểu
- Truy vấn về độc giả, sách, nhà xuất bản, nhân viên:
Truy vấn về bảng độc giả
truy vấn về bảng độc giả
Truy vấn về bảng sách
truy vấn về bảng sách
Truy vấn về bảng nhà xuất bản
truy vấn về bảng nhà xuất bản
Truy vấn về bảng nhân viên
truy vấn về bảng nhân viên
- Truy vấn cho biết thông tin vềsách thuộc lĩnh vực sách đời sống
- Truy vấn cho biết thông tin nhân viên với mã nhân viên tùy ý
- Truy vấn cho biết thông tin phiếu mượn vào tháng 5 năm 2006 b Tạo view
- Tạo view cho biết độc giảmượn sách nhiều nhất
- Tạo view chứa thông tin tác giả: mã tác giả, tên tác giả, sốđiện thoại và có địa chỉ tại Hà Nội
- Tạo view cho biết thông tin sách đã mượn của độc giả có số phiếu mượn là
PM003 c Tạo thủ tục proceduce
- Tạo thủ tục với tham số truyền vào là năm cho biết thông tin các độc giả mượn sách vào năm đó
- Tạo thủ tục cho biết tổng số lượng phiếu mượn hiện có
- Tạo thủ tục thêm 1 bản ghi mới cho SÁCH
Bảng sách lúc đầu : d Tạo trigger
- Tạo trigger cho biết tổng tiền đặt cọc phiếu mượn với số phiếu mượng tương ứng trong CTPM create trigger TongTien on PHIEUMUON after insert,update as begin if update(Tiendatcoc) declare @Sopmuon nvarchar(10),
@Soluongmuon int select @Sopmuon = Sopmuon from inserted select @Tiendatcoc =(select sum(Tiendatcoc*Soluongmuon) from inserted,CHITIETPHIEUMUON where inserted.Sopmuon = CHITIETPHIEUMUON.Sopmuon) select @Soluongmuon = (select Soluongmuon from inserted,CHITIETPHIEUMUON where inserted.Sopmuon CHITIETPHIEUMUON.Sopmuon) begin update PHIEUMUON set Tiendatcoc = @Tiendatcoc where @Sopmuon = Sopmuon end end
Thông Tin PM006 khi chưa update
Thông Tin PM006 sau khi update
- Tạo trigger đểđảm bảo Sốlượng mượn không được vượt quá số lượng hiện có create trigger SLmuon_nhohon_SLhienco on CHITIETPHIEUMUON after insert,update as begin if update(Soluongmuon) declare @Masach nvarchar(10),
@Soluonghienco int select @Masach = Masach from inserted select @Soluongmuon = Soluongmuon from inserted select @Soluonghienco = (select Soluonghienco from SACH,inserted where SACH.Masach = inserted.Masach) if(@Soluongmuon>@Soluonghienco) begin print N'Không đủ sách đểmượn!!!!' rollback end else begin update SACH set Soluonghienco = Soluonghienco - @Soluongmuon where Masach = @Masach end end
Kết quảkhi insert thêm vào Chi Tiết Phiếu Mượn vi phạm trigger
- Tạo trigger kiểm tra giới tính create trigger Ktra_GT on DOCGIA after insert,update as begin declare @GioiTinh bit select @GioiTinh = GioiTinh from inserted if(@GioiTinh != 1 or @GioiTinh != 0) begin print N'Bạn nhập sai giới tính!!' rollback end end
Kết quảkhi thêm 1 bảng vi phạm trigger
T ạo login, user, phân quyề n cho user
Tạo login 1 create login DucDuy with password = '123'
Tạo user create user user_DucDuy for login DucDuy go
Tạo login 2 create login VanHoa with password = '1234'
Tạo user create user user_VanHoa for login VanHoa go
Tạo login 3 create login XuanHien with password = '12345'
Tạo user create user user_XuanHien for login XuanHien go
Tạo login 4 create login TranNam with password = '1234'
Tạo user create user user_TranNam for login TranNam go
Phân quyền và kiểm tra quyền các user Cấp quyền user_VanHoa grant select, delete, update on NHANVIEN to user_VanHoa go kiểm tra phân quyền select * from NHANVIEN select * from SACH
Cấp quyền user_DucDuy grant select, delete, update on SACH to user_DucDuy go
kiểm tra phân quyền select * from SACH select * from NHANVIEN
Cấp quyền user_XuanHien grant select, delete, update on NHAXUATBAN to user_XuanHien go
kiểm tra phân quyền select * from NHAXUATBAN select * from SACH
Cấp quyền grant select, delete, update on LINHVUC to user_TranNam go
kiểm tra phân quyền select * from LINHVUC select * from SACH
Thu hồi và cấm quyền
Từ chối quyền trên tài khoản 4
DENY UPDATE,DELETE ON LINHVUC TO user_TranNam
Từ chối quyền trên tài khoản 3
DENY UPDATE ON NHAXUATBAN TO user_XuanHien
SET TenNXB = N'Nhà Xuất Bản Thế Giới'
WHERE TenNXB = N'nhà xuất bản giáo dục'