Mysql 创建一个矩阵表,其中有两个到其他表的独立链接

Mysql 创建一个矩阵表,其中有两个到其他表的独立链接,mysql,sql,Mysql,Sql,我确实搜索了一个类似的问题,但并没有真正找到我想要的 例如,我有以下表格结构: 请注意,这是一个示例,可以让您深入了解我的问题 表:矩阵链接 表:页数 表:小组 表:组有个页面 在我的代码中,这将生成: +-------------------------+----------+----------+----------+ | page authorisation | group1 | group2 | group3 | +-------------------------

我确实搜索了一个类似的问题,但并没有真正找到我想要的

例如,我有以下表格结构:

请注意,这是一个示例,可以让您深入了解我的问题

表:矩阵链接

表:页数

表:小组

表:组有个页面

在我的代码中,这将生成:

+-------------------------+----------+----------+----------+
| page authorisation      | group1   | group2   | group3   |
+-------------------------+----------+----------+----------+
|  page1                  | x        | o        | o        |
|  page2                  | o        | o        | o        |
|  page3                  | o        | o        | o        |
+-------------------------+----------+----------+----------+
这将定义组可以访问的页面,并将选中的复选框保存在交叉点表中

我认为这不是一个好的做法;在列中保存表名。我正在寻找一个解决方案,这是一个良好的做法与工作

请注意:

我将尽可能地重用代码

我不更改表名,并坚持我的编码风格准则


您通常不会将矩阵作为矩阵存储在任何数据库中,因为大多数数据库管理系统将列数限制为比行数小得多的数目。因此,您无法创建许多这样的组

通常的解决方案是将矩阵展平。还用于节省稀疏矩阵上的空间:

您将得到一个如下所示的表:

------------------------------------
page    | group   | authorization
------------------------------------
page1   | group1  | 1
page2   | group2  | 0
page3   | group3  | 0
page2   | group1  | 0
page2   | group2  | 0
page2   | group3  | 0
...

添加授权列不是太过分了吗?因为在我的设计中,当你在十字路口添加一行时,你已经告诉他们有权这样做。但是我想要有多个矩阵,链接到不同的表当然,如果是真的|假的话,你不需要第三列。对于其余部分,我真的不确定您实际想要实现什么,也许您可以详细说明一下您的实际目标?我的代码现在所做的是在垂直列中回显表1的名称列,与水平列相同,但使用表2。选中的每个复选框都将保存在列交叉点表格中定义的交叉点表格中。但是我不认为定义表名来生成矩阵表是一种好的做法@伊斯梅尔,我想你的直觉是对的。特别是对于像授权这样的基本功能,我不明白为什么需要像您这样的灵活体系结构,将表名存储在其他表中以供参考。在项目期间,您对页面、组和权限的概念可能是固定的。因此,只需在db级别硬编码它们之间的依赖关系。
+----+-------------+
| id | name        |
+----+-------------+
|  1 | group1      |
|  2 | group2      |
|  3 | group3      |
+----+-------------+
+----------+-----------+
| page_id  | group_id  |
+----------+-----------+
| 1        | 1         |
+----------+-----------+
+-------------------------+----------+----------+----------+
| page authorisation      | group1   | group2   | group3   |
+-------------------------+----------+----------+----------+
|  page1                  | x        | o        | o        |
|  page2                  | o        | o        | o        |
|  page3                  | o        | o        | o        |
+-------------------------+----------+----------+----------+
------------------------------------
page    | group   | authorization
------------------------------------
page1   | group1  | 1
page2   | group2  | 0
page3   | group3  | 0
page2   | group1  | 0
page2   | group2  | 0
page2   | group3  | 0
...