gpt4 book ai didi

MYSQL表在另一个表中的相关记录

转载 作者:行者123 更新时间:2023-11-29 12:26:09 25 4
gpt4 key购买 nike

让一个表维护另一个表的相关记录的最佳方法是什么。

示例:

mytbl
-----
id sku

1 sk1
2 sk2
3 sk3
4 sk4
5 sk5
6 sk6
7 sk7

假设记录 1、4 和 3 是“相关的”所以我想维护一个表来告诉我它们是。

relatedTbl
----------
sku related_sku

sk1 sk3
sk1 sk4
sk3 sk4

这个解决方案可行,但是有更好的解决方案吗?

编辑:我在 relatedTbl 中使用了 sku,但我知道我可以(更好)使用 ids。问题更多的是关于表的结构而不是使用什么外键。

最佳答案

您有正确的解决方案。正如您所指出的,使用 ID。如果 sku 是唯一的,请考虑将其用作自然 PK。

CREATE TABLE IF NOT EXISTS `mytbl` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`sku` VARCHAR(45) NULL,
PRIMARY KEY (`id`))
ENGINE = InnoDB;

CREATE TABLE IF NOT EXISTS `relatedTbl` (
`mytbl_id` INT UNSIGNED NOT NULL,
`mytbl_id1` INT UNSIGNED NOT NULL,
PRIMARY KEY (`mytbl_id`, `mytbl_id1`),
INDEX `fk_mytbl_has_mytbl_mytbl1_idx` (`mytbl_id1` ASC),
INDEX `fk_mytbl_has_mytbl_mytbl_idx` (`mytbl_id` ASC),
CONSTRAINT `fk_mytbl_has_mytbl_mytbl`
FOREIGN KEY (`mytbl_id`)
REFERENCES `mytbl` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_mytbl_has_mytbl_mytbl1`
FOREIGN KEY (`mytbl_id1`)
REFERENCES `mytbl` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;

关于MYSQL表在另一个表中的相关记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28283760/

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