MySQL数据库中的父子结构或序列化数组?

时间:2015-09-03 12:11:01

标签: php mysql structure

我正在努力做出关于如何构建MySQL数据库的明确决定。

我可以通过例子来解释这个问题:

我有一张名为customers的表格。客户可以控制一个或多个sitesSites有他自己的桌子。 表customerssites有一个主键id (AUTO-INCREMENT)。 大多数客户可以修改多个“站点”,我们正在向100,000个客户增长。我需要做的就是检查客户是否可以编辑网站。

问题是:如果我想将查询保持在最低限度并且性能最佳,我如何才能最好地存储数据? 1.我创建了一个所有“站点”的序列化数组,客户可以编辑它并将其放在customers表的列中。 2.我为customers创建一个名为customer-site的子表,在其中我写了客户有权访问的所有site_id。

正如您可能已经阅读的那样,我没有太多的知识,所以任何信息都非常感谢!

祝你好运, Abayob

2 个答案:

答案 0 :(得分:2)

您应该创建一个 permissions 表,其中包含两列 short_namename 。您应该使用 customer_permission_sitecustomer_idsite_id 创建另一个表格,以保存客户对 permission_short_name 网站的权限。如果用户有权限,请使用代码中的短名称字段进行检查。

权限表中的 short_name 字段将成为该表的主键。

  

此架构的好处

  1. 您可以轻松地将用户设置为网站以进行编辑,删除等权限。
  2. 您可以在权限表
  3. 中设置为用户提供权限的权限
  4. 规范化&易于搜索和检索。

答案 1 :(得分:1)

Mysql规范化规则说选项2是要走的路。您可以更轻松地在数据库中直接编辑。有了这个,您还可以将外键绑定到两者,并级联删除站点/客户(也删除链接表中的行)