一对多MySQL

我试图用外键在MySQL中创建一对多关系。

两个表userlocation。每个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 -> manyvs many <- 1由链接字段的位置确定。

通常每个表都有一个唯一id的链接字段称为tablename_id

其中具有链接字段的表many在关系的一侧,另一表在1一侧。

每个用户可以有多个位置,但是每个位置只能有一个用户。

Table user

id: 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

回到顶部