Az integritás négy arca
Az integritás négy arca
Az entitások integritása elsődleges kulcsokon keresztül valósul meg. Az egységek sértetlenségének biztosítására vonatkozó szabályok megtiltják az elsődleges kulcsokat, hogy meghatározatlan értékek legyenek, vagy az adatok bármilyen manipulációjának eredményeként. Ezek a szabályok garantálják az asztal egyes sorainak rendelkezésre állását az adatok keresésekor vagy módosításakor. A táblázat bármelyik sorát megtalálhatja, ha megadja az elsődleges kulcs értékét.
Az SQL Server környezetben az egység integritásának biztosítására szolgáló szabványos módszer az egyes táblák elsődleges kulcsainak meghatározása. Ennek érdekében a CREATE TABLE vagy az ALTER TABLE utasítások kiegészítik a CREATE TABLE vagy az ALTER TABLE utasításokat, ahogy az az 1. listán látható. A parancs végrehajtásakor az SQL Server egy egyedi indexet hoz létre az elsődleges kulcsra. Ez a megközelítés garantálja egy olyan szabály végrehajtását, amely megtiltja az ismétlődő érték bevitelét az oszlopba, amelyen az egyedi index épül.
A hivatkozások integritása biztosítja, hogy az egyik táblázatban szereplő érték a másikban meglévő értékre utal. A kapcsolat integritási szabálya kimondja, hogy az idegen kulcs értékének vagy az elsődleges kulcs tartományában kell lennie, vagy nem kell meghatározni. A domain az adott oszlophoz érvényes értékek egy csoportja.
A külső kulcsok, azaz olyan oszlopok, amelyek létrehozzák a "master" nevű referenciatáblához tartozó linkeket egy "rész" nevű referenciatáblával, végrehajtják az egy-sok kapcsolatot (1: M) két táblázat között. Az idegen kulcsnak (a hivatkozó táblában lévő oszlopnak) mindig meg kell felelnie a megfelelő elsődleges kulcsnak (azonos típusú és adathosszú oszlop a keresési táblában). Az idegen kulcs-tartomány nem lépheti túl az ahhoz tartozó elsődleges kulcs tartományát. Ezeknek a domaineknek meg kell egyezniük, különben az idegen kulcsnak meghatározhatatlan értéke lehet.
A trigger egy bizonyos típusú tárolt eljárásokat, amelyek automatikusan elindul, ha egyes műveletek végrehajtása az asztalra, például beillesztése, törlése vagy frissítése sorokat. Mielőtt a műveletet akkor végzi el a vonal (inszerciós vagy deléciós) kódot tartalmazó a ravaszt ellenőrzi egy előre meghatározott feltételt. Attól függően, hogy a vizsgálati eredmények végzett egyik vagy másik része a ravaszt kódot. Mivel a trigger egy kód, igen összetett algoritmusokat és érvényesítési szabályokat állíthat be. Például lehetőség van arra, hogy vizsgálja meg a teljes hivatkozási integritást az adatbázis a skála, és végezze kaszkád törölje az összes sort a referencia táblázatban társított sajátos rekordot a hivatkozó táblázatban. A trigger csak akkor indítható el, ha minden, a DSC részét képező ellenőrzés végrehajtásra került. Bár a DSC gyorsabban működik, mint a trigger, de a rendelkezésre álló képességek valamivel kevesebbek. Használat és DSC, és kiváltja, hogy ellenőrizze az azonos körülmények között nem praktikus, mert a DSC végezzük megkezdése előtt ravaszt, ha a feltétel értékeli DSC negatív eredményt ad, a ravaszt, és nem indul el. A 3. ábrán bemutatjuk a triggerek használatát a referenciális integritás ellenőrzéséhez. A kód ellenőrzi a rendelkezésre álló megfelelő sorra a keresési táblázat, amikor belépnek egy új sor a hivatkozó táblázatban.
A tartomány integritása biztosítja, hogy az oszlop minden értéke egy engedélyezett értékek csoportjához tartozik. Minden oszlop egy bizonyos értékrendet, például egy sor Pubs..zip oszlop magában foglalja az összes ötjegyű szám, és Pubs..au_name oszlop - karaktersorozatok, és Sales..ord_date oszlop - minden hét óra. Ha beállít egy határt az érték egyes elemeit az oszlop, ugyanezen az alapon akkor integritásának biztosítása érdekében a domain. Végrehajtás Domain integritás lehet nagyon egyszerű - csak válassza ki a megfelelő típust az oszlop, és az adatok hosszát. A táblázat fejlécét Pubs adatbázis Pubdate oszlopban megadott datetime adatok típusát és a tilalmat nullhelyet. Egy ilyen tábla alkotója választék biztosítja, hogy az oszlop értékeit, amelyek érvényesek dátumok, például 11/22/99. Ily módon biztosítja a domain integritását.
Az ANSI SQL-89 és SQL-92 szabványok bemutatták a CREATE DOMAIN domain létrehozó operátort, amelyet a Transact SQL (T-SQL) a felhasználó által definiált adattípussal (UDT) feldolgozott, ellenőrzéseket és korlátozásokat tartalmaz. Az ANSI SQL-89/92 tartománya a meglévő alapadat-típusokból származik, mint a következő pszeudo-kód példában:
CREATE DOMAIN wholesale_price AS DECIMAL (5,2) CONSTRAINT whsale_price_not_negative CHECK (érték> = 0) NEM LEHETSÉGES
A T-SQL-ben alapszintű tartományokat hozhat létre SQL Server adattípusok alapján létrehozott UDT-t. Ezenkívül meghatározhatatlan értékeket is hozzáadhat az UDT-hez, amint azt a T-SQL online kézikönyv példája is mutatja:
sp_addtype születésnap, datetime, NULL
Ha ezt az UDT-t használja a CREATE TABLE vagy ALTER TABLE utasításokban, akkor a korlátozások ellenőrzésével töltse ki a domain-integritási folyamatot. A táblázat létrehozása során végrehajtott kényszerellenőrzés biztosítja a tartomány integritását az oszlopban elhelyezhető értékek korlátozásával. A 4. felsorolás egy ilyen korlátozás példáját mutatja.
A DCS szintén a domain integritásának egy formája. Az 1: M kapcsolat végrehajtásakor az idegen kulcs doménjének és a megfelelő elsődleges kulcs tartományának meg kell egyeznie. A 4. listában soha nem tudsz megadni egy értéket a pub_id oszlopban, amely már nem szerepel a Kiadók táblázatban. Így a title6.pub_id oszlop domainje egy idegen kulcs hivatkozásra korlátozódik.
Ezt a logikát követve létrehozhat olyan táblákat, amelyeket kifejezetten arra terveztek, hogy az oszlopértékeket egy másik táblában korlátozzák, vagyis a domain integritását. Ebben az esetben egy speciális táblát hivatkozásnak vagy hivatkozásnak neveznek. A módosított táblához az 1: M arányhoz kapcsolódik, ami mindig elégedett. Például az 5. listában a Pubs.type oszlop egy oszlopot tartalmaz a TypeTable táblában. Az 5. lista tartalmazza a TypeTable referencia táblázat és a mintaértékek szerkezetét. Ha megpróbál beírni egy szöveget a Pubs.title7 táblába, és olyan értéket használ, amely nem található a TypeTable táblában, ez a művelet sikertelen lesz. A PubSet7-ben rögzített DSC szabályok, amelyeket a TypeTable táblázat lehetséges értékeinek listájával együtt alkalmaznak, biztosítják a domain integritását.
Az üzleti integritás - más néven felhasználói integritás - biztosítja, hogy minden, a felhasználó által meghatározott üzleti szabályok, utasítások, irányelvek és eljárások végrehajtásra kerüljenek az adatbázis használatakor. Általában az üzleti integritást tárolt eljárások és triggerek segítségével valósítják meg. A tárolt eljárás az adatbázis-kiszolgálón tárolt lekérdezés, amelyet a sorok feldolgozására és az eredmények visszaküldésére használják. A triggerek támogatják az adatok "a színfalak mögötti" sértetlenségét, mert úgy működnek, hogy a felhasználó még csak észre sem veszi, hogy elindultak. A 7. lista egy példát mutat az üzleti integritást biztosító triggerkódra.
Az adatok integritása létfontosságú az adatbázisok számára. Ha az adatok értéke megkérdőjelezhető, akkor az adatbázisból lekérdezett adatok teljesen használhatatlanok vagy jelentősen károsodnak. Az a négyféle integritás, amelyet figyelembe vettünk, egy olyan szabályrendszer, amelyet az adatbázis használatakor követni kell. Megfelelően meghatározott és alkalmazott, egyetlen parancsként működnek, biztosítva az adatbázisban lévő adatok pontosságát és következetességét.