当前位置: 首页 > 知识库问答 >
问题:

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

锺离边浩
2023-03-14

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

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

然后有3个表包含“选项”。

假设我们有:品类、地域、用户。这些保存的唯一信息是项目的名称和ID。

可以将多个类别、区域和用户分配给多个项目。

因此,我有两个选项来创建这种关系:

1)为每个'选项'表创建关系表。每个表包含两列:project_id和category_id、region_id或user_id。使用这种方法,我有3个关系表,每个表只处理一对表之间的关系。例如:

****************************
* project_id * category_id *
****************************
* 1          * 3           *
*------------*-------------*
* 3          * 4           *
*------------*-------------*

2) 创建一个包含4列的关系表project\u id、category\u id、region\u id和user\u id。每行在任何时候都只能使用2个字段。项目id,然后是相关项字段的id。

**************************************************
* project_id * category_id * user_id * region_id *
**************************************************
* 1          * 3           *         *           *
*------------*-------------*---------*-----------*
* 3          * 4           *         *           *
*------------*-------------*---------*-----------*
* 3          *             * 2       *           *
*------------*-------------*---------*-----------*
* 4          *             *         * 3         *
*------------*-------------*---------*-----------*

我被第二个选项所吸引,因为它将防止我需要创建额外的关系表。有什么陷阱或其他问题我应该考虑吗?

共有1个答案

茅慈
2023-03-14

是否有任何陷阱或其他问题我应该考虑?

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

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

 类似资料:
  • 问题内容: 假设我有一个具有两个不同的一对多关系的对象。很像: 和 假设我的对象有两个与这两个对象相关的列表。 我已经阅读了以下示例:http : //forum.springsource.org/showthread.php?50617-rowmapper -with-one-to-many- query,其中说明了如何使用单个一对多关系来执行此操作。为了您的方便,这里是替代: 我认为这并不涉及

  • 我有一个关于Hibernate ManyToMany映射的问题。我有两个类 A 和 B,它们之间的映射是由 Hibernate 解析的 ManyToMany 映射: 用户和组的外键是“A_id”和“B_id”。联接表称为A_B。 现在,我想加上C。我想A_B与C有关系,与C创建多对多关系,A_B我可以称之为A_B_C。 编辑:所以我会创建一个_B实体,A和B和A_B的关系为2 @OneToMany

  • 问题内容: 我有桌子: 我想写一个返回BookName,FirstName,LastName,RubricName的SELECT查询。 我有两个单独的查询,但我不知道如何在一个选择中编写此查询。这就是我得到的: 它工作正常,但如何在一个选择中编写? 我尝试这样做,但是不起作用: 它返回错误: 问题答案: 试试这个查询

  • 我目前正在用Laravel构建我的第一个应用程序,我偶然发现了一个问题,即我不知道如何设置模型(用户和组)之间的多对多关系。 我已经创建了一个板,其中存储了所有用户和他们所在的组之间的关系。我的问题是,我不知道如何访问和设置这在Laravel。我不确定我是否必须用户has很多或属性。 我正试图找到一种方法,将用户添加到组中,以便在UserGroups表中创建一个新条目。 我的桌子: 用户 ID 集

  • 我使用的是Laravel 5.4,其模型和表格结构如下: 一个用户可以有多个账户 一个帐号可以被多个用户共享 每个账户有多个持有量 因此,用户通过他们的许多帐户间接拥有许多资产。 我需要帮助在用户模型上定义一个称为“持有量”的关系,以获得适用于用户的所有持有量(基于他们所链接的账户)。 我尝试了很多不同的东西,在谷歌上花了很长时间。我可以接近BelongToMany和hasManyThrough,

  • 问题内容: 有三个表:,并且,医院能提供的医疗服务和语言服务。因此,存在两个多对多关系。 简单ERD 现在,我想使用和搜索医院数据。 DaoImpl: 而且,如果我想从三个表中按邮政编码,医疗类型和语言进行搜索,那么如何编写一个jsql。 警告: 错误:org.hibernate.hql.internal.ast.ErrorCounter- 预期加入的路径!希望加入的路径!在org.hiberna