例如,我有文章,文章答案和答案评论。数据库体系结构
还有什么更好的办法:让每个实体(帖子,答案,评论)都有每个表或者带有'post_type'和'parent_id'参数的表?
UPD:答案和评论与属性相似。
例如,我有文章,文章答案和答案评论。数据库体系结构
还有什么更好的办法:让每个实体(帖子,答案,评论)都有每个表或者带有'post_type'和'parent_id'参数的表?
UPD:答案和评论与属性相似。
无论你是否有单独的帖子和评论表,部分取决于是否可以使用一个而不是另一个,部分取决于每个处理的相似程度。换句话说,每个人有多少独特的信息?如果没有或几乎没有什么是独一无二的,那么一张桌子很可能会工作。
的最佳路线将是3个表:
作为最终父母的职位,与其链接的答案以及与答案相关的评论。
在某些情况下,使用具有区分列的单个表是有意义的(选项2),但任何属于单一类型的列都应该放入其自己的表中,并且该表将具有外键映射回主表。这将形成一个table inheritance hierarchy。
如果这些表格表示的对象共享相当数量的列,这是有意义的;并且它们的共同点允许将一些处理在不同类型中进行概括而不必知道具体的子类型。
如果您的大部分查询最终都不得不按照差异列进行筛选,您将它们存储在同一个地方会获得什么真正的好处?
总之: K.I.S.S.适用;如果使用单表方法具有编程优势,请使用它;否则保持简单并使用3(我知道直觉,但是增加的认知负荷只是为了完成自我连接应该说服你)。
对不起,忘记说答案和评论是相似的,这就是为什么表格太类似了。 – dearmisterrobot
两个相似的表没有错。 – staticsan
是的,两张类似的桌子都很好,它们的区别在于它们的区别 - 所以不用担心。 3桌完美的作品。 – Brayden