Vreemde sleutel of nulwaarde

I have 2 tables: pages and menu

Ik wil een aanwijzer in de menutabel hebben als een externe sleutel voor pages.id. Het probleem is dat sommige menure rijen geen koppeling naar de pagina hebben. Wanneer iemand klikt in de link opent een submenu. Hoe doe ik dit in phpmyadmin?

De wedstrijd die ik wil is 1 op 1 of 1 op 0

Bedankt

Misschien als ik een rij naar pagina's heb die id = some_id met pages.body = null heeft en alle menu's die ik geen submenu wil hebben, hebben menu.pages_id = some_id Is dit de juiste manier om te doen wat ik wil?

2

1 antwoord

Het gebruik van een bepaalde magische waarde voor menu.pages_id werkt niet omdat die waarde, ongeacht de waarde, in een of andere rij in de tabel pages moet voorkomen.

De juiste manier om dit te doen is om menu.pages_id NULL te laten accepteren. Het is legaal voor een kolom om nihil te zijn, zelfs als deze deel uitmaakt van een UNIEKE voorwaarde en een BUITENGEWONE KEY-beperking.

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