CHỦ ĐỀ:
PHÂN TÍCH THIẾT KẾ CƠ SỞ DỮ
LIỆU QUẢN LÝ KHÁCH SẠN
1
MỤC LỤC
Lời mở đầu………………………………………………..3
Nội dung
I.Thiết lập Cơ Sở Dữ Liệu……………………………….5
II.Xây dựng sơ đồ thực thể liên kết……………………...8
III. VIEW (Bảng Ảo)……………………………………..17
IV. SELECT (Thống Kê )………………………………..20
V . STORE PROCEDUCE………………………………26
VI. TRIGGER ……………………………………………33
Kết luận……………………………………………………40
2
LỜI MỞ ĐẦU
Ngày nay, cơ sở dữ liệu đã có nhiều ứng dụng trong mọi
hoạt động của xã hội, đặc biệt như trong việc quản lý các dữ liệu
về bán hàng, trường học hay dữ liệu quản lý khách sạn… Muốn
thiết kế và sử dụng cơ sở dữ liệu này chúng ta cần phải nắm
được các kỹ thuật cơ bản của cơ sở dữ liệu như thế nào là mô
hình liên kết thực thể ER, lược đồ quan hệ, các dạng chuẩn, các
câu lệnh truy vấn…
Và để phần nào hiểu thêm về vấn đề này nhóm chúng em
lựa chọn đề tài “Quản lý khách sạn” để đi nghiên cứu các nội
dung, tìm hiểu kỹ hơn về những vấn đề trong cơ sở dữ liệu.
Do thời gian hạn hẹp, cũng như kiến thức còn yếu kém nên
bài báo cáo của chúng em còn nhiều thiếu xót, rất mong cô bỏ
qua và góp ý để nhóm chúng em có thể hoàn thiện bài báo cáo
tốt hơn nữa.
Chúng em xin chân thành cảm ơn!
3
NỘI DUNG
I.Thiết lập Cơ Sở Dữ Liệu.
1.1 Một Khách sạn có nhiều Phòng: Phòng thì có:
Mã phòng
Mã loại phòng
Tình trạng
Số điện thoại hỗ trợ
Ghi chú
Loại Phòng :+ Phòng cao cấp có giá 500$/ngày
+ Phòng trung cấp có giá 150$/ngày
+ Phòng bình dân có giá 50$/ngày
1.2 Một Khách sạn có nhiều Nhân viên: Nhân viên có:
Mã nhân viên
Tên nhân viên
Ngày sinh
Giới tinh
Địa chỉ
Email
Số điện thoại
Chức vụ
1.3 Một Khách sạn có nhiều Dịch vụ: Dich Vụ có:
4
Mã dịch vụ
Tên dịch vụ
Đơn vị
Giá dịch vụ
1.4 Thông tin về Khách hàng của Khách sạn bao gồm:
Mã khách hàng
Tên khách hàng
Ngày sinh
Địa chỉ
Giới tính
Chứng minh nhân dân
Số điện thoại
1.5 Thông tin Chi tiết phiếu thuê của Khách hàng tại khách sạn
bao gồm:
Mã chi tiết phòng thuê
Mã khách hàng
Mã phòng
Số lượng khách
Ngày thuê
Ngày trả
Mã phiếu thuê
1.6 Thông tin về Phiếu thuê phòng của Khách hàng bao gồm:
Mã phiếu thuê
5
Mã khách hàng
Ngày lập
Mã nhân viên
1.7 Thông tin về Loại phòng của Khách sạn gồm :
Mã loại phòng
Tên loại
Giá phòng
1.8 Thông tin về Phiếu dịch vụ của Khách sạn gồm :
Mã phiếu dịch vụ
Mã dịch vụ
Mã phiếu thuê
Số lượng dịch vụ
Ngày sử dụng
*. Một số ràng buộc khác
Người quản lý là một Nhân viên
Mỗi Dịch vụ có một người quản lý
Phòng Dịch vụ là một phòng
II.Xây dựng sơ đồ thưc thể liên kết
Từ các khảo sát trên ta xây dựng sơ đồ thực thể liên kết bao
gồm:
6
2.1 Các thực thể:
Nhan Vien
Dich Vu
Khach Hang
Phong
Phiếu thuê
Chi tiết phiếu thuê
Loại phòng
Phiếu dịch vụ
2.2 Các tập thực thể bao gồm các thuộc tính: (Các thuộc
tính khóa được gạch dưới)
-KHACHHANG: (MaKhachHang, TenKhachHang,
NgaySinh, DiaChi, GioiTinh, CMND, SĐT)
-PHIEUTHUE:(MaPhieuthue,SoLuongPhong,
MaKhachHang, NgayLap, MaNhanVien)
- NHANVIEN: (MaNhanVien, TenNhanVien, NgaySinh,
GioiTinh, Diachi, Email, SDT, ChucVu)
-
PHONG:
(MaPhong,
MaLoaiPhong,
TinhTrang,
SDTHoTro, GhiChu)
7
- CHITIETPT: (MaChiTietPT, MaKhachHang, MaPhong,
SoLuongKHach, NgayThue, NgayTra, MaPhieuThue)
- DICHVU: (MaDichVu, TenDichVu, DonVi, GiaDichVu)
- LOAIPHONG: (MaLoaiPhong, TenLoai, LoaiPhong,
GiaPhong)
-
PHIEUDICHVU:
(MaPhieuDichVu,
MaDichVu,
MaPhieuThue, SoLuongDichVu, NgaySuDung)
2.3 Thuộc tính kết nối:
– Chi tiết phòng thuê(ngày thuê, ngày trả, mã phiếu thuê)
2.4 Các mối liên kết:
– Nguoi QL là 1 Nhan Vien
– Nguoi QL quản lý một Dich Vu
– Nhan Vien làm việc cho Dich Vu
– Nhan Vien phục vụ Phong
– Phieu thue cho Dich Vu
– Phieu thue của Khach Hang
– Phong Dich vu là 1 Phong
– Khach Hang sử dụng Dich Vu
Khách hàng thuê Phòng tại Phòng Dich vu
2.5 Mối liên kết
8
Cơ Sở Dữ Liệu Khách Sạn
Tên KH
Của
SĐT hàng
Khách
Ngày sinh
Tên NV
SL phòng
Mã PT
Địa chỉ
Ngày sinh
Mã KH
Giới tính
Mã KH
Ngày lập
Mã nv
Giới tính
email
NV
Nhân viên
Mã NV
Phiếu thuê
Sdt
Chức vụ
Địa chỉ
CMND
Làm việc
Thông tin
Cho DV
Sử dụng
Mã Kh
MÃ CTPT
Mã DV
Tên DV
Dịch vụ
Chi tiết phòng thuê
MÃ Phòng
Đơn vị
Giá DV
SL Khách
MÃ PT
Phục vụ
Ngày Trả
Ngày thuê
Của
Ngày sinh
Mã LP
Phòng
Tình
trạng
SĐT hỗ trợ
Mã Phòng
Tên loại
Mã LP
Ghi chú
Mã DV
Phiếu dịch vụ
Loại phòng
Là 1
Mã phiếu DV
Mã phiếu thuê
Giá phòng
Số lượng DV
9
Ngày SD
2.6 Database Diagrams
2.7 Dữ liệu các bảng
Bảng phòng
PHONG: (MaPhong, MaLoaiPhong, TinhTrang, SDTHoTro,
GhiChu)
Khóa chính: MaPhong
10
Khóa ngoại: Không có
Bảng phiếu thuê
-PHIEUTHUE:(MaPhieuthue, SoLuongPhong,
MaKhachHang, NgayLap, MaKhachHang)
Khóa chính: MaPhieuthue
Khóa ngoại: MaKhachHang, MaKhachHang
Bảng phiếu dịch vụ
11
-
PHIEUDICHVU:
(MaPhieuDichVu,
MaDichVu,
MaPhieuThue, SoLuongDichVu, NgaySuDung)
Khóa chính: MaPhieuDichVu
Khóa ngoại: MaDichVu, MaPhieuThue
Bảng nhân viên
- NHANVIEN: (MaNhanVien, TenNhanVien, NgaySinh,
GioiTinh, Diachi, Email, SDT, ChucVu)
Khóa chính: MaNhanVien
Khóa ngoại: Không có
Bảng loại phòng
- LOAIPHONG: (MaLoaiPhong, TenLoai, LoaiPhong,
GiaPhong)
Khóa chính: MaLoaiPhong
Khóa ngoại: không có
12
Bảng khách hàng
-KHACHHANG: (MaKhachHang, TenKhachHang,
NgaySinh, DiaChi, GioiTinh, CMND, SĐT)
Khóa chính: MaKhachHang
Khóa ngoại: không có
Bảng dịch vụ
- DICHVU: (MaDichVu, TenDichVu, DonVi, GiaDichVu)
Khóa chính: MaDichVu
Khóa ngoại: Không có
13
Bảng chi tiết phiếu thuê
- CHITIETPT: (MaChiTietPT, MaKhachHang, MaPhong,
SoLuongKHach, NgayThue, NgayTra, MaPhieuThue)
Khóa chính: MaChiTietPT
Khóa ngoại: MaKhachHang , MaPhieuThue,
MaKhachHang
III. VIEW (Bảng Ảo)
3.1 Cho biết mã khách hàng, ngày lập và mã nhân viên lập phiếu
thuê của tất cả các phiếu thuê.
CREATE VIEW KH_PT
AS
14
SELECT dbo.PHIEUTHUE.MaPhieuThue,
dbo.KHACHHANG.MaKhachHang,
dbo.PHIEUTHUE.NgayLap, dbo.PHIEUTHUE.MaNhanVien
FROM dbo.KHACHHANG INNER JOIN dbo.PHIEUTHUE
ON dbo.KHACHHANG.MaKhachHang =
dbo.PHIEUTHUE.MaKhachHang
*Kết quả:
3.2 Cho biết mã nhân viên, tên nhân viên và địa chỉ của 5 nhân
viên đầu tiên vào khách sạn
CREATE VIEW TT_NV
AS
SELECT TOP (5) MaNhanVien, TenNhanVien, DiaChi
FROM dbo.NHANVIEN
15
*Kết quả:
3.3 Cho biết mã dịch vụ, tên dịch vụ và giá dịch vụ cụ thể của tất
cả các dịch vụ có mức giá trên 50000
CREATE VIEW TT_DV
AS
SELECT MaDichVu, TenDichVu, GiaDichVu
FROM dbo.DICHVU
WHERE (GiaDichVu > 50000)
*Kết quả:
16
3.4 Liệt kê các nhân viên nữ có trong khách sạn
CREATE VIEW NV_NU
SELECT MaNhanVien, TenNhanVien, NgaySinh, GioiTinh,
DiaChi, Email, SDT, ChucVu
FROM dbo.NHANVIEN
WHERE (GioiTinh = N'Nữ')
*Kết quả:
3.5 Thống kê các phòng có trong khách sạn
CREATE VIEW XEM_PHONG AS
SELECT dbo.PHONG.*
FROM dbo.PHONG
*Kết quả:
17
IV. SELECT (Thống Kê )
4.1 Liệt kê danh sách khách hàng
SELECT * FROM KHACHHANG
*Kết quả:
4.2 Liệt kê danh sách các nhân viên của khách sạn
SELECT * FROM NHANVIEN
18
*Kết quả:
4.3 Cho biết danh sách khách sạn từ trước tới giờ đã có những
ai thuê phòng
SELECT KHACHHANG.MaKhachHang, tenkhachhang, cmnd,
maphieuthue from KHACHHANG inner join PHIEUTHUE
ON KHACHHANG.makhachhang =
PHIEUTHUE.makhachhang
*Kết quả:
4.4 Cho biết mã phòng, tên loại phòng và giá phòng của tất cả
các phòng đơn?
19
SELECT dbo.PHONG.MaPhong, dbo.LOAIPHONG.TenLoai,
dbo.LOAIPHONG.GiaPhong, dbo.LOAIPHONG.LoaiPhong
FROM dbo.PHONG INNER JOIN dbo.LOAIPHONG ON
dbo.PHONG.MaLoaiPhong = dbo.LOAIPHONG.MaLoaiPhong
AND dbo.LOAIPHONG.LoaiPhong = 1
*Kết quả:
4.5 Cho biết tên dịch vụ,
mã dịch vụ và giá dịch vụ?
select tendichvu,
MaDichVu, DICHVU.GiaDichVu from dichvu
*Kết quả:
20
4.6 Cho biết những khách hàng nào đã từng thuê phòng 101?
SELECT MaKhacHang, MaPhong, NgayThue
FROM dbo.CHITIETPT
WHERE (MaPhong = 101)
*Kết quả:
4.7 Cho biết phòng 106 ở trong tình trạng nào (số liệu được cập
nhật theo thời gian thực) ?
SELECT dbo.PHONG.TinhTrang
21
FROM dbo.PHONG INNER JOIN dbo.CHITIETPT ON
dbo.PHONG.MaPhong = dbo.CHITIETPT.MaPhong
WHERE (dbo.PHONG.MaPhong = 106)
*Kết quả:
- Chú thích:+ 0:phòng trống
+ 1:đã đặt
+ 2:đang sử dụng
4.8 Cho biết số lượng phòng trả trong ngày hôm nay?
SELECT COUNT(CHITIETPT.MaKhacHang) AS 'Số Người
trả Hôm nay' FROM CHITIETPT WHERE DAY(NGAYTRA)=
DAY(CURRENT_TIMESTAMP)
AND MONTH(NGAYTRA) =
MONTH(CURRENT_TIMESTAMP) AND
YEAR(NGAYTRA) =YEAR(CURRENT_TIMESTAMP)
*Kết quả:
22
4.9 Liệt kê phòng trống ở thời điểm hiện tại.
SELECT * FROM PHONG
WHERE TinhTrang=0 AND MaPhong NOT IN (SELECT
MaPhong FROM CHITIETPT
WHERE NgayTra>CONVERT(date, getdate(),110))
*Kết quả:
4.10 Cho biết tổng số dịch vụ đã được sử dụng?
SELECT COUNT(SoLuongDichVu) AS 'Số Lượng Dịch Vụ'
FROM PHIEUDICHVU
*Kết quả:
23
V . STORE PROCEDUCE
5.1 Cập nhật Phòng
CREATE PROC UPDATE_PHONG
@MaPhong nvarchar(50),
@MaLoaiPhong nvarchar(50),
@TinhTrang nvarchar(50),
@SDTHoTro nvarchar(50),
@GhiChu nvarchar(50)
AS
DECLARE @KQ nvarchar(50)
--Phải Tồn tại Thì mới có dữ liệu để Update
IF EXISTS (SELECT MaLoaiPhong FROM LOAIPHONG
WHERE MaLoaiPhong=@MaLoaiPhong)
UPDATE PHONG SET MaLoaiPhong=@MaLoaiPhong
WHERE MaPhong=@MaPhong
ELSE
BEGIN
SET @KQ='Không Tồn Tại Loại Phòng Này'
PRINT @KQ
RETURN
24
END
IF NOT EXISTS (SELECT MaPhong FROM PHONG WHERE
MaPhong=@MaPhong)
BEGIN
SET @KQ='Mã Phòng SAI!!'
PRINT @KQ
RETURN
END
IF @TinhTrang IS NOT NULL
UPDATE PHONG SET TinhTrang=@TinhTrang WHERE
MaPhong=@MaPhong
IF @SDTHoTro IS NOT NULL
UPDATE PHONG SET SDTHoTro=@SDTHoTro WHERE
MaPhong=@MaPhong
IF @GhiChu IS NOT NULL
UPDATE PHONG SET GhiChu=@GhiChu WHERE
MaPhong=@MaPhong
5.2 Xóa Phòng
CREATE PROC DELETE_PHONG
25