gpt4 book ai didi

mysql - 在一个表中定义多个多对多关系

转载 作者:可可西里 更新时间:2023-11-01 08:35:35 25 4
gpt4 key购买 nike

我需要在我的数据库中创建多个多对多关系。

有一个“主”表,我们称它为“项目”。

然后有 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 *
*------------*-------------*---------*-----------*

我对第二个选项很感兴趣,因为它会阻止我创建额外的关系表。我应该考虑任何陷阱或其他问题吗?

最佳答案

Are there any pitfalls or additional problems I should consider?

您的要求之一是“每行在任何时候都只能使用 2 个字段”。在 MySQL 中,没有简单的方法来强制执行此约束,因此您可能会遇到数据不一致的情况。

如果使用多表设计,可以使用非NULL字段和外键约束来保证一致性。

关于mysql - 在一个表中定义多个多对多关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13624610/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com