Phiếu thuêđược lập thành hai bản một bản sẽ được giao lại cho một khách hàng , một bản lưu lại.Thông tin trên Phiếu thuê gồm có : Mã phiếu thuê, ngày lập , mã khách hàng, tênkhách hàng,
Trang 1ĐẠI HỌC HUẾTRƯỜNG ĐẠI HỌC KINH TẾKHOA HỆ THỐNG THÔNG TIN KINH TẾ
-
-Cơ sở dữ liệu nâng cao
Đề Tài Quản lý Khách SạnSinh viên thực hiện
LớpMã sinh viênGiáo viên hướng dẫn
Huỳnh Ngọc TrợK55 Tin học Kinh tế
21K4080057Hoàng Hữu Trung
uản lý Khách sạn 3
Trang 2Bước 1: Mô tả bài toán 3
Bước 2: Liệt kê danh từ liên quan 4
Bước 3: Xác định thực thể và các thuộc tính tương ứng của thực thể 5
Bước 4: Xác định mối quan hệ giữa các thực thể và vẽ sơ đồ thực thể mối quan hệ ERD 6
4.1 các mỗi quan hệ thực thể 6
4.2 ,Vẽ sơ đồ thực thể mối quan hệ(Entity Relationship Diagram -ERD) 7
Bước 5: Chuẩn Hóa 8
5.1 thiết lập khóa cho thực thể 8
5.2 Các quan hệ 1-1 , 1-n , n-n 8
Bước 6 : Xây dựng mô hình dữ liệu quan hệ 12
6.1 mô hình dữ liệu quan hệ sql server 12
Code chạy trên SQL Server kèm hình ảnh và kết quả 13
Câu Lệnh Inner Join 13
Câu Lệnh Full Outer Join 13
Câu Lệnh Left Join 14
Câu Lệnh Right Join 14
Bước 1: Mô tả bài toán
Để có thể quản lý tốt và chăm sóc khách hàng thuận lợi Khách sạn chia ra nhiều bộphận khác nhau , tùy vào năng lực mỗi cá nhân, Nhân viênsẽ thuộc một bộ phận
tương ứng và trong Bộ phận đó sẽ gồm nhiều nhân viên cùng một bộ phận Khách Hàng
đến thuê Phòng bộ phận , quản lý thuê phòng sẽ kiểm tra yêu cầu của khách hàng, nếuyêu cầu không được đáp ứng thì đưa ra thông báo từ chối , nếu đáp ứng được thì NhânViên sẽ lập Phiếu thuê cho khách hàng Khách hàngcó thể đăng ký thuê nhiều lần
Trang 3khi có nhu cầu thuê phòng và mỗi lần thuê sẽ một có phiếu thuê được lập Phiếu thuê
được lập thành hai bản một bản sẽ được giao lại cho một khách hàng , một bản lưu lại.Thông tin trên Phiếu thuê gồm có : Mã phiếu thuê, ngày lập , mã khách hàng, tênkhách hàng, số CCCD, Dịa chỉ khách hàng, số tiền đặt trước , yêu cầu , Sau khi phiếuthuê được lập sẽ có một bản chi tiết phiếu thuê đại diện cho các chi tiết cụ thể hơn liênquan đến việc cho thuê , một phiếu thuế sẽ có nhiều chi tiết phiếu thuê tương ứng vớisố lượng phòng và khách hàng được cho thuê , một chi tiết phiếu thuê chỉ thuộc vềmột phiếu thuê duy nhất và trong Chi Tiết Phiếu Thuê sẽ có nhiều thông tin củakhách hàng xuất hiện trong đó Thông tin Chi Tiết Phiếu Thuêgồm : MaCTPT ,NgayTP , MaPhong ,MaPT Mỗi Phòng trong khách sạn đều được phân biệt với các
loại phòngkhác nhau để đáp ứng nhu cầu của khách hàng, khi đến thuê phòng kháchhàng sẽ được tư vấn chọn loại phòng để phù hợp khả năng chỉ trả cũng như số lượng dukhách khi thuê phòng, mỗi phòng chỉ thuộc về mộtloại phòng tương ứng và một loạiphòng sẽ có nhiều phòng như thế Thông tin về loại phòng bao gồm: MaLP , TenLP ,DonGia , SoNguoiToiDa Khách Hàngsau khi lập phiếu thuêphòng sẽ dựa vào đó đểbiết được Thông tin về Phòng của mình Thông tin Phòng bao gồm: MaPhong , MaLP ,diện tích , tình trạng phòng , đơn giá phòng Khi khách hàng trả phòng Nhân viên sẽ
lậpHóa đơn thanh toán cho khách hàng từ phiếu thuê được lưu lại khi khách hàngthuê phòng và nếu khách hàng đã thanh toán ngay khi lập Phiếu thuê thì nhân viên sẽkiểm tra lại trong thời gian lưu lại có sử dụng dịch vụ gì không nếu có thì nhân viên sẽtrả lại số tiền thừa cho khách hàng Thông tin trên Hóa đơn thanh toán gồm :MaHD ,NgayLap, TenKH ,MaNV, MaPT Hóa đơn được lập thành hai bản , một bảngiao cho khách hàng , một bản lưu lại Khi khách hàng có nhu cầu sử dụng thêm dịch vụ , bộ phận quản lý dịch vụ sẽ kiểm tra yêu cầu của khách Nếu yêu cầu không đáp ứngđược thì đưa ra thông báo từ chối , nếu đáp ứng được thì cung cấp dịch vụ cho khách.Thông tin dịch vụ gồm : mã dịch vụ , tên dịch vụ , đơn giá bộ phận này phải lưu đầyđủ thông tin theo dõi quá trình sử dụng dịch vụ của khách hàng trongPhiếu dịch vụ ,
Mỗi Phiếu dịch vụ sẽ các thông tin có dịch vụ được ghi vào sau khi được khách hàngsử dụng , mỗi dịch vụ sẽ có nhiều khách hàng khác nhau sử dụng và lưu ở nhiều Phiếudịch vụ khác nhau , thông tin Phiếu dịch vụ gồm : MaPhieuDV , NgayLap
,SoLuong,MaDV TongTien .Trong thời gian lưu lại khách sạn Bộ phận quản lý kháchhàng sẽ nhập và lưu toàn bộ thông tin về khách hàng khi cần thiết cũng có thể sửa chữavà xóa thông tin khách hàng Thông tin khách hàng gồm : Mã khách hàng, tên kh, sốCCCD , địa chỉ , điện thoại , quốc tịch , sổ hổ chiếu
Bước 2: Liệt kê danh từ liên quan
Trang 4Mã phiếu thuê Ngày lập Số tiền đặt trước Yêu cầu
Bước 3: Xác định thực thể và các thuộc tính tương ứng của thực thể
Thực thể: KHACHHANG (Khách Hàng)- Mục đích: Quản lý thông tin Khách Hàng- Thuộc tính: MaKH, TenKH ,NgaySinh, SDT, CCCD , DiaChi , QuocTich.Thực thể: PHONG ( Phòng )
- Mục đích: Quản lý thông tin các Phòng- Thuộc tính: MaPhong , DienTich, TinhTrang , MaLP.Thực thể: LOAIPHONG (Loại Phòng )
- Mục đích: Quản lý thông tin các Loại phòng
Trang 5- Thuộc tính: MaLP , TenLP , DonGia , SoNguoiToiDaThực thể: PHIEUTHUE ( Phiếu Thuê)
- Mục đích: Quản lý thông tin các Phiếu Thuê phòng- Thuộc tính:MaPT , NgayThue, NgayTra, GiaMotNgay,TenKH, MaNV,MaKH.Thực thể: CHITIETPHIEUTHUE (Chi Tiết Phiếu Thuê)
- Mục đích: Quản lý thông tin các Phiếu Thuê phòng- Thuộc tính: MaCTPT , NgayTP , MaPhong ,MaPTThực thể: HOADONTHANHTOAN (Hóa Đơn Thanh Toán)
- Mục đích: Quản lý các hóa đơn thanh toán- Thuộc tính: MaHD ,NgayLap, TenKH ,MaNV, MaPT, TongTienThực thể: DICHVU (Dịch Vụ)
- Mục đích: Quản lý các dịch vụ- Thuộc tính: MaDV , TenDV , DonGiaThực thể: PHIEUDICHVU (Phiếu Dịch Vụ)
- Mục đích: Quản lý các dịch vụ- Thuộc tính: MaPhieuDV , NgayLap , TongTien, MaPTThực thể: BOPHAN (Bộ phận)
- Mục đích: Quản lý thông tin các bộ phận- Thuộc tính: MaBP , TenBP , MoTa.Thực thể: NHANVIEN (Nhân viên)
- Mục đích: Quản lý thông tin Nhân viên- Thuộc tính: MaNV , TenNV , NgaySinh , GioiTinh , DiaChi , SDT , CCCD,
ChucVu , MaBP, Luong
Trang 6Bước 4: Xác định mối quan hệ giữa các thực thể và vẽ sơ đồ thực thể mốiquan hệ ERD
4.1 các mỗi quan hệ thực thể
Khách Hàng đến thuê Phòng ,bộ phậnquản lý thuê phòng sẽ kiểm tra yêu cầu của khách hàng, nếu yêu cầu không được đáp ứng thì đưa ra thông báo từ chối , nếu đáp ứngđược thì Nhân Viênsẽ lập Phiếu thuê cho khách hàng
Khách hàng có thể đăng ký thuê nhiều lần khi có nhu cầu thuê phòng và mỗi lần thuêsẽ một có phiếu thuê được lập Phiếu thuê được lập thành hai bản một bản sẽ được
giao lại cho một khách hàng , một bản lưu lại
Sau khi phiếu thuê được lập sẽ một bản có chi tiết phiếu thuê đại diện cho các chi tiếtcụ thể hơn liên quan đến việc cho thuê , một phiếu thuế sẽ có nhiều chi tiết phiếu thuê
tương ứng với số lượng phòng và khách hàng được cho thuê , một chi tiết phiếu thuê
chỉ thuộc về một phiếu thuê duy nhất và trong Chi Tiết Phiếu Thuê sẽ có nhiều thôngtin của khách hàng xuất hiện trong đó
Mỗi Phòng trong khách sạn đều được phân biệt với các loại phòng khác nhau để đáp ứng nhu cầu của khách hàng , khi đến thuê phòng khách hàng sẽ được tư vấn chọn loạiphòng để phù hợp với khả năng chỉ trả cũng như số lượng du khách khi thuê phòng, mỗi phòng chỉ thuộc về mộtloại phòng tương ứng và một loại phòng sẽ có nhiều phòng như thế
Khách sạn chia ra nhiều bộ phận khác nhau , tùy vào năng lực mỗi cá nhân, Nhân viên
sẽ thuộc một bộ phận tưởng ứng và trong Bộ phận đó sẽ gồm nhiều nhân viên cùngmột bộ phận
Trang 7Khi khách hàng trả phòng Nhân viên sẽ lậpHóa đơn thanh toán cho khách hàng từ
phiếu thuêđược lưu lại khi khách hàng thuê phòng hoặc lậphóa đơn thanh toánngaykhi khách hàng thuê phòng
Mỗi Phiếu dịch vụ sẽ các thông tin có dịch vụ được ghi vào sau khi được khách hàngsử dụng , mỗi dịch vụ sẽ có nhiều khách hàng khác nhau sử dụng và lưu ở nhiều Phiếudịch vụ khác nhau
4.2 ,Vẽ sơ đồ thực thể mối quan hệ(Entity Relationship Diagram -ERD)
Trang 9Bước 5: Chuẩn Hóa
5.1 thiết lập khóa cho thực thể
KHACHHANG (MaKH, TenKH ,NgaySinh, SDT, CCCD , DiaChi ,
QuocTich.)
PHONG (MaPhong , DienTich, TinhTrang , MaLP.) LOAIPHONG (MaLP , TenLP , DonGia , SoNguoiToiDa) PHIEUTHUE ( MaPT , MaPhong, MaKH, TenKH ,NgayThue,
NgayTra , GiaMotNgay, MaNV)
CHITIETPHIEUTHUE (MaCTPT ,MaPT, MaKH) HOADONTHANHTOAN (MaHD ,NgayLap, TenKH ,MaNV,
Trang 10 Hai bảng KHACHHANG và PHIEUTHUE có mối liên hệ 1-n nên tađể khóa chính của bảng KHACHHANG qua làm khóa phụ của bảngPHIEUTHUE.
PHIEUTHUE ( MaPT , NgayLap , NgayDen, TenKH, MaKH,
MaNV)
Hai bảng NHANVIEN và PHIEUTHUE có mối liên hệ 1-n nên ta đểkhóa chính của bảng NHANVIEN qua làm khóa phụ của bảngPHIEUTHUE.
PHIEUTHUE ( MaPT , NgayLap , NgayDen, TenKH, MaKH,
MaNV)
Hai bảng BOPHAN và NHANVIEN có mối liên hệ 1-n nên ta đểkhóa chính của bảng BOPHAN qua làm khóa phụ của bảngNHANVIEN.
NHANVIEN (MaNV , TenNV , NgaySinh , GioiTinh , DiaChi ,
SDT , CCCD, ChucVu , MaBP ,NgayVL, Luong )
Hai bảng NHANVIEN và HOADONTHANHTOAN có mối liên hệ1-n nên ta để khóa chính của bảng NHANVIEN qua làm khóa phụcủa bảng HOADONTHANHTOAN.
HOADONTHANHTOAN (MaHD ,NgayLap, TenKH ,MaNV,
MaPT)
Trang 11 Hai bảng PHIEUTHUE và HOADONTHANHTOAN có mối liên hệ1-n nên ta để khóa chính của bảng PHIEUTHUE qua làm khóa phụcủa bảng HOADONTHANHTOAN.
HOADONTHANHTOAN (MaHD ,NgayLap, TenKH ,MaNV,
MaPT)
Hai bảng PHIEUTHUE và PHIEUDICHVU có mối liên hệ 1-n nênta để khóa chính của bảng PHIEUTHUE qua làm khóa phụ của bảngPHIEUDICHVU.
PHIEUDICHVU (MaPhieuDV , NgayLap , TongTien, MaPT)
Hai bảng PHIEUTHUE và CHITIETPHIEUTHUE có mối liên hệ n nên ta để khóa chính của bảng PHIEUTHUE qua làm khóa phụ củabảng CHITIETPHIEUTHUE.
1- CHITIETPHIEUTHUE (MaCTPT , NgayTP , MaPhong ,MaPT)
Hai bảng CHITIETPHIEUTHUE và KHACHHANG có mối liên hệ1-n nên ta để khóa chính của bảng CHITIETPHIEUTHUE qua làmkhóa phụ của bảngKHACHHANG.
KHACHHANG (MaKH, TenKH ,NgaySinh, SDT, CCCD , DiaChi ,
QuocTich.)
Trang 12 Hai bảng PHONG và PHIEUTHUE có mối liên hệ 1-n nên ta đểkhóa chính của bảng PHONG qua làm khóa phụ của bảngPHIEUTHUE.
PHIEUTHUE ( MaPT , MaPhong, MaKH, TenKH ,NgayThue,
NgayTra , GiaMotNgay, MaNV)
Hai bảng LOAIPHONG và PHONG có mối liên hệ 1-n nên ta đểkhóa chính của bảng LOAIPHONG qua làm khóa phụ của bảngPHONG.
PHONG (MaPhong , DienTich, TinhTrang , MaLP.)
Quan hệ n-n
•Hai bảng DICHVU và PHIEUDICHVU có mối quan hệ n-n nên ta phải tạo thêm 01 bảng ở giữa chúng để xác định Khách Hàng đang sử dụng dịchvụ gì và số lượng bao nhiêu
Ta phải thêm 01 bảng là CHITIETPHIEUDICHVU (Chi tiết phiếudịch vụ)
Thuộc tính của bảng mới bao gồm khóa của 02 bảng DICHVU vàPHIEUDICHVU và một số thuộc tính khác: MaPhieuDV , MaDV ,Dongia, Soluong
Bước 6 : Xây dựng mô hình dữ liệu quan hệ
6.1 mô hình dữ liệu quan hệ sql server
Trang 136.1 mô hình dữ liệu quan hệ My SQL
Trang 15Code chạy trên SQL Server kèm hình ảnh và kết quả
Câu Lệnh Inner Join
Giải Thích: sử dụng câu lệnh Inner Join ở 3 bảng Chi tiết phiếu thuê, Phòng và Loại Phòng Kết quả câu lệnh này sẽ chứa thông tin về các phòng đã được đặt và loại phòng tương ứng
SELECTFROM CHITIETPHIEUTHUE
INNER JOIN PHONG ON CHITIETPHIEUTHUE MaPhong = PHONG.MaPhong
INNER JOIN LOAIPHONG ON PHONG MaLP LOAIPHONG MaLP.=.;
Trang 16Câu Lệnh Full Outer Join
Giải Thích: sử dụng câu lệnh Full Outer Join ở 3 bảng Chi tiết phiếu thuê, Phòng và Loại Phòng
SELECTFROM CHITIETPHIEUTHUE
fullouter join PHONG ON CHITIETPHIEUTHUE MaPhong = PHONG MaPhong.
fullouter join LOAIPHONG ON PHONG MaLP LOAIPHONG.=.MaLP;
Câu Lệnh Left Join
Giải Thích: sử dụng câu lệnh Left Join ở 3 bảng Chi tiết phiếu thuê, Phòng và Loại Phòng
SELECTFROM CHITIETPHIEUTHUE
Left Join PHONG ON CHITIETPHIEUTHUE.MaPhong PHONG MaPhong=.Left Join LOAIPHONG ON PHONG.MaLP = LOAIPHONG.MaLP;
Câu Lệnh Right Join
Giải Thích: sử dụng câu lệnh Right Join ở 3 bảng Chi tiết phiếu thuê, Phòng và Loại Phòng
SELECTFROM CHITIETPHIEUTHUE
Right Join PHONG ON CHITIETPHIEUTHUE MaPhong = PHONG.MaPhong
Right Join LOAIPHONG ON PHONG MaLP LOAIPHONG MaLP.=.;
Trang 17FROM NHANVIEN;
Trang 18Câu Lệnh View
Giải Thích : Tạo một View csdlnc_nv để in ra thông tin về nhân viên và dùng update vào bảng view để tăng hoặc hạ lương nhân viên bộ về mức lương 4tr5
CREATE VIEW csdlnc_nv ASselectfrom NHANVIEN
selectfrom csdlnc_nvUPDATE dbo NHANVIEN SET Luong =4500000
where MaNV = 4
Trang 19Giải thích: Tạo một view ThongTinPhieuThue dung để in ra thông tin tên những nhânviên đã lập phiếu thuê và khách hàng tương ứng trong khoảng thời gian 3 tháng từ tháng 1 đến tháng 3
CREATE view ThongTinPhieuThue
asSELECT nv MaNV ,nv TenNV., nv.SDT ,pt.MaKH pt TenKH,., pt.NgayThue
Giải thích: Tạo một view để xem thông tin các phòng đang được thuê , khách hàng là ai , ngày thuê ngày nào, bao lâu và sử dụng phòng gì
CREATE view ThongTinPhieuthue_PhongDaThue
asSELECT pt MaPT ,pt.TenKH as'Tên Khach Hàng'pt NgayThue as'Ngày Thuê Phòng',
pt.NgayTra 'Ngày Tr Phòng'ả,MaPhong as'Mã Phòng',GhiChu 'Chú Thích'
FROM PHIEUTHUE pt
INNER JOIN CHITIETPHIEUTHUE ctpt
Trang 20ON ctpt.MaPT pt=.MaPT
INNER JOIN PHONG p
ON pt MaPhong = p MaPhong.
s d ng view ử ụSELECTFROM ThongTinPhieuthue_PhongDaThue
Giải thích: Tạo một view để xem thông tin các phòng Loại Hạng sang nào còn trống, để thông báo với khách hàng
CREATE view ThongTinCacPhong
asSELECT p.MaPhong , LP TenLP as'Lo i Phòng'ạ P TinhTrang ,.'Tr ng Thái'ạ,LP DonGia
SELECTFrom dbo.LOAIPHONG
Trang 21Giải thích: Chỉnh sửa bảng Nhân Viên và sử dụng CHECK và CONSTRAINT để tạo điều kiện cho trường SĐT để số < 10 , khi nhập quá 10 sẽ đưa ra thông báo lỗiALTER TABLE dbo.NHANVIEN
ADD CONSTRAINT CK_NHANVIEN_SDT
CHECK (SDT LIKE'[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]')
Giải thích: Chỉnh sửa bảng Nhân Viên và sử dụng CHECK và CONSTRAINT để tạo điều kiện cho trường Phòng để Tình Trạng Phòng từ P01 đến P30 khi nhập dữ liệu ở 3 trạng thái'Tr ng'ố,'Đ y'ầ,'S a ch a' ửữ
Check 3ALTER TABLE dbo PHONG
ADD CONSTRAINT P_TINHTRANG_TT
CHECK (MaPhong BETWEEN'P01'and'P30')and
TinhTrang (INN'Tr ng'ố,N'Đ y'ầ,N'S a ch a'ửữ)));
Câu Lệnh Stored Procedure
1.1 Giải thích: tạo Stored Procedure để in danh sách tất cả khách hàng
CREATE PROCEDURE USP DSKH ASBEGIN
selectFROM KHACHHANG
ENDIn danh sách t t c các khách hàngấảEXEC USP DSKH
Trang 221.2 Giải thích :tạo Stored Procedure để thêm 1 khách hàng vào bảng KHACHHANG
Thêm 1 khCREATE PROCEDURE USP_AddKHACHHANG@MaKH nvarchar(10),
KHACHHANG HoTen NgaySinh SDT DiaChi QuocTich
@HoTen @NgaySinh @SDT @DiaChi @QuocTich
END Thêm khách hàng vào b ng KHACHHANGảEXEC USP_AddKHACHHANG'KH039',N'Đoàn Huy H i'ả,'2002-11-19','2549995547',N'B cạLiêu','VN'
1.3 Giải Thích : tạo Stored Procedure để sửa thông tin của 1 kháchhàng trong bảng KHACHHANG
s a thông tin kh ửCREATE PROCEDURE USP_UpdKHACHHANG@MaKH nvarchar(10),
@HoTen NVARCHAR(),
Trang 23dboUPDATE.KHACHHANG
1.4 Giải thích :tạo Stored Procedure để xóa 1 khách hàng trong bảngKHACHANG
CREATE PROCEDURE USP_DeleteKH @MaKH nvarchar(10)
ASBEGIN
BEGIN TRANSACTION Xóa thông tin khách hàng trong b ng KHACHANGả
KHACHHANG MaKH @MaKH
DELETE FROMWHERE=
COMMIT TRANSACTIONEND
Xóa thông tin khách hàng trong b ng Khách hàng ‘KH039’ảEXEC USP_DeleteKH @MaKH ='KH039'
Trang 241.5 Giải thích : Giải thích tạo Stored Procedure để in Bậc lương Theocác bộ phận của nhân viên (NV Kỹ Thuật, Nv Bếp , NV Lao Công….)của 1 nhân viên quy đổi từ mức lương của 1 nhân viên (Chỉ cần in rađiểm chữ)
VD: Mức tiền lương của 1 nhân viên là3460000 thì tương ứng vớibộ phận Bảo vệ , mỗi bậc lương sẽ tương ứng với bộ phận đó
CREATE PROCEDURE LNV@MaNV NVarchar(10), @Bacluong Nvarchar(50)OUTPUT)ASBEGIN
exec LNV'9', @Bacluong = @He4 output;
Select @He4 AS'B c lậương';
1.6 Giải thích : Stored procedure này sẽ trả về danh sách các phòngthuộc loại phòng tương ứng, có sẵn vào ngày nhận và ngày trả phòng,