我试图用外键在MySQL中创建一对多关系。
两个表user和location。每个user可以有多个location,但是每个location只能有一个user。
user
location
我该如何配置?如果可以,我正在使用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由链接字段的位置确定。
1 -> many
many <- 1
通常每个表都有一个唯一id的链接字段称为tablename_id。 其中具有链接字段的表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个用户。但是,用户可以有许多位置。