繁体   English   中英

在这种情况下,模型之间需要什么关联?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM