Khảo Sát Hiện Trạng Và Xác Định Yêu Cầu
Một thư viện cần quản lý việc đăng ký mượn và trả sách của các bạn độc giả Sau đây là phần mô tả theo các nghiệp vụ hàng ngày của thư viện:
Thủ thư gọi sách là đầu sách (Sach) Ví dụ: nội dung đầu sách là “Đắc nhân tâm”,
“Chinh phục đỉnh cao Toán học”,…Mỗi đầu sách có một mã số gọi là mã số sách (MaSach) để phân biệt với các đầu sách khác, mã số sách được bắt đầu bằng 2 kí tự MS và sau đó là số thứ tự của đầu sách đó (Ví dụ: MS05, MS100, MS201,…) Mỗi đầu sách có một số lượng (SoLuong) cho biết tựa sách đó có còn sách để có thể mượn được nữa không Ngoài ra, thông tin về đầu sách còn có: Tác giả cuốn sách (TacGia), nhà xuất bản (NhaXB) và giá tiền (Gia), giúp cho việc phân biệt và quản lý các đầu sách được dễ dàng và chính xác hơn Để trở thành độc giả (DocGia) của thư viện, thì mỗi bạn đọc phải đăng ký và cung cấp thông tin cá nhân bao gồm họ và tên, giới tính, địa chỉ và số điện thoại của mình Thủ thư sẽ cung cấp cho bạn đọc một thẻ độc giả, trên đó có mã số thẻ chính là mã số bạn đọc để phân biệt các bạn đọc khác (MaDocGia) Mã độc giả được bắt đầu bằng 2 kí tự DG và sau đó là số thứ tự của độc giả đó (Ví dụ: DG11, DG32, DG99,…)
Sau khi bạn đọc đăng ký thẻ độc giả thành công, bạn đọc muốn mượn sách (thư viện cho mượn tối đa 3 cuốn/1 lần mượn), bạn đọc chọn cho mình những cuốn sách cần mượn rồi gặp thủ thư để tiến hành cho bước mượn sách
Bạn đọc cần trình thẻ độc giả cho thủ thư kiểm tra thông tin và thủ thư tiến hành lập phiếu mượn
Mỗi cuốn sách có thể được mượn tối đa 30 ngày Nếu quá hạn, khi trả sách bạn đọc phải đóng tiền lệ phí quá hạn (5.000đ/ngày)
Ngoài ra, chương trình còn hiển thị thông tin về việc mượn trả sách của bạn đọc gồm: mã sách (MaSach), tên sách (TenSach), số sách mượn (SLSachMuon), thông tin ngày mượn (NgayMuon), ngày hẹn trả (NgayHenTra) và thông tin của người mượn.
Thông tin về thẻ độc giả của bạn đọc hợp lệ, thì thủ thư sẽ cho mượn sách Phần mềm sẽ chạy và báo rằng bạn có được mượn sách hay không Trường hợp bạn không được mượn sách thì phần mềm sẽ thông báo lý do
Khi sách được trả, thủ thư kiểm tra mã sách trên sách Đối chiếu đúng thông tin và tình trạng sách trả, thủ thư cập nhật thông tin vào phần quản lý phiếu trả
Trường hợp tình trạng sách cũ, hư hỏng so với khi mượn và trường hợp làm mất sách thì bạn đọc phải đền bù theo quy định
Sau khi hoàn thành việc trả sách, thông tin số lượng sách và tình trạng cuốn sách sẽ được cập nhật trên hệ thống Những bạn đọc khác có thể mượn sách ngay sau đó
Thống kê về số lượng sách
Thống kê về số độc giả
Thống kê về số lượng phiếu mượn
Thống kê về số lượng phiếu trả
Thống kê doanh thu tiền phạt
Thống kê số lượng phiếu chưa trả
Người quản lý sử dụng phần mềm được quyền thực hiện các chức năng sau:
Quản lý sách: thêm mới, sửa thông tin và xóa sách
Quản lý độc giả: thêm, sửa thông tin và xóa độc giả
In thông tin độc giau
In thông tin danh mục sách
In thông tin chi tiết viêc mượn sách
II Xác định yêu cầu:
Mục đích của đề tài là khảo sát phân tích thiết kế chương trình quản lý sách của thư viện để hiểu biết và phục vụ cho việc mượn trả sách, quản lý độc giả và thống kê báo cáo tại thư viện sao cho có hiệu quả nhất
Cần phải hiểu biết rõ và nắm được các nghiê wp vụ của viê wc quản lý thư viện từ đó đi đến khảo sát, phân tích hệ thống quản lý thư viện theo đúng yêu cầu, cuối cùng là phải thiết kế được chương trình với các chức năng chỉ rõ ở bước phân tích hệ thống.
Website Quản lý thư viện cần đáp ứng các yêu cầu chức năng cơ bản sau:
Hệ thống đáp ứng các yêu cầu lưu trữ thông tin cần thiết về người dùng, sách, độc giả, phiếu mượn và phiếu trả…của thư viện
2.1.1.1 Thông tin về người dùng:
2.1.1.3 Thông tin về độc giả:
Số điện thoại Địa chỉ
2.1.1.4 Thông tin về phiếu mượn:
2.1.1.5 Thông tin về phiếu trả:
2.1.2.1 Tra cứu thông tin độc giả
2.1.2.2 Tra cứu thông tin sách
2.1.2.3 Tra cứu thông tin mượn sách
2.2 Yêu cầu phi chức năng:
Chương trình khi hoạt động không mất nhiều thời gian, tốc độ tra cứu thông tin phải nhanh.
Phần mềm phải gọn nhẹ, không chiếm quá nhiều dung lượng ổ cứng.
Dễ sử dụng, đảm bảo chất lượng, và chống người khác xâm nhập ngoài chủ sở hữu
III Xác định công nghệ sử dụng trong đề tài:
+ Công nghệ sử dụng: Sql Server, Winform
+ Tính năng, nhu cầu sử dụng:
Chức năng tạo bảng, thiết kế CSDL
Tạo ràng buộc, tạo các function
Tạo các thủ tục, trigger
Tạo Transaction - xử lý đồng thời
Tạo user, phân quyền theo role
Hiện thực hóa chức năng
Cơ Sở Lý Thuyết
SQL là viết tắt của Structured Query Language là ngôn ngữ truy vấn có cấu trúc Nó là một ngôn ngữ, là tập hợp các lệnh để tương tác với cơ sở dữ liệu Dùng để lưu trữ, thao tác và truy xuất dữ liệu được lưu trữ trong một cơ sở dữ liệu quan hệ Trong thực tế, SQL là ngôn ngữ chuẩn được sử dụng hầu hết cho hệ cơ sở dữ liệu quan hệ Tất cả các hệ thống quản lý cơ sở dữ liệu quan hệ (RDMS) như MySQL, MS Access, Oracle, Postgres và SQL Server… đều sử dụng SQL làm ngôn ngữ cơ sở dữ liệu chuẩn.
SQL server hay còn được gọi là Microsoft SQL Server, nó từ viết tắt của MS SQL Server Đây chính là một loại phần mềm đã được phát triển bởi Microsoft và nó được sử dụng để có thể dễ dàng lưu trữ cho những dữ liệu dựa theo tiêu chuẩn RDBMS.
Từ đó, người ta sẽ lưu trữ dữ liệu dựa vào tiêu chuẩn RDBMS và nó cũng là một trong những hệ quản trị cơ sở dữ liệu dạng quan hệ đối tượng.
SQL Server có khả năng cung cấp đầy đủ các công cụ cho việc quản lý từ giao diện GUI đến sử dụng ngôn ngữ cho việc truy vấn SQL Điểm mạnh của SQL điểm mạnh của nó là có nhiều nền tảng được kết hợp cùng như: ASP.NET, C# để xây dựng Winform cũng chính nó có khả năng hoạt động độc lập
Tuy nhiên, SQL Server thường đi kèm với việc thực hiện riêng các ngôn ngữ SQL, T- SQL,
T-SQL là viết tắt của Transact-SQL, đây là một phần mở rộng của ngôn ngữ truy vấn SQL được phát triển dựa theo tiêu chuẩn ISO và ANSI (American National Standards Institute)
T-SQL là việc thực thi ngôn ngữ cấu trúc chuẩn của Microsoft được dùng trong hệ thống SQL Server Ngôn ngữ đặc biệt này có thể được dùng để thực hiện các thao tác với bảng như định nghĩa, chèn, xóa, cập nhật, truy vấn dữ liệu. Đây là một ngôn ngữ truy vấn cơ sở dữ liệu khá mạnh đề cập đến kiểu dữ liệu, đối tượng tạm thời, thủ tục hệ thống và các thủ tục mở rộng T-SQL còn có tính năng như sử dụng biến địa phương, xử lý các chuỗi/dữ liệu được thêm vào.
Khối câu lệnh trong T-SQL sẽ được chia làm 3 nhóm tương đương với 3 chức năng chính như sau:
+ Nhóm định nghĩa dữ liệu: Nhóm này gồm các câu lệnh CREATE, ALTER, DROP table, dùng để tạo, sửa đổi hoặc xóa bảng dữ liệu Các lệnh này được sử dụng để định nghĩa cấu trúc một table.
+ Nhóm điều khiển dữ liệu: Gồm các lệnh GRANT, DENY, REVOKE,… dùng để phần quyền truy cập của các đối tượng table, function, view,…
+ Nhóm thao tác dữ liệu: Là tập hợp các lệnh để thao tác trực tiếp với dữ liệu có trong table, giúp truy vấn, tìm kiếm dữ liệu nhanh chóng Các câu lệnh nhóm này gồm INSERT, UPDATE, SELECT, DELETE.
Cấu trúc của ngôn ngữ T-SQL được xây dựng theo từng khối lệnh được bắt đầu bằng BEGIN và kết thúc là END Một khối lệnh có thể được đặt lồng trong một khối lệnh bao trùm khác, trong mỗi khối lệnh là các câu lệnh, các câu lệnh này được ngăn cách với nhau bởi dấu chấm phẩy.
Cấu trúc một khối lệnh có dạng như sau:
Cấu trúc khối lệnh T-SQL
III Quản Lý Giao Tác/Giao Dịch
Một giao tác (transaction) là một hành động hay một chuỗi các hành động truy cập vào CSDL hoặc làm thay đổi nội dung CSDL, giao tác được đưa ra bởi một người sử dụng hay một chương trình ứng dụng
Như vậy một giao tác là một đơn vị công việc trên CSDL xét trên tính logic Một giao tác có thể là toàn bộ một chương trình (viết trong ngôn ngữ thao tác dữ liệu bậc cao hay trong ngôn ngữ lập trình như SQL, COBOL, ), nó cũng có thể là một phần của chương trình hay một câu lệnh đơn lẻ như câu lệnh INSERT, UPDATE của SQL. Một số thuật ngữ liên quan đến giao tác:
+ Begin [transaction/tran]: bắt đầu một transaction
+ Commit [transaction/tran]: hoàn tất một transaction
+ Rollback [transaction/tran] : quay lui, hủy bỏ toàn bộ phần giao dịchđã thực hiện trước đó
Trong ngữ cảnh CSDL, có thể xem sự thực hiện một chương trình ứng dụng như một dãy các giao tác và xen kẽ giữa chúng là những thao tác không đòi hỏi xử lí CSDL (thao tác CPU) Để cho việc tiện theo dõi, dưới đây minh họa hai lược đồ quan hệ Products và Categories đơn giản như sau:
Products(id, category_id, name, price)
Lược đồ Products gồm các thuộc tính về mã sản phẩm (id), mã thể loại (category_id), tên sản phẩm (name) và giá của sản phẩm (price)
Lược đồ Categories dùng để tham chiếu mã thể loại ứng với từng sản phẩm bao gồm các thuộc tính về mã thể loại (id), tên thể loại (name)
Ví dụ 1: Một giao tác đơn giản là nâng giá của một sản phẩm có mã số là xx thêm 10$
%$ giá hiện tại của sản phẩm đó Chúng ta có thể viết giao tác này như sau: read(product.id = x, price) new_price = price * 1.1 write(product.id = x, new_price) Ở đây chúng ta quy ước dùng read(x) để chỉ thao tác đọc một mục dữ liệu có tên là xx ở CSDL vào một biến của chương trình Để cho đơn giản việc trình bày chúng ta coi như biến chương trình này cũng có tên là xx Tương tự như vậy write(x) dùng để chỉ thao tác ghi giá trị biến xx của chương trình vào mục dữ liệu xx của CSDL
Việc thưc hiện một lệnh read(x) sẽ bao gồm các bước sau:
+ Tìm địa chỉ của khối có chứa mục dữ liệu xx
+ Sao chép khối đó vào vùng đệm của bộ nhớ chính (nếu nó chưa có sẵn trong một vùng đệm của bộ nhớ chính)
+ Sao chép mục dữ liệu xx từ vùng đệm vào biến có tên là xx của chương trình Việc thưc hiện một lệnh write(x) sẽ bao gồm các bước sau:
+ Tìm địa chỉ của khối có chứa mục dữ liệu xx
+ Sao chép khối đó vào vùng đệm của bộ nhớ chính (nếu nó chưa có sẵn trong một vùng đệm của bộ nhớ chính)
+ Sao chép mục dữ liệu xx từ biến chương trình có tên là xx vào chỗ chính xác của nó trong vùng đệm
+ Lưu trữ khối vừa cập nhập trong vùng đệm vào lại thiết bị nhớ để sau này có thể truy xuất (có thể lưu ngay tức thời hoặc tại thời điểm muộn hơn)
Phân Tích – Thiết Kế Dữ Liệu
II Phân tích dữ liệu a) Mô hình thực tế kết hợp b) Mô hình quan hệ:
Tên thuộc tính (Field name)
Kiểu dữ liệu Độ rộng Not NULL Ràng buộc / Miền giá trị
1 sMaTG CHAR 20 Yes Mã tác giả
2 sTenTG VARCHAR 20 Tên tác giả
3 sDiaChiTG VARCHAR 100 Địa chỉ tác giả
Tên thuộc tính (Field name)
Kiểu dữ liệu Độ rộng Not NULL Ràng buộc / Miền giá trị
1 sMaKho CHAR 20 Yes Mã kho
Kiểu dữ liệu Độ rộng Not NUL L Ràng buộc / Miền giá trị Mã hóa Diễn giải
1 sMaSach CHAR 20 Yes Mã sách
6 sMaLoaiSach CHAR 20 Yes Mã loại sách
7 sMaKho CHAR 20 Yes Mã kho
Tên thuộc tính (Field name)
Kiểu dữ liệu Độ rộng Not NULL Ràng buộc / Miền giá trị
1 sMaLoaiSach CHAR 20 Yes Mã loại sách
Tên thuộc tính (Field name)
Kiểu dữ liệu Độ rộng Not NULL Ràng buộc / Miền giá trị
1 sMaSach CHAR 20 Yes Mã sách
2 sMaTG CHAR 20 Yes Mã tác giả
Tên thuộc tính (Field name)
Kiểu dữ liệu Độ rộng Not NULL Ràng buộc / Miền giá trị
1 sMaNXB CHAR 20 Yes Mã nhà xuất bản
2 sTenNXB VARCHAR 50 Tên nhà xuất bản
3 SDiaChiNXB VARCHAR 100 Địa chỉ nhà xuất bản
Kiểu dữ liệu Độ rộng Not NULL Ràng buộc / Miền giá trị
1 sMaPhieuMuon CHAR 20 Yes Mã phiếu mượn
2 sMaSach CHAR 20 Yes Mã sách
3 iSoLuongMuon INT Số lượng mượn
4 sTinhTrangSach NTEXT Tình trạng sách
Kiểu dữ liệu Độ rộng Not NULL Ràng buộc / Miền giá trị
1 sMaPhieuTra CHAR 20 Yes Mã phiếu trả
2 sMaSach CHAR 20 Yes Mã sách
3 iSoLuongTra INT Số lượng trả
4 sTinhTrangSach NTEXT Tình trạng sách
Kiểu dữ liệu Độ rộng Not NULL Ràng buộc / Miền giá trị
1 sMaPhieuMuon CHAR 20 Yes Mã phiếu mượn
2 sMaThuThu CHAR 20 Yes Mã thủ thư
3 sMaSinhVien CHAR 20 Yes Mã sinh viên
Kiểu dữ liệu Độ rộng Not NULL
Ràng buộc / Miền giá trị
1 sMaThuThu CHAR 20 Yes Mã thủ thư
2 sTenThuThu VARCHAR 50 Tên thủ thư
3 iSoDienThoai NUMBER Số điện thoại
Kiểu dữ liệu Độ rộng Not NULL Ràng buộc / Miền giá trị
1 sMaPhieuTra CHAR 20 Yes Mã phiếu trả
2 sMaThuThu CHAR 20 Yes Mã thủ thư
3 sMaSinhVien CHAR 20 Yes Mã sinh viên
5 iSoNgayTraMuon DATE Số ngày trả mượn
Kiểu dữ liệu Độ rộng Not NULL
Ràng buộc / Miền giá trị
1 sMaSinhVien CHAR 20 Yes Mã sinh viên
2 sTenSV VARCHAR 50 Tên sinh viên
III Phát hiện các ràng buộc toàn vẹn a Ràng buộc toàn vẹn trên bảng tblNhaXuatBan
Ràng buộc khóa chính tên sMaNXB b Ràng buộc toàn vẹn trên bảng tblTacGia
Ràng buộc khóa chính tên sMaTG c Ràng buộc toàn vẹn trên bảng tblLoaiSach
Ràng buộc khóa chính tên sMaLoaiSach d Ràng buộc toàn vẹn trên bảng tblSinhVien Ràng buộc khóa chính tên sMaSinhVien e Ràng buộc toàn vẹn trên bảng tblKhoRàng buộc khóa chính tên sMaKho f Ràng buộc toàn vẹn trên bảng tblSach
Ràng buộc khóa chính tên sMaSach
Khai báo 1 ràng buộc khóa ngoại tên là FK_MaLoaiSach tham chiếu đến cột sMaLoaiSach của bảng tblLoaiSach
Khai báo 1 ràng buộc khóa ngoại tên là FK_NhaXB tham chiếu đến cột sMaNXB của bảng tblNhaXuatBan
Khai báo 1 ràng buộc khóa ngoại tên là FK_Kho tham chiếu đến cột sMaKho của bảng tblKho g Ràng buộc toàn vẹn trên bảng tblSach_TacGia
Ràng buộc khóa chính tên PK_SachTacGia
Khai báo 1 ràng buộc khóa ngoại tên là FK_SachTacGia tham chiếu đến cột sMaSach của bảng tblSach
Khai báo 1 ràng buộc khóa ngoại tên là FK_TacGiaSach tham chiếu đến cột sMaTGcủa bảng tblTacGia h Ràng buộc toàn vẹn trên bảng tblThuThu
Ràng buộc khóa chính tên sMaThuThu i Ràng buộc toàn vẹn trên bảng tblPhieuMuon
Ràng buộc khóa chính tên sMaPhieuMuon
Khai báo 1 ràng buộc khóa ngoại tên là FK_ThuThu tham chiếu đến cột sMaThuThu của bảng tblThuThu
Khai báo 1 ràng buộc khóa ngoại tên là FK_SinhVien tham chiếu đến cột sMaSinhVien của bảng tblSinhVien j Ràng buộc toàn vẹn trên bảng tblChiTietPhieuMuon
Ràng buộc khóa chính tên PK_ChiTietPhieuMuon
Khai báo 1 ràng buộc khóa ngoại tên là FK_MaPhieuMuon tham chiếu đến cột sMaPhieuMuon của bảng tblPhieuMuon
Khai báo 1 ràng buộc khóa ngoại tên là FK_MaSach tham chiếu đến cột sMaSach của bảng tblSach k Ràng buộc toàn vẹn trên bảng tblPhieuTra
Ràng buộc khóa chính tên sMaPhieuTra
Khai báo 1 ràng buộc khóa ngoại tên là FK_ThuThuu tham chiếu đến cột sMaThuThu của bảng tblThuThu
Khai báo 1 ràng buộc khóa ngoại tên là FK_SinhVienTra tham chiếu đến cột sMaSinhVien của bảng tblSinhVien l Ràng buộc toàn vẹn trên bảng tblChiTietPhieuTra
Ràng buộc khóa chính tên PKKKK
Khai báo 1 ràng buộc khóa ngoại tên là FK_MaSachh tham chiếu đến cột sMaSach của bảng tblSach
Khai báo 1 ràng buộc khóa ngoại tên là FK_MaPhieuTra tham chiếu đến cột sMaPhieuTra của bảng tblPhieuTra
Triển khai thực nghiệm
I Phía sever I.1 Tạo CSDL create table tblNhaXuatBan
( sMaNXB char(10) primary key NOT NULL, sTenNXB nvarchar(30) NULL, sDiaChiNXB nvarchar(30) NULL,
( sMaTG char(10) primary key NOT NULL, sTenTG nvarchar(30) NULL, sDiaChiTG nvarchar(30) NULL,
( sMaLoaiSach char(10) primary key NOT NULL, sTenLoaiSach nvarchar(30) NULL,
( sMaSinhVien char(10) primary key NOT NULL, sTenSV nvarchar(30) NULL, sLop nvarchar(30) NULL,
( sMaKho char(10) primary key NOT NULL, sTenKho nvarchar(30) NULL,
( sMaSach char(10) primary key NOT NULL, sTenSach nvarchar(30) NULL, iNamXB int NULL, iSoLuong int NULL, sMaNXB char(10) NOT NULL, sMaLoaiSach char(10) NOT NULL, sMaKho char(10) NOT NULL,
( sMaSach char(10) NOT NULL, sMaTG char(10) NOT NULL,
Dat sMaSach va sMaTG lam khoa chinh cho bang tblSach_TacGia alter table tblSach_TacGia add constraint PK_SachTacGia primary key (sMaSach,sMaTG) create table tblThuThu
( sMaThuThu char(10) primary key NOT NULL, sTenThuThu nvarchar(30) NULL, sSoDienThoai char(12) NULL,
( sMaPhieuMuon char(10) primary key NOT NULL, sMaThuThu char(10) NOT NULL, sMaSinhVien char(10) NOT NULL, dNgayMuon datetime NULL,
) alter table tblPhieuMuon add dNgayTra datetime NULL create table tblChiTietPhieuMuon
( sMaPhieuMuon char(10) NOT NULL, sMaSach char(10) NOT NULL, iSoLuongMuon int NULL, sTinhTrangSach nvarchar(30) NULL,
( sMaPhieuTra char(10) primary key NOT NULL, sMaThuThu char(10) NOT NULL, sMaSinhVien char(10) NOT NULL, dNgayTra datetime NULL,
) alter table tblPhieuTra add iSoNgayTraMuon int Check(iSoNgayTraMuon>=0) NULL create table tblChiTietPhieuTra
( sMaPhieuTra char(10) NOT NULL, sMaSach char(10) NOT NULL, iSoLuongTra int NULL, sTinhTrangSach nvarchar(30) NULL,
) alter table tblChiTietPhieuTra add constraint PKKKK primary key (sMaPhieuTra,sMaSach) alter table tblChiTietPhieuMuon add constraint PK_ChiTietPhieuMuon primary key (sMaPhieuMuon,sMaSach) sMaSach trong bang tblChiTietPhieuTra tham chi u sang b ng tblSach lam khoa ế ả ngoai alter table tblChiTietPhieuTra add constraint FK_MaSachh foreign key (sMaSach) references tblSach(sMaSach)
sMaPhieuMuon trong bang tblChiTietPhieuTra tham chi u sang b ng tblPhieuTra lam ế ả khoa ngoai alter table tblChiTietPhieuTra add constraint FK_MaPhieuTra foreign key (sMaPhieuTra) references tblPhieuTra(sMaPhieuTra)
sMaPhieuMuon trong bang tblChiTietPhieuMuon tham chi u sang b ng tblPhieuMuon ế ả lam khoa ngoai alter table tblChiTietPhieuMuon add constraint FK_MaPhieuMuon foreign key (sMaPhieuMuon) references tblPhieuMuon(sMaPhieuMuon)
sMaSach trong bang tblChiTietPhieuMuon tham chi u sang b ng tblSach lam khoa ế ả ngoai alter table tblChiTietPhieuMuon add constraint FK_MaSach foreign key (sMaSach) references tblSach(sMaSach)
sMaLoaiSach trong b?ng tblSach tham chi u sang b ng tblLoaiSach làm khóa ngo?i ế ả alter table tblSach add constraint FK_MaLoaiSach foreign key(sMaLoaiSach) references tblLoaiSach(sMaLoaiSach)
sMaThuThu trong b?ng tblPhieuMuon tham chi u sang b ng tblThuThu làm khóa ngo?i ế ả alter table tblPhieuMuon add constraint FK_ThuThu foreign key(sMaThuThu) references tblThuThu(sMaThuThu)
sMaThuThu trong b?ng tblPhieuTra tham chi u sang b ng tblThuThu làm khóa ngo?i ế ả alter table tblPhieuTra add constraint FK_ThuThuu foreign key(sMaThuThu) references tblThuThu(sMaThuThu)
sMaNXB trong b?ng tlbSach tham chi u sang b ng tblNhaXB làm khóa ngo?i ế ả alter table tblSach add constraint FK_NhaXB foreign key (sMaNXB) references tblNhaXuatBan(sMaNXB)
sMaKho trong b?ng tblSach tham chi u sang b ng tblKho làm khóa ngo?i ế ả alter table tblSach add constraint FK_Kho foreign key (sMaKho) references tblKho(sMaKho)
sMaSach trong b?ng tblSach_TacGia tham chi u sang b ng tblSach làm khóa ngo?i ế ả alter table tblSach_TacGia add constraint FK_SachTacGia foreign key (sMaSach) references tblSach(sMaSach)
sMaSach trong b?ng tblSach_TacGia tham chi u sang b ng tblTacGia làm khóa ngo?i ế ả alter table tblSach_TacGia add constraint FK_TacGiaSach foreign key (sMaTG) references tblTacGia(sMaTG)
sMaSinhVen trong b ng tblPhieuMuon tham chi u sang b ng tblSinhVien làm khóa ả ế ả ngo i ạ alter table tblPhieuMuon add constraint FK_SinhVien foreign key(sMaSinhVien) references tblSinhVien(sMaSinhVien)
sMaSinhVen trong b ng tblPhieutra tham chi u sang b ng tblSinhVien làm khóa ả ế ả ngo i ạ alter table tblPhieuTra add constraint FK_SinhVienTra foreign key(sMaSinhVien) references tblSinhVien(sMaSinhVien)
Thêm d li u vào b ng tblLoaiSach ữ ệ ả insert into tblLoaiSach values('LS1',N'Ti u Thuy t'), ể ế
Thêm d li u vào b ng tblNhaXuatBan ữ ệ ả insert into tblNhaXuatBan values('NXB1',N'Kim Đ ng',N'Nam Đ nh'), ồ ị
('NXB2',N'Tinh Hoa',N'Nam Đ nh'), ị
('NXB3',N'Trí Vi t',N'Thái Nguyên'), ệ
('NXB4',N'Thu n Hóa',N'Kiên Giang'), ậ
('NXB5',N'Văn Ngh Thành Ph ',N'TP HCM'), ệ ố
('NXB7',N'Khoa H c K Thu t',N'Thái Bình'), ọ ỹ ậ ('NXB8',N'S Th t',N'Bình Đ nh'), ự ậ ị
('NXB9',N'Chính Tr Qu c Gia',N'Hà N i'), ị ộ ộ
('NXB10',N'Nam Đ ng',N'Cao B ng'), ồ ằ
('NXB12',N'Bá Phúc',N'Lâm Đ ng'), ồ
('NXB13',N'Giao Thông V n T i',N'Thanh Hóa'), ậ ả ả ('NXB14',N'H i Văn Hóa',N'Hà Nam'), ộ
('NXB15',N'Lao Đ ng',N'Phú Th '), ộ ọ
('NXB16',N'M nh Hùng',N'Qu ng Ninh'); ạ ả ả
Thêm d li u vào b ng tblSinhVien ữ ệ ả insert into tblSinhVien values ('SV1',N'Tr n M nh Hùng','17A5'), ầ ạ
('SV5',N'Đ ng H ặ ươ ng Lan','17A3'),
('SV8',N'Nguy n Văn Thành','16A4'), ễ ('SV9',N'Tr n Xuân Bá','15A3'), ầ
('SV10',N'Ngô Tr ng Hi u','17A5'), ọ ếế ('SV11',N'Ph m Văn Đ c M nh','17A2'), ạ ứ ạ ('SV12',N'Nguy n Đình Thi','17A2'), ễ ('SV13',N'Ngô Bá Khá','15A5'),
('SV14',N'Nguy n Văn Hu n','18A3'), ễ ấ ('SV15',N'Đ Văn C ỗ ươ ng','16A3'),
('SV16',N'Nguy n Văn Đ t','17A4'); ễ ạ Thêm d li u vào b ng tblTacGia ữ ệ ả insert into tblTacGia values('TG1',N'M nh Hùng',N'Qu ng Ninh'), ạ ả ả ('TG2',N'Tr n Th An',N'Nam Hà'), ầ ị ('TG3',N'Nguy n Th Bình',N'B c Ninh'), ễ ị ắ ('TG4',N'Nguy n Văn B ng',N'Nam Đ nh'), ễ ằ ị ('TG5',N'Cao C u',N'B c Giang'), ầ ắ
('TG6',N'Ngô Xuân Long',N'Kiên Giang'), ('TG7',N'Võ Hoài Thu',N'Khánh Hòa'), ('TG8',N'Nam Cao',N'Hà N i'), ộ
('TG9',N'Nguy n Khuy n',N'Thái Bình'), ễ ế ('TG10',N'Nguy n B nh Khiêm',N'Bình Đ nh'), ễ ỉ ị ('TG11',N'Nguy n Văn S n',N'Thái Nguyên'), ễ ơ ('TG12',N'Nguy n Nh Sen',N'Tây Nguyên'), ễ ư ('TG13',N'Tr n Th Hoài Thu',N'Hu '), ầ ị ế ('TG14',N'T ng Ng c H i',N'Hà Nam'), ố ọ ả ('TG15',N'Nguy n Th Th ễ ị ươ ng',N'Thái Bình'), ('TG16',N'Phan Văn M nh',N'Kiên Giang'); ạ Thêm d li u vào ng tblThuThu ữ ệ ả select * from tblThuThu insert into tblThuThu values
('TT1',N'Tr n M nh Hùng','0868128053'), ầ ạ ('TT2',N'Nguy n Văn Tý','0913578913'), ễ ('TT3',N'Tr n Ti n Dũng','0868686053'), ầ ế ('TT4',N'Nguy n Văn Lâm','0868686035'), ễ ('TT5',N'Nguy n Ti n Dũng','0868686045'), ễ ế ('TT6',N'Lê Th Yên','0868686247'), ị ('TT7',N'Lê Th Máy','0868686259'), ị ('TT8',N'Vũ Th Ph ị ươ ng','0868686604'), ('TT9',N'Nguy n Th Th y','0969398904'), ễ ị ủ ('TT10',N'Nguy n Văn Sê','0985132409'), ễ ('TT11',N'Tr n Thu Huy n','0968023414'), ầ ề ('TT12',N'Lê Văn Thái','0869136879'), ('TT13',N'Ph m Văn B ng','0968199083'), ạ ằ ('TT14',N'Ngô Tr ng Hi u','0988311392'), ọ ếế ('TT15',N'Ph m Văn Đ c M nh','0961135692'), ạ ứ ạ ('TT16',N'Nguy n Văn Hi u','0989145793'); ễ ế Thêm d li u vào b ng tblKho ữ ệ ả insert into tblKho values('K1','Kho 1'),
Thêm d li u vào b ng tblSach ữ ệ ả insert into tblSach values('MS1','Doremon',1969,40,'NXB1','LS1','K1'),
('MS2','Bông Hoa Nh ',2001,52,'NXB2','LS2','K2'), ỏ
('MS3','Tôi Đi Code D o',1959,20,'NXB3','LS2','K2'), ạ ('MS4','Đ c Nhân Tâm',1919,50,'NXB3','LS2','K2'), ắ
('MS5','Cu c S ng Không Gi i H n',1961,10,'NXB3','LS3','K3'), ộ ốế ớ ạ ('MS6','Qu ng Gánh Lo Nghĩ Đi',1999,20,'NXB4','LS4','K4'), ả ('MS7','Làm Ch T Duy',1869,30,'NXB5','LS5','K5'), ủ ư ('MS8','Nhà Gi Kim',1909,60,'NXB6','LS6','K6'), ả
('MS9','Thói Quen Th 8',1979,71,'NXB7','LS7','K7'), ứ ('MS10','Cha Cõng Con',1919,80,'NXB8','LS8','K8'),
('MS11','Đánh Th c Con Ng ứ ườ i',1960,60,'NXB9','LS9','K9'), ('MS12','S Tích H Hoàn Ki m',1959,20,'NXB10','LS10','K10'), ự ốồ ếế ('MS13','Mai Ăn Tiêm',1869,40,'NXB11','LS11','K11'), ('MS14','Bánh Xe',1999,50,'NXB12','LS12','K12'),
('MS15','M ng và Truy n Thông',1899,66,'NXB13','LS13','K13'), ạ ếồ ('MS16','Làm Giàu Không Khó',2009,100,'NXB14','LS14','K14'); Thêm d li u vào b ng tblSach_TacGia ữ ệ ả insert into tblSach_TacGia values('MS1','TG1'),
Thêm d li u vào b ng tblPhieuMuon ữ ệ ả insert into tblPhieuMuon values
('PM1','TT1','SV1','02/04/2016','02/06/2016'), ('PM2','TT2','SV2','03/05/2017','03/09/2017'), ('PM3','TT3','SV3','02/06/2015','02/10/2015'), ('PM4','TT4','SV4','02/07/2011','02/16/2011'), ('PM5','TT5','SV5','02/08/2017','02/26/2017'), ('PM6','TT6','SV5','02/09/2013','02/14/2013'), ('PM7','TT7','SV5','02/10/2015','02/24/2015'), ('PM8','TT8','SV6','02/11/2017','02/24/2017'), ('PM9','TT9','SV7','02/12/2016','02/17/2016'), ('PM10','TT10','SV8','03/01/2016','03/06/2016'), ('PM11','TT11','SV9','04/04/2012','04/06/2012'), ('PM12','TT12','SV10','05/04/2016','05/06/2016'), ('PM13','TT13','SV11','06/04/2014','06/06/2014'), ('PM14','TT14','SV12','07/04/2016','07/09/2016'), ('PM15','TT15','SV13','08/04/2014','08/16/2014'), ('PM16','TT16','SV14','09/04/2016','09/26/2016'); Thêm d li u vào b ng tblChiTietPhieuMuon ữ ệ ả insert into tblChiTietPhieuMuon values
('PM1','MS1','2',N'Bình Th ườ ng'),
('PM2','MS1','1',N'Bình Th ườ ng'),
('PM3','MS2','2',N'Bình Th ườ ng'),
('PM4','MS4','4',N'Bình Th ườ ng'),
('PM5','MS4','1',N'Bình Th ườ ng'),
('PM6','MS5','5',N'Bình Th ườ ng'),
('PM7','MS6','2',N'Bình Th ườ ng'),
('PM8','MS7','1',N'Bình Th ườ ng'),
('PM9','MS8','1',N'Bình Th ườ ng'),
('PM10','MS9','1',N'Bình Th ườ ng'),
('PM11','MS10','6',N'Rách Trang Bìa'),
('PM13','MS12','1',N'Bình Th ườ ng'),
('PM14','MS13','3',N'Bình Th ườ ng'),
('PM15','MS11','5',N'Bình Th ườ ng'),
('PM16','MS12','1',N'Bình Th ườ ng');
Thêm d li u vào b ng tblPhieuTra ữ ệ ả insert into tblPhieuTra values
('PT10','TT10','SV8','03/06/2016',''), ('PT11','TT11','SV9','04/06/2012',''), ('PT12','TT12','SV10','05/06/2016',''), ('PT13','TT13','SV11','06/06/2014',''), ('PT14','TT14','SV12','07/09/2016',''), ('PT15','TT15','SV13','08/16/2014',''), ('PM16','TT16','SV14','09/26/2016',''); Thêm d li u vào b ng tblChiTietPhieuMuon ữ ệ ả insert into tblChiTietPhieuTra values
('PT1','MS1',2,N'Bình Th ườ ng'),
('PT2','MS2',1,N'Bình Th ườ ng'),
('PT4','MS4',4,N'Bình Th ườ ng'),
('PT5','MS5',1,N'Bình Th ườ ng'),
('PT6','MS6',5,N'Bình Th ườ ng'),
('PT7','MS7',2,N'Bình Th ườ ng'),
('PT8','MS8',1,N'Bình Th ườ ng'),
('PT9','MS9',1,N'Bình Th ườ ng'),
('PT10','MS10',1,N'Rách Trang Bìa');
I.2 Mô Tả STORE PROCEDURE, FUNCTION, VIEW, TRIGGER I.2.1 Mô tả VIEW a) VIEW: SoLuongSach
+ Mô tả: số lượng sách của từng sách create view SoLuongSach as select sTenSach iSoluong, from tblSach b) VIEW: TenSachTheoMa
+ Mô tả: tên sách theo từng mã sách create view TenSachTheoMa as select sMaSach,sTenSach from tblSach c) VIEW: SDTThuThu
+ Mô tả: số điện thoại của từng thủ thư create view SDTThuThu as select sTenThuThu,sSoDienThoai from tblThuThu d) VIEW: SoSach20
+ Mô tả: cho biết số sách có số lượng lớn hơn 20 create view SoSach20 as select sMaSach,sTenSach iSoLuong, from tblSach where iSoLuong 20> e) VIEW: Ma_TenSV
+ Mô tả: Cho biết tên sinh viên theo mã sinh viên create view Ma_TenSV as select sMaSinhVien,sTenSV from tblSinhVien f) VIEW: NamXuatBan_Sach
+ Mô tả: cho biết năm xuất bản của từng cuốn sách create view NamXuatBan_Sach as select sMaSach, sTenSach, iNamXB from tblSach g) VIEW: Sach_ChuaDuocMuon
+ Mô tả: Cho biết những cuốn sách chưa được mượn create view Sach_ChuaDuocMuon as select tblSach.sMaSach sTenSach, from tblSach where tblSach sMaSach not in (select sMaSach from tblChiTietPhieuMuon) h) VIEW: Sach_DaDuocMuon
+ Mô tả: Cho biết những cuốn sách đã được mượn create view Sach_DaDuocMuon as select tblSach.sMaSach sTenSach, from tblSach where tblSach sMaSach in (select sMaSach from tblChiTietPhieuMuon) i) VIEW: DiaChi_TacGia
+ Mô tả: Cho biết địa chỉ tác giả theo mã tác giả create view DiaChi_TacGia as select sTenTG,sDiaChiTG from tblTacGia j) VIEW: Lop_SV
+ Mô tả: Cho biết tên lớp của sinh viên theo mã create view Lop_SV as select sMaSinhVien,sLop from tblSinhVien k) VIEW: TenThuThu_TenSachMuon
+ Mô tả: Cho biết tên thủ thư đã cho mượn một cuốn sách nào đó create view TenThuThu_TenSachMuon as select sTenThuThu,sTenSach from tblThuThu,tblSach tblChiTietPhieuMuon tblPhieuMuon, , where tblThuThu.sMaThuThu tblPhieuMuon sMaThuThu= and tblPhieuMuon sMaPhieuMuon tblChiTietPhieuMuon sMaPhieuMu = on and tblChiTietPhieuMuon.sMaSach tblSach.sMaSach l) VIEW: NgayMuon_Sach
+ Mô tả: Cho biết ngày mượn của sinh viên create view NgayMuon_Sach asselect tblSinhVien.sMaSinhVien sTenSV dNgayMuon, , from tblPhieuMuon,tblSinhVien where tblPhieuMuon.sMaSinhVien tblSinhVien sMaSinhVien= m) VIEW: TenNXBSach
+ Mô tả: cho biết tên nhà xuất bản của từng sách create view TenNXBSach as select sTenSach,tblNhaXuatBan sTenNXB. from tblSach,tblNhaXuatBan where tblSach.sMaNXB tblNhaXuatBan sMaNXB= n) VIEW: Sach_LoaiSach
+ Mô tả: Cho biết loại sách của từng sách create view Sach_LoaiSach as select sMaSach sTenSach sTenLoaiSach, , from tblSach,tblLoaiSach where tblSach.sMaLoaiSach tblLoaiSach sMaLoaiSach= o) VIEW: DiaChiNXB_Sach
+ Mô tả: Cho biết địa chỉ của nhà xuất bản theo tên sách create view DiaChiNXB_Sach as select sTenSach,sDiaChiNXB from tblSach,tblNhaXuatBan where tblSach.sMaNXB tblNhaXuatBan sMaNXB= p) VIEW: DiaChiTG_Sach
+ Mô tả: Cho biết địa chỉ của tác giả viết sách create view DiaChiTG_Sach as select sTenSach,sDiaChiTG from tblSach,tblTacGia tblSach_TacGia, where tblSach sMaSach = tblSach_TacGia.sMaSach and tblSach_TacGia sMaTG tblTacGia = sMaTG q) VIEW: TenSV_TenSach
+ Mô tả: Cho biết tên sách đã mượn của sinh viên theo tên sinh viên create view TenSV_TenSach as select sTenSV,sTenSach from tblSinhVien,tblChiTietPhieuMuon tblSach tblPhieuMuon, , where tblSinhVien sMaSinhVien tblPhieuMuon = sMaSinhVien and tblPhieuMuon sMaPhieuMuon tblChiTietPhieuMuon sMaPhieuMu = on and tblChiTietPhieuMuon.sMaSach tblSach.sMaSach r) VIEW: ThuThu_SinhVien
+ Mô tả: Cho biết tên thủ thư lập phiếu cho sinh viên create view ThuThu_SinhVien as select sTenThuThu,sTenSV from tblThuThu,tblSinhVien tblPhieuMuon, where tblSinhVien sMaSinhVien tblPhieuMuon = sMaSinhVien and tblPhieuMuon.sMaThuThu tblThuThu sMaThuThu= s) VIEW: TinhTrang_Sach
+ Mô tả: Cho biết tình trạng của sách khi đã được mượn create view TinhTrang_Sach as select tblSach.sMaSach sTenSach sTinhTrangSach, , from tblSach,tblChiTietPhieuMuon where tblChiTietPhieuMuon sMaSach tblSach = sMaSach t) VIEW: SoluongSach_NXB