假设我有一个表Articles
。 article
只能附加一个topic
。但文章也可能没有topic
。
我应该在topic
表格中Articles
新列吗? OR
我应该创建一个表topics2articles
并将topic
和article
映射到一起吗?
(在这种情况下,我不必为Articles
表添加额外的列。
我不喜欢第一种解决方案,因为有些行会有NULL
吗?或者在这种情况下NULL
是否合理?
谢谢,Boda Cydo。
答案 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存储到主题表中,但我会选择一个单独的主题表。