Здравствуйте! Я новичок в данной области и нуждаюсь в ответах.
При создании не сложной БД через MySQL Workbench, понадобилось сделать связь трех таблиц, где две из них соединяются по вторичному ключу к третьей таблице. Данные связи я построил в EER Diagram, но вот когда создаю БД через сгенерированный скрипт мне пишет вот такую ошибку: Error Code: 1826. Duplicate foreign key constraint name 'id_product' (таблица Booking). Может знаете в чем проблема?
EER модель:
Генерируемый код:
-- MySQL Script generated by MySQL Workbench
-- Tue Sep 15 13:16:18 2020
-- Model: New Model Version: 1.0
-- MySQL Workbench Forward Engineering
SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';
-- -----------------------------------------------------
-- Schema mydb
-- -----------------------------------------------------
-- -----------------------------------------------------
-- Schema mydb
-- -----------------------------------------------------
CREATE SCHEMA IF NOT EXISTS `mydb` DEFAULT CHARACTER SET utf8 ;
USE `mydb` ;
-- -----------------------------------------------------
-- Table `mydb`.`Product`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`Product` (
`id_product` INT NOT NULL,
`category` VARCHAR(45) NOT NULL,
`name` VARCHAR(45) NOT NULL,
`amount` INT NOT NULL,
`price` REAL NOT NULL)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `mydb`.`Production`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`Production` (
`id_produciton` INT NOT NULL AUTO_INCREMENT,
`id_product` INT NOT NULL,
`amount` INT NOT NULL,
`date` DATE NOT NULL,
PRIMARY KEY (`id_produciton`),
INDEX `id_product_idx` (`id_product` ASC) VISIBLE,
CONSTRAINT `id_product`
FOREIGN KEY (`id_product`)
REFERENCES `mydb`.`Product` (`id_product`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `mydb`.`Client`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`Client` (
`id_client` INT NOT NULL AUTO_INCREMENT,
`FIO` TEXT(128) NOT NULL,
`organiz_name` TEXT(128) NOT NULL,
`city` TEXT(128) NOT NULL,
`delivery_address` TEXT(128) NOT NULL,
`cont_phone` VARCHAR(45) NOT NULL,
`emale` VARCHAR(45) NOT NULL,
PRIMARY KEY (`id_client`))
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `mydb`.`Booking`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`Booking` (
`id_booking` INT NOT NULL AUTO_INCREMENT,
`id_client` INT NOT NULL,
`id_product` INT NOT NULL,
`amount` INT NOT NULL,
`data` DATE NOT NULL,
PRIMARY KEY (`id_booking`),
INDEX `id_product_idx` (`id_product` ASC) VISIBLE,
INDEX `id_client_idx` (`id_client` ASC) VISIBLE,
CONSTRAINT `id_product`
FOREIGN KEY (`id_product`)
REFERENCES `mydb`.`Product` (`id_product`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `id_client`
FOREIGN KEY (`id_client`)
REFERENCES `mydb`.`Client` (`id_client`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
SET SQL_MODE=@OLD_SQL_MODE;
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;