Thiết kế cơ sở dữ liệu của hệ thống đặt phòng trong khách sạn


7

Giới thiệu và mô tả hệ thống


Tôi hiện đang thiết kế cơ sở dữ liệu cho hệ thống đặt phòng trong khách sạn.

Khách hàng điền vào Mẫu / Yêu cầu với thông tin sau về Phòng :

  • lượng người trong phòng
  • đánh giá của một căn phòng
  • kiểm tra và kiểm tra ngày

Quản trị viên có bảng điều khiển với danh sách Biểu mẫu từ Khách hàng , anh ta sẽ chỉ định từng Phòng cho mỗi Khách hàng theo cách thủ công. Sau này tài được một Bill .


Thiết kế cơ sở dữ liệu


Đây thực sự là một bản phác thảo DB của tôi. Tôi sẽ có các bảng sau :

  • Người dùng
  • Các hình thức
  • Phòng
  • Hóa đơn

Tôi không xem xét Mật khẩu bảng có chứa Băm mật khẩu .

Thiết kế bàn


Câu hỏi


Tôi muốn nghe từ bạn những gì còn thiếu trong Thiết kế DB của tôi, bạn nghĩ gì về logic tổng thể và tính chính xác của mối quan hệ giữa các bảng.


3
Câu hỏi này sẽ lạc đề về Đánh giá mã vì nó không chứa mã (DDL trong ngữ cảnh này). Đây là chủ đề ở đây và các lập trình viên (nhưng xin đừng hỏi cả hai!)
Paul White 9

1
@rain vui lòng đề cập đến định nghĩa cho khách hàng và người dùng. Là khách hàng là đại lý đặt phòng?
Rathish

Câu trả lời:


15

Không biết chính xác và toàn bộ yêu cầu, chúng tôi không thể thiết kế một mô hình dữ liệu hoàn chỉnh. Hãy để chúng tôi giả định các quy tắc kinh doanh sau đây, nó dựa trên câu hỏi của bạn.

  • Mỗi khách hàng có thể yêu cầu một hoặc nhiều phòng.
  • Mỗi phòng có thể được yêu cầu bởi một khách hàng
  • Mỗi quản trị viên có thể chỉ định một hoặc nhiều phòng.
  • Mỗi phòng phải được chỉ định bởi một Quản trị viên.
  • Mỗi phòng phải thuộc về một loại phòng.
  • Mỗi loại phòng có thể chứa một hoặc nhiều phòng.
  • Mỗi Đặt phòng phải thuộc về một Ngày.
  • Mỗi ngày có thể chứa một hoặc nhiều Đặt chỗ.
  • Mỗi loại phòng có thể chứa một hoặc nhiều Tiền thuê.
  • Mỗi thuê phải thuộc về một loại phòng.
  • Mỗi đặt phòng phải bao gồm một hoặc nhiều phòng.
  • Mỗi phòng có thể được bao gồm trong một Đặt phòng.
  • Mỗi khách hàng có thể giữ một hoặc nhiều Đặt chỗ.
  • Mỗi Đặt phòng phải thuộc về một Khách hàng.
  • Mỗi Tiền thuê có thể được bao gồm trong một hoặc nhiều Bill.
  • Mỗi hóa đơn phải bao gồm một Tiền thuê.
  • Mỗi hóa đơn thanh toán phải bao gồm một loại thanh toán.
  • Mỗi loại thanh toán có thể chứa một hoặc nhiều hóa đơn thanh toán.
  • Mỗi ngày có thể chứa một hoặc nhiều hóa đơn thanh toán.
  • Mỗi hóa đơn thanh toán phải thuộc về một Ngày.
  • Mỗi phòng có thể được xếp hạng một hoặc nhiều Xếp hạng phòng.
  • Mỗi xếp hạng phòng phải thuộc về một phòng.
  • Mỗi Xếp hạng có thể chứa một hoặc nhiều Xếp hạng phòng.
  • Mỗi xếp hạng phòng phải thuộc về một Xếp hạng.

Dựa trên các quy tắc trên, chúng tôi đã thiết kế mô hình dữ liệu sau. Hệ thống đặt phòng khách sạn

Mô hình này là một tập hợp con của hệ thống Đặt phòng khách sạn . Sau quá trình chuẩn hóa (kiểm tra tại đây ), bạn sẽ có mô hình chi tiết và đầy đủ hơn.

Trong mô hình trên, giá thuê phòng được tính dựa trên loại phòng như Phòng đơn, Phòng đôi, Phòng gia đình hoặc Phòng họp thay vì số người trong phòng.

Và tiền thuê phòng được thay đổi theo thời gian, vì vậy chúng tôi đã bao gồm từ ngày và ngày để có lịch sử của giá thuê phòng. Ngoài ra, khách hàng có thể sử dụng nhiều loại thanh toán như thẻ tín dụng, thẻ ghi nợ, thanh toán tiền mặt, vì vậy chúng tôi được bao gồm thực thể loại thanh toán .

Mô hình này dựa trên giả định. Tôi hy vọng mô hình này sẽ giúp bạn trong một ngày nào đó.

Cảm ơn bạn.


Đó là một câu trả lời khá chính xác. Thực thể ngày IMO ở đây phức tạp không cần thiết. Bất kỳ loại phân loại hoặc đại diện tháng / năm có thể được thực hiện ở cả cấp độ truy vấn hoặc ứng dụng SQL. Tôi sẽ sử dụng các cột datetime trên tất cả các thực thể THUÊ, BILLPAY và BOOKING thay vì có mối quan hệ với một thực thể NGÀY riêng biệt.
edigu

1

Hãy đoán công việc ra khỏi các truy vấn và thiết kế của bạn bằng cách sử dụng tên và tiêu đề mô tả. RoomsPeoplenhưng tôi sẽ cho rằng đây thực sự là một cái gì đó như Capacityhoặc Room Size. Điều này tránh nhầm lẫn với Peoplecột đã được sử dụng trong Forms. Tất nhiên điều này cũng có thể được cải thiện ... một cái gì đó giống như NumberOfGuestscó thể sẽ có nhiều thông tin hơn cho bạn bây giờ và bất cứ ai truy vấn cơ sở dữ liệu của bạn sau này. Tôi sẽ kiểm tra lại tất cả các tên cột và bảng để đảm bảo chúng ngắn gọn và rõ ràng.

Các phòng không có mức tăng tự động, có thể là do bạn muốn sử dụng số nguyên để xác định phòng. Điều này có thể hoạt động, nhưng bạn có thể tránh các vấn đề bằng cách tách biệt nhận dạng phòng kinh doanh / người dùng của bạn khỏi logic cơ sở dữ liệu của bạn. Khi một vụ giết người ghê rợn xảy ra ở phòng 13 khiến nó không thể hoạt động và người quản lý mới, không phải là người mê tín hay lo lắng nhất cho những vấn đề như vậy, hãy biến cái tủ đựng chổi ở tầng 14 thành phòng 13, vì nó đủ lớn và thẳng thắn chất lượng khách sạn của chúng tôi đang đi xuống .... bạn đang say sưa. Với khóa DB riêng biệt từ chỉ định phòng của bạn, bạn có thể duy trì tất cả các bản ghi và tính toàn vẹn của DB cùng với thực tế là có một thay đổi lớn (chúng ta nên hỗ trợ các loại theo dõi thay đổi và chi tiết nào khác?).Room 13 | RoomPK 13biết là Phòng 13 nhưng thực tế bây giờ Room 13 | RoomPK 132cũng có thể được ghi lại. Điều quan trọng khi ai đó cố gắng để kiện bạn khi họ ở lại trong phòng 13 và toàn bộ vụ việc phụ thuộc vào đó phòng 13 họ ở lại. Xin lỗi, khách sạn của bạn có rất nhiều vấn đề.

Vấn đề cuối cùng là giao dịch ở đâu? Tôi hy vọng rằng một Mẫu cũng cần phải có FK cho Bill (s?) Và Rooms (s?). Mọi người cần kiểm tra trong và ngoài từ một nơi nào đó và chúng tôi cần tính phí cụ thể cho sự xuất hiện và liên kết đó. Một gia đình có thể nhận được hai phòng trong hai ngày sau đó trả phòng vào buổi sáng và trở lại vào buổi tối. Sau đó, họ kiên quyết rằng họ chỉ nhận được một hóa đơn ... Hoặc ai đó ở lại hai đêm cần hai hóa đơn do hai phương thức thanh toán khác nhau (thẻ tín dụng, tiền mặt, công việc, cá nhân). Bạn có thể cần các bảng tra cứu ngay bây giờ để hỗ trợ sự phức tạp của thanh toán và đặt phòng. Mọi người chia hóa đơn, chuyển phòng và hy vọng sẽ quay trở lại - tất cả những gì bạn cần hỗ trợ.


-1

Chúng tôi sẽ tập trung vào các yêu cầu sau trong khi thiết kế Hệ thống quản lý khách sạn:

Hệ thống nên hỗ trợ đặt các loại phòng khác nhau như tiêu chuẩn, sang trọng, phòng gia đình, v.v.

Khách sẽ có thể tìm kiếm hàng tồn kho trong phòng và đặt bất kỳ phòng có sẵn.

Hệ thống sẽ có thể truy xuất thông tin, chẳng hạn như ai đã đặt một phòng cụ thể hoặc những phòng nào được đặt bởi một khách hàng cụ thể.

Hệ thống nên cho phép khách hàng hủy đặt phòng và hoàn lại tiền đầy đủ cho họ nếu việc hủy xảy ra trước 24 giờ kể từ ngày nhận phòng.

Hệ thống sẽ có thể gửi thông báo bất cứ khi nào đặt phòng gần đến ngày nhận phòng hoặc ngày trả phòng.

Hệ thống nên duy trì nhật ký vệ sinh phòng để theo dõi tất cả các nhiệm vụ vệ sinh.

Bất kỳ khách hàng nào cũng có thể thêm dịch vụ phòng và các mặt hàng thực phẩm. Khách hàng có thể yêu cầu các tiện nghi khác nhau. Các khách hàng sẽ có thể thanh toán hóa đơn của họ thông qua thẻ tín dụng, séc hoặc tiền mặt.

Dưới đây là một sơ đồ lớp cho hệ thống đặt phòng khách sạn. Hi vọng điêu nay co ich.

nhập mô tả hình ảnh ở đây


2
Câu hỏi là về thiết kế cơ sở dữ liệu , không?
mustaccio
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.