所以我的任务是为一个简单的预订系统创建一个数据库模型,但我不知道所以我在这里寻求帮助。到目前为止,我所做的是如图所示,但我不知道这是否足以从头开始构建一个简单的预订系统。我试过谷歌寻找一些数据库设计,但没有找到任何帮助,有什么建议吗?你觉得我的模型怎么样?少了什么?
更新(基于回答) ups 我忘记说出要求是什么了,我们开始吧:
sport_field
可以在给定的时间和一天内预订,这意味着例如用户不能预订两天或两天半的sport_field
但用户可以预订一小时、两小时、三小时和更多小时。 (小时是从上午 9:00 到晚上 11:00 的有效时间段,此时间以外的时间无效 - 也许我会使用编程隐藏)- 会有一个等候名单,这是什么?基于可用性的
sport_field
队列(也许我在这里也迷路了,因为这是预订系统的主要行为) sport_field
将保留最多预订一天,因此例如用户可以预订sport_field
,管理员将等待付款,如果付款不成功,则sport_field
将在第二天再次开放。price
对于每个sport_field
都是固定的,永远不会改变,价格是每小时active
对我来说意味着如果sport_field
保留一段时间或特定时间,也许我的设计是错误的,我不确定users
表来自另一个系统我只是将预订部分添加到一个庞大的系统,但我需要使用他们的表
更新 2
根据建议,我将模型改进为:
更新 3
基于建议的新变化:
最佳答案
用户表并不是真正相关的,因为您无法更改它,并且出于预订目的,您只关心用户 ID。
我会为运动场添加开始和结束可用时间。例如,我可以在凌晨 3:00 预订 field 吗?我还将价格字段名称更改为 price_hourly,只是为了确保 future 的人知道它的含义..
根据您的描述,您并不需要积极参加体育运动。您可以通过查询预订表来判断某个字段在某个日期范围内是否处于事件状态。如果在运动表中保留事件标志,则它是多余的。如果标志为真,但不存在预订条目,该字段是否处于事件状态???
如果字段位于不同的位置,您可能需要为字段添加经度和纬度以用于映射和方向 View 。
您的预订表可能应该有一个状态列(即保留、付费、请求等)
等待列表可以是预订表中具有请求状态的所有条目。
帮助您入门的一些想法...
View 是查询调用的包装器。可用于隐藏字段,例如,如果您不想让每个人都知道价格,您可以创建如下 View :
CREATE VIEW sports_field_view
AS
SELECT name,description,starting_hour,ending_hours
FROM sport_field
这样,您可以让人们访问表格,同时在其中隐藏信息。
我建议的观点是这样的
CREATE VIEW sports_field_view AS
SELECT sports_field.name,description,starting_hour,ending_hours,
book_status.name as Booked,Booking.Start_time,booking.end_Date
FROM booking
JOIN sports_field ON booking.sports_field_id=sports_field.id
JOIN book_status ON booking.status_id =book_status.id
请注意,我很少使用 mySQL,因此 CREATE VIEW 语法可能略有偏差
关于mysql - 简单订票系统DB设计的几点建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21034223/