Sommige database management applicaties omgaan met hiërarchische gegevens, zoals staten gemaakt van provincies die op hun beurt steden bevatten . Je zou in de verleiding om deze informatie te organiseren in aparte tabellen in uw DBMS - een voor elk niveau van de hiërarchie - maar een elegantere oplossing maakt gebruik van een self- referencing tafel , dat is eenvoudiger te beheren en biedt een breder scala aan gegevens . Self - Verwijzen Tafel Om een self - referencing tabel te maken , zult u beginnen met twee velden , een ID -nummer en een ouder ID-nummer . Om deze velden , kunt u anderen die geschikt is voor de toepassing , zoals naam , beschrijving , locatie of de bevolking toe . Voor het gemak kunt u het ID-nummer instellen op een auto- nummering soort veld, zodat de database automatisch aantallen nieuwe records in oplopende volgorde . De ouder ID referenties het ID-nummer van het bovenliggende record in de hiërarchie , als het record heeft geen ouder , kunt u dit veld op nul . Bijvoorbeeld , het record voor Californië heeft een ID van een en een ouder ID van nul . Het record voor San Francisco County heeft een ID van twee en een ouder -ID van een. Elk kind record in de tabel referenties bovenliggende records in dezelfde tabel ; . De tabel is self - referencing Consolidatie Een van de gevolgen van zelf -referentie tabellen is een consolidatie van meerdere tabellen in een enkele tabel . Met minder tafels vereenvoudigt de database en vergemakkelijkt het onderhoud . Moderne databasesystemen gemakkelijk geschikt miljoenen records per tafel , dus houden allemaal van een hiërarchie van data -elementen in een tabel is geen probleem . Door het instellen van het ID-veld een primaire sleutel en de ouder -ID aan een index , kunt u eenvoudig alle gegevens langs een tak van de hiërarchie . Flexibiliteit een database die een tabel heeft voor elk niveau in een hiërarchie werkt goed totdat een nieuw niveau verschijnt , als je moet dan toevoegen van een nieuwe tabel om de verandering tegemoet en wijzigen van alle toepassingsprogramma's de dat de database te gebruiken . Daarentegen , een self - referencing tafel biedt plaats aan een willekeurig aantal hiërarchische niveaus . Het bovenliggende veld ID wijst altijd naar het volgende niveau in de hiërarchie , zodat de records vormen een consistente keten . Het aantal niveaus in de hiërarchie kan hetzelfde zijn voor alle ouders administratie of het kan variëren, de zelf - verwijzingen tafel behandelt beide gevallen Cascading Delete Bij . een self - referencing tabel bevat vele records , kan je je afvragen wat te doen als u een bovenliggende record verwijdert . Tenzij u ook alle onderliggende records verwijdert , loopt u het risico het creëren van " wezen ", of records met ongeldige ouder IDs . Gelukkig is er een mechanisme bestaat om deze situatie automatisch afhandelen . Wanneer u het bovenliggende veld ID aan te maken , kunt u aangeven dat het een vreemde sleutel veld , en gebruik het veld ID als belangrijkste sleutel van de tabel. Zodra je dit hebt gedaan , kunt u de beperking toe , " ON DELETE CASCADE " naar het veld . Met de beperking en de foreign key instellingen in de plaats , zal de database alle bijbehorende onderliggende records verwijderen wanneer u een bovenliggende record verwijdert .
|