Я делаю небольшую базу данных с MySQL Workbench. У меня есть главная таблица под названием "Immobili", в которой есть первичный ключ, состоящий из четырех столбцов: (Comune, Via, Civico, Immobile).
Теперь у меня также есть три другие таблицы, имеющие один и тот же первичный ключ (Comune, Via, Civico, Immobile), но эти поля также ссылаются на таблицу Immobili.
Первый вопрос: могу ли я сделать первичный ключ, который также является внешним ключом?
Второй вопрос: когда я пытаюсь экспортировать изменения, он говорит: Выполнение SQL script на сервере
# ERROR: Error 1005: Can't create table 'dbimmobili.condoni' (errno: 150)
CREATE TABLE IF NOT EXISTS `dbimmobili`.`Condoni` (
`ComuneImmobile` VARCHAR(50) NOT NULL ,
`ViaImmobile` VARCHAR(50) NOT NULL ,
`CivicoImmobile` VARCHAR(5) NOT NULL ,
`InternoImmobile` VARCHAR(3) NOT NULL ,
`ProtocolloNumero` VARCHAR(15) NULL ,
`DataRichiestaSanatoria` DATE NULL ,
`DataSanatoria` DATE NULL ,
`SullePartiEsclusive` TINYINT(1) NULL ,
`SullePartiComuni` TINYINT(1) NULL ,
`OblazioneInEuro` DOUBLE NULL ,
`TecnicoOblazione` VARCHAR(45) NULL ,
`TelefonoTecnico` VARCHAR(15) NULL ,
INDEX `ComuneImmobile` (`ComuneImmobile` ASC) ,
INDEX `ViaImmobile` (`ViaImmobile` ASC) ,
INDEX `CivicoImmobile` (`CivicoImmobile` ASC) ,
INDEX `InternoImmobile` (`InternoImmobile` ASC) ,
PRIMARY KEY (`ComuneImmobile`, `ViaImmobile`, `CivicoImmobile`, `InternoImmobile`) ,
CONSTRAINT `ComuneImmobile`
FOREIGN KEY (`ComuneImmobile` )
REFERENCES `dbimmobili`.`Immobile` (`ComuneImmobile` )
ON DELETE CASCADE
ON UPDATE CASCADE,
CONSTRAINT `ViaImmobile`
FOREIGN KEY (`ViaImmobile` )
REFERENCES `dbimmobili`.`Immobile` (`ViaImmobile` )
ON DELETE CASCADE
ON UPDATE CASCADE,
CONSTRAINT `CivicoImmobile`
FOREIGN KEY (`CivicoImmobile` )
REFERENCES `dbimmobili`.`Immobile` (`CivicoImmobile` )
ON DELETE CASCADE
ON UPDATE CASCADE,
CONSTRAINT `InternoImmobile`
FOREIGN KEY (`InternoImmobile` )
REFERENCES `dbimmobili`.`Immobile` (`InternoImmobile` )
ON DELETE CASCADE
ON UPDATE CASCADE
) ENGINE = InnoDB
Отображение состояния двигателя:
Ошибка ограничения внешних ключей таблицы dbimmobili/valutazionimercato:
Невозможно найти индекс в ссылочной таблице, где ссылочные столбцы отображаются в качестве первых столбцов, или столбцы typse в таблице, а ссылочная таблица не соответствует ограничениям. Обратите внимание, что внутренний тип хранения ENUM и SET изменен в таблицах, созданных с помощью >= InnoDB-4.1.12, и такие столбцы в старых таблицах не могут ссылаться на такие столбцы в новых таблицах.
Где я ошибаюсь?