Professional Documents
Culture Documents
Assignment
Assignment
TÁC GIẢ:
NGUYỄN PHÙNG THỊNH | HE151359
ĐÀO DUY THÁI | HE176315
DBI202 ASSIGNMENT
Page |1
MỤC LỤC
I. GIỚI THIỆU VẤN ĐỀ
1. MÔ TẢ VẤN ĐỀ …………………………………………………… 2
2. MỤC TIÊU……………………………………………………………. 2
DBI202 ASSIGNMENT
Page |2
2. MỤC TIÊU
Cơ sở dữ liệu này được thiết kế để giải quyết các công đoạn và quy trình của
người thủ thư bằng cách truy xuất thông tin trên máy tính thay vì sử dụng đến
các thao tác thủ công như trước đây. Điều này giúp cả người quản lý thư viện
và học sinh dễ dàng kiểm soát thông tin của sách cũng như việc mượn/trả sách
trong thư viện.
DBI202 ASSIGNMENT
Page |3
Thuộc tính
Attribute Attribute
Thực thể
ENTITY
Quan hệ Relationship
Connectivity (force) = 1
Connectivity = N
DBI202 ASSIGNMENT
Page |4
--create database
CREATE DATABASE [Assignment5]
DBI202 ASSIGNMENT
Page |5
DBI202 ASSIGNMENT
Page |6
DBI202 ASSIGNMENT
Page |7
DBI202 ASSIGNMENT
Page |9
DBI202 ASSIGNMENT
P a g e | 10
DBI202 ASSIGNMENT
P a g e | 11
DBI202 ASSIGNMENT
P a g e | 12
Books_return
BorrowID
Date_return
Readers
ReaderID
Borrow
Name
BorrowID Compensation
Address BorrowID
StaffID
Date_of_birth Reason
ReaderID
Email
Date_start
Gender
Password
BorrowBooks_details Staffs
BorrowID StaffID
BookID Name
Quantity Address
Date_end Date_of_birth
Gender
Phone
Email
Date_started
Books Password
BookID
Title
AuthorName
KindOfBook
PublisherID BookCode
BookCode Category
Year
Edition
Quantity
Briefly
Publisher
PublisherID
Name
Address
Website
Other
DBI202 ASSIGNMENT
P a g e | 13
DBI202 ASSIGNMENT
P a g e | 14
Result:
GROUP BY b.BookID,
b.Title
HAVING count(br.BorrowID) =
(SELECT top(1) count(br.ReaderID) AS TotalBorrows
FROM Books b,
BorrowBooks_details bd,
Borrow br,
Readers r
WHERE b.BookID = bd.BookID
AND bd.BorrowID = br.BorrowID
AND r.ReaderID = br.ReaderID
GROUP BY b.BookID,
b.Title
ORDER BY count(br.BorrowID) DESC)
Result1:
Code2:
SELECT r.ReaderID,
r.Name,
sum(bd.Quantity) AS NumberOfBorrowedBooks
FROM Readers r,
Borrow b,
BorrowBooks_details bd
WHERE r.ReaderID = b.ReaderID
AND b.BorrowID = bd.BorrowID
GROUP BY r.ReaderID, r.Name
HAVING sum(bd.Quantity) =
(SELECT top(1) sum(bd.Quantity) AS
NumberOfBorrowedBooks
FROM Readers r,
Borrow b,
BorrowBooks_details bd
WHERE r.ReaderID = b.ReaderID
AND b.BorrowID = bd.BorrowID
GROUP BY r.ReaderID,
r.Name,
bd.BorrowID
ORDER BY sum(bd.Quantity) DESC)
DBI202 ASSIGNMENT
P a g e | 16
Result2:
8. PROCEDURE
Code:
CREATE PROC check_Quantity @Book_ID CHAR(10),
@NumberofBooks INT OUTPUT
AS
BEGIN
SET @NumberofBooks = (SELECT Quantity
FROM Books WHERE BookID = @Book_ID)
END
DECLARE @t INT
EXEC check_Quantity'054JD', @t OUTPUT
SELECT @t AS Quantity
Result:
9. TRIGGER
Code1:
CREATE TRIGGER checkCompensation
ON Books_return AFTER INSERT
AS
BEGIN
DECLARE @borrowID CHAR(50);
DECLARE @date_end INT
DBI202 ASSIGNMENT
P a g e | 17
Code2:
CREATE TRIGGER checkRemainQuanity
ON BorrowBooks_details AFTER INSERT
AS
BEGIN
DECLARE @quantity INT;
SELECT @quantity = (SELECT b.Quantity - (SELECT
sum(b.Quantity) FROM inserted i, BorrowBooks_details b
WHERE i.BookID = b.BookID)
FROM Books b, inserted i WHERE b.BookID = i.BookID)
IF(@quantity<0)
BEGIN
PRINT 'Not enough quantity'
DELETE FROM BorrowBooks_details
where Quantity = (SELECT i.Quantity FROM inserted
i) and
BorrowID = (SELECT i.BorrowID FROM inserted i)
and BookID = (SELECT i.BookID FROM inserted i)
END
END
DBI202 ASSIGNMENT
P a g e | 18
Result2:
DBI202 ASSIGNMENT