Op vrijdag 12 oktober 2001 16:31 schreef drm het volgende:
[..]
Ik bedoel maar aan te geven dat je de query kan genereren met een recursive functie.
Als de query dan gegenereert is kan je hem doen aan de database. Krijg je alleen een leipe bende aan result terug, maar die kan je vervolgens ook weer recursief afhandelen...
Desnoods zou je de query ook met een JOIN kunnnen doen...
* drm is benieuwd of MrX zijn idee een beetje begrijpt...

Uhm .... nee helaas, volgens mij begrijp ik het niet.
Neem de volgende data:
NodeID ParentID Type
1 Null 1
2 1 1
3 1 1
4 2 1
Je wil de hele boom laten zien, dus:
1
|-2
| |-4
|
|-3
Dan doe je volgens mij de volgende query om de start node te vinden:
SELECT NodeID
FROM Struct
WHERE ParentID IS NULL;
Vervolgens het je de node met NodeID = 1 Dan doe je de query om de kinderen te vinden:
SELECT NodeID
FROM Struct
WHERE ParentID=1;
Je vindt de kinderen met NodeID 2 en 3.
Dan doe je de queries om de kinderen van die node te vinden:
SELECT NodeID
FROM Struct
WHERE ParentID=2;
en
SELECT NodeID
FROM Struct
WHERE ParentID=3;
Je vindt alleen bij NodeID 2 een kind, namelijk 4, dus je gaat hiervoor de kinderen vinden.
SELECT NodeID
FROM Struct
WHERE ParentID=4;
Hierbij vindt je ook niets.
Welgeteld heb je dus 5 queries gedaan voor 4 nodes . Meestal zal je de startnode weten te vinden, zodat je 1 query kan besparen (dus mijn eerdere schatting klopt niet), maar 1 query per node blijft veel.
Op vrijdag 12 oktober 2001 16:19 schreef TheNarfstyler het volgende:
4de en 5de normaalvorm ? Kun je die eens verduidelijken, staan namelijk niet in mijn databases boek

http://www.swi.psy.uva.nl/gegevensbanken/gegevensbanken00-01/ppt-slides/h_6.pdf vanaf pagina 17.
Overigens worden er in NV4 en NV5 geen gegevens toegevoegd voor snelheid alleen verdere afhankelijkheden van gegevens geelimineerd.
Op zich is zijn punt wel terecht. Wat hij zegt is dat een volledig genormaliseerde database zonder redundantie, gegenereerde gegevens en afhankelijkheden theoretisch iets heel moois is, maar in de praktijk soms niet werkt.
In die situaties kan je weloverwogen redundantie, afhankelijkheden en gegenereerde gegevens toevoegen, zolang je ook maar zorgt dat de applicatie hier gebaat bij is en programmatisch zorgt dat de integeriteit van de data niet verloren gaat.
Ook hebben sommige afhankelijkheden geen impact op de applicatie en kun je ze soms beter laten zitten. Dekn aan Nederlandse NAW gegevens. Het volledige adres is funktioneel afhankelijk van de postcode en het huisnummer, maar toch worden deze gegevens normaal gesproken gewoon in 1 tabel opgenomen zonder uit te normaliseren.
HTH