Orosz Oracle Internet magazin július - 2018
alkalmassága expanziós deklaratív integritását korlátok az adatbázis Oracle8
(Oracle8 Integrity-korlátozás fejlesztései, Steve Bobrowski (68fast.html))
Használja Oracle8 fejlesztések további rugalmasságot és a funkcionalitás javítására integritását korlátok.
Megszorítások a rendszer táblák az adatbázisban, az adatok konzisztenciáját a szabályok, így biztosítva a pontos és helyes információkat. Anélkül, deklaratív integritási kényszerek megállapítása még a legegyszerűbb adatok válna nehéz vagy lehetetlen feladat.
Oracle7 DBMS támogatja a több típusú megszorítások, többek között:
- elsődleges és egyedi kulcsokat integritás lényegében (a teljes táblázat);
- Nem Null korlátozások és be-, integritásának biztosítása érdekében a domain (terület meghatározása);
- idegen kulcsokkal gondoskodik a hivatkozási integritást (lásd. „áttekintése korlátok”).
Továbbá, Oracle7 magában foglal több kiegészítő funkciók, mint például be- és kikapcsolhatja limit kívánt integritását. Végrehajtása integritás korlátok Oracle7 bővült Oracle8. Ez a cikk bemutatja a használatát integritási kényszerek Oracle7, valamint három jelentős javulást mutatott Oracle8.
1. „halasztani” integritás korlátok
Oracle7 a teljesítményt minden egyes SQL-lekérdezés, hogy módosítja a táblázat adatai, ellenőrzi, hogy az adatok szerepelnek minden integritását korlátok. Közvetlen (Immediate - azonnali) épségének ellenőrzése korlátok megnehezíti a végrehajtási néhány munkafolyamat-alkalmazások, mint például a „lépcsőzetes frissítéseket.” Cascade frissítés akkor történik, amikor a frissített elsődleges kulcs értékei főtábla rekordokat, amelyekre vannak részletes nyilvántartást. Ha meg szeretné őrizni a kapcsolat a fő és a részletes nyilvántartást a frissítés az elsődleges kulcs kell járnia frissítése az idegen kulcs mező összes kapcsolódó részletes nyilvántartást. Mivel frissítése elsődleges kulcs értéke nem végzik a legtöbb alkalmazás, Oracle deklaratív (azaz részeként táblázat definíciója) nem támogatja a lépcsőzetes frissítés idegen kulcsokat. De ha lehet frissíteni az elsődleges kulcs értéket mutatnak a függő részletes nyilvántartást továbbra is szükség van az alkalmazás futtatásához, meg kell végrehajtani a funkcionalitás lépcsőzetes frissítéseket adatbázis kiváltja mechanizmus részeként az alkalmazást. Ellenkező esetben, ha egy hibaüzenet:
A Oracle7 végrehajtása alkalmassága frissítés kaszkád lehet egy nehéz feladat, mivel a szerver ellenőrzi az adatok megfelelnek az összes korlátozások, amelyek a lekérdezés, és bele Oracle7 deklaratív integritási kényszerek nem teszik lehetővé akár egy ideiglenes adatok inkonzisztencia. Kerülő úton lehet megvalósítani az alkalmazás ezen algoritmus:
- Letiltása külső részletes táblázatot gombot.
- Frissítse az elsődleges kulcs értékek egy elsődleges tábla.
- Frissítse idegen kulcs megfelelő értékek a részletes táblázatot.
- Visszakapcsolási táblázatban részletezett idegen kulcs.
1. lista mutat példát végrehajtásának algoritmust a megrendelések és ÜGYFÉLKAPU asztalok (és az ügyfelek megbízások). Bár ez a módszer megoldja a problémát, nehéz megvalósítani. Az alkalmazás úgy kell megtervezni, hogy értékelje, ha kell húzni integritási kényszerek, ha az ügylet teszi őket frissíteni. Hozzátesszük, hogy az alkalmazás nem ajánlott kikapcsolni idegen kulcsokat minden olyan esetben, amikor a frissített elsődleges kulcs értéke nem felel meg ez részletes nyilvántartást. Ezzel a módszerrel nemcsak jelentősen növeli összetettségét az alkalmazás, de ez a döntés egyszerűen nem alkalmazható sok esetben azért, mert a részletes táblázatot marad védtelenül bejutását hibás adatokat minden alkalommal, amikor az idegen kulcs van tiltva. Ezért közvetlen ellenőrzését integritás korlátok Oracle7 okozhat nehéz problémákat oldható.
Bonyolultságának csökkentése az Oracle8 új funkciókat tartalmaz leírt szabványos ANSI / ISO SQL92, az úgynevezett „késleltetett épségének ellenőrzése korlátok.” Elhalasztja integritási megszorítás lehet állítani úgy, hogy ellenőrzi a befejezése a tranzakció, hanem a teljesítményt minden egyes SQL-lekérdezés. Halasztható integritási kényszerek létrehozhat ideiglenes ellentmondásos adatok korlátai időtartama a tranzakció. Azonban, ha a tranzakció véglegesítésre, az adatokat meg kell felelniük minden korlátok, különben a Oracle8 termék visszaszorítását. Ez az újítás egyszerűsíti végrehajtását lépcsőzetes frissítéseket.
Új kulcsszavak csapatok létrehozására és módosítására a tábladefiníciók meghatározására kerülnek felhasználásra integritási kényszerek késleltetett. Oracle8 Új funkció áll rendelkezésre meghatározására integritási kényszerek szintjén az oszlop (oszlop-szinten), és szintjén táblázatok (-szinten):
Szükséges, hogy gondosan értékelje az egyes alternatívák, és válassza ki a megfelelő viselkedést a kérelmet. Például létrehozhat egy idegen kulcs a részletes táblázatok és van, hogy frissíteni kell a megfelelő elsődleges kulcs. Ebben az esetben az idegen kulcs, mint a kényszer-késleltetett a lehetőséget INITIALLY KÖZVETLEN (kezdetben nem halasztott).
Ahhoz, hogy egyértelműen meghatározzák a használatát a tranzakció egy vagy több korlátozások által lefektetett, a kérelemben meg kell kezdeni egy tranzakciót egy új parancs SQL-kikötés (vagy korlátok):
A parancs szintaxisa adhatja meg, hogy milyen típusú ellenőrzést, hogy több konkrét korlátozások, valamint az összes korlátozást, amely lehet az SQL-lekérdezéseket ehhez a tranzakcióhoz. Ha a tranzakció rakódnak egy vagy több korlátozást, akkor is használhatja a SET KORLÁTOKKAL ALL KÖZVETLEN elkövetése előtt az aktuális tranzakció előtti ellenőrizze az adatbázis megfelel az elhatárolt megszorítások:
- Ha a parancs sikeres, a változtatások, amelyeket a tranzakció megfelel minden halasztott korlátok és sikeresen lezárni a tranzakciót.
- Ha a parancs hiba lép fel, az azt jelenti, hogy a változtatások, amelyeket a tranzakció vezetett a megjelenése adatok, amelyek nem felelnek egy vagy több korlátok késik. Annak érdekében, hogy sikeresen megoldja a tranzakció szükséges további módosításokat az adatbázisba, az adatok nem ellentétes a halasztott korlátok, és újra ellenőrizzük a SET parancs KORLÁTOKKAL ALL KÖZVETLEN. Ha nem, az az ügylet teljesítését Oracle teszi vészhelyzet visszaállíthatja által végrehajtott módosításokat is.
A korábban azonosított problémák lépcsőzetes frissítések, jó példa a megfelelő felhasználási korlátozások által lefektetett. Először meg kell határozni egy asztal megrendelések az idegen kulcs a Vevők táblában, mint a kényszer-késleltetett, amely ellenőrzi a Oracle8 alapértelmezett:
Ha korlátozás késleltetett integritásalgoritmusra végrehajtás kaszkád frissítés jelenik rendkívül egyszerű:
Halasztani részletes táblázatot egy idegen kulcs megszorítás integritás nem csupán leegyszerűsíti lépcsőzetes frissítéseket, de lehetővé teszi, hogy az adatok védelme (mert nem kell letiltani a integritási megszorítás, és az adatok megváltoztatása versenyképes tranzakció azonnal ellenőrizni, hogy megfeleljen az előírt feltételek elhalasztja korlátozás).
2. Nem egyedi kódjait elsődleges és egyedi kulcsokat
Alapértelmezésben, amikor létrehoz egy elsődleges vagy egyedi kulcs az asztalon, mint a Oracle7, Oracle8 és hozzon létre egy egyedi index, hogy támogassa az egyes integritási kényszerek. Például az előző parancs CREATE TABLE teremt nemcsak a Rendelések tábla, de index (PKEY_ RENDELÉSEK) támogatni a bejelentett elsődleges kulcs.
Ha nem tervezi, hogy a gyakori kikapcsolás, majd a felvétel egy elsődleges vagy egyedi kulccsal, egyedi index, alapértelmezés szerint létrejön, ez a legjobb megoldás. Azonban ez nehézségeket okozhat, ha történik rendszeres nyitása és zárása korlátok (leggyakrabban tiltsa integritási kényszerek letöltés előtt nagy mennyiségű adat a táblázatban, például az adatok tárolására). Irányítsd integritási kényszerek betöltésekor nagy mennyiségű adat jelentősen csökkenti a termelékenységet. Ha törlésre kerül, akkor jelentősen növeli a letöltési sebességet. És betöltése után, hogy meghatározzuk a bejegyzések, amelyek nem felelnek meg a megszorítások közé integritását, akkor lehetőséget kap egy jelentést kivételek.
Sajnos, ha dolgozik, több gigabájt méretű asztalok, le- és visszakapcsolása az elsődleges vagy idegen kulcsok elfogadhatatlan lehet, hogyan Oracle7, Oracle8 eltávolítjuk, és a megfelelő egyedi index, amely a kiszolgáló támogató integritási kényszerek. Ez azt jelenti, hogy ha újra engedélyezi korlátok betöltése után az adatokat, az adatbázis, hogy újra megteremtse a megfelelő egyedi index, hogy akár órákig is tarthat a nagy asztal.
Ezen túlmenően, az asztal eltakarja kizárólagos zár (kizárólagos zár) idejére az index újraépítése, így a tábla áll rendelkezésre versenyképes adatmódosítás és egyéb műveletek.
Oracle8 lehetővé teszi a felhasználó számára, hogy hozzon létre egy nem egyedi index, hogy támogassa a primer vagy egyedi kulcs. Ahelyett, amely lehetővé teszi a szerver automatikusan létrehoz egy indexet, akkor létrehozhat egy a fogyatékkal integritási kényszerek saját. Aztán, ha újra engedélyezni korlátok, a Oracle8 fogja használni ezt az indexet. A következő parancsok mutatják, hogyan kell használni ezt a funkciót Oracle8.
Most, ha letiltja az elsődleges kulcs a táblázat MEGRENDELÉSEK PKEY_ORD_ID index marad. Lekérdezések kell végrehajtani, amikor a korlátozás van tiltva, képes lesz használni az indexet. Továbbá, ha újraindítja az elsődleges kulcs, az index már létezik, és az adatbázis nem kell újjáépíteni a semmiből, ami jelentősen felgyorsítja a műveletet.
3. Azonnali határ
Ahhoz, hogy gyorsítsák fel a felvételét fogyatékkal integritási kényszerek, a Oracle8 Database bővített funkciókkal CONSTRAINT ALTER TABLE paranccsal:
Alapértelmezésben, vagy ha meg a kulcsszót VALIDATE, Oracle8 ellenőrzi integritását minden adatot táblázat mielőtt a korlátozás (ugyanaz, mint a Oracle7 viselkedés).
Integritásának ellenőrzésére valamennyi adat táblázatok, a Oracle8 ró kizárólagos zár (kizárólagos zár) az asztalra, ami nem csak azt teszi lehetővé a versenyképes adatok frissítését a vizsgálat egész időtartama alatt, de lehetővé teszi, hogy csak egyetlen korlát egy időben. Amikor dolgozik nagy táblák, engedélyezze újra egyenként a integritási kényszerek után batch letöltése következtében előálló adatmennyiség hosszú időt vesz igénybe.
Amikor a határ kulcsszó NOVALIDATE, Oracle8 nem ellenőrzi a rendelkezésre álló adatokat a táblázatban a lehetséges integritási kényszerek. Így Oracle8 egyszerűen tartalmaznak egy csekket integritási kényszerek későbbi tranzakciók. Felvétele után minden korlátozást az asztalra, akkor használja ugyanazt a parancsot a kulcsszó VALIDATE lefordítani minden kényszer a „hitelesített” státuszt. Fordítása: „tesztelt” a „ellenőrzött” állapot nem kizárólagos zárolást igényel az asztalra, így a tábla továbbra is fenntartja a versenyképes tranzakciót. Ezen túlmenően, a Oracle8 hogy gyorsítsa fel az adatok ellenőrzése való megfelelés korlátozása egy belső párhuzamos feldolgozás. A következő utasítás sorozat bemutatja, hogyan lehet optimálisan Letiltott feltétel:
következtetés
kiterjeszti a funkcionalitást a deklaratív integritási kényszerek Oracle8 lehet az adatok minőségének javítására és egyszerűsítésére fejlesztése adatbázis-alkalmazások.
- Hozhat létre halasztható integritási megszorítás, majd tedd a teszt végén a tranzakció az új SQL-parancs SET korlátok. Az a képesség, hogy késleltesse restrikciós feltételek megkönnyíti e követelmények végrehajtására komplex adatfeldolgozó rendszerek, mint a kaszkád frissítés.
- Akkor megerősítése az elsődleges és egyedi kulcsokat, ami egy megfelelő, nem egyedi indexek. Ha kikapcsolod a korlátozást, a Oracle8 nem távolítja el az index, gyorshajtás, így a későbbi felvétele korlátai.
- Akkor is egy határt „nem bizonyított” tudjuk azonnal biztosítani korlátozások teszt változó adatokkal, hogy lehetővé tegye a versenyképes frissítését táblázat adatait. Később, akkor engedélyezze a kényszer, a „ellenőrzött” állapot, annak érdekében, hogy az összes adatot a táblázat meg van elégedve.
Áttekintést megszorítások
Ellenőrzés: Az ilyen típusú korlátok beállítására használjuk a megengedett beállított értékek (domain név) oszlop vagy több tábla oszlopokat. Így megadhatja bonyolultabb szabályokat, amelyek biztosítják integritását. Például megadhatjuk a korlátot a Vevők táblában, amely lehetővé teszi, hogy adja meg egyetlen elfogadható rövidítések az ország nevét az állam egy oszlop, vagy a Rendelések tábla, amely lehetővé teszi, hogy belépjen csak érvényes kódokat az állapot oszlopban. integritási megszorítás kerül megadásra SQL-parancsokat, és egy logikai kifejezés, amely az Oracle lehet számítani az egyes rekord a táblázat segítségével csak az értéket a következő területeken: az azonos rekord. Logikai kifejezés kevésbé egyértelműnek kell lennie: nem tartalmazhat táblákat vagy lekérdezéseket a sorozatot, és nem tartalmazhat függvényhívásokkal SQL: SYSDATE, UID, USER, vagy USERENV. Ha a logikai kifejezés a bejegyzés értéke True (igaz) vagy nem ismert (ismeretlen), a rekord tekinthető, amely megfelel a korlátozást.
Nem Null: Érték Null, gyakran helytelenül használják. Alapértelmezésben adott oszlop tartalmazhat null értékeket. A oszlop a táblázatban lehet meghatározni, hogy elkerüljék a bizonytalanság határát a domain az oszlop, és így megakadályozza a megjelenése nullhelyet az oszlop.
Elsődleges kulcs: Korlátozás tábla elsődleges kulcs integritását integritásának biztosítása entitások (a teljes táblázatot), biztosítva a hiánya több azonos bejegyzés a táblázatban. Erre a célra az elsődleges kulcs biztosítja, hogy a tábla nem duplikált értékek egy oszlopban vagy csoport oszlopok alkotó gombot. Csak egy elsődleges kulcs lehet meghatározni az asztalra.
Egyedi kulcs: egyedi kulcs, amely más néven alternatív kulcs megakadályozza ismétlődő értékeket az oszlopokban alkotó gombot. A táblázatban az is meghatározható, tetszőleges számú egyedi kulcs, azzal a megkötéssel, hogy állnak egymással különálló csoport oszlopok.
Idegen kulcs: idegen kulcs (egyébként hivatkozási integritás) biztosítja a kapcsolatot az oszlopok és táblák egy relációs adatbázisban. Referenciális integritás biztosítja, hogy minden idegen kulcs érték egyezik a megfelelő értéket a mester kulcs hozzá. Egy idegen kulcs egy részletes tábla oszlop, arra utal, hogy egy elsődleges vagy egyedi kulcs a fő (master) táblázatot. kulcs adattípusok meg kell egyeznie.