Cizí klíče
prosazovat referenční integritu
. Tato omezení zaručují, že řádek v tabulce order_details
s polem order_id
odkazování na orders
tabulka nikdy nebude mít order_id
hodnota, která v orders
neexistuje stůl.
Cizí klíče nejsou vyžadovány pro funkční relační databázi (ve skutečnosti výchozí úložiště MySQL engine nepodporuje FK), ale jsou rozhodně nezbytné, aby se zabránilo narušeným vztahům a osiřelým řádkům (tj. referenční integrita). Pro C je vyžadována schopnost vynutit referenční integritu na úrovni databáze v ACID stát.
Pokud jde o vaše obavy týkající se výkonu, obecně existují náklady na výkon, ale pravděpodobně budou zanedbatelné. Navrhuji zavést všechna omezení cizího klíče a experimentovat bez nich pouze v případě, že máte skutečné problémy s výkonem, které nemůžete vyřešit jinak.