Интерпретация модельной диаграммы для распределения внешних / первичных ключей - PullRequest
0 голосов
/ 24 марта 2019

https://imgur.com/a/HAlSO7z

Я полностью сбит с толку относительно того, что я должен идентифицировать как первичный ключ для таблицы компонентов flatpack.Для плоских компонентов существует отношение кратности с обеими другими таблицами, хотя я интуитивно склоняюсь к таблице компонентов, потому что это кажется более уместным, и кратность составляет от 0 до Много к 1, в отличие от множества к 1, связанногос компонентами flatpack.

Я пробовал составной ключ как flatpackID, так и componentNo, но столкнулся с ошибками при попытке заполнить таблицу примерами данных.

В настоящее время у меня есть следующеетаблицы:

CREATE TABLE `flatpack_apn` (
    `flatpackid` INT(11) NOT NULL AUTO_INCREMENT,
    `name` TINYTEXT NOT NULL,
    `colour` TEXT NULL DEFAULT NULL,
    `flatpacktype` ENUM('Office','Kitchen','Bedroom','General') NOT NULL,
    `unitprice` DECIMAL(5,2) NULL DEFAULT NULL,
    PRIMARY KEY (`flatpackid`)
)
COLLATE='hp8_english_ci'
ENGINE=InnoDB
AUTO_INCREMENT=2217
;

CREATE TABLE `component_apn` (
    `componentno` INT(11) NOT NULL AUTO_INCREMENT,
    `description` VARCHAR(30) NOT NULL,
    PRIMARY KEY (`componentno`)
)
COLLATE='hp8_english_ci'
ENGINE=InnoDB
AUTO_INCREMENT=20
;

Для таблицы flatpackcomponents_apn (таблица в споре) я предварительно поставил следующий код:

CREATE TABLE `flatpackcomponents_apn` (
    `flatpackid` INT(11) NOT NULL DEFAULT '12',
    `componentno` INT(11) NOT NULL DEFAULT '23',
    `quantity` INT(10) NOT NULL,
    PRIMARY KEY (`componentno`, `flatpackid`),
    INDEX `flatpackid` (`flatpackid`),
    INDEX `componentno` (`componentno`),
    CONSTRAINT `flatpackcomponents_apn_ibfk_1` FOREIGN KEY (`flatpackid`) REFERENCES `flatpack_apn` (`flatpackid`),
    CONSTRAINT `flatpackcomponents_apn_ibfk_2` FOREIGN KEY (`componentno`) REFERENCES `component_apn` (`componentno`)
)
COLLATE='hp8_english_ci'
ENGINE=InnoDB
;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...