在MySql中外部参照相同的表

在MySql中外部参照相同的表,mysql,Mysql,我需要创建一个MySql关系数据库,并满足以下简单要求: 一个客户端可以有多个订阅者,这些订阅者本身就是客户端 一个客户机可以有许多联系人,这些联系人本身就是客户机 看起来我需要两个外部参照表,但是它们外部参照的是同一个表(客户端) 到目前为止,我似乎能够设计的唯一方法如下: 这似乎不切实际,因为联系人和订户都只是引用一个客户端 我感觉我错过了一些明显的东西 *编辑* 根据下面的第一条评论,我得出了下面的简化表 您可以定义您的客户有许多订户和联系人如下- 表格:客户端 +----+----

我需要创建一个MySql关系数据库,并满足以下简单要求:

  • 一个客户端可以有多个订阅者,这些订阅者本身就是客户端

  • 一个客户机可以有许多联系人,这些联系人本身就是客户机

看起来我需要两个外部参照表,但是它们外部参照的是同一个表(客户端)

到目前为止,我似乎能够设计的唯一方法如下:

这似乎不切实际,因为联系人和订户都只是引用一个客户端

我感觉我错过了一些明显的东西

*编辑*

根据下面的第一条评论,我得出了下面的简化表


您可以定义您的
客户
有许多
订户
联系人
如下-

表格:
客户端

+----+-------------+----------------------+
| id | name        | email                |
+----+-------------+----------------------+
| 1  | A           | email@example.com    |
+----+-------------+----------------------+
注意:
id
是主键

表格:
订户

+----+-------------+----------------------+
| id | client_id   | status               |
+----+-------------+----------------------+
| 1  | 1           | Y                    |
+----+-------------+----------------------+
| 2  | 3           | Y                    |
+----+-------------+----------------------+
注意:
id
是主键,
client\u id
clients
表的外键

表格:
联系人

+----+-------------+----------------------+
| id | client_id   | status               |
+----+-------------+----------------------+
| 1  | 1           | Y                    |
+----+-------------+----------------------+
| 2  | 3           | Y                    |
+----+-------------+----------------------+
注意:
id
是主键,
client\u id
clients
表的外键


您不需要表格
联系人
订户
。只需制作两次表
client\u contact
client\u订户
参考表
client
。换句话说,创建引用表
client
的字段
contact\u id
subscriber\u id
外键。现在有道理了——我应该意识到我可以参考一张表两次。我想在某种程度上,我将客户机表视为一个实例而不是一个对象(如果这是一种有效的查看方式的话)。现在效果很好!我认为问题在于,我不能为订阅者和联系人提供重复的ID,因为它们是主键。我需要有一些条目,比如说你的联系人:1,1,y-2,3,y-2,4,y-2,5.yy你不能在主键
id
中使用重复项。它是自动递增的。您可以在
客户机id
@dbertels中使用复制这对我不起作用。我需要id和客户端id的组合像在外部参照表中一样是唯一的。我的最新作品灵感来自乔治,效果不错。