C# - A sysreferences rendszertábla

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

forráskód letöltése
Cikkünkben a sysreferences rendszertáblával ismerkedhetünk meg, mint a felhasználói adatbázisok mindegyikében megtalálható adattáblával. Oszlopait ismertetve kiderül, hogy szervesen kapcsolódik az adatbázis más rendszertábláihoz, és egy korábban ismertetett rendszertábla adatait egészíti ki. Egy példán keresztül ismertetjük, hogy mikor kerül bejegyzés ebbe a táblába.
A példához szükséges a SampleDatabase12 adatbázis, melyet a mellékelt SampleDatabase12.sql parancsállomány lefuttatásával hozhatunk létre. A SampleDatabase12.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 sysreferences rendszertábla tartalma a sysforeignkeys rendszertábla tartalmához nagyon hasonlít, mivel ebben is a felhasználói táblák oszlopain létrehozott FOREIGN KEY (idegen kulcs) megszorításokkal kapcsolatosasan találunk információkat, csak kicsit más megközelítésben, néhány adattal kiegészítve.
A táblában 16-16 oszlop szolgálja azt a célt, hogy a hivatkozó, illetve hivatkozott táblákban megjelölje, mely tábla mely oszlopára (oszlopaira) vonatkozik az illető megszorítás. Míg a sysforeignkeys táblában egy több oszlopra vonatkozó megszorítás bejegyzése több sorban szerepel, addig a sysreferences rendszertáblában ez egy rekordba sűríthető. Oszlopai a következők:
Oszlop neve Típus Leírás
constid int Az idegen kulcs megszorítás sysobjects rendszertáblabeli azonosítója.
fkeyid int Az idegen kulcs megszorítást tartalmazó tábla sysobjects rendszertáblabeli azonosítója.
rkeyid int A hivatkozott tábla sysobjects rendszertáblabeli azonosítója.
rkeyindid smallint A deklarált idegen kulcs megszorítás indexként is regisztrálódik a sysindexkeys rendszertáblában. Az itt megjelenő szám jelenti azt, hogy a hivatkozott oszlop az indexben hányadik oszlopnak felel meg (’keyno’ oszlop értéke a sysindexkeys táblában).
keycnt smallint Az idegen kulcs megszorításban résztvevő oszlopok száma.
forkeys varbinary(32) Belső használatra.
refkeys varbinary(32) Belső használatra.
fkeydbid smallint Fenntartva.
rkeydbid smallint Fenntartva.
fkey1 - fkey16 smallint Az idegen kulcs megszorítást tartalmazó tábla oszlopait tartalmazó oszlopok, melyek részt vesznek a megszorításban. A szám az oszlop sorszáma.
rkey1 - rkey16 smallint A hivatkozott tábla oszlopai, melyek idegen kulcsok egy másik táblában. A szám az oszlop sorszáma.
A mellékelt példában a ’SYSREFERENCES tábla’ feliratú fül alatt találjuk a rendszertáblával kapcsolatos művelet elvégzésének lehetőségét. A fül alatti egyetlen gombbal egy FK_Orders nevű idegen kulcs megszorítás deklarálható az Orders tábla ProductID oszlopára.
A megszorítás a Products tábla ProductID oszlopára hivatkozik. Ez az oszlop elsődleges kulcs az adott táblában. A nyomógombra kattintva a megszorítás létrejön, ismételten megnyomva a megszorítás törlésre kerül.
A sysreferences rendszertáblába bekerült bejegyzésben látható, hogy a megszorításban résztvevő oszlop az Orders tábla második oszlopa, így a fkey1 oszlopban 2 érték jelenik meg. A Products tábla első oszlopára deklaráltunk egy elsődleges kulcs megszorítást, így mivel ez az oszlop idegen kulcs az Orders táblában, ennek oszlopszáma – 1 érték – jelenik meg a rkey1 oszlopban.

MS SQL Server rendszertáblái cikksorozat