Black Friday = Pricewatch Bekijk onze selectie van de beste Black Friday-deals en voorkom een miskoop.
Toon posts:

[SQL] Foreign key laten verwijzen naar dezelfde tabel?

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hallo,

een programmeur stuurt mij een ontwerp voor een paar tabellen die ik moet toevoegen in onze SQL Database.

Alles is duidelijk, behalve 1 ding. Hij zegt dat het kan, maar ik heb een ander mening. Volgens mij niet.

De naam van de tabel is: MenuItem

code:
1
2
menuItemId        primary key
parentId          foreign key (MenuItem.menuItemId)



Dus hij zegt dat "parentId" een foreign key is van de primary key in dezelfde tabel.

Ik zei tegen hem: "Een Foreign Key kan toch nooit verwijzen naar dezelfde tabel, maar dit moet toch altijd naar Key in een andere tabel verwijzen? Of zie ik dit verkeerd?"

Zijn antwoord: "Dat kan gewoon. Is geen probleem. Het legt gewoon een parent->child relatie vast"

Heeft dat nut in 1 tabel? Die relatie kan ik in ieder geval niet leggen.

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 08:25

Janoz

Moderator Devschuur®

!litemod

Of het kan is heel makkelijk te proberen. Het heeft helemaal niks met meningen te maken :D. Voor zover ik weet kan het ook gewoon, zolang de parentID null kan zijn (anders kun je immers nooit beginnen met invoegen, of moet je records naar zichzelf laten verwijzen).

Een mening komt pas om de hoek kijken bij de vraag of iets nuttig is. Een dergelijke recursieve relatie kan best nuttig zijn. Zolang je verwacht dat elke gedefinieerde parent uberhaupt wel bestaat dan is deze foreign key precies wat je nodig hebt.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Verwijderd

Topicstarter
Janoz schreef op donderdag 26 juni 2008 @ 09:56:
Of het kan is heel makkelijk te proberen. Het heeft helemaal niks met meningen te maken :D. Voor zover ik weet kan het ook gewoon, zolang de parentID null kan zijn (anders kun je immers nooit beginnen met invoegen, of moet je records naar zichzelf laten verwijzen).

Een mening komt pas om de hoek kijken bij de vraag of iets nuttig is. Een dergelijke recursieve relatie kan best nuttig zijn. Zolang je verwacht dat elke gedefinieerde parent uberhaupt wel bestaat dan is deze foreign key precies wat je nodig hebt.
Als je het zo uitleg, zou het best kunnen kloppen :P

Als ik info opzoek op internet, dan krijg ik te zioen dat een foreign key verwijst naar een andere tabel, daarom snapte ik het al niet

  • Sjoerd
  • Registratie: December 2003
  • Niet online
Kan best hoor, heb het precies hetzelfde in mijn database navigatie tabel :)

Modelbouw - Alles over modelbouw, van RC tot diorama


  • whoami
  • Registratie: December 2000
  • Laatst online: 16:44
Dat kan best.
Je kan best een foreign key maken die verwijst naar dezelfde tabel. Op deze manier is het bv mogelijk om een boomstructuur in je DB op te slaan. (Wat die programmeur dus ook zegt over die parent -> child relatie).

[ Voor 17% gewijzigd door whoami op 26-06-2008 10:16 ]

https://fgheysels.github.io/


  • LinuX-TUX
  • Registratie: December 2003
  • Laatst online: 17-10 10:30
Op deze manier trek ik ook kopietjes uit boekingen. Zo kan ik altijd herleiden hoe het stond en waar het vandaan is gekomen.

Met andere woorden, het kan wel onder voorwaarden van wat Janoz zegt, parentID moet null kunnen zijn.
Pagina: 1