Der*_*mes 3 sql database-design design-patterns
我有两个带有联接表的表,以允许多对多关系。
这是一个非常熟悉的设计模式。它指示每个成员有权访问的分支。
随着成员和分支数量的增加,我最终在联接表中获得了很多在成员之间重复的数据。成员往往具有与其他成员相同的分支机构组访问权限。
因此,我正在通过创建有效不变的MemberProfile表来规范化我的数据。而且,与其为我检查匹配的MemberProfile的每个会员创建MemberBranch记录,不使用它是否已经存在,否则创建一个(如果不存在):
我的想法是,如果我有100万个会员,但只有100个访问配置文件,这将为我节省很多数据库空间。
我很高兴这一切都能奏效,而且值得付出开发工作。
我的问题是“这是标准的数据库设计模式吗?如果是的话,它叫什么名字?”
编辑:有人指出,这是在压缩数据而不是对其进行规范化。这是设计背后的意图。
除非您的many:many表始终是特定其他基本表的联接,否则不会进行标准化。您在这里没有规范化。规范化不会引入新的列名。它只是在不同的基表中重新排列当前表。
您只是压缩/编码数据。这样做并不一定带来任何好处,因为尽管数据库较小,但现在某些查询和更新将变慢。(您已经报告说值得这样做)。