Egy idegen kulcs az egyik tábla rekordjait egy másik tábla rekordjaihoz kapcsolja. Egy order tábla rendelkezik egy customer_id mezővel. Ez a mező egy idegen kulcs, amely a customer tábla elsődleges kulcsára mutat. A kapcsolat biztosítja, hogy minden rendelés egy valódi ügyfélhez tartozzon. Enélkül a rendelések olyan ügyfelekre is hivatkozhatnának, akik nem léteznek. Az adatbázis kikényszeríti a kapcsolatot.
Az idegen kulcsok többet tesznek, mint pusztán a kapcsolatok dokumentálását. Kikényszerítik a referenciális integritást. Ha olyan customer_id értékű rendelést próbálsz beszúrni, amely nem létezik a customer táblában, az adatbázis elutasítja azt. Ha egy olyan ügyfelet próbálsz törölni, akinek vannak rendelései, az adatbázis vagy blokkolja a törlést, vagy a szabálytól függően kaszkádba rendezi. Ez a betartatás megakadályozza az árva rekordokat és az inkonzisztens adatokat. Az idegen kulcsok a lekérdezések teljesítményét is segítik. Az adatbázis a kapcsolatok segítségével optimalizálhatja az illesztéseket. Nem minden adatbázis kényszeríti ki az idegen kulcsokat. Egyes NoSQL adatbázisok a referenciális integritást az alkalmazásra bízzák. Ez nagyobb rugalmasságot, de nagyobb felelősséget is biztosít a fejlesztőknek. Az alkalmazásnak biztosítania kell a hivatkozások érvényességét. Ha ez nem sikerül, az adatok inkonzisztenssé válnak. Az idegen kulcsok korlátozó tényezők. A korlátozó tényezők kényelmetlenek, amíg meg nem akadályozzák a katasztrófát.
Idegen kulcs szabályok
- Korlátozás – törlés blokkolása, ha léteznek hivatkozások
- Kaszkád – hivatkozó rekordok automatikus törlése vagy frissítése
- Null beállítása — idegen kulcs nullra állítása törléskor
- Nincs művelet — engedélyezze a műveletet, és ellenőrizze később
Az idegen kulcs egy link és egy garancia. A link táblákat köt össze. A garancia pedig konzisztensként tartja őket.
Comments
No comments yet. Be the first to share a thought.
Leave a comment