You are on page 1of 17

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

Đề tài

Sinh viên thực hiện

Giáo viên hướng dẫn

Hà Nội – 2023
Yêu cầu chung về quyển báo cáo và chương trình
*Toàn bộ chương trình và file báo cáo BTL được lưu trong thư mục với tên theo nguyên tắc sau:
Nguyên tắc: SQLSERVER-BTL-<thứ tự đề>-<Họ tên sinh viên>
Ví dụ: SQLSERVER -BTL-01-NguyenVanHung
Page2

*Chương trình: Tạo file Query ghi nhận toàn bộ các câu lệnh thực hiện xử lý với CSDL của bài toám
gồm: Tạo cơ sở dữ liệu, tạo và chỉnh sửa các bảng, tạo và kiểm tra các View, tạo và thực thi các thủ
tục Proc, tạo và thực thi các Trigger, tạo người dùng và phân quyền người dùng, ….
*Cấu trúc quyển báo cáo:
1. Trang bìa: Tên đề tài, tên nhóm (gồm cả họ tên các thành viên của nhóm), tên lớp.
2. Mục lục.
3. Giới thiệu đề tài.
4. Phát biểu bài toán
5. Mô hình CSDL và tạo CSDL – tạo và chỉnh sửa các bảng
6. Các đối tượng CSDL gồm: View, Proc, Trigger
7. Phân quyền và bảo mật CSDL
8. …
9. Kết luận, hướng phát triển tiếp theo
10. Tài liệu tham khảo

2
I. Phát biểu bài toán:

{Yêu cầu: phát biểu bài toán dưới dạng văn bản thể hiện được các nghiệp vụ cơ bản của
bài toán hoặc tổng hợp các mẫu tài liệu nguồn mô tả thông tin được quản lý của bài toán}
Lưu ý: phải xác định được thông tin đối tượng cần quản lý, các chức năng dự kiến sẽ triển
Page2

khai. Đồng thời phải có các ràng buộc cần thoả mãn của dữ liệu

Khi quản lí khách sạn thì cần quản lí được 2 yêu cầu cơ bản đó là quản lí được dịch vụ và
quản lí phòng ốc.
Khi có khách hàng muốn đặt phòng tại khách sạn, điều đầu tiên nhân viên lễ tân phải làm
đó là kiểm tra trạng thái của các phòng trong khách sạn. Nếu trống phòng thì nhân viên sẽ
thông báo cho khách hàng. Nếu khách hàng có nhu cầu thuê phòng tại khách sạn thì cần
phải cung cáp các thông tin cá nhân như: Tên, Sđt, Địa chỉ..
Do nhu cầu sử dụng của từng KH mà họ có thể yêu cầu khách sạn đổi phòng
Ngoài việc cung cấp phòng cho khách hàng thì khách sạn còn cung cấp thêm các dịch vụ
cho khách hàng như: ăn uống, phương tiện đi lại, điện thoại,giặt là,...
Nội dung thông tin cần quản lí:
- Thông tin khách hàng.
- Thông tin phòng.
- Quản lí giao dịch.
- Thông tin dịch vụ.
- Thông tin thanh toán.
XĐ kiểu thực thể và thuộc tính của nó;
 KhachSan(sMaKS,sTenKS,sDiaChi,sSoDienThoai,sEmail)
- sMaKS
- TenKS
- sDiaChi
- sSoDienThoai
- sEmail
 KhachHang(sMaKH, sHotenKH, sĐC, sSĐT, sCMND)
- sMaKH: Mã Khách hàng(Khóa chính)
- HotenKH: Họ và tên khách hàng.
- ĐC: Địa chỉ của khách hàng.
- SĐT: Số điện thoại của khách hàng.
- CMND: Số CMND của khách hàng.
 Phong(MaP.TenP, LoaiP, Trangthai, GiaP)
- MaP: Mã phòng. Khóa chính
- TenP: Tên của P.

3
- LoaiP: Loại cảu phòng( Phòng đơn, đôi, đặc biệt, thường)
- Trangthai: Trạng thái của P(trống, có khách, đang sứa, phòng đặt trước)
- GiaP: Giá từng loại P
 Dich Vu(MaDV, TenDV, iSoLuong,Đơn giá)
- MaDV: Mã của dịch vụ, khóa chính.
Page2

- TenDV: Tên của dịch vụ.


- iSoLuong:Số lượng dịch vụ
- GiaDV: Giá của dịch vụ.
 HoaDon(MaHD, Sotien TT, NgayTT, HinhthucTT)
- MaHD: Mã của hóa đơn, khóa chinh.
- Sotien TT: Số tiền khách hàng đã thanh toán.
- NgayTT: Ngày thanh toán.
- Hinhthuc TT: Khách hàng thanh toán bằng thẻ hay tiền mặt.
 ThuePhong(MaK H. Ngayden, Ngaydi, Tiendat)
 DatPhong( MaKH, Ngayden, Tiendat)
 DoiPhong( MaKH. Ngaydoi, MaPcu ,MaPmoi)
 SuDungDich Vu(MaKH. MaDV, NgaySD)
 SuDung Phong(MaP,MaKH)

4
 II. Mô hình CSDL quan hệ:
 Kết quả: Xác định được mô hình CSDL quan hệ giữa các bảng và mô tả chi tiết
từng bảng (ít nhất 5 bảng)
 Mỗi bảng cần được mô tả theo cấu trúc sau (ví dụ minh hoạ)
Page2

Ta có CSDL của bài toán như sau:


(1) tblBoPhan(sMaBoPhan, sTenBoPhan)
(2) tblNhanVien( sMaNV, sTenNV, bGioiTinh, sQueQuan, sDiaChi, sSDT, fHSL, fPC, ....

Các bảng được xác định cấu trúc như sau:


*tblBoPhan: lưu trữ thông tin của NHÂN VIÊN
TT Tên Thuộc Kiểu Dữ Ràng Buộc Ghi Chú
Tính Liệu
1 sMaBoPhan varchar(10) PK Mã bộ phận
2 sTenBoPhan nvarchar(25) Tênbộ phân

*tblNhanVien: lưu trữ thông tin của NHÂN VIÊN


TT Tên Thuộc Kiểu Dữ Ràng Buộc Ghi Chú
Tính Liệu
1 sMaNV varchar(10) PK Mã nhân viên
2 sTenNV nvarchar(25) Tên nhân viên
3 sGioitinh bit Chỉ nhận giá trị ‘true’ hoặc Giới tính
‘false’
... ... ... ...
9 sMabophan varchar(10) FK, tham chiếu sang bảng Mã bộ nhân viên
tblBoPhan làm việc
10 sTenchucvu nvarchar(25) Tên chức vụ
11 dNgayvaolam date dNgayvaolam<=getDate() Ngày vào làm
………………………………………………………
………………………………………………………

5
III. Tạo cơ sở dữ liệu
Gợi ý:
- Dùng hệ quản trị SQL Server để tạo file cơ sở dữ liệu tương ứng với mô hình CSDL quan
hệ đã tạo trong phần II
- Tạo sơ đồ liên kết giữa các bảng
Page2

- Nhập dữ liệu cho các bảng tạo được – (từ 10 - 20 bản ghi cho mỗi bảng)
*Chú ý:
- dùng câu lệnh CREATE DATABASE để tạo cơ sở dữ liệu
- dùng câu lệnh CREATE TABLE để tạo các bảng
- tạo khóa chính và khóa ngoại cho bảng
- đặt ràng buộc đầy đủ cho các bảng
- dùng câu lệnh INSERT INTO để chèn dữ liệu có nghĩa cho các bảng
 Kết quả: Có được 1 file SQL Server gồm các bảng và nhập dữ liệu đầy đủ cho các
bảng và 1 file .sql lưu trữ các câu lệnh thực hiện (tất cả dùng chung 1 file)
 Minh họa kết quả tương ứng từng câu lệnh bằng hình ảnh (mỗi bảng sau khi chèn
dữ liệu vào phải chụp hình kết quả của bảng đó)

--tạo db
CREATE DATABASE QuanLyCuaHangSach
USE QuanLyCuaHangSach
GO

--Tao bang Bo Phan


CREATE TABLE tblBoPhan(
sMaBoPhan VARCHAR(10) PRIMARY KEY,
sTenBoPhan NVARCHAR(30) NULL
)

--tạo bảng nhân viên và ràng buộc


CREATE TABLE tblNhanVien(
sMaNV VARCHAR(10) NOT NULL,
sTenNV NVARCHAR(25) NULL,
sGioitinh NVARCHAR(4) NULL,
...
sMabophan VARCHAR(10) NOT NULL REFERENCES tblBoPhan(sMabophan),
sTenchucvu NVARCHAR(25) NULL,
dNgayvaolam DATE NULL,
CONSTRAINT PK_sMaNV PRIMARY KEY(sMaNV),
CONSTRAINT CHK_fHSL CHECK (fHSL>0),
...
)

................

6
*Chèn dữ liệu cho các bảng:
--Chèn dữ liệu cho bảng tblBoPhan
INSERT INTO tblBoPhan(sMaBoPhan,sTenBoPhan)
VALUES ('BP01', N'Thu ngân'),
('BP02', N'Bán hàng'),
('BP03', N'Kho hàng')
Page2

--Chèn dữ liệu cho bảng tblNhanVien


INSERT INTO tblNhanVien(sMaNV, sTenNV, sGioitinh, sQuequan, sDiachi, sSDT, fHSL,
fPC, sMabophan, sTenchucvu, dNgayvaolam)
VALUES ('NV01', N'Phạm Văn Hùng', 'Nam', N'Hải Phòng', N'Hà Nội', '0912083435',
4.4, 0.6, 'BP01', N'Trưởng phòng', '07/02/2000'),
('NV02', N'Phạm Thị Nga', N'Nữ', N'Quảng Ninh', N'Hà Nội', '0901283435',
3.9, 0.4, 'BP01', N'Phó phòng', '07/04/2000'),
('NV03', N'Nguyễn Thúy Ngọc', N'Nữ', N'Quảng Ninh', N'Hà Nội',
'0901382435', 3.0, 0.1, 'BP01', N'Nhân Viên', '07/04/2000'),
('NV04', N'Phạm Thị Hằng', N'Nữ', N'Thái Nguyên', N'Hà Nội', '0901283565',
3.6, 0.1, 'BP01', N'Nhân Viên', '07/04/2002'),
('NV05', N'Trần Văn Hạnh', 'Nam', N'Thái Nguyên', N'Hà Nội', '0912067835',
4.4, 0.6, 'BP02', N'Trưởng phòng', '07/02/2000'),
('NV06', N'Phạm Thị Nga', N'Nữ', N'Quảng Ninh', N'Hà Nội', '0901123435',
3.7, 0.4, 'BP02', N'Phó phòng', '07/04/2003'),
('NV07', N'Nguyễn Thúy Khánh', N'Nữ', N'Quảng Ninh', N'Hà Nội',
'0932082435', 3.6, 0.1, 'BP02', N'Nhân Viên', '07/04/2002'),
('NV08', N'Phạm Văn Khánh', N'Nam', N'Thái Nguyên', N'Hà Nội',
'0901267865', 3.0, 0.1, 'BP02', N'Nhân Viên', '07/04/2004')

7
Sơ đồ quan hệ giữa các bảng:
Page2

8
IV. Xây dựng các View cho CSDL:
Gợi ý:
- Phát biểu các thao tác – Chức năng tương ứng cần thực hiện trên CSDL
- Xây dựng các View tương ứng cho các thao tác đó
 Kết quả: Có được 1 file .sql lưu trữ các câu lệnh thực hiện (tất cả dùng chung 1 file)
Page2

 Minh họa kết quả tương ứng từng câu lệnh tạo View, mỗi một View gồm: yêu cầu
của View, code của câu lệnh và hình ảnh kết quả khi thực thi câu lệnh
 Yêu cầu: ít nhất 10 view, gồm: view lấy thông tin cơ bản (từ một bảng hoặc nhiều
bảng) và view tổng hợp tính toán phân nhóm (trên một bảng và từ nhiều bảng)

* Tạo View: Cho biết mã sách có tổng doanh thu bán được lớn hơn 100000

--* Tạo View: Tinh tien chi tiet cua tung hoa don
CREATE VIEW vvTinhTienCTHD
as
Select sMaHD, sMaSach, iSL, fDGban, iSL*fDGban as ThanhTien
from tblChiTietHD

select * from vvTinhTienCTHD

9
Page2

--* Tạo View: Tinh tổng số lượng sách và tổng tiền của từng hóa đơn
CREATE VIEW vvTongTienHD (sMaHD, iTongSL, fTongTien)
as
Select sMaHD, sum(iSL), sum(iSL*fDGban)
from tblChiTietHD
group by sMaHD

select * from vvTongTienHD

......

10
V. Xây dựng các Procedure cho CSDL
Gợi ý:
- Phát biểu các thao tác – Chức năng tương ứng cần thực hiện trên CSDL
- Xây dựng các Proc tương ứng cho các thao tác đó
 Kết quả: Có được 1 file .sql lưu trữ các câu lệnh thực hiện (tất cả dùng chung 1 file)
Page2

 Minh họa kết quả tương ứng từng câu lệnh tạo Proc, gồm: yêu cầu của thủ tục, code
của câu lệnh và hình ảnh kết quả khi thực thi câu lệnh
 Yêu cầu ít nhất 5 proc, gồm: proc lấy thông tin cơ bản (từ một hoặc nhiều bảng),
proc tổng hợp tính toán phân nhóm (lấy từ một bảng hoặc nhiều bảng)

* thủ tục in ra những các nhân viên vào làm năm được nhập vào
CREATE PROC pr_NhanVien_Nam
@nam int
as
BEGIN
Select sTenNV, sGioitinh, sDiachi
from tblNhanVien
where year(dNgayvaolam) = @nam
END

EXEC pr_NhanVien_Nam 2000

EXEC pr_NhanVien_Nam 2001

* Thủ tục: Nhập mã HD, in ra tổng tiền thanh toán của hd đó


--Proc: Cho biết tổng tiền thanh toán của một Hóa đơn nào đó theo mã HD
CREATE PROC pr_TongTienHD
@mahd varchar(10)
as
BEGIN
Select sum(iSL*fDGban)
from tblChiTietHD
where sMaHD = @mahd

11
END

EXEC pr_TongTienHD 'HD001'


Page2

EXEC pr_TongTienHD 'HD002'


12
VI. Xây dựng các Trigger cho CSDL
Gợi ý:
- Phát biểu các ràng buộc tương ứng (trừ cái đã có khi thiết kế CSDL) cần thực hiện trên
CSDL
- Xây dựng các trigger tương ứng cho các ràng buộc đó
Page2

 Kết quả: Có được 1 file .sql lưu trữ các câu lệnh thực hiện (tất cả dùng chung 1 file)
 Minh họa kết quả tương ứng từng câu lệnh tạo trigger, gồm: yêu cầu của thủ tục,
code của câu lệnh và hình ảnh kết quả khi thực thi câu lệnh
 Yêu cầu ít nhất 5 trigger, gồm: trigger cơ bản (từ một hoặc nhiều bảng), trigger tổng
hợp (lấy từ một bảng hoặc nhiều bảng)

--Thêm cột tổng số lượng bán vào bảng tblSach


ALTER TABLE tblSach
ADD iTongSLBan int default(0)

Update tblSach
set iTongSLBan = 0

select * from tblSach

--Trigger khi thêm vào bảng tblChiTietHD thì tổng số lượng sách đã bán được tăng
tương ứng
CREATE TRIGGER tg_TongSLSachDaBan
ON tblChiTietHD
FOR insert
as
BEGIN
DECLARE @iSL int, @masach VARCHAR(10)

SELECT @iSL = iSL, @masach = sMasach FROM inserted

Update tblSach
Set iTongSLBan = iTongSLBan + @iSL
Where sMaSach = @masach

END

select * from tblSach

--Kiểm tra kết quả của Trigger


INSERT INTO tblChiTietHD(sMaHD,sMasach,iSL,fDGban)
VALUES ('HD001', 'S010',3, 65000)

--Xóa một dòng trong tblChiTietHD thì Tổng số lượng sách bán giảm đi tương ứng
select * from tblSach

CREATE TRIGGER tg_TongSLSachDaBan_Xoa


13
ON tblChiTietHD
FOR delete
as
BEGIN
DECLARE @iSL int, @masach VARCHAR(10)
SELECT @iSL = iSL, @masach = sMasach FROM deleted
Update tblSach
Page2

Set iTongSLBan = iTongSLBan - @iSL


Where sMaSach = @masach
END

select * from tblSach

--Kiểm tra kết quả trigger


Delete tblChiTietHD
Where sMAHD = 'HD001' and sMaSach = 'S010'

14
VII. Phân quyền và bảo mật CSDL
Gợi ý:
- Tạo người dùng và đặt mật khẩu tương ứng
- Đặt mật khẩu truy cập đến CSDL
- Phân quyền sử dụng CSDL, gồm: quyền sửa cấu trúc, quyền xem khai thác, quyền tạo
Page2

các đối tượng, …

 Kết quả: Có được 1 file .sql lưu trữ các câu lệnh thực hiện (tất cả dùng chung 1 file)
 Minh họa kết quả tương ứng từng câu lệnh tạo, gồm: câu lệnh, kết quả
 Yêu cầu ít nhất 2 người dùng, cho phép thực hiện thêm – sửa – xóa trên CSDL hoặc
trên câu lệnh cụ thể

CREATE ROLE BPNhapHang


EXEC sys.sp_addrolemember BPNhapHang, th

GRANT INSERT, SELECT


ON dbo.tblNhaCungCap
TO BPNhapHang

.....

CREATE LOGIN TrinhThiXuan


WITH PASSWORD = ’xuan’
CREATE USER user1
For login TrinhThiXuan

--Cấp quyền
GRANT INSERT, UPDATE,DELETE
ON tblNhaCungCap
TO user1
WITH GRANT OPTION

………………………………………………………

15
VII. Phân tán cơ sở dữ liệu
Gợi ý:
- Lựa chọn một số bảng nào đó trong CSDL, xác định thực hiện phân tán ngang hay
phân tán dọc cho bảng
- Cài đặt các bảng theo nguyên tắc phân tán đã xác định
Page2

- Viết các đoạn mã: thêm dữ liệu, View, thủ tục để khai thác các bảng đã được phân tán

 Kết quả: Có được 1 file .sql lưu trữ các câu lệnh thực hiện (tất cả dùng chung 1 file)
 Minh họa kết quả tương ứng từng câu lệnh tạo, gồm: câu lệnh, kết quả

………………………………………………………
………………………………………………………

16
TÀI LIỆU THAM KHẢO
Page2

17

You might also like