Sorry voor de vage titel maar ik weet niet hoe ik dit moet omschrijven, database design is zowiezo niet mijn ding.
Het volgende maakt mij gek: ik heb een tabel die heet groep. Die tabel kan een relatie hebben met een product. Maar zo'n groep moet ook een relatie kunnen hebben met een andere groep.
Ik heb dat nu heel simplistisch opgelost door een kolom te maken die subid heet. Elke groep heeft zijn eigen id (pk, auto increase) en een subid (gewoon een int). Als het subid 0 is staat de groep op het hoogste niveau, als de waarde van subid > 0 dan verwijst subid naar het id van een andere groep. De tabel met producten verwijst per product gewoon naar een groep_id.
groep A id = 1 subid = 0
groep B id = 2 subid = 1
groep C id = 3 subid = 2
product 1 id = 1 groep_id = 1
etc...
Ziet dan zo uit:
Dit werkt allemaal prima, maar stel dat het ooit zou voorkomen dat ik een foutje maak met programeren en ergens in een "ketting" van groep > groep > groep > groep > product raakt een rij kwijt dan gaan er een helehoop groepen verloren omdat ergens een schakel mist, de database heeft er immers zelf geen controle over middels keys oid....
Dit is ongetwijfeld een veelvoorkomend probleem, dus daar hebben ze vast iets voor verzonnen, ik kom alleen niet op de naam (en dan bedoel ik niet cascade ofzo). Hoe los je dit professioneel op?
Het volgende maakt mij gek: ik heb een tabel die heet groep. Die tabel kan een relatie hebben met een product. Maar zo'n groep moet ook een relatie kunnen hebben met een andere groep.
Ik heb dat nu heel simplistisch opgelost door een kolom te maken die subid heet. Elke groep heeft zijn eigen id (pk, auto increase) en een subid (gewoon een int). Als het subid 0 is staat de groep op het hoogste niveau, als de waarde van subid > 0 dan verwijst subid naar het id van een andere groep. De tabel met producten verwijst per product gewoon naar een groep_id.
groep A id = 1 subid = 0
groep B id = 2 subid = 1
groep C id = 3 subid = 2
product 1 id = 1 groep_id = 1
etc...
Ziet dan zo uit:
code:
1
2
3
| groep A -> Product 1, etc...
|> groep B -> etc...
|> groep C -> etc... |
Dit werkt allemaal prima, maar stel dat het ooit zou voorkomen dat ik een foutje maak met programeren en ergens in een "ketting" van groep > groep > groep > groep > product raakt een rij kwijt dan gaan er een helehoop groepen verloren omdat ergens een schakel mist, de database heeft er immers zelf geen controle over middels keys oid....
Dit is ongetwijfeld een veelvoorkomend probleem, dus daar hebben ze vast iets voor verzonnen, ik kom alleen niet op de naam (en dan bedoel ik niet cascade ofzo). Hoe los je dit professioneel op?
[ Voor 4% gewijzigd door Verwijderd op 20-11-2006 19:47 ]