[英]What models/associations do I need to use to implement this feature efficiently
[英]What associations do I need between models in this scenario?
我正在使用Rails预订系统。
我有3个模型-访客,房间和预订。
游客可以留在房间里。
预订可以有很多访客,并且可以在多个房间(或共享)中。 预订还具有开始/结束日期。
访客可能会在预订中的各个房间之间移动,并且需要知道这些房间分配的开始/结束日期。
这里有一个联接表就足够了吗? 即visitor_id,room_id,booking_id?
或者这些模型之间的关联看起来如何? 我是否需要其他表格,即房间分配。
非常感谢你。
我认为您应该有room_allocations表。
访客可能会在预订中的各个房间之间移动,并且需要知道这些房间分配的开始/结束日期。
如果访客更改房间,是否可以创建新的预订? 在这种情况下,您不需要附加表。
预订可以有很多访客,并且可以在多个房间(或共享)中。 预订还具有开始/结束日期。
您不清楚“或共享”是什么意思。
否则,一般的程序是列出您的实体,然后定义它们之间的关系。 它会是这样的-我不是在这里给出明确的答案,而是说明如何考虑它:
实体
首先尝试定义您的属性并将其分组为实体。 制作数据字典很不错,尤其是在团队合作中。
人际关系
尽量具体-说,预订可以有很多游客相比,给人的关系的名称(语义是在系统设计中非常重要的)是不太有帮助的。
说由预订的访问者/访客进行的预订比较好,因为这样可以区分带有名称的关系: 预订是针对预订的访问者/访客的, (还可以帮助您了解是否已预订)两者都可以帮助确定基数;以两种方式命名它们都可能会有所帮助,尽管有时您最终会遇到尴尬的语言-这可能表示设计问题或可能不是设计问题;例如,在这里访客预订房间听起来很糟糕,让我预订本身是否不是关系表的问题- 弱实体 )。
因此,如果您确定所有关系的名称,我们可以更准确地回答您。
注意 :具有三向多对多关系表可以以不平凡的方式进行归一化。 规范化非常重要的原因之一不是拥有美观,理想的数据库设计,而是能够管理数据库中潜在的不一致(例如-如果您决定采用非规范化设计来了解数据库的异常类型,可以表示;直到3NF为止都是相当明显的。
这样的事情应该让您入门:
可能存在更整洁的方式来涵盖预订和房间预订。 用面向对象的术语,您可以使用复合模式对其进行建模。 那可能会使逻辑更清晰。 当然,您仍然需要映射到表。 是否值得探索取决于您应用程序的更广泛需求。
hth。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.