CHƯƠNG 1: PHÁT BIỂU BÀI TOÁN 1. Mô tả bài toán Quản lý khách sạn yêu cầu phải xây dựng một cơ sở dữ liệu, khách sạn hoạt động như sau: Khi đặt phòng, khách hàng sẽ được yêu cầu nhập thông tin cá nhân và thông tin liên hệ của mình lại, khách hàng cũng sẽ phải nhập ngày nhận phòng, ngày trả phòng khách sạn và yêu cầu của mình về loại phòng mong muốn, ngày đặt phòng và những yêu cầu trên sẽ được nhân viên xử lý, lưu lại và sử dụng để chuẩn bị phòng cho khách hàng. Nếu trong khoảng thời gian sử dụng, phòng gặp vấn đề, khách sạn sẽ thực hiện thay đổi phòng cho khách hàng như sau: thay đổi thông tin về ngày trả phòng trong đơn đặt phòng cũ của khách hàng, sau đó, tạo đơn đặt hàng mới với ngày nhận phòng tiếp tục từ ngày trả phòng trước. Khách hàng cũng sẽ nhận được hóa đơn thanh toán tương ứng với các phòng đã sử dụng.
Khách sạn có các dịch vụ thu tiền và đồ ăn trong tủ lạnh tại mỗi phòng, sẽ có nhân viên kiểm tra các phòng mỗi ngày và lưu lại các sản phẩm, số lượng các sản phẩm đã được tiêu thụ cũng như các dịch vụ và khách hàng sử dụng để về sau thanh toán. Sau khi trả phòng, khách hàng sẽ nhận được hóa đơn, từ hóa đơn, khách hàng có thể kiểm tra, xác nhận các thông tin về bản thân, phòng, các dịch vụ đã sử dụng là chính xác để tiến hành thanh toán. Ngoài ra, khách sạn cũng cần phải quản lý thông tin của nhân viên và các dịch vụ, đồ ăn hiện có. Yêu cầu của bài toán - Cơ sở dữ liệu được thiết kế cần phải đáp ứng được các yêu cầu sau: - Quản lý thông tin phòng: Lưu trữ thông tin về mã phòng, loại phòng, đơn giá, trạng thái và các mô tả đi kèm của phòng.
1 - Quản lý thông tin khách hàng: Lưu trữ thông tin của khách hàng như thông tin cá nhân và thông tin liên hệ cần thiết. - Quản lý thông tin đặt phòng: Lưu trữ thông tin về các đơn đặt phòng bao gồm ngày đặt, ngày nhận, ngày trả phòng. - Quản lý các dịch vụ của khách sạn: Lưu trữ thông tin về các dịch vụ của khách sạn như giặt đồ, spa, … và cả các sản phẩm dùng thêm như đồ ăn, đồ uống cũng được lưu trữ ở đây. - Quản lý nhân viên: Lưu trữ thông tin cá nhân, thông tin liên hệ của nhân viên và chức vụ của họ trong doanh nghiệp.
- Đảm bảo bảo mật: Đảm bảo an toàn và bảo vệ thông tin cá nhân của khách hàng cũng như của doanh nghiệp trước các mối đe dọa. - Tạo báo cáo và thống kê: Cơ sở dữ liệu cần phải có khả năng truy vấn các dữ liệu hữu ích để cho việc tạo báo cáo và thống kê, giúp doanh nghiệp thực hiện các nghiệp vụ liên quan. - Quản lý phân quyền: Quản lý quyền truy cập sao cho quản lý và các nhân viên khách sạn với các chức vụ khác nhau có thể và chỉ có thể truy cập và thao tác với những phần cần thiết cho công việc của họ, tránh gây mất mát. - Sao lưu và phục hồi: Có kế hoạch sao lưu và có thể phục hồi cơ sở dữ liệu để đảm bảo an toàn dữ liệu và khả năng khôi phục sau sự cố.
Mục tiêu của bài toán Tạo ra một cơ sở dữ liệu hiệu quả để quản lý và điều phối thông tin liên quan đến việc đặt, sử dụng phòng trong một khách sạn và quản lý khách sạn nói chung. Hệ thống này cung cấp khả năng quản lý thông tin về phòng, khách hàng, đặt phòng, các phòng và các dịch vụ đi kèm, quản lý thông tin nhân viên, nhằm đảm bảo tính linh hoạt, chính xác và hiệu quả trong quá trình quản lý khách sạn. 2 CHƯƠNG 2: THIẾT KẾ CƠ SỞ DỮ LIỆU 2. Thiết kế mức khái niệm 2.
Các thực thể và thuộc tính - Phòng: Mã phòng, Số phòng, Loại phòng, Đơn giá, Trạng thái, Mô tả. - Khách hàng: Mã khách hàng, Số CCCD, Tên khách hàng, Ngày sinh, Giới tính, Email, Số điện thoại, Địa chỉ. - Nhân viên: Mã nhân viên, Số CCCD, Tên nhân viên, Ngày sinh, Giới tính, Email, Số điện thoại, Địa chỉ, Chức vụ, Lương. - Dịch vụ: Mã dịch vụ, Tên dịch vụ, Đơn giá, Số lượng tồn kho.
- Hóa đơn: Mã hóa đơn, Ngày lập hóa đơn, Tổng tiền. - Đặt phòng: Mã đặt phòng, Ngày đặt phòng, Ngày trả phòng. Các mối quan hệ - Phòng <Trong> Đặt phòng (1 : n) - Khách hàng <Có> Đặt phòng (1 : n) - Nhân viên <Quản lý> Hóa đơn (1 : n) - Hóa đơn <Có> Đặt phòng (1 : 1) - Hóa đơn <Có> Dịch vụ (n : n) (Số lượng, Đơn giá, Thành tiền) 3 2. Mô hình thực thể liên kết (ERD) Hình 2.1: Mô hình thực thể liên kết 4 2.
Thiết kế mức Logic 2. Các quan hệ - Phòng (Mã phòng, loại phòng, đơn giá, trạng thái, mô tả) - Khách hàng (Mã khách hàng, tên khách, Ngày Sinh, CMT, email, giới tinh, SĐT, địa chỉ) - Đặt phòng (Mã đặt phòng, Ngày nhận phòng, Ngày trả phòng, Mã khách hàng, Mã phòng) - Hóa đơn (Mã hóa đơn, tổng tiền, Ngày thanh toán, Mã đặt phòng) - Chi tiết hóa đơn(Mã hóa đơn, Mã dịch vụ, số lượng, đơn giá, thành tiền) - Nhân viên(Mã nhân viên, tên, chức vụ, lương, giới tính, địa chỉ, số điện thoại, email) - Dịch vụ (Mã dịch vụ, Tên dịch vụ, Mô tả, Đơn giá dịch vụ) 2. Mô hình dữ liệu quan hệ Hình 2.2: Mô hình dữ liệu quan hệ 5 2. Thiết kế mức vật lý Bảng “Phong” STT Tên thuộc tính Kiểu dữ liệu Kích thước Ràng buộc 1 MaPhong Char 3 Primary Key 2 LoaiPhong Nvarchar2 20 Not Null 3 DonGia Int Not Null 4 TrangThai Nvarchar2 30 Not Null 5 MoTa Nvarchar2 30 Bảng “KhachHang” STT Tên thuộc tính Kiểu dữ liệu Kích thước Ràng buộc 1 MaKH Char 10 Primary Key 2 CCCD Char 12 Not Null 3 TenKH Nvarchar2 30 Not Null 4 NgaySinh Date Not Null 5 GioiTinh Int 1 Not Null 6 DiaChi Nvarchar2 50 Not Null 6 7 SDT Char 10 Not Null 8 Email Nvarchar2 50 Bảng “NhanVien” STT Tên thuộc tính Kiểu dữ liệu Kích thước Ràng buộc 1 MaNV Char 10 Primary Key 2 CCCD Char 12 Not Null 3 TenNV Nvarchar2 30 Not Null 4 NgaySinh Date Not Null 5 GioiTinh Int 1 Not Null 6 DiaChi Nvarchar2 50 Not Null 7 SDT Char 10 Not Null 8 Email Nvarchar2 50 9 ChucVu Nvarchar2 20 Not Null 10 Luong Number Not Null 7 Bảng “DichVu” STT Tên thuộc tính Kiểu dữ liệu Kích thước Ràng buộc 1 MaDV Char 5 Primary Key 2 TenDV Char 20 Not Null 3 DonGia Number Not Null 4 SoLuongTonKho Int Bảng “HoaDon” STT Tên thuộc tính Kiểu dữ liệu Kích thước Ràng buộc 1 MaHoaDon Char 10 Primary Key 2 MaDatPhong Char 10 Foreign Key 3 MaNV Char 10 Foreign Key 4 NgayLapHD Date Not Null 5 TongTien Number Not Null 8 Bảng “ChiTietHoaDon” STT Tên thuộc tính Kiểu dữ liệu Kích thước Ràng buộc 1 MaDV Char 5 Foreign Key 2 MaHoaDon Char 10 Foreign Key 3 SoLuong Int Not Null Bảng “DatPhong” STT Tên thuộc tính Kiểu dữ liệu Kích thước Ràng buộc 1 MaDatPhong Char 10 Primary Key 2 NgayDatPhong Date Not Null 3 NgayTraPhong Date Not Null 4 MaKH Char 10 Foreign Key 5 MaPhong Char 10 Foreign Key 9 CHƯƠNG 3: CÁC YÊU CẦU TRUY VẤN VÀ NGHIỆP VỤ 3.
Các yêu cầu truy vấn nghiệp vụ 3. Tạo TableSpace Việc tạo tablespace mang ý nghĩa quản lý dữ liệu theo tính chất của chúng. Tùy thuộc vào loại dữ liệu, thông tin nào sẽ được phân vào các tablespace khác nhau. Đối với các thông tin, dữ liệu không có sự thay đổi thường xuyên như nhân viên, phòng, dịch vụ.
Các bảng còn lại như đặt phòng, khách hàng, chi tiết hoá đơn, hoá đơn được phân vào tablespace còn lại. Tạo 2 tablespace, QuanLyKhachSan2 có ít sự thay đổi vì vậy dung lượng sẽ bé hơn so với QuanLyKhachSan1. - Truy xuất đường dẫn - Tạo TableSpace 10 - Tạo TableSpace 3. Tạo các bảng - Tạo bảng Phòng - Tạo bảng Đặt Phòng 11 - Tạo bảng Khách Hàng - Tạo bảng Nhân Viên 12 - Tạo bảng Dịch Vụ - Tạo bảng Hóa Đơn - Tạo bảng Chi Tiết Hóa Đơn - 13 3.
Chèn dữ liệu vào bảng - Chèn dữ liệu Khách Hàng - Chèn dữ liệu bảng Dịch Vụ - Chèn dữ liệu bảng Phòng 14 - Chèn dữ liệu bảng Nhân Viên - Chèn dữ liệu bảng Đặt Phòng 15 - Chèn dữ liệu bảng Hóa Đơn - Chèn dữ liệu bảng Chi Tiết Hóa Đơn 16 3. Truy vấn bằng SQL 1. Thống kê loại phòng nào có số lượng đặt cao nhất 2. Thống kê số lượng đặt phòng theo từng tháng 17 3.
Tổng chi phí dịch vụ cho 1 đơn đặt phòng 4. Doanh thu dịch vụ của từng hóa đơn 18 5. Danh sách các loại phòng có tỷ lệ sử dụng cao nhất 6. Tính số lượng dịch vụ được sử dụng cho mỗi hóa đơn 19 7.
Thống kê số lượng dịch vụ đã được sử dụng 8. Hiển thị khách hàng đã đặt phòng 20 9. Lấy thông tin hoá đơn của khách hàng 10. Tổng tiền phòng của các hóa đơn 21 3.
Nghiệp vụ thực hiện bằng PL/SQL 1. Thủ tục thêm khách hàng 22 2. Tính doanh thu của dịch vụ theo mã dịch vụ 23 3. Trigger cập nhật trạng thái phòng 4.
Thủ tục đổi phòng 24 5. Thủ tục cập nhật giá phòng 25 6. Package gồm 1 thủ tục nhập đặt phòng mới và hàm kiểm tra phòng 26 7. Hàm kiểm tra số lượng phòng trống trong 1 khoảng thời gian 8.
Tạo thủ tục để xác nhận thanh toán và cập nhật trạng thái phòng 28 9. Tính Doanh thu theo loại phòng 10. Hàm trả về danh sách các phòng theo từng loại 29 3. Phân quyền sử dụng và quản lý người dùng Việc truy cập vào cơ sở dữ liệu của cửa hàng dựa trên mỗi nhiệm vụ khác nhau, đối với người quản trị cơ dữ liệu cần tạo một user với toàn quyền hệ thống tuy nhiên hạn chế các quyền về sửa đổi database như sau: Hình 3.1: Tạo user NhanVienIT và cấp các quyền 30 1.
Người quản lý cũng sẽ có toàn quyền dba và truy cập đến cơ sở dữ liệu của hệ thống Hình 3.2: Tạo user QuanLy và cấp các quyền 2. Đối với công việc lễ tân sẽ tiếp đón khách hàng, nhận thông tin đặt phòng, quản lý các hóa đơn và cũng như update thông tin dịch vụ của khách sạn Hình 3.3: Tạo user LeTan và cấp các quyền 31 3. Sao lưu phục hồi 3. Kế hoạch sao lưu phục hồi Việc sao lưu dữ liệu là một khía cạnh cực kỳ quan trọng và không thể phủ nhận trong quản lý thông tin của mọi tổ chức và cá nhân.