正确设置MySQL表的方法

时间:2010-06-03 15:28:54

标签: mysql

我无法理解我应该在这里做什么......

我有一个包含大约20,000条记录的数据库。每个记录都有大约20列。

我想在此数据库中添加大约20个左右的附加列,这些列将包含每个记录的不同URL的加载行。大多数情况下,这些都是空白的。

这样做的“正确”方式是什么:

  1. 添加20个额外的列(youtubeurl,facebookurl等) (好处:只有一个URL调用//缺点:使我的数据库更大)

  2. 添加一个包含三列的附加表 - 'ID','URLType','URL',我还可以调用它? (好处:保持主表更小//缺点:需要额外的SQL查询)

  3. 我该怎么办?

3 个答案:

答案 0 :(得分:4)

其他条件相同,我会选择(2)。这使您可以保持数据规范化,并在将来需要添加更多站点时提供灵活性。

FWIW,这不需要对SELECT数据进行额外查询,因为您可以只加入另一个表。但是,当然,它需要额外的INSERT / UPDATE查询。

答案 1 :(得分:2)

选项2几乎肯定是更好的选择。它使您以后更容易添加新的Url类型(只需创建一个新的URLType而不必创建新的列)。然后,不必修改使用这些URL的页面以容纳新类型的URL;他们只会把它从桌子上拿出来。换句话说,您只需要在一个地方而不是几个地方进行更改。

如果人们大多​​只拥有这些网址中的一小部分,那么将它拆分成一个单独的表几乎肯定是可行的方法。

答案 2 :(得分:2)

您要添加的所有内容都是网址。每个URL都与您当前记录中的一个(或更多)相关。所以:

对于只有一条记录的网址 - url表与url和FK记录表

或适用于可能涉及多条记录的网址 url表与url_id和url 链接表与record_id和url_id