我有4个实体:Event
,Message
,Flow
和Document
。
Event
表存储有限(播种)的记录数。 Message
包含许多事件,每个事件都可以与许多消息相关联。为中间表提供了名称event_message
。
如您所见,中间表的约定是:{tablename}_{tablename}
。
Flow
表存储有限(播种)的记录数。 Message
有许多流,每个流可以与许多消息相关。为中间表提供了名称flow_message
。
在Flow
和Message
(flow_message
上的每条记录)之间的每个关系上创建一个文档。
问题从这里开始:
邮件上的每个事件都有不同的文档流。这意味着:对于中间表flow_message
上的每个新记录,中间event_message
上的每个记录都有一个新文档。
为了解决这个问题,我在名为event_message
的{{1}}和flow_message
之间创建了一个中间表。
这是否正确(以某种传统方式)?这种建模是否正确?
如何正确建模并用另外两个中间表命名中间表导数?
答案 0 :(得分:1)
我也希望有一些惯例。由于我不知道任何官方惯例,我发明了我的。重要的是要尊重你选择的惯例。
所以我会将event_message_flow_message
更改为rel_eventmessage_flowmessage
。
但对我来说,你的惯例非常好。
答案 1 :(得分:0)
很难提出建议,因为你的模型对我来说有点奇怪。您在DOCUMENT
和FLOW_MESSAGE
以及DOCUMENT
和EVENT_MESSAGE_FLOW_MESSAGE
之间拥有1:1的关系。我心中很难将这与EVENT_MESSAGE_FLOW_MESSAGE
的多对一关系调和起来。如果您与DOCUMENT
的关系真的是1:1(强制性),那么为什么要将文档保存在单独的表中呢?
要解决有关表命名的问题:我认为命名交集表的{table} _ {table}约定不是最佳实践,而是在您无法想到更好的情况下的后备名。
最佳做法是表的名称反映由表中数据记录/描述的事物的商业名称。并非总是可以这样做,特别是对于交叉路口表。交叉表表示多对多关系,关系通常很难用名词来描述。
在您的情况下,我不认为您的约定实际上使事情特别容易理解。我可能会尝试使用MESSAGE_DOCUMENT
或甚至DOCUMENT
之类的内容进行简化 - 因为在任何情况下这些似乎都是1:1相关的。