C# - A sysforeignkeys rendszertábla

MS SQL Server rendszertáblái 6. rész

forráskód letöltése
A cikksorozatnak ebben a számában a sysforeignkeys rendszertáblával foglalkozunk részletesebben, mely szintén minden létrejövő adatbázisban megtalálható. Cikkünkből kiderül, hogy milyen adatok tárolására használja a rendszer a táblát, valamint hogy milyen kapcsolatban van az adott adatbázis más rendszertáblájával.
A példához szükséges a SampleDatabase06 adatbázis, melyet a mellékelt SampleDatabase06.sql lefuttatásával hozhatunk létre. A SampleDatabase06.sql script 5. sorában adja meg helyesen a létrehozandó adatbázisfájlok mappájának nevét és elérési útvonalát.
A sysforeignkeys rendszertábla - mint nevéből is kiderül -, az adatbázisban a táblák készítésekor, vagy utólag az ALTER TABLE utasítással létrehozott idegen kulcs megszorításokkal kapcsolatban tartalmaz bejegyzéseket.
Szoros kapcsolatban áll az adatbázis másik rendszertáblájával, a sysobjects táblával, ugyanis a létrehozott idegen kulcs megszorítások először ide kerülnek bejegyzésre egy azonosítóval, mely a megszorításokat azonosítja a sysforeignkeys táblában. Vizsgáljuk meg a tábla oszlopait:
Sorszám Oszlopnév Típus Leírás
1 constid int Az idegen kulcs megszorítás azonosítója.
2 fkeyid int A tábla azonosítója, melyben a megszorítást deklaráltuk.
3 rkeyid int A tábla azonosítója, melynek PRIMARY KEY megszorítással rendelkező oszlopa idegen kulcs az előző táblában.
4 fkey smallint A tábla oszlopának sorszáma, melyre az idegen kulcs megszorítást deklaráltuk.
5 rkey smallint A tábla oszlopának sorszáma, melyre a megszorításban hivatkozunk.
6 keyno smallint A hivatkozott oszlop sorszáma az oszloplistában.
Mellékelt alkalmazásunkban nyomon követhetjük, amint egy idegen kulcs megszorítást deklarálva az egyik adattáblában milyen adatok kerülnek be ezzel kapcsolatban a sysforeignkeys rendszertáblába.
A SampleDatabase06.sql script lefuttatása után két tábla kerül az adatbázisba: Products és Orders névvel. A ’Products’ nevű tábla ProductID oszlopára létrehozunk egy PRIMARY KEY megszorítást. A szintén az adatbázisba került ’MakeForeignKey’ tárolt eljárással létrehozhatunk egy FOREIGN KEY megszorítást FK_Orders néven az Orders táblában a Products tábla ProductID oszlopára hivatkozva, a ’DropForeignKey’ tárolt eljárással megszüntethetjük azt.
Az idegen kulcs megszorítást létrehozva a megfelelő bejegyzés létrejön a sysforeignkeys rendszertáblában, mely eddig üres volt, hiszen adatbázisunkban a FK_Orders megszorítás volt az egyetlen.
Az alkalmazás Form-ján megtalálható TabControl fülein látható egyrészt a két adattábla, hogy követhető legyen, milyen oszlopok vesznek részt a megszorításban, valamint a két érintett rendszertábla, sysobjects és sysforeignkeys.
Az alkalmazás segítségével, az ’Idegen kulcs megszorítás létrehozása az Orders táblában’ feliratú gombra kattintva létrehozható az idegen kulcs megszorítás. A megszorítás törléséhez a megváltozott feliratú gombra kell ugyancsak kattintani.
A megszorítást deklarálva a sysobject táblában egy azonosítót kap a FK_Orders megszorítás, mely azonosítóval megtaláljuk a bejegyzést a sysforeignkeys táblában.
A sysobject táblába került bejegyzés a következő:
1 2 3
FK_Orders 5575058 F
A második oszlopban megfigyelgető azonosítóval pedig a következő bejegyzés jelenik meg a sysforeignkeys táblában:
1 2 3 4 5 6
5575058 2009058193 1977058079 2 1 1

MS SQL Server rendszertáblái cikksorozat