Áp dụng cơ sở dữ liệu vàoquá trình quản lý mang lại nhiều lợi ích như tiết kiệm thời gian, độ chính xác caovà bảo mật dữ liệu, từ đó nâng cao chất lượng dịch vụ và tạo ra lợi thế cạnh tr
PHÁT BIỂU BÀI TOÁN
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.
- 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.
THIẾT KẾ CƠ SỞ DỮ LIỆU
Thiết kế mức khái niệm
2.1.1 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.
- Khách hàng Đặt phòng (1 : n)
- Nhân viên Hóa đơn (1 : n)
- Hóa đơn Đặt phòng (1 : 1)
- Hóa đơn Dịch vụ (n : n) (Số lượng, Đơn giá, Thành tiền)
2.1.3 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
Thiết kế mức Logic
- 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.2.2 Mô hình dữ liệu quan hệ
Hình 2.2: Mô hình dữ liệu quan hệ
Thiết kế mức vật lý
STT Tên thuộc tính Kiểu dữ liệu Kích thước Ràng buộc
STT Tên thuộc tính Kiểu dữ liệu Kích thước Ràng buộc
STT Tên thuộc tính Kiểu dữ liệu Kích thước Ràng buộc
STT Tên thuộc tính Kiểu dữ liệu Kích thước Ràng buộc
STT Tên thuộc tính Kiểu dữ liệu Kích thước Ràng buộc
STT Tên thuộc tính Kiểu dữ liệu Kích thước Ràng buộc
STT Tên thuộc tính Kiểu dữ liệu Kích thước Ràng buộc
CÁC YÊU CẦU TRUY VẤN VÀ NGHIỆP VỤ
Các yêu cầu truy vấn nghiệp vụ
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
- Tạo bảng Chi Tiết Hóa Đơn
3.1.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
- Chèn dữ liệu bảng Nhân Viên
- Chèn dữ liệu bảng Đặt Phòng
- Chèn dữ liệu bảng Hóa Đơn
- Chèn dữ liệu bảng Chi Tiết Hóa Đơn
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
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
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
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
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
3.1.5 Nghiệp vụ thực hiện bằng PL/SQL
1 Thủ tục thêm khách hàng
2 Tính doanh thu của dịch vụ theo mã dịch vụ
3 Trigger cập nhật trạng thái phòng
5 Thủ tục cập nhật giá phòng
6 Package gồm 1 thủ tục nhập đặt phòng mới và hàm kiểm tra phòng
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
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
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
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
Sao lưu phục hồi
3.3.1 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 Đây không chỉ là một biện pháp dự phòng đơn thuần, mà còn là một chiến lược cần thiết để đảm bảo tính khả dụng, an toàn và toàn vẹn của dữ liệu.
Toàn bộ cơ sở dữ liệu sẽ được lên lịch sao lưu hàng tuần Sao lưu vào 9 giờ các tối Chủ Nhật hàng tuần.
Cơ sở dữ liệu sẽ được phục hồi nếu như có sự cố xảy ra.
3.3.2 Thực hiện sao lưu bằng Flashback Để kích hoạt tính năng Flashback Table cho một bảng trong Oracle Database, trước hết phải chắc chắn Archive mode đang được bật.
1 Đăng nhập vào từ SQLPlus.
2 Đảm bảo rằng cơ sở dữ liệu đang chạy ở chế độ ARCHIVELOG. Ở đây database log mode có Archive mode chưa được bật nên ta sẽ tiến hành bật nó.
3 Tiến hành tắt database và bật ở trạng thái mounted.
4 Bật chế độ archive log mode.
5 Kiểm tra xem đã được bật thành công chưa.
Kiểm tra lại trạng thái log mode ở đây archivelog đã được bật thành công
Tiến hành bật và thử Flashback.
1 Kiểm tra xem phần recovery sẽ lưu vào thư mục nào, có đủ dung lượng không.
Ta cũng có thể thay đổi đường dẫn và gia hạn lại dung lượng lưu trữ của chúng như sau:
ALTER SYSTEM SET db_recovery_file_dest='new_recovery_area_path' SCOPE=SPFILE;
ALTER SYSTEM SET db_recovery_file_dest_size=new_size SCOPE=SPFILE;
2 Bật và kiểm tra xem flashback đã được bật chưa.
3 Kiểm tra và giới hạn thời gian có thể flashback được.
Set số phút có thể flashback ở đây là 2880 tương đương với có thể flashback trong vòng 2 ngày.
Kiểm tra xem đã được áp dụng chưa.
Hoặc ta cũng có thể set 1 restore point, restore point này sẽ không bị ảnh hưởng bởi retention_target và dung lượng lưu trữ vậy nên sẽ gặp vấn đề về dung lượng nếu bị lạm dụng nên chỉ dùng trước những vấn đề cần chỉnh sửa quan trọng. Đặt tên cho restore point là before_upgrade.
Kiểm tra xem mốc thời gian của restore point, ở đây chính là thời điểm chúng ta set up nó.
4 Đặt vấn đề: Xóa nhầm bảng KhachHang.
Bảng KhachHang đã bị xóa.
5 Ta tiến hành flashback tại đây sẽ flashback lại restore point.
Tiến hành tắt database và bật ở trạng thái mounted.
Flashback lại thời điểm restore point.
Tiến hành kiểm tra xem đã thành công chưa.
Khi thấy đã đúng với ý định ta tiến hành tắt, mở lại mount và openresetlogs để
3.3.3 Thực hiện sao lưu bằng RMAN
- “rman target/” là câu lệnh kết nối đến cơ sở dữ liệu đích trong Oracle Recovery Manager (RMAN).
- “backup incremental level 1 database plus archivelog;” có tác dụng tạo ra một bản sao của cơ sở dữ liệu Oracle, bao gồm cả các dữ liệu và các nhật ký redo, nhưng chỉ sao lưu các thay đổi dữ liệu kể từ lần sao lưu đầy đủ gần nhất.
- “shutdown immediate;”: Đóng cơ sở dữ liệu ngay lập tức, ngăn chặn các hoạt động truy cập và sửa đổi dữ liệu.
- “startup mount;”: Khởi động cơ sở dữ liệu ở chế độ "mount", trong đó chỉ các file cấu trúc (control files và spfiles) được mở, cho phép thao tác với các file dữ liệu mà không cho phép truy cập dữ liệu.
- “restore database;”: Khôi phục các file dữ liệu và file cấu trúc từ bản sao lưu, thay thế các file hiện có.
- “recover database;”: Áp dụng các thay đổi được ghi lại trong các archived logs (nhật ký redo) vào các file dữ liệu để phục hồi các giao dịch chưa hoàn thành.
- “alter database open;”: Mở cơ sở dữ liệu ở chế độ "open", cho phép người dùng truy cập và sử dụng dữ liệu bình thường.