Bau*_*aub 15 mysql database-design foreign-keys foreign-key-relationship
可能重复:
MySQL关系
我试图用外键在MySQL中创建一对多的关系.
两张桌子,user和location.每个都user可以有很多locations,但每个location只能有一个user.
我该如何配置?我正在使用HeidiSQL,如果这有帮助,虽然我也可以输入代码.
Joh*_*ica 39
MySQL不知道,也不需要知道关系是1-1还是1-many.
没有SQL支持许多关系,所有这些都需要一个中间表,它将多对多关系分成2个单独的1-many.
不同之处在于控制关系的逻辑,即在您编写的代码中.
通过使表共享相同的主键来维持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
Run Code Online (Sandbox Code Playgroud)
关系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
.......
Run Code Online (Sandbox Code Playgroud)
通过在location表中放置链接字段,可以强制执行以使位置只能有1个用户.但是,用户可以拥有许多位置.
CREATE TABLE parent (
id INT NOT NULL,
PRIMARY KEY (id)
) ENGINE=INNODB;
CREATE TABLE child (
id INT,
parent_id INT,
INDEX par_ind (parent_id),
FOREIGN KEY (parent_id) REFERENCES parent(id) ON DELETE CASCADE
) ENGINE=INNODB;
Run Code Online (Sandbox Code Playgroud)
在您的示例中,用户与父级相同(用户具有多个位置,父级具有多个子级),且位置与子级相同(位置具有一个用户,子级具有一个父级)
| 归档时间: |
|
| 查看次数: |
59234 次 |
| 最近记录: |