Referencia integritás
A vállalati integritás korlátai
Domainmezőkre vonatkozó korlátozások
Bizonyos mezőknek mindig tartalmazniuk kell az egyik érvényes értéket, vagyis ezek a mezők nem tartalmazhatnak üres értéket.
Minden mezőnek saját domainje van, ami a megengedett értékek egy csoportja.
A "vállalati integritási korlátok" fogalmaként további szabályok szólnak az adatok integritásának megőrzésére. a felhasználók által meghatározott, a vállalati vagy adatbázis-adminisztrátorok által elfogadott. A vállalkozás korlátozásait üzleti szabályoknak nevezik.
Ez az integritási korlát az alaptáblák elsődleges kulcsaira vonatkozik. Definíció szerint az elsődleges kulcs a minimális azonosító (egy vagy több mező), amelyet a táblák rekordjainak egyedi azonosítására használnak. Így az elsődleges kulcs részhalmazai nem elegendőek a rekordok egyedi azonosításához.
Az entitás integritása határozza meg, hogy az alaptáblában az elsődleges kulcs mezője nem tartalmazhat hiányzó értékeket, amelyeket NULL jelez.
Ha engedélyezi a NULL azonosító jelenlétét az elsődleges kulcs bármelyik részén. ez megegyezik azzal az állítással, hogy nem minden területre van szükség a rekordok egyedi azonosításához, és ellentmond az elsődleges kulcs meghatározásának.
A megadott integritáskorlátozás külföldi kulcsokra vonatkozik. Egy idegen kulcs egy mező (vagy mezőkészlete), amely egy másik táblázat (vagy ugyanazon) kulcsa. A külső billentyűket logikai kapcsolatok létrehozására használják a táblák között. A kapcsolatot úgy hozza létre, hogy az egyik táblázat külsõ kulcsának értékeit a másik kulcs kulcsaihoz hozzárendeli.
A két vagy több adatbázis táblák létezhetnek alárendeltségi viszonyok határozzák meg, az egyes rekord a főtábla (más néven a szülő) létezhet egy vagy több bejegyzést a táblázatban (nevezzük leányvállalata).
Az adatbázistáblák között háromféle kapcsolat létezik:
- „Egy a többhöz”;
- „Egy-egy”;
- „Sok-sok”.
Az egy-sok kapcsolat akkor következik be, amikor a szülõtábla egy rekordja több gyermekrekordnak felel meg. Az egy-sok kapcsolatot néha sokoldalú kapcsolatnak hívják. Mindkét esetben a táblák közötti kapcsolat lényege változatlan marad.
Az egy-sok kapcsolatra a leggyakoribb a relációs adatbázisok. Lehetővé teszi a hierarchikus adatstruktúrák modellezését is.
Egy egy-egy kapcsolat akkor fordul elő, ha egy szülői táblázat egy bejegyzése megfelel a gyermekasztal egyik bejegyzésének. Ez a kapcsolat sokkal kevésbé gyakori, mint az egy-sok kapcsolat. Ez akkor használható, ha nem szeretné, hogy az adatbázis-táblázat "duzzadjon" a háttérinformációkról. Az egy egyéni kapcsolat használatával arra vezethető vissza, hogy ahhoz, hogy több táblázatban olvashassa el a kapcsolódó információkat, több helyett olvasási műveletet kell végrehajtania, amikor az adatokat egy táblában tárolja.
A sok-sok kapcsolatot a következő esetekben végezzük:
- egy szülő táblában szereplő bejegyzés egynél több bejegyzést tartalmaz a gyermektáblában;
- a gyermektáblába tartozó egyik bejegyzés a szülõtábla több bejegyzésének felel meg.
Úgy gondolják, hogy minden sok-sok kapcsolatot helyettesíthet egy-egy-sok kapcsolattal (egy vagy több).
Gyakran a táblák közötti kapcsolatot az elsődleges kulcs határozza meg. azaz az egyik táblázat külsõ kulcsának értékei a másik elsõdleges kulcsának értékeit adják meg. Ez azonban nem szükséges - általában másodlagos kulcsok segítségével lehet kommunikálni. Ezenkívül a táblák közötti kapcsolatok létrehozásakor nem szükséges a kapcsolatot biztosító kulcsa nélkülözhetetlen egyedisége. Az idegen kulcs mezők nem feltétlenül azonos névvel rendelkeznek, mint a hozzájuk tartozó kulcsok nevei. Az idegen kulcs a saját táblájára hivatkozhat - ebben az esetben az idegen kulcsot rekurzívnak nevezik.
A referenciális integritás meghatározza: ha van egy idegen kulcs a táblázatban. akkor az értéknek meg kell egyeznie az alaptábla valamely rekord elsődleges kulcsának értékével, vagy a NULL meghatározónak kell megadnia.
Számos fontos pont van a külföldi kulcsokkal kapcsolatban. Először meg kell vizsgálnunk, hogy lehetséges-e idegen kulcsok üres értékeinek használata. Általános esetben, ha a gyermekasztal részvétele a kommunikációban kötelező, ajánlott megtiltani az üres értékek használatát a megfelelő idegen kulcsban. Ugyanakkor, ha a gyermektábla részleges részvétele van a kapcsolatban, engedélyezni kell az üres értékeket az idegen kulcs mezőbe. Ha például egy ügyféllel kell megadnia egy adott kereskedési vállalat tranzakció-rögzítési tranzakcióját, akkor a CustomerCode mezőnek rendelkeznie kell a NOT NULL attribútummal. Ha ügyfelek megadása nélkül adhat el vagy vásárolhat árut, megadhatja a NULL attribútumot a CustomerCode mezőhöz.
A következő probléma a referenciális integritás támogatásának szervezésével kapcsolatos, amikor adatmódosítási műveleteket végeznek az adatbázisban. Itt a következő helyzetek lehetségesek:
Van egy másik fajta integritás - az adatbázis szemantikai integritása. A szemantikai integritás követelménye meghatározza, hogy az adatbázisban lévő adatokat oly módon kell megváltoztatni, hogy ne sérüljenek az egymás között kifejlesztett szemantikai kapcsolat.
A különböző rendszerek adatintegritásának megőrzésének szintje jelentősen változik.
Az ügyfél-kiszolgáló architektúra ideológiája megköveteli az adatintegritási szabályok lehető legnagyobb számának a szerverre történő átvitelét. Ennek a megközelítésnek az előnyei:
- biztosítja az adatbázis integritását, mivel az összes szabály egy helyen koncentrálódik (az adatbázisban);
- a kiszolgáló által meghatározott integritáskorlátozások automatikus alkalmazása bármely alkalmazáshoz;
- az adatbázisban dolgozó különböző ügyfélalkalmazásokban a korlátozások különböző végrehajtásának hiánya;
- a korlátozások gyors aktiválása, mivel azokat a kiszolgálón hajtják végre, ezért nincs szükség adatküldésre az ügyfél számára, miközben növeli a hálózati forgalmat;
- a kiszolgálói korlátozások elérhetővé tétele az adatbázisban működő összes ügyfélalkalmazásban, valamint a módosított ügyfélalkalmazások újraelosztása a felhasználók számára.
Az integritási korlátok tárolására a szerver hátrányai a következők:
- Az ügyfélalkalmazás nem képes arra, hogy bizonyos szabályok végrehajtása során (például a tárolt eljárások végrehajtásakor a kiszolgálón végrehajtott hibák esetén) hibát okozzon a szerveren.
- Az SQL nyelv korlátozásai és a tárolt eljárások nyelvezetei és kiváltó okok az összes új adatintegritási követelmény végrehajtásához.
A gyakorlatban az ügyfélalkalmazások csak olyan szabályokat alkalmaznak, amelyeket nehéz vagy lehetetlen végrehajtani a kiszolgálói erőforrások használatával. Minden egyéb adatintegritási korlát átkerül a kiszolgálóra.
9. előadás: Az integritási korlátok meghatározása
Megadja az adatintegritási koncepciók meghatározását az SQL szabványban. A deklaratív és a lépcsőzetes referenciális integritás meghatározásának kérdéseit figyelembe veszik. Példák az elsődleges és külföldi kulcskorlátok meghatározására, az érték és az alapértelmezett korlátozásokra, valamint a szabályok és alapértelmezések létrehozására és használatára vonatkozó példák.