2010-09-10 76 views
0

我在DB结构工作,好像我已经结束了与很多多对多表。我得到这么多人的原因是我的基础表是项目,每个项目可以有多个搜索条件出现在用户面前。所以我规范化了所有的搜索标准,并使用了很多表来链接项目和搜索条件。无论出于何种原因,只有7个搜索标准表格和7个搜索标准表单不太合适。很多很多人Manys

是否有更好的方法来制定这些关系,而仍坚持是第三范式?

由于总是十分赞赏的输入。

--S

+3

这个标题会更好,因为很多多对多:P – msarchet 2010-09-10 14:27:41

+1

你能不能给我们一些示例数据? – 2010-09-10 14:28:07

+1

没有ER图很难说。 @msarchet或许多许多。 – 2010-09-10 14:29:15

回答

0

我怀疑你会更好地服务于星型模式和非规格化维表。你的基表将作为事实表。您的搜索条件将被转换为多个列并放置在一个或多个维度表中。例如,如果属性A完全依赖于属性B,并且属性B完全依赖于属性C,则可以用(C,B,A)制作一个维度表,然后将C迁移到您的基表中,如下所示:一个外键。重复所有相关属性组。

如果您有一些不明显相关但却集中在一起的奇数球低基数属性,则可以从他们的交叉产品中制作另一个维表,并添加到主键上,然后将此键迁移到基表以及。

如果需要第三范式(它应该只有当数据正在被多个进程更新所需的),那么你可以标准化维度表到所谓的雪片状尺寸。您将为此付出代价,因为每个查询都需要更多的连接。

+0

感谢彼得......我其实是想,但试图坚持一个标准化的结构,我们的插入/更新/删除等。不过,这个数据不会被频繁修改和规范化的方法只是似乎有点在加入所有表格方面感到痛苦。 – scarpacci 2010-09-15 04:27:36

0

我不太确定,如果我了解你的模型..我相信你有一个项目表和其他7个表相关(比如说,类别,作者,国家等等)。而你的搜索必须查找那7个NxN关系,而你不喜欢一个查询使得7个连接...如果这是问题,那么你应该考虑使用full text search

+0

你在7个表格中是正确的,但这7个表格通过多对多链接到项目(项目可以有许多作者和作者可以有许多项目) – scarpacci 2010-09-15 04:24:04