Middle
Co je to integrita referenčních vazeb?
sobes.tech AI
Odpověď od AI
Referenční integrita je vlastností dat v relační databázi, která zajišťuje, že odkazy mezi tabulkami zůstávají platné. Předchází následujícím problémům:
- Odstranění řádku z "rodičovské" tabulky, na který odkazují řádky v "dceřiné" tabulce.
- Změna primárního klíče v "rodičovské" tabulce, na který odkazují řádky v "dceřiné" tabulce, bez odpovídající aktualizace těchto odkazů.
- Vložení řádku do "dceřiné" tabulky s odkazem na neexistující primární klíč v "rodičovské" tabulce.
Implementuje se pomocí cizích klíčů (FOREIGN KEY).
Příklady omezení pro cizí klíče:
- ON DELETE CASCADE: Při odstranění řádku v rodičovské tabulce jsou také odstraněny odpovídající řádky v dceřiné tabulce.
- ON DELETE SET NULL: Při odstranění řádku v rodičovské tabulce je odpovídající cizí klíč v dceřiné tabulce nastaven na NULL.
- ON DELETE RESTRICT: Odstranění řádku v rodičovské tabulce je zakázáno, pokud na něj existují odkazy v dceřiné tabulce.
- ON UPDATE CASCADE: Při aktualizaci primárního klíče v rodičovské tabulce jsou odpovídající cizí klíče v dceřiné tabulce také aktualizovány.
-- Příklad tabulky "users" (rodič)
CREATE TABLE users (
user_id INT PRIMARY KEY,
username VARCHAR(255) NOT NULL
);
-- Příklad tabulky "orders" (dceřiná) s cizím klíčem
CREATE TABLE orders (
order_id INT PRIMARY KEY,
user_id INT,
order_date DATE,
FOREIGN KEY (user_id) REFERENCES users(user_id)
ON DELETE CASCADE /* Příklad omezení */
ON UPDATE CASCADE /* Příklad omezení */
);