外键或空值

时间:2011-12-06 17:58:16

标签: mysql key unique

我有2个表:pagesmenu

我希望将一个指向菜单表的指针作为pages.id的外键。 问题是某些菜单行没有指向页面的链接。 当有人点击链接时会打开一个子菜单。 我是怎么在phpmyadmin中这样做的?

我想要的比赛是1比1还是1比0

由于

也许如果我有一行到页面的id = some_id与pages.body = null 并且我想要没有子菜单的所有菜单都有menu.pages_id = some_id 这是我想要的正确方法吗?

1 个答案:

答案 0 :(得分:2)

使用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;