1

我只是想知道其中哪一个更适合在 Web 应用程序中使用。我有一个网络应用程序,可让用户发布到该网站。有三种不同类型的帖子,但足够相似,我可以将它们放在一张桌子下。这样做可以吗?

我可以用这种方式规范化表格吗?(将 type 置于其中之一下)

表格1

UserPost
post_id 
user_id
type

表 2

Post
post_id 
datetime
text

或者使用一张桌子会更好吗?

桌子

Post
user_id
post_id 
datetime
type
text

我倾向于第三种方式,除非有人能指出缺点。

4

3 回答 3

1

在第一种方法中,您将始终必须在两个表中为每个用户帖子创建一行。所以只有一个表没有缺点,user_id应该是用户表的外键,post_id主键和其他列保存数据。没有理由创建两个表。

如果三种不同类型的帖子可以用一个共同的领域来描述,那么像这样的鉴别type器是可以的。

于 2011-01-17T23:13:12.690 回答
1

组合表格,像在 Table1 和 Table2 中那样将它们分开并没有真正的优势。现在,如果表 1 有一个与 post_id 不同的键,则可以消除一些冗余。例子:

Table 1

UserPost
user_post_id 
user_id
type

Table 2

Post
post_id 
user_post_id 
datetime
text
于 2011-01-17T23:13:57.013 回答
0

根据您的最新评论,我的理解是 post_id 将是您所有三个示例表中的候选键。如果这是正确的,那么我建议您为每组独特的属性(每种类型的帖子)创建一个表。因此,如果所有帖子都具有相同的属性,那么将它们全部放在一个表中是有意义的,但是如果有两个或三个类型,那么两个或三个表会更合适。

于 2011-01-18T18:21:22.867 回答