假设您有多个“事物”,每个事物都附有一个或多个注释。例如,产品和订单。如何构建表格......
顺便使用SQL Server 2008。
思考,意见?
答案 0 :(得分:2)
我认为Order/Product
表应保持不变。
Comments
表可以是
CommentID
EntityID
EntityType
Comment
EntityType
会告诉您EntityID
属于哪个表(ProductID/OrderID
)
答案 1 :(得分:1)
绝对只使用一个Comment表,因此您不必复制Comment信息(例如timestamp,flagged_for_moderation等)。在评论中有两个字段很好,因为它清楚地表明它是一对多的链接。我可能会在多个链接表上倾向于这一点,但我确实感谢您在链接时只在链接表中有行,而有一半的值为NULL
。也许在一个非常大的数据库中有更多可以评论的东西,你可能会去连接表。
答案 2 :(得分:0)
如果您不喜欢entityID
,entityType
方法,因为您无法使用外键约束,您可以采取混合策略,例如
COMMENT(commentID, comment, productID, orderID, ....)
将...作为每个可评论表的附加列。
答案 3 :(得分:0)
如果您使用链接表并且您有超过2或3个“类型”可以链接到注释,那么就开始考虑生成的代码以创建您需要的所有SQL。您很快就会有101个链接表和大量的表定义SQL来维护。
如果您对所有ID使用GUIDS并且不介意没有在数据库中定义外键,那么还有其他选项,但我不认为您拥有数据库模式的样式。
这是让我觉得关系模型是痛苦的用例之一!
答案 4 :(得分:0)
我喜欢添加实体ID和实体类型列,以增加灵活性而无需额外的连接。