Tải bản đầy đủ (.docx) (38 trang)

Phân tích thiết kế cơ sở dữ liệu SQL Quản lý khách sạn

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (427.75 KB, 38 trang )

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


×