我需要在我的数据库中创建多个多对多关系。
有一个“主”表,我们称之为“项目”。
然后有 3 个包含“选项”的表。
假设我们有:类别、地区和用户。这些保存的唯一信息是项目的名称和 ID。
可以将多个类别、区域和用户分配给多个项目。
所以我有两个选择来创建这种关系:
1)为每个“选项”表创建一个关系表。每个表将包含两列:“project_id”和 category_id、region_id 或 user_id。使用这种方法,我将有 3 个关系表,每个表只处理一对表之间的关系。例如:
****************************
* project_id * category_id *
****************************
* 1 * 3 *
*------------*-------------*
* 3 * 4 *
*------------*-------------*
2) 创建一个包含 4 列 project_id、category_id、region_id 和 user_id 的关系表。每行在任何时候都只会使用 2 个字段。project_id,然后是相关项目的字段 id。
**************************************************
* project_id * category_id * user_id * region_id *
**************************************************
* 1 * 3 * * *
*------------*-------------*---------*-----------*
* 3 * 4 * * *
*------------*-------------*---------*-----------*
* 3 * * 2 * *
*------------*-------------*---------*-----------*
* 4 * * * 3 *
*------------*-------------*---------*-----------*
我对第二个选项很感兴趣,因为它会阻止我需要创建额外的关系表。我应该考虑任何陷阱或其他问题吗?