Работа с нулями в базе данных MySQL.Один из трех внешних ключей должен быть не нулевым. - PullRequest
1 голос
/ 28 июля 2011

Моя проблема в том, что мне нужно создать таблицу, которая будет иметь внешние ключи, и один из трех внешних ключей должен быть NOT NULL, а остальные должны быть NULL.Есть ли что-нибудь в MySQL, чтобы решить это?Майкл.

Ответы [ 2 ]

1 голос
/ 28 июля 2011

Избегайте обнуляемых внешних ключей - у них есть ряд проблем и недостатков. Как правило, проще и лучше размещать эти столбцы в отдельных таблицах, чтобы вам не приходилось создавать для них пустые значения, когда значения не существует. Это должен быть подход по умолчанию: нормальная форма для каждого отдельного случая, если у вас нет особых причин объединять три столбца в одну таблицу.

0 голосов
/ 28 июля 2011

Ограничения FOREIGN KEY пример:

CREATE TABLE parent 
(
    id INT NOT NULL, PRIMARY KEY (id)
) ENGINE=INNODB;

CREATE TABLE child 
(
    id INT, parent_id INT,
    INDEX par_ind (parent_id),
    FOREIGN KEY (parent_id) REFERENCES parent(id)

) ENGINE=INNODB;
...