gpt4 book ai didi

mysql - 如何防止将重复对插入到查找表中?

转载 作者:行者123 更新时间:2023-11-29 19:52:45 25 4
gpt4 key购买 nike

我正在尝试在 CARITEM 表之间建立关系。

由于一辆汽车可以与其他汽车拥有相同的组件,并且一个元素可以在许多汽车中使用。我决定使用多对多关系来解决这个问题。

此问题迫使我从中间表的 car_idcaritem_list_iditem_list 中删除 PK

但是...我如何防止插入重复对(下面的红色框)的条目

@Barmar 请求的其他信息:

CREATE TABLE `car_item` (
`id_car_item` int(11) NOT NULL AUTO_INCREMENT,
`car_idcar` int(11) NOT NULL,
`item_list_iditem_list` int(11) NOT NULL,
PRIMARY KEY (`id_car_item`),
UNIQUE KEY `car_idcar_UNIQUE` (`car_idcar`),
UNIQUE KEY `item_list_iditem_list_UNIQUE` (`item_list_iditem_list`),
KEY `fk_car_has_item_list_item_list1_idx` (`item_list_iditem_list`),
KEY `fk_car_has_item_list_car1_idx` (`car_idcar`),
CONSTRAINT `fk_car_has_item_list_car1` FOREIGN KEY (`car_idcar`) REFERENCES `car` (`idcar`) ON DELETE NO ACTION ON UPDATE NO ACTION,
CONSTRAINT `fk_car_has_item_list_item_list1` FOREIGN KEY (`item_list_iditem_list`) REFERENCES `item_list` (`iditem_list`) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8

完整架构创建脚本位于:http://pastebin.com/1vPYxswd

enter image description here

最佳答案

每列上不应该有唯一的键,列的组合上应该有唯一的键。这允许每列单独复制,但不能复制它们对。因此,您可以对同一个 car 有多个引用,也可以对同一个 item_list 有多个引用,但不能在同一个 caritem_list

CREATE TABLE `car_item` (
`id_car_item` int(11) NOT NULL AUTO_INCREMENT,
`car_idcar` int(11) NOT NULL,
`item_list_iditem_list` int(11) NOT NULL,
PRIMARY KEY (`id_car_item`),
UNIQUE KEY `car_idcar_iditem_list_UNIQUE` (`car_idcar`, `item_list_iditem_list`),
CONSTRAINT `fk_car_has_item_list_car1` FOREIGN KEY (`car_idcar`) REFERENCES `car` (`idcar`) ON DELETE NO ACTION ON UPDATE NO ACTION,
CONSTRAINT `fk_car_has_item_list_item_list1` FOREIGN KEY (`item_list_iditem_list`) REFERENCES `item_list` (`iditem_list`) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8

参见Creating UNIQUE constraint on multiple columns in MySQL Workbench EER diagram

关于mysql - 如何防止将重复对插入到查找表中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40777851/

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