Я пытаюсь установить связь между CAR
и ITEM
таблиц.Как предотвратить дублирование пары в таблицу поиска?
Поскольку автомобиль может иметь тот же самый компонент, что и другие автомобили, а изделие можно использовать во многих автомобилях. Я решил использовать отношения «многие ко многим» для этой проблемы.
Этот вопрос заставляет меня удалить PK
из обоих car_idcar
и item_list_iditem_list
на средний стол.
Но ... Как я могу предотвратить попадание дубликата пары (red box below
) от вставляется
Дополнительная информация, как @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
Уважаемый @Barmar, если я отмечаю 'car_idcar, item_list_iditem_list' в качестве уникальных ключей для среднего стола, как я могу связать' автомобиль многократным и '' деталей многократным автомобиля к пункту '? – NoppNLearner
Это сложный ключ. Каждому столбцу разрешено использовать несколько раз, это единственная ** комбинация **, которая должна быть уникальной. – Barmar
Таким образом, вы можете иметь '(1, 1), (1, 2), (1, 3), (2, 3)', но вы не можете иметь '(1, 1), (1, 1) (1, 2), (1, 3), (2, 3) ' – Barmar