我正在努力做出关于如何构建MySQL数据库的明确决定。
我可以通过例子来解释这个问题:
我有一张名为customers
的表格。客户可以控制一个或多个sites
。
Sites
有他自己的桌子。
表customers
和sites
有一个主键id (AUTO-INCREMENT)
。
大多数客户可以修改多个“站点”,我们正在向100,000个客户增长。我需要做的就是检查客户是否可以编辑网站。
问题是:如果我想将查询保持在最低限度并且性能最佳,我如何才能最好地存储数据?
1.我创建了一个所有“站点”的序列化数组,客户可以编辑它并将其放在customers
表的列中。
2.我为customers
创建一个名为customer-site
的子表,在其中我写了客户有权访问的所有site_id。
正如您可能已经阅读的那样,我没有太多的知识,所以任何信息都非常感谢!
祝你好运, Abayob
答案 0 :(得分:2)
您应该创建一个 permissions
表,其中包含两列 short_name
,name
。您应该使用 customer_permission_site
,customer_id
,site_id
创建另一个表格,以保存客户对 permission_short_name
网站的权限。如果用户有权限,请使用代码中的短名称字段进行检查。
权限表中的 short_name
字段将成为该表的主键。
此架构的好处
答案 1 :(得分:1)
Mysql规范化规则说选项2是要走的路。您可以更轻松地在数据库中直接编辑。有了这个,您还可以将外键绑定到两者,并级联删除站点/客户(也删除链接表中的行)