我在一个DB结构上工作,似乎我最终得到了很多多对多的表。我有这么多的原因,是因为我的基表是项目,每个项目可以有多次出现的搜索条件,将浮出水面给用户。因此,我标准化了所有搜索条件,并使用多对多表来链接项目和搜索条件。无论出于什么原因,只有7个搜索条件表和7个到多个搜索条件表是不合适的。
有没有更好的方法来表达这些关系,并仍然保持第三范式?
一如既往地非常感谢您的投入。
--S
发布于 2010-09-14 23:17:29
我怀疑星型模式和非规范化维度表会更好地满足您的需求。您的基表将充当事实表。您的搜索条件将转出到多个列中,并放置在一个或多个维度表中。
例如,如果属性A完全依赖于属性B,而属性B完全依赖于属性C,那么您可以使用(C,B,A)创建维度表,然后将C作为外键迁移到您的基表中。对所有相关的属性集重复上述操作。
如果您有一些奇特的低基数属性,这些属性没有明确的关联,但确实聚集在一起,您可以从它们的交叉产品中创建另一个维度表,添加一个主键,并将该键也迁移到基表。
如果需要第三范式(只有当数据被多个进程更新时才需要),那么可以将维度表规范化为所谓的雪花维度。您将为此付出代价,因为每个查询都需要更多的连接。
发布于 2010-09-14 23:29:54
我不太确定我是否理解了你的模型。我相信你有一个项目表和7个与之相关的其他表(比如类别、作者、国家等)。而且您的搜索必须查找这7个NxN关系,并且您不喜欢使用7个连接的查询……如果这就是问题所在,那么你应该考虑使用full text search。
https://stackoverflow.com/questions/3685381
复制相似问题