0

好的,所以假设数据库应该存储有关多种类型帖子的数据(简单帖子和具有许多表单字段的复杂预格式化帖子)。很明显,这些帖子的数据应该存储在不同的表中。

问题是所有这些帖子表都应该有一些额外的喜欢/评论表链接到它们。这将意味着越来越多的表/查询......

你会推荐这个答案中的多态关联吗?https://stackoverflow.com/a/2003042/997178或这张图片:

多态关联的另一个例子 但是多态关联还有另一个问题,不是所有的帖子(实体)都可以有评论。如果我必须进行搜索才能找到只知道它是 objectid 的帖子(来自评论表的 fk),我将不得不搜索所有帖子表才能找到它......

或者你会推荐具体的方法并有更多的表和查询?
http://martinfowler.com/eaaCatalog/concreteTableInheritance.html

PS:任何提示将不胜感激:)

4

2 回答 2

2

不像你描述的那样。考虑购买一本好的数据库书籍并阅读有关范式的部分。粗略地说,这个想法是将数据库想象成一个包含大量空条目的巨大表,然后仔细拆分列集以创建更多表。不需要直觉。对于几种范式中的每一种(BCNF 是一个值得关注的合理形式),都有明确定义的规范化规则可以保证获得良好的结果。当您不需要任何空值来表示数据模型时,您就完成了。在某些情况下,出于性能原因,您将避免进行某些拆分(并保留空值)以避免连接,但这应该仅在基准测试之后或您对您的环境和数据非常有经验的情况下完成。一个做得好的范式数据库是一件美好的事情。

维基百科页面是一个合理的介绍。

于 2012-07-12T01:59:33.647 回答
0

我找到了部分解决方案...

我将混合使用多态关联/基本父表模型 + 多态关联/反转关系模型,来自这张幻灯片:

http://www.slideshare.net/billkarwin/practical-object-oriented-models-in-sql

于 2012-07-13T00:27:08.770 回答