我在 MySql 数据库中有 6 个表需要相互连接(这 6 个项目必须以任何可能的方式关联)。我还需要以某种方式为这些关系添加一个“sort_order”列。使用“经典的多对多”连接表会导致数据库混乱,有数十个连接表。那将是不可能维持的。我能找到的最佳解决方案是使用具有 7 列的单个连接表(6 个用于 6 个项目 id + 1 个用于 sort_order),其中每一行标识 2 个表之间的单个关联。
这是我做的连接表:
mysql> desc relations;
+------------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------+---------+------+-----+---------+-------+
| artist_id | int(11) | YES | MUL | NULL | |
| art_id | int(11) | YES | MUL | NULL | |
| edition_id | int(11) | YES | MUL | NULL | |
| expo_id | int(11) | YES | MUL | NULL | |
| news_id | int(11) | YES | MUL | NULL | |
| press_id | int(11) | YES | MUL | NULL | |
| sort_order | int(11) | YES | | NULL | |
+------------+---------+------+-----+---------+-------+
7 rows in set (0,00 sec)
由于我不是数据库设计专家,我想可能会有更好的设计来实现相同的目标。最好的设计是什么?
注1:请不要告诉我应该避免太多的关联:这是项目的一个特殊而精确的需求,我只需要找到最好的解决方案来使它成为可能。
注 2:顺便说一下,这是针对 Php/MySql Web 应用程序,我使用 Yii 作为框架。