数据库表规范化

时间:2010-02-03 09:26:16

标签: sql-server database-design

我们将内容的元数据存储在数据库表中。其中有一个名为keywords的列,其中包含与内容相关的关键字。因此,我们是否应该根据关键字列对表进行规范化,因为关键字列将包含多个值。

2 个答案:

答案 0 :(得分:2)

我认为这个问题的答案非常复杂。所有关于数据库设计的大书都说正常化是一件好事。但在您的情况下,它取决于您将如何查询数据。例如,如果您需要获取包含关键字的所有行,则必须使用不太快的like运算符。但是如果你在表格中拥有所有关键词,那么你只有一个更快的地方。

答案 1 :(得分:2)

我认为这个问题的答案根本不复杂。这是一个教科书规范化问题,答案是,你绝对应该将其正常化。

在一列中存储多个值违反了第一 - 正常形式(大多数设计师试图进入第三 - 正常)。您希望这样做的唯一原因是作为性能优化,即如果数据库非常大并且您能够在非规范化列上使用一些特殊的索引策略来实现某些特定优化(即物化路径)。情况并非如此。

不规范化会使编写查询变得困难,也无法正确编制索引。如果您要存储关键字,我只能假设关键字搜索的原因 - 所以您肯定希望能够索引此数据并编写简单查询。

请 - 规范化您的数据。

相关问题