Внешний ключ или нулевое значение - PullRequest
2 голосов
/ 06 декабря 2011

У меня есть 2 таблицы: pages и menu

Я хочу иметь указатель на таблицу меню в качестве внешнего ключа к pages.id. Проблема в том, что некоторые строки меню не имеют ссылки на страницу. Когда кто-то нажимает на ссылку, открывается подменю. Как мне это сделать в phpmyadmin?

Матч, который я хочу, - от 1 до 1 или от 1 до 0

Спасибо

Может быть, если у меня есть строка на страницы с id = some_id with pages.body = null и все меню, которые я хочу иметь без подменю, будут иметь menu.pages_id = some_id Это правильный способ сделать то, что я хочу?

1 Ответ

2 голосов
/ 06 декабря 2011

Использование некоторого магического значения для menu.pages_id не работает, потому что это значение должно существовать в некоторой строке таблицы pages.

Правильный способ сделать это - заставить menu.pages_id принять NULL. Допустимо, чтобы столбец обнулялся, даже если он является частью ограничения UNIQUE и ограничения FOREIGN KEY.

CREATE TABLE menu (
  ...
  pages_id INT NULL,
  UNIQUE KEY (pages_id),
  FOREIGN KEY (pages_id) REFERENCES pages(pages_id)
) ENGINE=InnoDB;
...