Tải bản đầy đủ (.docx) (24 trang)

Đồ án quản lý thư viện bằng SQL

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.28 MB, 24 trang )

I. Mô tả chức năng của hệ thống
I.1. Phân quyền cho đối tượng sử dụng
-Thủ kho:Chịu trách nhiệm quản lý sách trong kho
-Thủ thư :Tiếp nhận các yêu cầu của độc giả và cho phép
mượn sách nếu được yêu cầu và đầy đủ các thông tin
-Thủ quỹ:Nhận tiền phạt từ độc giả nếu trả sách quá hạn hoặc
làm mất sách
1.2. Chức năng của hệ thống
-Quản lý độc giả về thời hạn sử dụng,cho phép mượn sách
-Quản lý sách,lưu giữ đầy đủ các thông tin về sách,tác giả,nhà
xuất bản trong kho sách
-Nếu trường hợp độc giả trả sách quá hạn quy định thì phải bị
phạt tiền,số tiền phạt được tính là 1 nghìn đồng trên 1 ngày
quá hạn
II. Thiết kế cơ sở dữ liệu
II.1. BảngDocGia.PhieuYeuCau
Colum Name Description Datatype Length Allow Null
MaThe Primary key Ma:Varchar 10 Not null
TenSach Tên sách Varchar 50 null
SoQuyen Số quyển int null
II.2. BảngQuanTri.Nhanvien
Colum Name Description Datatype Length Allow Null
MaNV Primary key Ma:varchar 10 Not null
HoTen Họ tên nhân
viên
HoTen:varchar 50 null
NgaySinh Ngày sinh Datetime null
BoPhan Bộ phận Varchar 50 null
ChucVu Chức vụ Varchar 20 null
CapTren Cấp trên Ma:varchar 10 Null
DiaChi Địa chỉ Varchar 100 Null


II.3. BảngThuKho.LoaiSach
Colum Name Description Datatype Length Allow Null
MaLS Khóachính Varchar 10 Not null
TenLS Tên loại sách Varchar 50 Null
II.4. BảngThuKho.NhaXuatBan
Colum Name Description Datatype Length Allow Null
TenNXB Primary key Hoten:varcha 50 Not null
DiaChi Địa chỉ Varchar 100 Null
NgayThanhLa
p
Ngày thành
lập
datetime Null
II.5. BảngThuKho.Sach
Colum Name Description Datatype Length Allow Null
MaSach Mã sách
(Khóa chính)
Ma:Varchar 10 Not null
TenSach Tên sách Varchar 50 Null
MaTG MaTG Ma:varchar 10 Null
TenNXB Tên NXB HoTen:Varchar 50 Null
NamXuatBan int Null
SoTrang int Null
Gia int Null
MaLS Varchar 10 Null
MaNV Ma:varchar 10 Null
II.6. BảngThuKho.TacGia
Colum name description datatype length Allow null
MaTG Primary key Ma:Varchar 10 Not null
TenTG Hoten:Varcha

r
50 Not null
DiaChi Varchar 100 Null
ChucDanh Varchar 50 null
II.7. BảngThuQuy.ThuTienPhat
Colum name description Datatype length Allow null
MaThe Ma:varchar 10 Not null
HoTen HoTen:varcha
r
50 Null
TienPhat int Null
SoTienThu Int Null
ConLai Int Null
MaNV Ma:varchar 10 Null
LydoPhat Varchar 50 Null
Tensach Varchat 50 Null
II.8. BảngThuThu.TheDocGia
Colum name description Datatype length Allow null
MaThe Khóachính Ma:varchar(10) 10 Not null
HoTen HoTen:varchar(50
)
50 null
NgayCap datetime Null
NgayHetHan Datetime Null
DiaChi Varchar 50 Null
MaNV Ma:varchar 10 null
MaDV Varchar 10 Null
Khoa Varchar 10 null
II.9. BảngThuThu.TheoDoiMuonTra
Colum name description Datatype length Allow

null
MaThe Khóachính Ma:varchar(10) 10 Not null
HoTen HoTen:varchar(50
)
50 Null
TenSach Nvarchar(50) Null
NgayMuon Datetime Null
NgayHenTra Datetime Null
NgayTraTrinhThuc Datetime Null
TinhTrangSach(Truoc) Varchar(50) Null
[inhTrangSach(Sau) Varchar(50) Null
SoLuongMuon Int null
SoLuongTra Int null
Sơ đồ quan hệ giữa các bảng
III. Mô tả các thủ tục, hàm và triggers theo mẫu:
III.1. Thủ tục
III.1.1. Thêm độc giả
-Tên: ThuThu.insertDOCGIA
-Kết quả thực hiện:Nhập thông tin vào bảng ThuThu.TheoDocGia
-Các bước thực hiện:
+) Nhập thông tin về độc giả
+) Chèn vào bảng ThuThu.TheoDocGia
III.1.2. Tính số người mượn sách trong cùng 1 ngày
-Tên: thuthu.so_nguoi_muon_cung_ngay
-Kết quả thực hiện:Kiểm tra số lượt mượn trong ngày
-Các bước thực hiện:
+) Nhấp vào ngày cần kiểm tra
III.1.3. Xóa sách
-Tên: ThuKho.XoaSach
-Kết quả thực hiện:Xóa sách trong bảng ThuKho.Sach

-Các bước thực hiện:
+)Nhập mã sách cần xóa
III.2. Hàm
III.2.1. Hiển thị nhân viên cấp dưới
-Tên: Quantri.Nhanviencapduoi
-Kết quả thực hiện : Tìm kiếm tất cả nhân viên cấp dưới của một nhân viên nào
đó.
-Các bước thực hiện :
+ Nhập mã nhân viên cần tìm kiếm
+ Tạo một bảng tạm có cấu trúc giống với bảng gốc ([QuanTri].[NHANVIEN])
+ Chèn thông tin các nhân viên có cấp trên là mã nhân viên nhập vào
+ Tìm kiếm các nhân viên có cấp trên là mã nhân viên vừa chèn vào
+ SELECT bảng tạm
III.2.2. Tính tổng tiền nợ của 1 độc giả
-Tên: thuquy.tongno
-Kết quả thực hiện: Tính tổng tiền nợ của độc giả
-Các bước thực hiện:
+Nhập vào mã độc giả
+Các giá trị được trả về 1 bảng
+Chọn các cột cần hiển thị
+Sử dụng hàm tính tổng tiền còn nợ
III.2.3. Tìm các độc giả phải trả sách trước 1 ngày nào đó
-Tên: thuthu.Trasach
-Kết quả thực hiện:Hiển thị tất cả các độc giả phải trả sách trước ngày nào đó
-Các bước thực hiện:
+Nhập vào ngày cần tra
+Giá trị trả về là 1 bảng
+Thực hiện chèn tất cả các giá trị hợp lệ vào 1 bảng
+Trả về bảng vừa nhận được
III.3. Trigger

III.3.1. Tính tiền phạt của 1 độc giả mượn sách quá hạn
-Tên: tg_Trasach
-Kết quả thực hiện:Trả về số tiền phạt vào cột Phattien
-Các bước thực hiện:
+Kiểm tra điều kiện:Nếu ngày trả chính thức < ngày hẹn trả thì bỏ qua
trigger,nếu ngày trả chính thức > ngày hẹn trả thì thực hiện phạt tiền theo
công thức tính là 1000 đồng / 1 ngày quá hạn
III.3.2. Khóa thẻ nếu quá hạn
-Tên: thuthu.TRGkhoathe
-Kết quả:Khóa thẻ nếu độc ngày quá hạn
-Các bước thực hiện
+So sánh ngày hết hạn với thời gian hiện tại.Nếu ngày hết hạn > thời gian
hiện tại thì thông báo thẻ đã hết hạn sử dụng và ngược lại
III.3.3. Không cho mượn sách nếu độc giả đã bị khóa thẻ
-Tên: thuthu.KiemSoatDocGiaMuonSach
-Kết quả:Không cho độc giả đã bị khóa thẻ mượn sách
-Các bước thực hiện
+Thực hiện kiểm tra các dữ liệu trong bảng tạm
+So sánh kết quả đó với bảng ThuThu.TheDocGia theo mã và khóa thẻ
+Thực hiện rollback nếu có kết quả trả về
IV. Mô tả các View
IV.1. Hiển thị danh sách các thành viên có cùng MaDV
-Tên: ds_lopTH44
-Kết quả thực hiện:Hiển thị tất cả các thành viên có mã đơn vị là
‘TH4’
V. Quản trị CSDL
1. Tạo các Login
STT Tên Login Quyền
1 loginQuanTri ANY PERMISSION
2 loginThuThu CONNECT SQL, VIEW ANY DATABASE

3 loginThuKho CONNECT SQL, VIEW ANY DATABASE
4 loginThuQuy CONNECT SQL, VIEW ANY DATABASE
5 loginKhach CONNECT SQL, VIEW ANY DATABASE
6 loginDocGia CONNECT SQL, VIEW ANY DATABASE
2. Tạo các User
STT Tên user Quyền
1 userQuanTri
- Cập nhật bảng [QuanTri].[NHANVIEN]
- Cấp quyền cho người sử dụng
2 userThuThu
- Có mọi quyền trong các bảng thuộc schema ThuThu
(TheDocGia,TheoDoiMuonTra)
- Có quyền SELECT đối với các bảng khác
3 userThuKho
- Có mọi quyền trong các bảng thuộc schema ThuKho
(Sach,NhaXuatBan,TacGia,Loaisach)
- Có quyền SELECT đối với các bảng khác
4 userThuQuy
- Có mọi quyền trong các bảng thuộc schema
QuanLyPhong (Thutienphat)
- Có quyền SELECT đối với các bảng khác
5 userDocGia
Có mọi quyền trong các bảng thuộc schema DocGia
(Phieuyeucau)
6 userKhach Có quyền SELECT bảng ThuKho.Sach
3. Tạo các role
STT Tên db_role Quyền
1 db_QuanTri
- Cập nhật bảng [QuanTri].[NHANVIEN]
- Cấp quyền cho người sử dụng

2 db_NhanVien
- Có quyền SELECT trên các schema ThuThu,
ThuKho,ThuQuy
3 db_DocGia
- Có quyền cập nhật bảng [DocGia].[PhieuYeuCau]
- Có quyền SELECT đối với các bảng khác
(ThuKho.Sach)
4. Cấp phát quyền cho role và user sử dụng giao diện MS SQL
Management Studio
a.Cấp phát quyền cho role
- db_QuanTri
-db_NhanVien
-db_DocGia
5. Cấp phát quyền cho role và user sử dụng các câu lệnh T-SQL
5.1. Cấp phát quyền cho role
-db_QuanTri
GRANT SELECT ,UPDATE ,DELETE, INSERT ON SCHEMA::[QuanTri] TO
[db_QuanTri]
DENY DELETE,INSERT,UPDATE ON SCHEMA::[ThuKho] TO [db_QuanTri]
DENY DELETE,INSERT,UPDATE ON SCHEMA::[ThuThu] TO [db_QuanTri]
DENY DELETE,INSERT,UPDATE ON SCHEMA::[ThuQuy] TO [db_QuanTri]

-db_NhanVien
GRANT SELECT ON SCHEMA::[ThuThu] TO [db_NhanVien]
GRANT SELECT ON SCHEMA::[ThuQuy] TO [db_NhanVien]
GRANT SELECT ON SCHEMA::[ThuKho] TO [db_NhanVien]
GRANT SELECT ON SCHEMA::[DocGia] TO [db_NhanVien]
-db_DocGia
GRANT SELECT ON [ThuKho].[TacGia] TO [db_DocGia]
GRANT SELECT ON [ThuKho].[NhaXuatBan] TO [db_DocGia]
GRANT SELECT ON [ThuKho].[Sach] TO [db_DocGia]
GRANT SELECT ON [ThuKho].[Loaisach] TO [db_DocGia]
6. Mã nguồn một số thủ tục,hàm,trigger
6.1. Thủ tục
create procedure thuthu.So_nguoi_muon_cung_ngay
@ngaymuon varchar(10),@songuoi int output
AS
BEGIN
SELECT @songuoi=count(*)
From Thuthu.TheoDoiMuonTra where @NgayMuon =Ngaymuon
END
create procedure thuthu.insertDOCGIA
@Mathe varchar(10),@Hoten varchar(50),@Ngaycap datetime,@Ngayhethan
datetime,
@Diachi varchar(max),@MaNV varchar(10),@MaDV varchar(10),@Khoa
varchar(10)
AS
BEGIN
INSERT INTO [QLTV].[thuthu].[THEDOCGIA]
VALUES(@Mathe,@Hoten,@Ngaycap,@Ngayhethan,@Diachi,@MaNV,@MaDV,@khoa)
END
6.2. Hàm

7.
8. create function Quantri.Nhanviencapduoi(@MaNV varchar(10))
9. returns
10. @NhanVien table
11. (MaNV varchar(10)primary key,
12. Hoten nvarchar(50)not null,
13. Ngaysinh datetime,
14. Bophan varchar(50),
15. Chucvu varchar(50),
16. Captren nvarchar(50))
17.as
18.begin
19. declare @RowsAdded int
20. declare @Reports table(
21. MaNV varchar(10)primary key,
22. Hoten nvarchar(50)not null,
23. Ngaysinh datetime,
24. Bophan varchar(50),
25. Chucvu varchar(50),
26. Captren nvarchar(50),
27. Processed tinyint default 0)
28.
29. insert @Reports select MaNV,
Hoten,Ngaysinh,bophan,chucvu,captren,0
30. from quantri.nhanvien
31. where MaNV = @MaNV
32.
33. set @RowsAdded =@@RowCount
34.
35. while @RowsAdded>0

36. begin
37.
38. update @Reports set Processed=1 where Processed=0
39.
40. insert @Reports select
e.MaNV,e.hoten,E.Ngaysinh,e.bophan,e.chucvu,e.captren,0
41. from quantri.nhanvien e, @Reports r
42. where e.captren=r.manv and r.Processed =1
43.
44. update @Reports set Processed=2 where Processed=1
45.
46. set @RowsAdded=@@RowCount
47. end
48.
49. insert @nhanvien
50. select Manv,hoten,ngaysinh,bophan,chucvu,captren
51. from @Reports
52.
53. return
54.End
KẾT LUẬN
Với sự hướng dẫn tận tình của thầy Nguyễn Mạnh Hùng và sự cố gắng của bản
than e cũng đã hoàn thành xong đồ án của minh, song vì thời gian còn hạn chế,
bước đầu chúng em được làm quen với bài toán mà kinh nghiệm còn chưa nhiều
nên chương trình của em không tránh khỏi những thiếu sót. Em rất mong nhận
được sự chỉ dẫn của thầy cô giáo cùng với sự góp ý của các bạn để chương trình
của em hoàn thiện hơn.
Em xin chân thành cảm ơn!


×