同一个表内的MySQL关系?

时间:2014-08-06 09:45:22

标签: mysql database relational-database entity-relationship

我有一个Web应用程序,您可以在其中创建一个组。一个组可以是3个选项之一,

  1. 组织
  2. 客户端
  3. 客户群和团队组相对简单,但组织稍微复杂一些。

    一个组织可以有多个客户端,现在我的困惑来自于如何创建这种关系,因为组织,客户和团队都保存在同一个表中。设置它的最佳方法是什么?我是否应该创建一个客户端表,该表只包含组表中每个客户端的唯一ID和ID,并在该表和组表之间创建关系?

1 个答案:

答案 0 :(得分:1)

我理解它的方式,您的应用程序需要分层组。换句话说,组织是一个组,但它还包含另一个组,例如客户端。根据您的评论,您似乎希望将所有三个视为群组。

我可以建议下表:

entity
+ id INT UNSIGNED AUTO_INCREMENT
+ parentId INT UNSIGNED
+ type ENUM ('Client','Team','Organization')
+ name VARCHAR(255)
+ address VARCHAR(255)

对于组织等顶级实体,parentId将为零。对于客户端/团队组,parentId将引用组织组的ID。实际上,通过上述定义,任何类型的层次结构都是可能的。

如果不同组的列需要不同,则需要多个表,但如上所述,一个表可以包含组层次结构。