在我作为网站的一部分编写的问题/答案论坛组件中,我有两个理论上看起来像这样的表(也就是说,我希望为每个实体保留所说的数据):
THREAD POST
thread_id post_id
type_id (question) writer_id
writer_id thread_id
title parent_id
body (optional) post_body
followers date
merge_id upvotes
date dnvotes
upvotes replies
dnvotes views
replies post_type_id (e.g. answer, comment to an answer etc.)
views
anonymous
这些实体之间唯一真正的区别是merge_id(如果一个问题合并到另一个,这个id将引用所说的question_id),关注者和标题。将它们组合成一个对我来说似乎有点麻烦和臃肿,而且我认为似乎开始有点非规范化。并且,如果他们是一个人,那么身体和头衔都必须是可以为空的,他们不应该这样做(我知道代码中可以有保护措施)。
我还想过线程只包含不在帖子中的属性,如下所示:
THREAD
thread_id (or post_id which would be primary and foreign key refing POST)
title
merge_id
followers
但这也感觉不对。
此外,如果它有所不同,我打算以quora的风格经常显示问题以及排名最高的答案。
非常感谢任何设计建议。
(另外,我保留他们的通用(线程/帖子),以便在需要时我可以将这些表用于博客或其他任何其他内容。)
答案 0 :(得分:0)
在我看来,这些应该是两个独立的表格。
为了帮助您做出决定,请了解您将如何使用它们。
如果你在SQL查询中对它们进行相同处理,并且你通常不关心某些事情是帖子还是线程,那么使用单个表是有意义的。 如果你以不同的方式对待它们(我期望),请使用两个表格。