0

在提问/回答论坛组件我写一个网站的一部分,我有两个表理论上是这样的(也就是我想要说的数据保存每个实体):我应该将这些表合并为一个,还是让它们分开?

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

https://www.postgresql.org/docs/9.6/static/tutorial-inheritance.html –

+0

这是一个常见问题解答。 Google'stackoverflow.com philipxy数据库子类型'。 – philipxy

+1

在你的文章中你表格的表现是相当奇怪的。通常一个人不会并排写两个列表(列),这使得它们很难使用。假设有人想复制线程表的列表以在他的答案中使用它。一个简单的编辑器(大多数浏览器提供的)无法有效地处理这个问题。必须逐字复制列。一行中的列是不相关的,所以我看不出以这种方式表示这种情况的好处。 – miracle173

回答

0

它看起来对我来说,这应该是两个单独的表格。

为了帮助您做出决定,请了解您将如何使用它们。

如果你在SQL查询中对待它们,并且通常不关心某些事情是帖子还是线程,那么使用单个表就会有意义。 如果你以不同的方式对待它们(我期望的),请使用两个表格。

相关问题