Sql 很多很多很多很多

Sql 很多很多很多很多,sql,tsql,sql-server-2008,Sql,Tsql,Sql Server 2008,我正在开发一个DB结构,看起来我最终得到了很多多对多的表。我得到这么多的原因是,我的基表是items,每个item可以有多个搜索条件出现,这些搜索条件将呈现给用户。因此,我规范化了所有搜索条件,并使用多对多表链接项目和搜索条件。不管出于什么原因,拥有7个搜索条件表和7个多对多搜索条件表都是不对的 有没有更好的方法来表达这些关系,并且仍然保持第三范式 一如既往,非常感谢您的投入 --我怀疑星型模式和非规范化维度表会更好地为您服务。您的基表将充当事实表。您的搜索条件将旋转到多个列中,并放置在一个或多

我正在开发一个DB结构,看起来我最终得到了很多多对多的表。我得到这么多的原因是,我的基表是items,每个item可以有多个搜索条件出现,这些搜索条件将呈现给用户。因此,我规范化了所有搜索条件,并使用多对多表链接项目和搜索条件。不管出于什么原因,拥有7个搜索条件表和7个多对多搜索条件表都是不对的

有没有更好的方法来表达这些关系,并且仍然保持第三范式

一如既往,非常感谢您的投入


--我怀疑星型模式和非规范化维度表会更好地为您服务。您的基表将充当事实表。您的搜索条件将旋转到多个列中,并放置在一个或多个维度表中

例如,如果属性A完全依赖于属性B,而属性B完全依赖于属性C,则可以使用(C,B,A)创建维度表,然后将C作为外键迁移到基表中。对所有相关属性集重复此操作

如果您有一些奇数球低基数属性,这些属性之间没有明显的关联,但确实聚集在一起,那么您可以用它们的叉积生成另一个维度表,固定主键,并将该键迁移到基表


如果需要第三种标准形式(并且仅当数据由多个进程更新时才需要),则可以将维度表规范化为所谓的雪花维度。您将为此付出代价,因为每个查询都需要更多的联接。

我不确定是否理解您的模型。。我相信您有一个Item表和7个与之相关的其他表(比如,category、author、country等)。您的搜索必须查找7个NxN关系,您不喜欢生成7个连接的查询。。。如果这是问题所在,那么您应该考虑使用。

这个标题会更好,因为多对多:p您能给我们一些示例数据吗?如果没有ER图,很难说@msarchet或多对多。嗯,你必须更具体地说明你的问题。具体来说,你所说的“基本表”、“项目”、“搜索条件”和“面向用户”。下面的@PleaseDontAttribute评论相当准确。我有一个item表和另外7个表,每个表都与item有多对多关系。看起来开销很大(连接)。您在7个表中是正确的,但这7个表通过多对多(项可以有多个作者,作者可以有多个项)链接到项。谢谢Peter…我实际上是这么想的,但尝试坚持我们的插入/更新/删除等的规范化结构。然而,这些数据不会被频繁修改,而规范化方法在连接所有表方面似乎有点痛苦。