如何设计这个数据库表概念?

时间:2010-01-29 23:13:53

标签: database-design

假设我有一个表Articlesarticle只能附加一个topic。但文章也可能没有topic

  1. 我应该在topic表格中Articles新列吗? OR

  2. 我应该创建一个表topics2articles并将topicarticle映射到一起吗? (在这种情况下,我不必为Articles表添加额外的列。

  3. 我不喜欢第一种解决方案,因为有些行会有NULL吗?或者在这种情况下NULL是否合理?

    你怎么看?

    谢谢,Boda Cydo。

5 个答案:

答案 0 :(得分:4)

我认为您没有任何理由要制作新表,以避免其中包含NULL行。

将它添加到文章表中是有意义的,并且可能使维护更容易,因为您不必加入另一个表。

答案 1 :(得分:0)

我可能会建议,如果主题有其他相关数据,你应该创建2个表:一个用于ARTICLE,一个用于TOPIC,其中ARTICLE PK作为TOPIC中的外键。

答案 2 :(得分:0)

一对一关系通常只是一种烦恼......只要行长度不会成为您应用程序的瓶颈,就将它们保存在一个表中。

答案 3 :(得分:0)

正如您所指出的,在(1)的情况下,您将有一些NULL行。 在(2)的情况下,您将有一个带有2个索引的额外表。在我看来,如果文章不可能有超过1个主题,并且许多没有主题的文章不超过文章总数的50-70%(1)会更好。

答案 4 :(得分:0)

这听起来像是一个尖头发的老板可能会用来给你带来不必要的痛苦,当他们要求topic以多对多的方式用于标记时。

出于这个原因,我会选择#2。

如果你真的确信它不会转身咬你,那么#1是个不错的选择。避免使用NULL似乎是一个非常弱的理由。目前尚不清楚你是否打算将它们作为文本或FK存储到主题表中,但我会选择一个单独的主题表。