一对多MySQL
我试图用外键在MySQL中创建一对多关系。
两个表user
和location
。每个user
可以有多个location
,但是每个location
只能有一个user
。
我该如何配置?如果可以,我正在使用HeidiSQL,尽管我也可以输入代码。
回答:
MySQL不知道,也不需要知道关系是1-1还是1-many。
没有SQL支持多对多关系,所有SQL都需要一个中间表,该表将多对多关系拆分为2个单独的1对多关系。
区别在于控制关系的逻辑,即编写的代码。
通过使表共享相同的主键来维持1-1关系。
用辅助表声明该PK作为指向其他表PK的外键。
Table chinese_mother (id integer primary key,
name....
Table chinese_child (
id integer primary key,
name ....
....,
foreign key (id) references chinese_mother.id
关系的方向1 -> many
vs many <- 1
由链接字段的位置确定。
通常每个表都有一个唯一id
的链接字段称为tablename_id
。
其中具有链接字段的表many
在关系的一侧,另一表在1
一侧。
每个用户可以有多个位置,但是每个位置只能有一个用户。
Table userid: primary key
name......
.....
Table location
id: primary key
user_id foreign key references (user.id)
x
y
.......
通过将链接字段放在location
表中,您可以强制执行操作,因此一个位置只能有1个用户。但是,用户可以有许多位置。
以上是 一对多MySQL 的全部内容, 来源链接: utcz.com/qa/414884.html