gpt4 book ai didi

mysql - 如何定义多对多链接表

转载 作者:行者123 更新时间:2023-11-30 21:25:03 25 4
gpt4 key购买 nike

我有一个包含商店和产品表的模式。一个商店记录,可能有很多产品,一个产品可能可供许多商店使用(多对多)为了链接这些,第三个表有商店的 PRIMARY KEY 和产品记录。这个链接表应该有一个复合 PRIMARY KEY 吗?或者,这应该只是两个外键,每个外键都有一个 INDEX()?

CREATE TABLE store(
id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
PRIMARY KEY(id)
) ENGINE=INNODB;

CREATE TABLE product(
id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
PRIMARY KEY(id)
) ENGINE=INNODB;

那么,链接表应该像..

CREATE TABLE store_product_link(
store_id INT NOT NULL,
product_id INT NOT NULL,
INDEX(store_id),
INDEX(product_id),
FOREIGN KEY (store_id) REFERENCES store(id) ON DELETE CASCADE,
FOREIGN KEY (product_id) REFERENCES product(id) ON DELETE CASCADE
) ENGINE=INNODB;

或者应该这样

CREATE TABLE store_product_link(
store_id INT NOT NULL,
product_id INT NOT NULL,
PRIMARY KEY(store_id, product_id)
) ENGINE=INNODB;

最佳答案

两者都有,它应该有一个主键和两个外键。

CREATE TABLE store_product_link(store_id INT NOT NULL, product_id INT NOT NULL,
PRIMARY KEY(store_id, product_id),
FOREIGN KEY (store_id) REFERENCES store(id) ON DELETE CASCADE,
FOREIGN KEY (product_id) REFERENCES product(id) ON DELETE CASCADE) ENGINE=INNODB;

关于mysql - 如何定义多对多链接表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59559908/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com