Bài tập lớn môn học Cơ sở dữ liệu GVHD ThS.. Bài tập lớn môn học Cơ sở dữ liệu GVHD ThS.. Các thông tin chi tiêu của Khách Hàng phải cập nhật thường xuyên để không làm tốn thời gian chờ
Trang 1TRUNG TÂM ĐÀO TẠO ELEARNING
-VÕ TRUNG HẢI – C618 TRẦN HIẾU TRỨ – C618 NGUYỄN KHẮC HIẾU – C618
TRẦN HOÀNG TIẾN ĐẠT – C618
CHƯƠNG TRÌNH QUẢN LÝ KHÁCH SẠN
BÁO CÁO BÀI TẬP LỚP
MÔN: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU
Giảng viên hướng dẫn: ThS Trịnh Thị Xuân
Đà Nẵng 2023
Trang 2Bài tập lớn môn học Cơ sở dữ liệu GVHD ThS Trịnh Thị Xuân
MỤC LỤC
I Giới thiệu đề tài 4
II Phát biểu bài toán 4
III Mô hình CSDL và tạo CSDL 5
IV Các đối tượng CSDL 6
V Phân quyền và bảo mật CSDL 16
VI Phân tan ngang & dọc CSDL 16
VII Kết luận, hướng phát triển tiếp theo 16
VIII Tài liệu tham khảo 17
Trang 3Bài tập lớn môn học Cơ sở dữ liệu GVHD ThS Trịnh Thị Xuân
I Giới thiệu đề tài
Mỗi Khách Hàng đến Khách Sạn để ở thì phải check in để nhận phòng Khi nhận phòng sẽ khai báo các thông tin các nhân để nhân viện lễ tân lưu lại trên hệ thống, Sau đó khách hàng có thể lưu lại tại Phòng mình đã chọn, Và tận dụng các dịch vụ từ ăn uống, sinh hoạt đến vui chơi giải trí Sau thời gian lưu trú khách hàng
sẽ trả Phòng và nhận được Hóa Đơn thanh toán Các thông tin chi tiêu của Khách Hàng phải cập nhật thường xuyên để không làm tốn thời gian chờ đợi của Khách Hàng
Qua khảo sát hoạt động của một số Khách Sạn ta nhân thấy được sự cần thiết phải xây dựng một chương trình quản lý dữ liệu thông tin bao gồm: thông tin Khách Hàng, Thông tin Nhân Viên, thông tin chi tiết về loại Phòng, thông tin về Hóa Đơn thanh toán, thông tin chi tiết về Hóa Đơn thanh toán khi sử dụng dịch vụ
và để giúp việc quản lý Khách Sạn thêm dễ dàng hơn cũng như sau này
II Phát biểu bài toán
Bài toán là chương trình được xây dựng trên phần mềm SQL server gồm cơ
sở dữ liệu, các bảng dữ liệu như sau:
* Bảng dữ liệu Khách Hàng: đây là bảng dữ liệu quan trọng trong mô hình Quản Lý Khách Sạn, bất kỳ khách sạn nào cũng cần phải có Khách
- Khách Hàng gồm: Mã khách hàng, tên khách hàng, giới tính, địa chỉ, điện thoại, email
- Khách hàng đến lưu trú phải khai báo đầy đủ thông tin để lễ tân đăng ký lưu trú
* Bảng dữ liệu Nhân Viên: thông tin tất cả nhân viện từ quản lý -> nhân viện đều có thông tin đầy đủ trong bảng này
- Nhân Viên gồm: Mã nhân viên, tên nhân viên, giới tính, địa chỉ, SĐT, chức vụ
* Bảng dữ liệu Phòng: bảng này cung cấp đầy đủ thông tin về các loại phòng, thường hay vip, đôi hay đơn…
- Phòng gồm: Mã phòng, tên phòng, loại phòng, giá phòng, tình trạng
* Bảng dữ liệu Hóa Đơn: bảng này cung cấp thông tin số tiền thanh toán, nhân viên và khách hàng
- Hóa Đơn gồm: Mã hóa đơn, mã khách hàng, ma nhân viên, ngày thanh toán, tổng tiền
* Bảng chi tiết Hóa Đơn: bảng này cung cấp chi tiết về hóa đơn khách hàng
đã sử dụng tại khách sạn
- Chi tiết hóa đơn gồm: Mã chi tiết hóa đơn, mã hóa đơn, mã phòng, số ngày, thành tiền
Trang 4Bài tập lớn môn học Cơ sở dữ liệu GVHD ThS Trịnh Thị Xuân
Mỗi khách hàng đến ở dẽ được khai báo chi tiết các thông tin, và được lưu trữ tại csdl của khách sạn để sau này có quay lại sẽ nhận được nhiều ưu đãi hơn
III Mô hình CSDL và tạo CSDL
1 Xác định các thực thể, thuộc tính và ràng buộc
- Bảng Khách Hàng: tblKhachHang (MaKhachHang, TenKhachHang,
GioiTinh, DiaChi, DienThoai, Email)
- Bảng Nhân Viên: tblNhanVien (MaNhanVien, TenNhanVien, GioiTinh, DiaChi, DienThoai, ChucVu)
- Bảng Phòng: tblPhong (MaPhong, TenPhong, LoaiPhong, GiaPhong,
TinhTrang)
- Bảng Hóa Đơn: tblHoaDon (MaHoaDon, MaKhachHang, MaNhanVien, NgayThanhToan, TongTien)
- Bảng Chi Tiết Hóa Đơn: tblChiTietHoaDon (MaChiTietHoaDon,
MaHoaDon, MaPhong, SoNgay, ThanhTien)
2 Xác định sơ đồ quan hệ giữa các bảng
IV Các đối tượng CSDL
Trang 5Bài tập lớn môn học Cơ sở dữ liệu GVHD ThS Trịnh Thị Xuân
1 Các bảng và chèn dữ liệu vào bảng
-Tạo CSDL
TẠO DATABASE:
QuanLyKhachSan
Create database
Go
QuanLyKhachSan
Use
Go
Tạo ba ng tblKhachHang
CREATE TABLE tblKhachHang (
MaKhachHang CHAR ( ), 10
TenKhachHang NVARCHAR ( 50 ),
GioiTinh NVARCHAR ( 5 ),
DiaChi NVARCHAR ( 100 ),
DienThoai NVARCHAR ( 15 ),
Email NVARCHAR ( 50 ),
Primary key ( MaKhachHang )
)
Go
Insert Into tblKhachHang Values
( 'KH01' N'Võ Văn Quang' , , N'Nam' , N'Qua ng
Nam' '0905111222' 'nam@gmail.com' , , ),
( 'KH02' N'Võ Văn Hiệp' N'Nam' N'Qua , , , ng
Ngãi' '0905111333' 'hiep@gmail.com' , , ),
( 'KH03' N'Lê Thi Dầ@ , n' , N'Nữ' , N'Nghệ
An' '0905111444' 'dan@gmail.com' , , ),
( 'KH04' N'Trường ,
Giang' N'Nam' N'HCM' '09051115555' 'giang@gmail.com' , , , , ),
( 'KH05' N'Lê Thầ , m Dương' , N'Nam' , N'Hà
Nội' '0905111666' 'duong@gmail.com' , , ),
( 'KH06' N'NguyêI , n Thị Lê@ ' , N'Nữ' , N'Ha i
Dương' '0905111777' 'le@gmail.com' , , ),
( 'KH07' N'Phan Văn ,
Quang' N'Nam' N'HCM' '0905111888' 'quang@gmail.com' , , , , )
Go
Tạo ba ng tblNhanVien
CREATE TABLE tblNhanVien (
MaNhanVien CHAR ( ), 10
TenNhanVien NVARCHAR ( ), 50
GioiTinh NVARCHAR ( 5 ),
DiaChi NVARCHAR ( 100 ),
DienThoai NVARCHAR ( 15 ),
ChucVu NVARCHAR ( ), 50
Primary key ( MaNhanVien )
)
Go
Insert Into tblNhanVien Values
( 'NV01' N'Lê Văn Minh' , , N'Nam' N'HuêN , ' '0905222222' , , N'Nhần Viên' ),
( 'NV02' N'Lê Thị Lài' N'Nữ' N'Đà NăI , , , ng' , '0905222333' , N'Qua n Lý' ),
( 'NV03' N'Lê Thị DiêI , m' , N'Nữ' , N'Nghệ An' , '0905222444' , N'Nhần
Viên' ),
( 'NV04' N'Trường Thanh' , , N'Nam' , N'HCM' , '0905222555' N'Nhần Viên' , ),
Trang 6Bài tập lớn môn học Cơ sở dữ liệu GVHD ThS Trịnh Thị Xuân
( 'NV05' N'Võ Trung Hà' N'Nam' N'Qua , , , ng Nam' , '0905222666' , N'Qua n
Lý' ),
( 'NV06' N'Bùi Thiện Thanh' N'Nữ' N'Tam Kỳ' '0905222777' , , , , , N'Nhần
Viên' ),
( 'NV07' N'Võ Trung Ha , i' , N'Nam' , N'Đà NăI ng' , '0905222888' , N'Nhần
Viên' )
Go
Tạo ba ng tblPhong
CREATE TABLE tblPhong (
MaPhong CHAR ( ), 10
TenPhong NVARCHAR ( 50 ),
LoaiPhong NVARCHAR ( 50 ),
GiaPhong FLOAT ( ), 15
TinhTrang NVARCHAR ( 20 ),
Primary key ( MaPhong )
)
Go
Insert Into tblPhong Values
( 'MP01' N'Phòng Đôi' , , N'Vip' N'800000' 'TrôN , , ng' ),
( 'MP02' N'Phòng Đơn' , , N'Thường' , N'600000' , 'TrôN ng' ),
( 'MP03' N'Phòng Đẹp' , , N'Vip' , N'900000' , 'TrôN ng' ),
( 'MP04' N'Phòng Đôi' , , N'Vip' , N'800000' , 'TrôN ng' ),
( 'MP05' N'Phòng Đơn' , , N'Thường' , N'600000' , 'TrôN ng' ),
( 'MP06' N'Phòng Đẹp' , , N'Vip' , N'900000' , 'TrôN ng' ),
( 'MP07' N'Phòng Đơn' , , N'Thường' , N'600000' , 'TrôN ng' )
Go
Tạo ba ng tblHoaDon
CREATE TABLE tblHoaDon (
MaHoaDon CHAR ( 10 ),
MaKhachHang CHAR ( ), 10
MaNhanVien CHAR ( ), 10
NgayThanhToan DATE ,
TongTien FLOAT ( ), 15
Primary key ( MaHoaDon ),
FOREIGN KEY ( MaKhachHang ) REFERENCES tblKhachHang ( MaKhachHang ),
FOREIGN KEY ( MaNhanVien ) REFERENCES tblNhanVien ( MaNhanVien )
)
Go
Insert Into tblHoaDon Values
( 'HD01' 'KH02' 'NV01' N'01/01/2023' N'1600000' , , , , ),
( 'HD02' 'KH01' 'NV01' N'03/04/2023' N'1200000' , , , , ),
( 'HD03' 'KH02' 'NV03' N'02/05/2023' N'1800000' , , , , ),
( 'HD04' 'KH04' 'NV03' N'06/02/2023' N'1200000' , , , , ),
( 'HD05' 'KH05' 'NV01' N'02/03/2023' N'2400000' , , , , ),
( 'HD06' 'KH03' 'NV01' N'02/05/2023' N'3600000' , , , , ),
( 'HD07' 'KH02' 'NV01' N'02/04/2023' N'2400000' , , , , )
Go
Tạo ba ng tblChiTietHoaDon
CREATE TABLE tblChiTietHoaDon (
MaChiTietHoaDon CHAR ( ), 10
MaHoaDon CHAR ( 10 ),
MaPhong CHAR ( ), 10
SoNgay CHAR ( ), 10
Trang 7Bài tập lớn môn học Cơ sở dữ liệu GVHD ThS Trịnh Thị Xuân
ThanhTien FLOAT ( ), 15
Primary key ( MaChiTietHoaDon ),
FOREIGN KEY ( MaHoaDon ) REFERENCES tblHoaDon ( MaHoaDon ),
FOREIGN KEY ( MaPhong ) REFERENCES tblPhong ( MaPhong )
)
Go
Insert Into tblChiTietHoaDon Values
( 'CTHD01' , 'HD02' , 'MP02' , N'2' N'1200000' , ),
( 'CTHD02' , 'HD01' , 'MP01' , N'2' N'1600000' , ),
( 'CTHD03' , 'HD02' , 'MP03' , N'2' N'1200000' , ),
( 'CTHD04' , 'HD04' , 'MP03' , N'2' N'1200000' , ),
( 'CTHD05' , 'HD05' , 'MP01' , N'4' N'2400000' , ),
( 'CTHD06' , 'HD03' , 'MP06' , N'3' N'2700000' , ),
( 'CTHD07' , 'HD03' , 'MP06' , N'3' N'2700000' , )
Go
2 View
Tạo view in đầ@ y đu thông tin Khách Hàng
SELECT *
FROM tblKhachHang
Go
Tạo view in đầ@ y đu thông tin Nhần Viên
SELECT *
FROM tblNhanVien
Go
Tạo view in đầ@ y đu thông tin Phòng
SELECT *
FROM tblPhong
Go
Tạo view in đầ@ y đu thông tin Hóa Đơn
SELECT *
FROM tblHoaDon
Go
Tạo view in đầ@ y đu thông tin Chi TiêN t Hóa Đơn
SELECT *
FROM tblChiTietHoaDon
Go
Tạo view in đầ@ y đu thông tin Khách Hàng là Nữ
SELECT *
FROM tblKhachHang
WHERE GioiTinh = N'Nữ'
Go
Tạo view in thông tin cu a những Khách hàng có hóa đơn lớn hơn
800000
SELECT *
FROM tblHoaDon
WHERE TongTien > 800000
Go
Tạo view in đầ@ y đu thông tin Nhần Viên là Nữ và quê ơ Đà NăI ng
SELECT *
FROM tblNhanVien
WHERE GioiTinh = N'Nữ' AND DiaChi = N'Đà NăI ng'
Go
Tạo view in thông tin Chi TiêN t Hóa Đơn có sôN ngày ơ là 2
SELECT *
Trang 8Bài tập lớn môn học Cơ sở dữ liệu GVHD ThS Trịnh Thị Xuân
FROM tblChiTietHoaDon
WHERE SoNgay 2 =
Tạo view in đầ@ y đu thông tin Phòng Vip
SELECT *
FROM tblPhong
WHERE LoaiPhong = N'Vip'
Go
3 Proc
Tạo thu tục in danh sách Khách Hàng N ( N là mã Khách Hàng )
CREATE PROC inDSKH @MaKhachHang char ( 10 )
AS
Select * From tblKhachHang Where MaKhachHang @MaKhachHang = ;
GO
EXEC inDSKH KH02
GO
Tạo thu tục in danh sách Nhần Viên N ( N là mã Nhần Vien )
CREATE PROC inDSNV @MaNhanVien char ( ) 10
AS
Select * From tblNhanVien Where MaNhanVien @MaNhanVien = ;
GO
EXEC inDSNV NV05
GO
Tạo thu tục in danh sách Phòng N ( N là mã Phòng )
CREATE PROC inDSP @MaPhong char ( ) 10
AS
Select * From tblPhong Where MaPhong @MaPhong = ;
GO
EXEC inDSP MP03
GO
Tạo thu tục in danh sách Hóa Đơn N ( N là mã Hóa Đơn )
CREATE PROC inDSHD @MaHoaDon char ( 10 )
AS
Select * From tblHoaDon Where MaHoaDon @MaHoaDon = ;
GO
EXEC inDSHD HD04
GO
Tạo thu tục in danh sách Chi TiêN t Hóa Đơn N ( N là mã Chi TiêN t Hóa
Đơn )
CREATE PROC inDSCTHD @MaChiTietHoaDon char ( ) 10
AS
Select * From tblChiTietHoaDon Where MaChiTietHoaDon =
@MaChiTietHoaDon ;
GO
EXEC inDSCTHD CTHD02
GO
4 Trigger
Trigger: Ghi lại thông tin Người QT, Ngày Thay Đô i, Thông Tin Thay
Đô a cơ sơ dữ liệu Qua n lý Khách Sạn
Tạo thêm ba ng ThayDoi
CREATE TABLE ThayDoi
(
ThongTinThayDoi xml NOT NULL,
Trang 9Bài tập lớn môn học Cơ sở dữ liệu GVHD ThS Trịnh Thị Xuân
NgayThayDoi datetime NOT NULL DEFAULT GETDATE (),
NguoiQT char ( ) 40 NOT NULL
)
GO
Tạo Trigger ThayDoiTable
CREATE TRIGGER ThayDoiTable
ON DATABASE
FOR CREATE_TABLE ALTER_TABLE , , DROP_TABLE
AS
SET NOCOUNT ON
INSERT ThayDoi ( ThongTinThayDoi , NguoiQT ) VALUES ( EVENTDATA (),
USER )
GO
SELECT FROM * ThayDoi
Tạo ba ng KiemTra_table
CREATE TABLE KiemTra
(
STT int PRIMARY KEY ,
DienGiai nvarchar ( 30 ),
DienGiaiKhac nvarchar ( 30 )
)
GO
SELECT FROM * ThayDoi
Thêm cột NgayThucHien vào KiemTra_table
ALTER TABLE KiemTra
ADD NgayThucHien date DEFAULT GETDATE ()
GO
SELECT FROM * ThayDoi
Xóa bo ba ng KiemTra_table
DROP TABLE KiemTra
GO
SELECT FROM * ThayDoi
GO
Trigger: Ghi lại thay đô i tại ba ng thông tin Khách Hàng
CREATE TRIGGER Tr_KhachHang
ON tblKhachHang
FOR INSERT
AS
COMMIT
GO
SELECT FROM * tblKhachHang
GO
Trigger: Ghi lại thay đô i tại ba ng thông tin Nhần Viên
CREATE TRIGGER Tr_NhanVien
ON tblNhanVien
FOR INSERT
AS
COMMIT
GO
SELECT FROM * tblNhanVien
GO
Trigger: Ghi lại thay đô i tại ba ng thông tin Phòng
CREATE TRIGGER Tr_Phòng
ON tblPhong
FOR INSERT
Trang 10Bài tập lớn môn học Cơ sở dữ liệu GVHD ThS Trịnh Thị Xuân
AS
COMMIT
GO
SELECT FROM * tblPhong
GO
Trigger: Ghi lại thay đô i tại ba ng thông tin Hoa Đơn
CREATE TRIGGER Tr_HoaDon
ON tblHoaDon
FOR INSERT
AS
COMMIT
GO
SELECT FROM * tblHoaDon
GO
V Phân quyền và bảo mật CSDL
Phần quyê@ n cho người dùng có tên 'GUEST'
USE QuanLyKhachSan Grant select on tblKhachHang GUEST to
USE QuanLyKhachSan Grant insert on tblNhanVien GUEST to
USE QuanLyKhachSan Grant delete on tblPhong GUEST to
USE QuanLyKhachSan Grant select on tblHoaDon GUEST to
Phần quyê@ n cho người dùng có tên 'LeThanhTrung'
Create user LeThanhTrung for login [BUILTIN\Users]
USE QuanLyKhachSan Grant select on tblKhachHang LeThanhTrung to
USE QuanLyKhachSan Grant insert on tblNhanVien LeThanhTrung to
USE QuanLyKhachSan Grant select on tblPhong LeThanhTrung to
USE QuanLyKhachSan Grant delete on tblHoaDon LeThanhTrung to
VI Phân quyền và bảo mật CSDL
Phần tán Dọc cho tbl Nhần Viên
Tạo ba ng con cho DiaChi va DienThoai
CREATE TABLE tblNhanVien_Address
MaNhanVien CHAR ( ) 10 PRIMARY KEY ,
DiaChi NVARCHAR ( 100 ),
DienThoai NVARCHAR ( 15 )
FOREIGN KEY ( MaNhanVien ) REFERENCES tblNhanVien ( MaNhanVien )
)
Go
SELECT FROM * tblNhanVien_Address
Chuyê n dữ liệu từ ba ng gôN c sang ba ng con
INSERT INTO tblNhanVien_Address MaNhanVien , DiaChi , DienThoai )
SELECT MaNhanVien DiaChi , , DienThoai
FROM tblNhanVien
Go
Xóa cột DiaChi va DienThoai từ ba ng gôN c
ALTER TABLE tblNhanVien
DROP COLUMN DiaChi , DienThoai
Go
SELECT FROM * tblNhanVien
SELECT FROM * tblNhanVien_Address
Go
VII Kết luận, hướng phát triển tiếp theo
Trang 11Bài tập lớn môn học Cơ sở dữ liệu GVHD ThS Trịnh Thị Xuân
Vì thời gian thực hiện đề tài cũng tương đối ngắn không thể diễn tả hết được hết tính năng cũng như hiệu quả của chương trình của đề tài Nhìn chung chương trình đã đáp được các yêu cầu hiện nay của 1 khách sạn tầm trng cũng như người dùng quan tâm, chương trình đã hỗ trợ giảm thiểu đáng kể thời gian truy xuất dữ liệu nhân viên, khách hàng…, thông tin khách hàng đã từng đến lưu trú, hỗ trợ người dùng một cách khách quan và nhanh chóng
Mặc khác chương trình cũng còn một số hạn chế nhất định, mong rằng thời gian tới qua thời gian sử dụng thực tế sẽ cập nhật, sửa lỗi và phát triển tốt hơn
VIII Tài liệu tham khảo
1 Professional SQL Server 2000 Database Design, Louis Davidson, Wrox PressLtd
2 SQL Server 2008 Books Online
SINH VIÊN THỰC HIỆN
NHÓM N3- Trường ĐHM Hà Nội ( đại diện trưởng nhóm )