Tải bản đầy đủ (.pdf) (51 trang)

Báo Cáo Bài Tập Lớn Hệ Quản Trị Cơ Sở Dữ Liệu Đề Tài Quản Lý Thư Viện.pdf

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.11 MB, 51 trang )

lOMoARcPSD|38545333

TRƯỜNG ĐẠI HỌC MỞ HÀ NỘI
KHOA CÔNG NGHỆ THÔNG TIN

----------------------

BÁO CÁO BÀI TẬP LỚN
MÔN: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU

<NHÓM 12>

Đề tài: Quản Lý Thư Viện

Giáo Viên Hướng Dẫn: Nguyễn Thị Tâm
Sinh Viên Thực Hiện: Mai Thị Dinh – 2010A03

Nguyễn Thị Thanh – 2010A03
Đỗ Mạnh Hùng – 2010A03
Bùi Thành Đan – 1910A05

Hà Nội, năm 2021

Downloaded by HANH LA ()

lOMoARcPSD|38545333

PHÂN CÔNG VÀ KẾ HOẠCH THỰC HIỆN

HỌ VÀ TÊN CÔNG VIỆC ĐÁNH GIÁ
Mai Thị Dinh Phát biểu bài toán, xây dựng Hoàn Thành


Nguyễn Thị Thanh Hoàn Thành
Đỗ Mạnh Hùng view, phân tán Hoàn Thành
Xây dựng CSDL quan hệ,

proceduce

Trigger,phân tán

Bùi Thành Đan Proceduce,phân quyền Hoàn Thành

Downloaded by HANH LA ()

lOMoARcPSD|38545333

Mục Lục

I. Phát biểu bài tốn ...................................................................................................................................... 1
II. Mơ hình thực thể liên kết ......................................................................................................................... 2

1.Mơ hình ER:........................................................................................................................................... 3
2. Xây dựng mơ hình CSDL quan hệ........................................................................................................ 3
3. Chuẩn hóa CSDL của bài toán .............................................................................................................. 5
III. Xây dựng bảng cơ sở dữ liệu của bài toán .............................................................................................. 6
1.Xác định cấu trúc bảng: ......................................................................................................................... 6
2. Diagram: ............................................................................................................................................... 8
IV. Tạo cơ sở dữ liệu .................................................................................................................................... 8
1. Tạo database và bảng ........................................................................................................................ 8
2. Nhập dữ liệu vào các bảng .............................................................................................................. 11
V.Thực hiện các yêu cầu............................................................................................................................. 15
1. Truy vấn dữ liệu.................................................................................................................................. 15


a.Truy vấn dữ liệu từ 1 bảng ............................................................................................................... 15
b.Truy vấn dữ liệu từ nhiều bảng ........................................................................................................ 16
2.Xây dựng các view............................................................................................................................... 18
3 .Xây dựng Proceduce ........................................................................................................................... 22
4. Xây dựng các trigger.......................................................................................................................... 31
VI. Phân quyền và bảo mật CSDL .............................................................................................................. 35
VII. Phân tán ............................................................................................................................................... 38
1.Phân tán ngang ..................................................................................................................................... 38
2.Phân tán dọc ......................................................................................................................................... 43
VIII. Tài liệu tham khảo: ............................................................................................................................ 48

Downloaded by HANH LA ()

lOMoARcPSD|38545333

I. Phát biểu bài toán
Để quản lý thư viện một cách hợp lý và hiệu quả , ta cần xây dựng một hệ thống
quản lý thư viện một cách hiệu quả và tối ưu nhất. Vì vậy, cần xác định rõ các chủ
thể cần quản lý cũng như các hoạt động chính.
Qua việc tìm kiếm và tham khảo các mơ hình quản lý các hoạt động của thư viện
trường học, ta có thể thấy được các chủ thể chính cần được quản lý : quản lý sách
của thư viện, quản lý nhân viên làm việc cho thư viện, quản lý NXB, quản lý việc
mượn trả sách của thư viện và quản lý thẻ độc giả.
Quản lý Sách:

- Thư viện có nhiều SÁCH, mỗi sách sẽ bao gồm các thông tin như mã sách,
tên sách, tác giả, thể loại, năm xuất bản,số lượng, giá tiền. Các cuốn sách phân
biệt với nhau bằng mã sách và tên sách không trùng nhau.


Quản lý NXB:
- Trong mỗi cuốn sách có chứa thơng tin của NHÀ XUẤT BẢN. Một NXB có
thể cung cấp một hoặc nhiều sách cho thư viện.Và để tiện cho việc liên lạc
cần lưu lại thông tin của NXB gồm: Mã NXB ,tên NXB, Địa chỉ,email, SĐT.

Quản lý Nhân viên:
- Mỗi NHÂN VIÊN làm việc trong thư viện cần lưu lại các thông tin sau: Mã
NV, Họ tên, Ngày sinh, Ngày vào làm , SĐT, Giới tính,Địa chỉ, HSL, PC.
Quy định mỗi nhân viên phải có mã riêng biệt và lớn hơn 18 tuổi.

Quản lý Thẻ Độc Giả

1

Downloaded by HANH LA ()

lOMoARcPSD|38545333

- Khi đến mượn sách, độc giả sẽ được cấp một THẺ ĐỘC GIẢ, trên đó có mã
thẻ (Mã thẻ được đánh số tự động bắt dầu từ 1,2,3…), tên độc giả , ngày sinh,
giới tính, địa chỉ, số điện thoại, ngày bắt đầu, ngày hết hạn. Với mỗi thẻ, độc
giả có thể mượn được nhiều sách và ngược lại mỗi sách có thể được mượn bởi
nhiều thẻ độc giả.

Quản lý Phiếu Mượn Trả:
- Độc giả sau khi đến mượn sách cần lưu lại thông tin của PHIẾU MƯỢN
TRẢ bao gồm mã mượn trả, ngày mượn , ngày hẹn trả. Độc giả chỉ được
mượn sách tối đa trong 15 ngày kể từ ngày mượn.

II. Mơ hình thực thể liên kết

Từ bài toán trên ,ta xác định được các thực thể và thuộc tính:

- NHANVIEN : Mã NV, Họ tên, Ngày sinh, Ngày vào làm, SĐT, Giới tính,
Địa chỉ, HSL, PC.
- SACH : Mã sách, Tên sách, Tác giả, Thể loại, Năm XB, Số lượng, Giá tiền.
- NHA XUAT BAN : Mã NXB, Tên NXB, Địc chỉ, Email, SĐT.
- THE DOC GIA : Mã thẻ, Tên ĐG, Ngày sinh, Giới tính, Địa chỉ, SĐT, Ngày
bắt đầu, Ngày hết hạn.
- PHIEU MUONTRA:Mã mượn trả, Ngày mượn, Ngày hẹn trả

2

Downloaded by HANH LA ()

lOMoARcPSD|38545333

1.Mơ hình ER:

2. Xây dựng mơ hình CSDL quan hệ
QT1: Chuyển kiểu thực thể mạnh
tblNHANVIEN (Mã NV, Họ tên, Ngày sinh, Ngày vào làm, SĐT, Giới tính, Địa
chỉ, HSL, PC)
tblSACH (Mã sách, Tên sách, Tác giả,Thể loại, Năm XB, Số lượng, Giá Tiền)

3

Downloaded by HANH LA ()

lOMoARcPSD|38545333


tblNXB (Mã NXB, Tên NXB, Địc chỉ, Email, SĐT)
tblTHEDOCGIA (Mã thẻ, Tên ĐG, Ngày sinh, Giới tính, Địa chỉ, SĐT, Ngày bắt
đầu, Ngày hết hạn)
tblPHIEUMUONTRA( Mã mượn trả, Ngày mượn,Ngày hẹn trả)
QT 4: Chuyển liên kết 1-N
SACH (Mã sách, Tên sách, Tác giả, Thể loại, Năm XB, Số lượng, Giá Tiền, Mã
NXB)
PHIEUMUONTRA (Mã mượn trả, Ngày mượn, Ngày hẹn trả,Mã thẻ)
PHIEUMUONTRA(Mã mượn trả, Ngày mượn, Ngày hẹn trả,Mã thẻ, Mã NV)
QT 5: Chuyển liên kết M-N ( Sinh ra quan hệ mới)
SACH_PHIEUMUONTRA = CT_PHIEUMUONTRA

 CT_PHIEUMUON TRA(Mã mượn trả,Mã sách,Ngày trả,Tình trạng)

➔ Ta có CSDL cuối cùng của bài toán là:
tblNHANVIEN (sMaNV, sTenNV, dNgaysinh, dNgayvaolam, sSĐT, bGioitinh,
sDiachi, fHSL, fPC)
tblSACH (sMaSach, sTensach, sTacgia, sTheLoai, iNamXB, iSoluong, fGia tien
,sMaNXB)
tblNXB (sMaNXB, sTenNXB, sDiachi,sEmail, sSĐT)
tblTHEDOCGIA (sMaThe, sTenĐG, dNgaysinh, bGioitinh, sDiachi , sSĐT,
dNgaybatdau, dNgayhethan)
tblPHIEUMUONTRA ( sMaMT, dNgaymuon, dNgayhentra, sMaThe, sMaNV)

4

Downloaded by HANH LA ()

lOMoARcPSD|38545333


tblCT_PHIEUMUONTRA (sMaMT, sMaSach, dNgaytra,sTinhtrang)

3. Chuẩn hóa CSDL của bài tốn
Từ mơ hình quan hệ ta suy ra các phụ thuộc hàm:
sMaNV-> sTenNV, dNgaysinh, dNgayvaolam, sSĐT, bGioitinh, sDiachi, fHSL,
fPC
sMaSach-> sTensach, sTacgia, sTheLoai, iNamXB, iSoluong, fGia tien ,sMaNXB
sMaNXB-> sTenNXB, sDiachi,sEmail, sSĐT
sMaThe-> sTenĐG, dNgaysinh, bGioitinh, sDiachi , sSĐT, dNgaybatdau,
dNgayhethan
sMaMT-> dNgaymuon, dNgayhentra, sMaThe, sMaNV
sMaMT->sMaSach, dNgaytra,sTinhtrang
=> Từ các phụ thuộc hàm trên ta thấy:
- Mọi thuộc tính đều là nguyên tố, giá trị các thuộc tính trên bộ
là đơn trị, khơng có thuộc tính nào có giá trị được tính tốn từ một số
thuộc tính khác.
Lược đồ quan hệ trên đã ở dạng chuẩn 1NF.
- Mọi thuộc tính khơng khóa của quan hệ đều phụ thuộc hàm
đầy đủ vào khóa chính.
Lược đồ quan hệ trên đã ở dạng chuẩn 2NF.
- Mọi thuộc tính khơng khóa của quan hệ đều khơng phụ thuộc
bắc cầu vào bất kì khóa chính của quan hệ.
Lược đồ quan hệ trên đã ở dạng chuẩn 3NF.

5

Downloaded by HANH LA ()

lOMoARcPSD|38545333


Vậy lược đồ quan hệ đã được chuẩn hóa về dạng cao nhất – 3NF

III. Xây dựng bảng cơ sở dữ liệu của bài toán

1.Xác định cấu trúc bảng:
tblNHANVIEN : lưu trữ thông tin của bảng NHÂN VIÊN

STT Tên thuộc Kiểu dữ liệu Ràng buộc Ghi chú
PK
tính Mã nhân viên
dNgayvaolam<=getdate() Tên nhân viên
1 sMaNV varchar(10) Chỉ nhận giá trị true hoặc Ngày sinh
false Ngày vào làm
2 sTenNV nvarchar(30) fHSL>=2 và fHSL<10 Số diện thoại
fPC >0, fPC>=fMucPC Giới tính
3 dNgaysinh Datetime
Địa chỉ
4 dNgayvaolam datetime Hệ số lương
Phụ cấp
5 sSDT varchar(10)

6 sGioitinh Bit

7 sDiachi Nvarchar(30)
8 fHSL Float
9 fPC Float

tblSACH: lưu trữ thông tin của bảng sách

STT Tên thuộc Kiểu dữ liệu Ràng buộc Ghi chú

tính PK
varchar(10) Mã sách
1 sMasach nvarchar(50) FK, tham chiếu tblNXB Tên sách
2 sTensach nvarchar(30) Tác giả
3 sTacgia varchar(10) Mã nhà xuất
4 sMaNXB bản
Năm xuất bản
5 iNamXB datetime Số lượng
6 iSoluong int Giá tiền
7 fGiatien float Thể Loại
8 sTheLoai nvarchar(20)

tblNXB: lưu trữ thông tin của bảng NXB

STT Tên thuộc tính Kiểu dữ liệu Ràng buộc Ghi chú

6

Downloaded by HANH LA ()

lOMoARcPSD|38545333

1 sMaNXB varchar(10) PK Mã nhà xuất bản
nvarchar(30) Tên nhà xuất bản
2 sTenNXB nvarchar(30) Địa chỉ
varchar(10) Email
3 sDiachi varchar(10)
Số điện thoại
4 sEmail


5 sSDT

tblTHEDOCGIA: lưu trữ thông tin của bảng THẺ ĐỘC GIẢ

STT Tên thuộc tính Kiểu dữ liệu Ràng buộc Ghi chú
PK
1 sMathe Varchar(10) Mã thẻ
dNgaybatdau<=getdate() Tên độc
2 sTenDG nvarchar(30) dNgayhethan>dNgaybatdau giả

3 dNgaysinh datetime Ngày sinh

4 bGioitinh bit Giới tính
Địa chỉ
5 sDiachi nvarchar(30) Số diện
thoại
6 sSDT varchar(10) Ngày bắt
đầu
2 dNgaybatdau Datetime Ngày hết
hạn
3 dNgayhethan Datetime

tblPHIEUMUONTRA: lưu trữ thông tin của PHIẾU MƯỢN TRẢ

STT Tên thuộc tính Kiểu dữ liệu Ràng buộc Ghi chú
Mã mượn
1 sMaMT varchar(10) PK trả
Ngày
2 dNgaymuon Datetime dNgaymuon<=getdate() mượn
Ngày hẹn

3 dNgayhentra Datetime dNgayhentra>dNgaymuon trả

4 sMathe varchar(10) FK, tham chiếu đến Mã thẻ
varchar(10) tblTHEDOCGIA
5 sMaNV FK, tham chiếu đến Mã nhân
tblNHANVIEN viên

7

Downloaded by HANH LA ()

lOMoARcPSD|38545333

TblCT_PHIEUMUONTRA :lưu trữ thông tin của bảng CHI TIẾT PHIẾU
MƯỢN TRẢ

STT Tên thuộc tính Kiểu dữ liệu Ràng buộc Ghi chú
Mã mượn trả
1 sMaMT varchar(10) PK Mã sách

2 sMasach varchar(10) PK,FK, tham chiếu Ngày trả
đến tblSACH Tình trạng

3 dNgaytra datetime

4 sTinhtrang Nvarchar(15)

2. Diagram:

IV. Tạo cơ sở dữ liệu

1. Tạo database và bảng

CREATE DATABASE QuanLyThuVien
ON (

8

Downloaded by HANH LA ()

lOMoARcPSD|38545333

NAME = 'QuanLyThuVien',
FILENAME = 'C:\BTL_SQL_QuanLyThuVien\QuanLyThuVien.mdf',
SIZE = 2mb,
MAXSIZE=UNLIMITED
)
USE QuanLyThuVien
GO

--tao bang tblNXB
CREATE TABLE tblNXB
(

sMaNXB VARCHAR(10) NOT NULL,
sTenNXB NVARCHAR(30) UNIQUE NOT NULL,
sDiachi NVARCHAR(30) NOT NULL,
sEmail VARCHAR(30) NOT NULL,
sSDT VARCHAR(10) NOT NULL
);
ALTER TABLE tblNXB

ADD CONSTRAINT PK_tblNXB PRIMARY KEY(sMaNXB)

--tao bang tblSACH NULL,
CREATE TABLE tblSACH
(

sMasach VARCHAR(10) NOT NULL,
sMaNXB VARCHAR(10) NOT NULL,
sTensach NVARCHAR(50) UNIQUE NOT
sTacgia NVARCHAR(30) NOT NULL,
sTheloai NVARCHAR(30) NULL,
iNamXB INT NOT NULL,
iSoluong INT NOT NULL,
fGiatien FLOAT NOT NULL,

);

--ràng buoc trong tblSACH
ALTER TABLE tblSACH ADD
CONSTRAINT PK_tblSACH PRIMARY KEY(sMasach ),
CONSTRAINT FK_sach_nxb FOREIGN KEY (sMaNXB ) REFERENCES tblNXB (sMaNXB)

--Tao bang NHANVIEN--
CREATE TABLE tblNHANVIEN
(

sMaNV VARCHAR(10) NOT NULL,
sTenNV NVARCHAR(30) NOT NULL,
dNgaysinh DATETIME NOT NULL,
dNgayvaolam DATETIME NOT NULL,

sSDT VARCHAR(10) NOT NULL,
bGioitinh BIT NOT NULL,

9

Downloaded by HANH LA ()

lOMoARcPSD|38545333

sDiachi NVARCHAR(30) NOT NULL ,
fHSL FLOAT NOT NULL ,
fPC FLOAT NOT NULL
);

--rang buoc trong tblNHANVIEN
ALTER TABLE tblNHANVIEN
ADD CONSTRAINT PK_tblNHANVIEN PRIMARY KEY(sMaNV),
CONSTRAINT BIT CHECK (bGioiTinh = 0 or bGioiTinh = 1);
ALTER TABLE tblNHANVIEN
ADD CONSTRAINT CK_tblNHANVIEN_dNgayvaolam CHECK (dNgayvaolam <= GETDATE()),
CONSTRAINT CK_tblNHANVIEN_fHSL CHECK(fHSL>=2 and fHSL<10),
CONSTRAINT CK_tblNHANVIEN_fPC CHECK(fPC>0);
ALTER TABLE tblNHANVIEN
ADD CONSTRAINT CHK_dNgaysinh CHECK (DATEDIFF(YEAR,dNgaysinh,dNgayvaolam)
>=18)

--tao bang tblTHEDOCGIA KEY (sMathe),
CREATE TABLE tblTHEDOCGIA( CHECK (dNgaybatdau <= GETDATE()),
CHECK (dNgayhethan>dNgaybatdau)
sMathe VARCHAR(10) NOT NULL,

sTenDG NVARCHAR(30) NOT NULL,
dNgaysinh DATETIME NULL,
bGioitinh BIT NOT NULL,
sDiachi NVARCHAR(30) NOT NULL,
sSDT VARCHAR(10) NULL,
dNgaybatdau DATETIME NOT NULL,
dNgayhethan DATETIME NOT NULL,
);
--rang buoc trong tblTHEDOCGIA
ALTER TABLE tblTHEDOCGIA
ADD CONSTRAINT PK_tblTHEDOCGIA PRIMARY
CONSTRAINT CK_tblTHEDOCGIA_dNgaybatdau
CONSTRAINT CK_tblTHEDOCGIA_dNgayhethan

--tao bang tblPHIEUMUON
CREATE TABLE tblPHIEUMUONTRA
(

iMaMT INT IDENTITY(1,1),
sMathe VARCHAR(10) NOT NULL,
sMaNV VARCHAR(10) NOT NULL,
dNgaymuon DATETIME NOT NULL,
dNgayhentra DATETIME NOT NULL

);

10

Downloaded by HANH LA ()


lOMoARcPSD|38545333

--rang buoc trong tblPHIEUMUONTRA
ALTER TABLE tblPHIEUMUONTRA
ADD CONSTRAINT PK_tblPHIEUMUONTRA PRIMARY KEY(iMaMT),
CONSTRAINT FK_tblPHIEUMUONTRA_Thedocgia FOREIGN KEY(sMathe) REFERENCES
tblTHEDOCGIA(sMathe),
CONSTRAINT FK_tblPHIEUMUONTRA_Nhanvien FOREIGN KEY(sMaNV) REFERENCES
tblNHANVIEN(sMaNV),
CONSTRAINT CK_tblPHIEUMUONTRA_dNgaymuon CHECK (dNgaymuon <= GETDATE()),
CONSTRAINT CK_tblPHIEUMUONTRA_dNgayhentra CHECK (dNgayhentra >dNgaymuon)
ALTER TABLE tblPHIEUMUONTRA
ADD CONSTRAINT CHK_dNgayhentra_dNgaymuon CHECK
(DATEDIFF(DAY,dNgaymuon,dNgayhentra) <= 15);

--tao bang tblCT_PHIEUMUONTRA
CREATE TABLE tblCT_PHIEUMUONTRA
(

iMaMT INT NOT NULL,
sMasach VARCHAR(10) NOT NULL ,
dNgaytra DATETIME NULL,
sTinhtrang NVARCHAR(15) NOT NULL
);

--rang buoc trong tblCT_PHIEUMUONTRA

ALTER TABLE tblCT_PHIEUMUONTRA PRIMARY KEY(iMaMT,sMasach ),
ADD FOREIGN KEY(iMaMT ) REFERENCES
CONSTRAINT PK_tblCT_PHIEUMUONTRA

CONSTRAINT FK_PHIEUMUONTRA_CTPMT KEY(sMasach ) REFERENCES tblSACH(sMasach);
tblPHIEUMUONTRA (iMaMT ),
CONSTRAINT FK_CTPMT_Sach FOREIGN

2. Nhập dữ liệu vào các bảng
---Nhập dữ liệu bảng NXB

INSERT INTO dbo.tblNXB(sMaNXB, sTenNXB, sDiachi, sEmail, sSDT)

VALUES

('NXB001', N'Kim Đồng', N'55 Quang Trung,Hà Nội','',
'0343023261'),

('NXB002', N'Bách Khoa Hà Nội', N'42 Hai Bà Trưng,Hà
Nội','', '0968103472'),
('NXB003', N'Dân Trí', N'Hồng Cầu,Đống Đa,Hà Nội','',
'0344688190'),

('NXB004', N'Phụ Nữ', N'39 Hàng Chuối,Hà Nội','',
'0267748899'),

('NXB005', N'Thông Tấn', N'79 Hoàn Kiếm,Hà Nội','',
'0927361782'),

11

Downloaded by HANH LA ()

lOMoARcPSD|38545333


('NXB006', N'Thời Đại', N'Mỹ Đình 1,Từ Liêm,Hà Nội','',
'0349960221'),
('NXB007', N'Văn học', N'Trúc Bạch,Ba Đình,Hà Nội','',
'0349991890'),
('NXB008', N'Hà Nội', N'Tống Duy Tân,Hoàn Kiếm,Hà Nội','',
'0260201988')

--
Nhập dữ liệu bảng Sách

INSERT INTO dbo.tblSACH(sMasach, sMaNXB,sTensach, sTacgia, sTheloai, iNamXB,

iSoluong, fGiatien) và hịa bình', N'L.Tonxtoi', N'Văn học nghệ
dội', N'Phùng Quán', N'Truyện ngắn', 2015,
VALUES

('S001', 'NXB001', N'Chiến tranh
thuật', 2009, 1200,70000),
('S002', 'NXB001', N'Tuổi thơ dữ
1200,70000),



('S016', 'NXB007', N'Tắt Đèn', N'Ngô Tất Tố',N'Truyện ngắn', 2013,
1000,45000),

('S017', 'NXB008', N'Án mạng trên sông Nile', N'Agatha Christie',N'Trinh
thám', 2011, 320,199000)


12

Downloaded by HANH LA ()

lOMoARcPSD|38545333

--Nhập dữ liệu bảng NHANVIEN
INSERT INTO dbo.tblNHANVIEN(sMaNV, sTenNV, dNgaysinh, dNgayvaolam, sSDT,
bGioitinh, sDiachi, fHSL, fPC)
VALUES
('NV001', N'Nguyễn Văn Hòa', '1995/12/10','2016/01/01','0963974836', 1, N'Hai
Bà Trưng,Hà Nội', 5.6, 0.5),
('NV002', N'Võ Ngọc Quỳnh', '1994/08/18','2015/11/01', '0967220264',0, N'Gia
Lâm,Hà Nội', 4.3, 0.2),

('NV007', N'Đào Bích Hạnh', '1995-05-16','2014-12-19','0383640295',0, N'Huyện
Ý Yên, Nam Định',6.3, 0.6)

--Nhâp dữ liệu bảng thẻ độc giả
INSERT INTO dbo.tblTHEDOCGIA(sMathe, sTenDG, dNgaysinh, bGioitinh,sDiachi,
sSDT, dNgaybatdau, dNgayhethan)

13

Downloaded by HANH LA ()

lOMoARcPSD|38545333

VALUES
('T001', N'Đào Thị Quỳnh','1999/11/20',0,N'Q.Hồng Mai,Hà Nội','0929033563',

'2021/07/12','2022/07/12'),
('T002', N'Giang Bích Ngọc','2001/10/10',0,N'Tân Sơn,Phú Thọ','0965273925',
'2021/05/20','2022/05/20'),

('T009', N'Cao Minh Kỳ','1990/04/11',1,N'Q.Ba Đình,Hà Nội','0374950570',
'2020/10/09','2021/10/09'),
('T010', N'Trần Tiến Minh','2002/11/29',1,N'Hải Hậu,Nam Định','0337488963',
'2021/05/19','2022/05/19')

--Nhập dữ liệu vào bảng PHIEUMUON
INSERT INTO dbo.tblPHIEUMUONTRA(dNgaymuon, dNgayhentra, sMathe, sMaNV)
VALUES
('2021/08/20','2021/08/30', 'T001', 'NV001'),

('2020/10/10','2020/10/20', 'T009', 'NV003'),
('2021/05/20','2021/05/30', 'T010', 'NV002')

--Nhập dữ liệu bảng CT_PMT
INSERT INTO dbo.tblCT_PHIEUMUONTRA(iMaMT, sMasach, dNgaytra, sTinhtrang)
VALUES

14

Downloaded by HANH LA ()

lOMoARcPSD|38545333

(1, 'S001','2021/08/26', N'Đã trả'),
(1, 'S002','2021/08/30', N'Đã trả'),


(10, 'S010','2021/05/30', N'Đã trả'),
(10, 'S016','2021/05/30', N'Đã trả')

V.Thực hiện các yêu cầu
1. Truy vấn dữ liệu
a.Truy vấn dữ liệu từ 1 bảng

--1. Hiện tên các sách có số lượng lớn hơn 1000 và nhỏ hơn 1500
SELECT sMasach,sTensach,iSoluong FROM dbo.tblSACH
WHERE iSoluong BETWEEN 1000 AND 1500

15

Downloaded by HANH LA ()

lOMoARcPSD|38545333

--2.Cho biết những khách hàng đã quá hạn thẻ tính đến thời điểm hiện tại
SELECT * FROM dbo.tblTHEDOCGIA
WHERE dNgayhethan < GETDATE(

--3. Cho biết những nhân viên có địa chỉ ở Hà Nội và đã làm việc từ 5 năm trở
lên

SELECT sTenNV FROM dbo.tblNHANVIEN
WHERE sDiachi LIKE N'%Hà Nội%'
AND YEAR(GETDATE()) - YEAR(dNgayvaolam) >=5

--4. Hiện những độc giả chưa đủ 18 tuổi
SELECT sMathe,sTenDG FROM dbo.tblTHEDOCGIA

WHERE YEAR(GETDATE()) -YEAR(dNgaysinh) < 18

--5. cho biết độ tuổi trung bình của các nhân viên
SELECT AVG(YEAR(GETDATE()) - YEAR(dNgaysinh)) AS [Tuổi TB]
FROM dbo.tblNHANVIEN

b.Truy vấn dữ liệu từ nhiều bảng

--1. Cho biết tên các sách ,tên NXB thuộc thể loại 'Truyện ngắn'
16

Downloaded by HANH LA ()

lOMoARcPSD|38545333

SELECT sTensach,sTenNXB FROM dbo.tblSACH INNER JOIN dbo.tblNXB
ON tblNXB.sMaNXB = tblSACH.sMaNXB
WHERE sTheloai=N'Truyện ngắn'

--2.Tạo view cho biết tổng số lượng sách và tổng số tiền sách của từng NXB
SELECT sTenNXB,SUM(iSoluong)AS [Tổng số lượng] ,SUM(iSoluong * fGiatien)

AS [Tổng tiền]
FROM dbo.tblSACH INNER JOIN dbo.tblNXB
ON tblNXB.sMaNXB = tblSACH.sMaNXB
GROUP BY sTenNXB

--3. Cho biết trong năm 2021, những độc giả nào chỉ đến mượn sách 1 lần
SELECT sTenDG FROM dbo.tblTHEDOCGIA INNER JOIN dbo.tblPHIEUMUONTRA
ON tblPHIEUMUONTRA.sMathe = tblTHEDOCGIA.sMathe

AND YEAR(dNgaymuon) =2021
GROUP BY sTenDG
HAVING COUNT(tblTHEDOCGIA.sMathe) = 1

--4. Cho biết tên những cuốn sách chưa được mượn lần nào
SELECT sMasach,sTensach
FROM dbo.tblSACH
WHERE sMasach NOT IN
(SELECT DISTINCT sMasach FROM dbo.tblCT_PHIEUMUONTRA)

17

Downloaded by HANH LA ()


×