2015-03-01 3 views
0

У меня есть три таблицы: A, B, C. Таблица C имеет два FK, которые указывают на A id и B id.mysql two FK в той же таблице

Когда я пытаюсь вставить что-то внутри C, если я заполню столбец FK, который указывает на A с допустимым идентификатором, и пусть таблица FK для B пуста или нуль или ноль, MYSQL выбрасывает ошибку и говорит, что у меня есть другой FK заполнить.

Какое оптимальное решение этой проблемы?

Я думал, что было бы хорошо иметь две таблицы C, одну для A и другую для B: C_A, C_B с одним FK в каждом из них.

Я должен учитывать, что я использую также Hibernate JPA, и решение, которое у меня будет, будет работать нормально. Но это будет означать одну дополнительную таблицу с той же ролью.

Каково ваше мнение об этой проблеме?

+3

ФКС может быть пустым *, если они настроены на разрешение аннулирует *. Фактически вы отправляете ПОЛНОЕ определение вашей таблицы, иначе люди должны угадать –

ответ

1

После того, как я прочитал замечание, которое дал мне Нил Стоктон, я заметил, что на тех столбцах FKs я установил значение по умолчанию «0». Вот почему, даже если я ввел NULL для одного из FK, он выбросил ошибку.

CREATE TABLE `C` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `A_id` int(11) DEFAULT '0', 
    `B_id` int(11) DEFAULT '0', 
    ... 
) 

Решение

CREATE TABLE `C` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `A_id` int(11), 
    `B_id` int(11), 
    ... 
) 
Смежные вопросы