Phân tích thiết kế cơ sở dữ liệu SQL mô hình Quản lý khách sạn phân tích và thiết kế cơ sở dữ liệu SQL để tiến hành xây dựng phần mềm, chương trình quản lý cho mô hình quản lý khách sạn hệ quản trị cơ sở dữ liệu SQL Server
Trang 1CHỦ ĐỀ:
PHÂN TÍCH THIẾT KẾ CƠ SỞ DỮ LIỆU QUẢN LÝ KHÁCH SẠN
Trang 2MỤ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
Trang 3Và để phần nào hiểu thêm về vấn đề này nhóm chúng emlựa chọn đề tài “Quản lý khách sạn” để đi nghiên cứu các nộidung, 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ênbà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áotốt hơn nữa
Chúng em xin chân thành cảm ơn!
Trang 4Loạ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ó:
Trang 7 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
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ý
Người quản lý là một Nhân viên
Phòng Dịch vụ là một phòng
Người quản lý là một Nhân viên
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 baogồm:
Trang 8tí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)
- CHITIETPT: (MaChiTietPT, MaKhachHang, MaPhong,SoLuongKHach, NgayThue, NgayTra, MaPhieuThue)
- DICHVU: (MaDichVu, TenDichVu, DonVi, GiaDichVu)
- LOAIPHONG: (MaLoaiPhong, TenLoai, LoaiPhong,GiaPhong)
Trang 9– 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
2.5 Mối liên kết
Cơ Sở Dữ Liệu Khách Sạn
Trang 10Ngày sinh Ngày sinh
Làm việc
Sử dụng
Số lượng DV
Mã phiếu thuê
Mã phiếu DV
Mã nv Giới tính
CMND
Phòng Là 1
Thông tin
Của Phục vụ
Cho DV
Phiếu dịch vụ Loại phòng
Dịch vụ
Trang 12Khóa ngoại: Không có
Trang 15 Bảng dịch vụ
- DICHVU: (MaDichVu, TenDichVu, DonVi, GiaDichVu)
- CHITIETPT: (MaChiTietPT, MaKhachHang, MaPhong,SoLuongKHach, NgayThue, NgayTra, MaPhieuThue)
MaKhachHang
Trang 16III 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ê
ON dbo.KHACHHANG.MaKhachHang =
dbo.PHIEUTHUE.MaKhachHang
*Kết quả:
Trang 173.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
Trang 18WHERE (GiaDichVu > 50000)
*Kết quả:
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ả:
Trang 19IV SELECT (Thống Kê )
4.1 Liệt kê danh sách khách hàng
SELECT * FROM KHACHHANG
*Kết quả:
Trang 204.2 Liệt kê danh sách các nhân viên của khách sạn
SELECT * FROM NHANVIEN
*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
Trang 21dbo.PHONG.MaLoaiPhong = dbo.LOAIPHONG.MaLoaiPhongAND dbo.LOAIPHONG.LoaiPhong = 1
*Kết quả:
Trang 224.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ả:
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ả:
Trang 234.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) ?
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)=
Trang 24AND MONTH(NGAYTRA) =
*Kết quả:
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
WHERE NgayTra>CONVERT(date, getdate(),110))
*Kết quả:
Trang 25SELECT COUNT(SoLuongDichVu) AS 'Số Lượng Dịch Vụ'
Phải Tồn tại Thì mới có dữ liệu để Update
IF EXISTS (SELECT MaLoaiPhong FROM LOAIPHONG
WHERE MaLoaiPhong=@MaLoaiPhong)
WHERE MaPhong=@MaPhong
Trang 27UPDATE PHONG SET GhiChu=@GhiChu WHERE
Trang 28IF NOT EXISTS (SELECT MaLoaiPhong FROM
Trang 29PRINT @KQ
RETURN
INSERT INTO PHONG VALUES
5.5 Tìm kiếm khách hàng sao cho tên khách hàng phải gần đúng
và giới tính là chính xác hoàn toàn
CREATE PROC TK_KH_2
AS
Trang 30SELECT * FROM KHACHHANG WHERE TenKhachHang
IF NOT EXISTS (SELECT MaLoaiPhong FROM
Trang 31CREATE PROC INSERT_LOAIPHONG
AS
IF EXISTS (SELECT MaLoaiPhong FROM LOAIPHONG
WHERE MaLoaiPhong=@MaLoaiPhong)
BEGIN
RAISERROR('Lỗi',16,1)
RETURN
END
INSERT INTO LOAIPHONG
VALUES(@MaLoaiPhong,@TenLoai,@GiaPhong)
Trang 32IF EXISTS (SELECT MaLoaiPhong FROM LOAIPHONG
WHERE MaLoaiPhong=@MaLoaiPhong)
VI TRIGGER
6.1 Kiểm soát giá trị dịch vụ khi thêm phải lớn hơn 0.
Trang 33DECLARE @GiaDichVu int
DECLARE @MaDichVu nvarchar(50)
Trang 346.2 Tạo Trigger để tất cả các trường của khách hàng phải được
khai bao 7 bien luu tru
Declare @MaKhachHang nvarchar(50)
Declare @TenKhachHang nvarchar(50)
Declare @NgaySinh datetime
Declare @DiaChi nvarchar(50)
Declare @GioiTinh nvarchar(50)
Declare @CMND nvarchar(50)
Trang 35@TenKhachHang=inserted.TenKhachHang,
@DiaChi=inserted.DiaChi,
null))
BEGIN
PRINT N'Thông Tin Khách Hàng Phải đầy đủ'
print'Thêm Khách Hàng Thất Bại'
rollback tran
END
Trang 36BEGIN
PRINT'Thêm Thành Công'
END
6.3 Thêm Trigger sao cho ngày đặt và ngày trả phải lớn hơn
ngày hiện tại
CREATE TRIGGER insert_trigger_ChiTietpt
Trang 37END
ELSE
PRINT 'Thành Công'
6.4 Ngăn không cho xóa nhiều bản ghi cùng 1 lúc
CREATE TRIGGER Delete_trigger_Dichvu
6.5 Tạo Trigger cho biến cố Delete khi cố tình xóa khách hàng
CREATE TRIGGER [dbo].[CAMXOA]
Trang 38ON [dbo].[KHACHHANG]
FOR DELETE
AS IF EXISTS (SELECT KHACHHANG.MaKhachHang
ON
Trang 39KẾT LUẬN
Sau một thời gian nỗ lực thiết kế Cơ Sở Dữ Liệu, Với đềtài “PHÂN TÍCH THIẾT KẾ CƠ SỞ DỮ LIỆU QUẢN LÝKHÁCH SẠN”đã được hoàn thành Qua quá trình thử nghiệmtrong của thành viên trong nhóm , hệ thống đã đạt được một sốkết quả nhất định sau: Thiết kế diagram cho cơ sở dữ liệu, nhậpliệu đầy đủ cho các bảng, thiết kế bảng ảo , thống kê, storeprocedure , và trigger
Tuy vậy do trình độ kiến thức còn hạn chế, nên hệ thốngcòn nhiều sai sót và chưa được hoàn chỉnh Chúng em rất mongnhận được sự chỉ bảo của cô và các bạn để hệ thống trong tươnglai sẽ được hoàn thiện hơn