Я сделал диаграмму (EER) в MySQL-Workbench, и попытка выполнить «Переадресация инженера в базу данных» выдала мне эту ошибку «Ошибка 1215: не удается добавить ограничение внешнего ключа» и не могу определить ошибку в коде.
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Код:
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Схема loja1182
CREATE SCHEMA IF NOT EXISTS `loja1182` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin ;
USE `loja1182` ;
Таблица loja1182
. distritos
CREATE TABLE IF NOT EXISTS `loja1182`.`distritos` (
`id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
`distrito` VARCHAR(50) NULL,
PRIMARY KEY (`id`))
ENGINE = InnoDB;
Таблица loja1182
. clientes
CREATE TABLE IF NOT EXISTS `loja1182`.`clientes` (
`id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
`nome` VARCHAR(100) NULL,
`morada` VARCHAR(100) NULL,
`data_registo` DATE NOT NULL,
`nrEncomendas` INT(11) NULL,
`idDistrito` INT(11) UNSIGNED NOT NULL,
PRIMARY KEY (`id`),
INDEX `fk_clientes_table11_idx` (`idDistrito` ASC),
CONSTRAINT `fk_clientes_table11`
FOREIGN KEY (`idDistrito`)
REFERENCES `loja1182`.`distritos` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
Стол loja1182
. utilizadores
CREATE TABLE IF NOT EXISTS `loja1182`.`utilizadores` (
`id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
`email` VARCHAR(100) NULL,
`password` VARCHAR(20) NULL,
`total_acessos` INT NULL,
`idCliente` INT(11) UNSIGNED NOT NULL,
PRIMARY KEY (`id`),
INDEX `fk_utilizadores_clientes_idx` (`idCliente` ASC),
CONSTRAINT `fk_utilizadores_clientes`
FOREIGN KEY (`idCliente`)
REFERENCES `loja1182`.`clientes` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
Стол loja1182
. tiposencomenda
CREATE TABLE IF NOT EXISTS `loja1182`.`tiposencomenda` (
`id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
`tipo` VARCHAR(20) NULL,
PRIMARY KEY (`id`))
ENGINE = InnoDB;
Стол loja1182
. estadosencomenda
CREATE TABLE IF NOT EXISTS `loja1182`.`estadosencomenda` (
`id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
`estado` VARCHAR(20) NULL,
PRIMARY KEY (`id`))
ENGINE = InnoDB;
Таблица loja1182
. encomendas
CREATE TABLE IF NOT EXISTS `loja1182`.`encomendas` (
`id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
`idCliente` INT(11) UNSIGNED NOT NULL,
`data` DATE NULL,
`idEstado` INT(11) UNSIGNED NOT NULL,
`idTipo` INT(11) UNSIGNED NOT NULL,
`valor` FLOAT NULL,
PRIMARY KEY (`id`),
INDEX `fk_encomendas_clientes1_idx` (`idCliente` ASC),
INDEX `fk_encomendas_tiposencomenda1_idx` (`idTipo` ASC),
INDEX `fk_encomendas_estadosencomenda1_idx` (`idEstado` ASC),
CONSTRAINT `fk_encomendas_clientes1`
FOREIGN KEY (`idCliente`)
REFERENCES `loja1182`.`clientes` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_encomendas_tiposencomenda1`
FOREIGN KEY (`idTipo`)
REFERENCES `loja1182`.`tiposencomenda` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_encomendas_estadosencomenda1`
FOREIGN KEY (`idEstado`)
REFERENCES `loja1182`.`estadosencomenda` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
Таблица loja1182
. categorias
CREATE TABLE IF NOT EXISTS `loja1182`.`categorias` (
`id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
`categoria` VARCHAR(50) NULL,
PRIMARY KEY (`id`))
ENGINE = InnoDB;
Таблица loja1182
. iva
CREATE TABLE IF NOT EXISTS `loja1182`.`iva` (
`id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
`taxa` FLOAT NULL,
PRIMARY KEY (`id`))
ENGINE = InnoDB;
Стол loja1182
. artigos
CREATE TABLE IF NOT EXISTS `loja1182`.`artigos` (
`id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
`descricao` VARCHAR(100) NULL,
`precos` FLOAT NULL,
`idIva` INT(11) UNSIGNED NOT NULL,
`stock` INT(11) NOT NULL,
`idCategoria` INT(11) UNSIGNED NOT NULL,
PRIMARY KEY (`id`),
INDEX `fk_artigos_categorias1_idx` (`idCategoria` ASC),
INDEX `fk_artigos_iva1_idx` (`idIva` ASC),
CONSTRAINT `fk_artigos_categorias1`
FOREIGN KEY (`idCategoria`)
REFERENCES `loja1182`.`categorias` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_artigos_iva1`
FOREIGN KEY (`idIva`)
REFERENCES `loja1182`.`iva` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
Стол loja1182
. linhasencomenda
CREATE TABLE IF NOT EXISTS `loja1182`.`linhasencomenda` (
`id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
`idEncomenda` INT(11) UNSIGNED NOT NULL,
`idArtigo` INT(11) UNSIGNED NOT NULL,
`quantidade` INT(11) NOT NULL,
PRIMARY KEY (`id`),
INDEX `fk_linhasencomenda_encomendas1_idx` (`idEncomenda` ASC),
INDEX `fk_linhasencomenda_artigos1_idx` (`idArtigo` ASC),
CONSTRAINT `fk_linhasencomenda_encomendas1`
FOREIGN KEY (`idEncomenda`)
REFERENCES `loja1182`.`encomendas` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_linhasencomenda_artigos1`
FOREIGN KEY (`idArtigo`)
REFERENCES `loja1182`.`artigos` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
ОШИБКА:
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Выполнение сценария SQL на сервере ОШИБКА: Ошибка 1215: Невозможно добавить ограничение внешнего ключа Код SQL:
Table `loja1182`.`encomendas`
CREATE TABLE IF NOT EXISTS `loja1182`.`encomendas` (
`id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
`idCliente` INT(11) UNSIGNED NOT NULL,
`data` DATE NULL,
`idEstado` INT(11) UNSIGNED NOT NULL,
`idTipo` INT(11) UNSIGNED NOT NULL,
`valor` FLOAT NULL,
PRIMARY KEY (`id`),
INDEX `fk_encomendas_clientes1_idx` (`idCliente` ASC),
INDEX `fk_encomendas_tiposencomenda1_idx` (`idTipo` ASC),
INDEX `fk_encomendas_estadosencomenda1_idx` (`idEstado` ASC),
CONSTRAINT `fk_encomendas_clientes1`
FOREIGN KEY (`idCliente`)
REFERENCES `loja1182`.`clientes` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_encomendas_tiposencomenda1`
FOREIGN KEY (`idTipo`)
REFERENCES `loja1182`.`tiposencomenda` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_encomendas_estadosencomenda1`
FOREIGN KEY (`idEstado`)
REFERENCES `loja1182`.`estadosencomenda` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB
Выполнение сценария SQL завершено: операторы: 10 успешно выполнено, 1 не выполнено
Получение определений вида в окончательном виде. Ничего не принесло