在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的组合像在外部参照表中一样是唯一的。我的最新作品灵感来自乔治,效果不错。