Articles

Az Oracle 12c

Táblázat létrehozása parancs használatával többféle korlátozást érvényesíthet egy táblán: jelöltkulcsokat, elsődleges kulcsokat, idegen kulcsokat és ellenőrzési feltételeket. A KÉNYSZERZÁRADÉK korlátozhatja egyetlen oszlopot vagy oszlopcsoportot a táblázatban. Ezeknek a korlátozásoknak az a lényege, hogy az Oracle a legtöbb munkát elvégzi az adatbázis integritásának fenntartásában. Minél több korlátozást ad hozzá a táblázat meghatározásához, annál kevesebb munkát kell tennie az alkalmazásokban az adatok fenntartása érdekében. Másrészt, minél több korlátozás van egy táblázatban, annál hosszabb ideig tart az adatok frissítése.

a korlátozásokat kétféleképpen adhatja meg: az oszlopdefiníció részeként (oszlopkorlátozásként ismert) vagy a Táblázat létrehozása nyilatkozat végén (táblázatkorlátozásként ismert). A több oszlopot korlátozó záradékoknak táblázatkorlátozásoknak kell lenniük.

A jelölt kulcs

a jelölt kulcs egy vagy több oszlop kombinációja, amelynek értékei egyedileg azonosítják a táblázat minden sorát. A következő felsorolás egy egyedi kényszer létrehozását mutatja A TROUBLE table számára:

a táblázat kulcsa a CITY és a SAMPLE_DATE kombinációja. Figyeljük meg, hogy mindkét oszlop is nyilvánították, hogy nem NULL. Ez a funkció megköveteli, hogy bizonyos oszlopok értékeit adja meg a sorok beillesztéséhez. Nyilvánvaló, hogy a hőmérsékleti és csapadékinformáció nem hasznos anélkül, hogy tudnánk, hol vagy mikor gyűjtötték. Ez a technika gyakori az oszlopoknál, amelyek a táblázat elsődleges kulcsa, de akkor is hasznos, ha bizonyos oszlopok kritikusak ahhoz, hogy az adatsor értelmes legyen. Ha nem NULL nincs megadva, akkor az oszlopnak NULL értékei lehetnek.

egyedi kényszer létrehozásakor az Oracle egyedi indexet hoz létre az értékek egyediségének érvényesítésére. Az elsődleges kulcskorlátozáson belül az egyes sorok elsődleges kulcsának legalább egy oszlopa nem lehet NULL.

az elsődleges kulcs

a táblázat elsődleges kulcsa az egyik jelölt kulcs, amely bizonyos speciális jellemzőket ad meg. Csak egy elsődleges kulcs lehet, az elsődleges kulcs oszlop pedig nem tartalmazhat nullákat.

A következő CREATE TABLE utasítás hatása ugyanaz, mint az előző, kivéve, hogy több EGYEDI korlátok, de csak egy ELSŐDLEGES KULCS megszorítást:

egy oszlop elsődleges vagy jelölt kulcsokkal, akkor adjuk meg a gombot az oszlop egy oszlop kényszer helyett táblázat szűkítés:

ebben az esetben a AUTHOR_NAME oszlop az elsődleges kulcs, Oracle létrehoz egy nevet az ELSŐDLEGES KULCS mezőbe. Ez nem ajánlott, ha a kulcsok közös elnevezési szabványát szeretné érvényesíteni, amint azt később a “névadási korlátok” című részben tárgyaltuk.”

Index Tablespaces

egyedi és elsődleges kulcskorlátok indexeket hoznak létre. Hacsak nem különbözteti meg az Oracle-t, ezek az indexek az alapértelmezett evőkanálba kerülnek. Egy másik táblaterület megadásához használja a Táblázat létrehozása parancs INDEX TABLESPACE záradékát, amint az a következő felsorolásban látható:

az AUTHOR_PK elsődleges kulcskorláthoz társított index kerül a felhasználói táblaterületbe.

megjegyzés

a legtöbb alapértelmezett telepítésben a felhasználói táblaterület jön létre, amely az alapértelmezett táblaterület.

az idegen kulcs

egy idegen kulcs oszlopok kombinációja, amelyek értékei egy másik táblázat elsődleges kulcsértékein alapulnak. A külföldi kulcskorlátozás, más néven referenciális integritási kényszer, meghatározza, hogy az idegen kulcs értékei megfelelnek a másik táblázatban szereplő elsődleges kulcs tényleges értékeinek. A Könyvespolc táblában például a CATEGORY_NAME oszlop a kategóriatáblázat CATEGORY_NAME oszlopának értékeire utal:

hivatkozhat egy elsődleges vagy egyedi kulcsra, még ugyanabban a táblázatban is. A referenciák záradékban azonban nem hivatkozhat egy távoli adatbázisban található táblázatra. Használhatja a tábla űrlapot (amelyet korábban használtak a HIBATÁBLÁZAT elsődleges kulcsának létrehozásához) az oszlop űrlap helyett több oszlopot tartalmazó idegen kulcsok megadásához.

néha érdemes törölni ezeket a függő sorokat, amikor törli azt a sort, amelytől függ. Könyvespolc és kategória esetén, ha töröl egy CATEGORY_NAME-t a kategóriából, érdemes lehet a megfelelő könyvespolc CATEGORY_NAME oszlopértékeket nullára tenni. Egy másik esetben érdemes törölni az egész sort. A hivatkozási záradékhoz hozzáadott delete CASCADE záradék azt mondja az Oracle-nek, hogy törölje a függő sort, amikor törli a megfelelő sort a szülőtáblában. Ez a művelet automatikusan fenntartja a hivatkozási integritást.

az ellenőrzési kényszer

sok oszlopnak olyan értékekkel kell rendelkeznie, amelyek egy bizonyos tartományon belül vannak, vagy amelyek megfelelnek bizonyos feltételeknek. Egy ellenőrző kényszer segítségével megadhat egy kifejezést, amelynek mindig igaznak kell lennie a táblázat minden sorára. Például a MINŐSÍTÉSI táblázat boltokban érvényes minősítések; korlátozza a rendelkezésre álló értékek túl a határértékeket által kikényszerített oszlop meghatározást használja, ELLENŐRIZZE, kényszer, ahogy azt az alábbi lista:

Egy oszlop szintű ELLENŐRZÉS kényszer nem lehet hivatkozni, hogy az értékek a többi sor; nem használja a pszeudo-oszlopok, mint SYSDATE, FELHASZNÁLÓ, CURRVAL, NEXTVAL, SZINT, pedig ROWNUM. Használhatja a táblázat kényszer formában (szemben az oszlop kényszer formában), hogy olvassa el a több oszlop egy csekket kényszer.

elnevezési korlátok

meg lehet nevezni a korlátokat. Ha egy hatékony elnevezési sémát használ a kényszernevekhez, akkor jobban képes lesz azonosítani és kezelni a korlátokat. A kényszer nevének meg kell jelölnie az általa alkalmazott táblázatot és az általa képviselt kényszer típusát. Például a TROUBLE table elsődleges kulcsát TROUBLE_PK-nak lehet nevezni.

megadhatja a kényszer nevét a kényszer létrehozásakor. Ha nem adja meg a kényszer nevét, az Oracle létrehoz egy nevet. Az Oracle által generált kényszernevek többsége a sys_c###### formából származik (például SYS_C000145). Mivel a rendszer által generált kényszer neve nem mond semmit a tábláról vagy a korlátozásról, meg kell neveznie a korlátokat.

a következő példában az ELSŐDLEGES KULCS kényszer jött létre, neve, részeként a CREATE TABLE parancs a BAJ táblázat (észre a KÉNYSZER záradék):

A Táblázat létrehozása parancs KÉNYSZERZÁRADÉKA megnevezi a kényszert (ebben az esetben TROUBLE_PK). Ezt a kényszernevet később használhatja, amikor engedélyezi vagy letiltja a korlátozásokat.