У меня 4 таблицы здесь:композитный внешний ключ добавления не
CREATE TABLE paper (
id VARCHAR(20) PRIMARY KEY,
name VARCHAR(30)
) ENGINE =INNODB;
CREATE TABLE subscriber (
id VARCHAR(10) PRIMARY KEY,
name VARCHAR(20),
address VARCHAR(30),
suburb VARCHAR(20),
state VARCHAR(3),
postcode VARCHAR(4))
round_id INTEGER NOT NULL,
FOREIGN KEY (round_id) REFERENCES round (id)
ON UPDATE CASCADE ON DELETE RESTRICT
) ENGINE = INNODB;
CREATE TABLE current_order (
paper_id VARCHAR(20),
subscriber_id VARCHAR(10),
PRIMARY KEY (paper_id, subscriber_id),
FOREIGN KEY (paper_id) REFERENCES paper (id)
ON UPDATE CASCADE ON DELETE RESTRICT,
FOREIGN KEY(subscriber_id) REFERENCES subscriber (id)
ON UPDATE CASCADE ON DELETE RESTRICT)
ENGINE = INNODB;
CREATE TABLE receipt (
id INTEGER PRIMARY KEY AUTO_INCREMENT,
receipt_date DATE,
paid_till_date DATE,
paper_id VARCHAR(20),
subscriber_id VARCHAR(10))
ENGINE = INNODB;
Теперь таблица бумага имеет первичный идентификатор ключа, он ссылается paper_id в таблице current_order. Абонент таблицы имеет идентификатор первичного ключа, на него ссылается абонент_id в таблице current_order. Tabe current_order имеет составной первичный ключ (paper_id, subscriber_id). Таким образом, эти три таблицы были связаны друг с другом через отношения внешних ключей.
Если я хочу получить последнюю таблицу, связанную с этими тремя таблицами, как мне это сделать? Моя идея состояла в 1: установить сложный внешний ключ (paper_id, subscriber_id), ссылающийся на составной первичный ключ (paper_id, subscriber_id) в таблице current_order. 2: установить два одиночных внешних ключа (paper_id) и (subscriber_id), ссылающихся на (paper_id) и) subscriber_id) в таблице current_order отдельно.
Ни один из методов не работал, и в нем возникла ошибка 1452: невозможно добавить или обновить дочернюю строку. Итак, я действительно отчаянно хочу узнать, как правильно установить связь между приемом таблицы и таблицей current_order? здесь Е-R биграмма:
Существует две связи между получением таблицы и таблицы current_order и я обязан установить отношения в соответствии с этим.
Вы можете иметь несколько отдельных полей 'foreign_key' в таблице. Просто добавьте отношения 'foreign_key' в' paper_id' и 'subscriber_id' в таблицу' receipt'? Кроме того, imo, если только у '' receipt' 'есть' paper_id' и 'subscriber_id', я спрашиваю, должны ли они быть в таблице« получения »вообще? –
да, у каждой квитанции есть документ-идентификатор, а у абонента_ид – Frostless