其他两个中间人之间的中间表的正确名称

时间:2017-12-24 15:55:16

标签: database database-design relational-database naming-conventions

我有4个实体:EventMessageFlowDocument

Event表存储有限(播种)的记录数。 Message包含许多事件,每个事件都可以与许多消息相关联。为中间表提供了名称event_message

如您所见,中间表的约定是:{tablename}_{tablename}

Flow表存储有限(播种)的记录数。 Message有许多流,每个流可以与许多消息相关。为中间表提供了名称flow_message

FlowMessageflow_message上的每条记录)之间的每个关系上创建一个文档。

问题从这里开始:

邮件上的每个事件都有不同的文档流。这意味着:对于中间表flow_message上的每个新记录,中间event_message上的每个记录都有一个新文档。

为了解决这个问题,我在名为event_message的{​​{1}}和flow_message之间创建了一个中间表。

enter image description here

这是否正确(以某种传统方式)?这种建模是否正确?

如何正确建模并用另外两个中间表命名中间表导数?

2 个答案:

答案 0 :(得分:1)

我也希望有一些惯例。由于我不知道任何官方惯例,我发明了我的。重要的是要尊重你选择的惯例。

所以我会将event_message_flow_message更改为rel_eventmessage_flowmessage。 但对我来说,你的惯例非常好。

答案 1 :(得分:0)

很难提出建议,因为你的模型对我来说有点奇怪。您在DOCUMENTFLOW_MESSAGE以及DOCUMENTEVENT_MESSAGE_FLOW_MESSAGE之间拥有1:1的关系。我心中很难将这与EVENT_MESSAGE_FLOW_MESSAGE的多对一关系调和起来。如果您与DOCUMENT的关系真的是1:1(强制性),那么为什么要将文档保存在单独的表中呢?

要解决有关表命名的问题:我认为命名交集表的{table} _ {table}约定不是最佳实践,而是在您无法想到更好的情况下的后备名。

最佳做法是表的名称反映由表中数据记录/描述的事物的商业名称。并非总是可以这样做,特别是对于交叉路口表。交叉表表示多对多关系,关系通常很难用名词来描述。

在您的情况下,我不认为您的约定实际上使事情特别容易理解。我可能会尝试使用MESSAGE_DOCUMENT或甚至DOCUMENT之类的内容进行简化 - 因为在任何情况下这些似乎都是1:1相关的。