我正在研究数据库结构,看起来我最终得到了很多很多表。我得到这么多的原因是我的基表是项目,每个项目可以有多次出现的搜索条件将出现给用户。因此,我将所有搜索条件规范化,并使用多对多表来链接项目和搜索条件。无论出于何种原因,只有7个搜索条件表和7个多个manys感觉不对。
是否有更好的方法来制定这些关系并仍然保持第三范式?
总是非常欣赏输入。
- S
答案 0 :(得分:0)
我怀疑你可以通过星型模式和非规范化维度表更好地服务。您的基表将充当事实表。您的搜索条件将被旋转为多个列,并放置在一个或多个维度表中。
例如,如果属性A完全依赖于属性B,并且属性B完全依赖于属性C,则可以使用(C,B,A)创建维度表,然后将C迁移到基表作为外键。对所有相关属性集重复上述操作。
如果你有一些奇怪的低基数属性,这些属性没有明显的关联但是聚集在一起,你可以从他们的交叉产品中创建另一个维度表,粘贴主键,并将此密钥迁移到基础表也是如此。
如果需要第三范式(并且只有在多个进程更新数据时才需要它),那么您可以将维度表标准化为所谓的雪花尺寸。您需要为此付费,因为每个查询都需要更多的连接。
答案 1 :(得分:0)
我不确定我是否理解你的模型..我相信你有一个 Item 表和另外7个与之相关的表(比方说,类别,作者,国家等,等等)。你的搜索必须查找7个NxN关系,你不喜欢7个连接的查询...如果这是问题,那么你应该考虑使用full text search。