Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem Integrita dat v MySQL

Mám tabulky A, B v MySQL, obsahují sloupec id jako primární klíč. Pak mám tabulku C vytvořenou skriptem, která má dva sloupečky odkazující se na A.id a B.id, které jsou označené jako FOREIGN KEY ... ON DELETE CASCADE ON UPDATE CASCADE (zachycuje vazby mezi těmito klíči). Je zajištěno, že v době přidávání záznamu do tabulky C oba klíče v tabulkách A, B existují, jinak se záznam nevytvoří (jednak je to zajištěno skriptem, který data do tabulky sype, jednak ani MySQL nepovolí záznam vytvořit, pokud hodnota neexistuje v tabulce A/B).

Šéf tvrdí, že použití FOREIGN KEY je vyloučeno, protože prý může dojít k narušení konzistence dat v DB. Ponechme stranou jaký smysl má DB, ve které jsou nesmyslná nekonzistentní data. Zajímá mne, jestli může nějakým způsobem dojít k tomu, aby se záznam v tabulce C začal odkazovat na neexistující záznam v tabulkách A/B, když jsem použila klauzuli ON DELETE CASCADE...? Až dosud jsem měla za to, že ta integritu dat zajistí (a pokud ano, tak jakým způsobem by k tomu mohlo dojít). Ono pracovat s DB, která obsahuje několik databází, každá databáze desítky tabulek, je mezi nimi fůra vazeb (a to i tak, že se odkazují do tabulek v jiných DB), ale zásadně se FOREIGN KEY nepoužívá je docela lahůdka, zvláště, když neexistuje k tomu žádná dokumentace.

Odpověď na otázku

1 Zadajte svou přezdívku:
2 Napište svou odpověď:
3 Pokud chcete dostat ban, zadejte libovolný text:

Zpět do poradny