ID参考表,而不是列表

问题描述:

多次投票表架构中: Multiple Voting Table Schema 单表决表模式: Single Voting Table SchemaID参考表,而不是列表

企业,产品和评论都可以投票。对于第一个明显的解决方案,我选择为每个关系创建关联实体。不过,我们认为也许会有更好的解决方案。

经过广泛研究并寻找解决方案后,我找到了第二个模式的概念,它具有一个带有列(实体)的单个投票表,以定义表或类型的表ID(EntityID是它来自的表的ID)所属的ID。唯一的问题是投票表和三个实体之间没有关系。 实体列有没有办法引用表而不是表的ID?

欢迎任何有关开发模式的其他建设性方法的建议。

我想你会发现这个答案非常充分。

Why can you not have a foreign key in a polymorphic association?

什么你看这里是一个多态关联。它有很多解决方案,其中三个通过给定的职位进行了全面的描述。

我建议你将商业,产品和评论表结合到一张表中,并用一个额外的colume来表示'Type'。然后,您可以强制您与投票表的关系。

+0

与实际的复杂表相比,这些表更简单。评论,商业和产品表中的每个列都有不同的列。 – AlGallaf 2013-05-07 19:14:35

+0

好的,这很公平。你需要严格定义Vote表和另一个表之间的FK关系3.你可以假定关系在那里,并且将验证作为INSERT语句的一部分处理到VOTE表中,即使你没有明确定义的KEY桌子。 – 2013-05-07 19:20:16

+0

我已经想到了。我只是认为可能会有更有效的方式。我也担心这可能会在不久的将来出现问题。使用第二个模式而没有在投票和三个表之间建立关系会造成什么后果?我能想到的第一个问题是,你可以创建一个记录来投票处理一个不存在的业务记录。 – AlGallaf 2013-05-07 19:25:06