sql >> Databáze >  >> RDS >> Sqlserver

Kdy/proč používat kaskádování v SQL Server?

Shrnutí toho, co jsem zatím viděl:

  • Někteří lidé nemají kaskádování vůbec rádi.

Kaskádové odstranění

  • Cascade Delete může mít smysl, když sémantika vztahu může zahrnovat exkluzivní "je součástí Například záznam OrderLine je součástí jeho nadřazené objednávky a OrderLine nebudou nikdy sdíleny mezi více objednávkami. Pokud by objednávka zmizela, OrderLine by měl také a řádek bez objednávky by byl problém.
  • Kanonickým příkladem Cascade Delete je SomeObject a SomeObjectItems, kde nedává žádný smysl, aby záznam položek kdy existoval bez odpovídajícího hlavního záznamu.
  • To byste neměli použijte Cascade Delete, pokud zachováváte historii nebo používáte "soft/logické mazání", kde pouze nastavujete odstraněný bitový sloupec na 1/true.

Kaskádová aktualizace

  • Kaskádová aktualizace může mít smysl, když v tabulkách používáte skutečný klíč namísto náhradního klíče (sloupec identity/autoinkrementace).
  • Kanonickým příkladem kaskádové aktualizace je situace, kdy máte měnitelný cizí klíč, jako je uživatelské jméno, které lze změnit.
  • To byste neměli použijte kaskádovou aktualizaci s klíči, které jsou sloupce Identity/autoincrement.
  • Kaskádová aktualizace se nejlépe používá ve spojení s jedinečným omezením.

Kdy použít kaskádování

  • Před povolením kaskádování operace můžete od uživatele získat extra silné potvrzení, ale záleží na vaší aplikaci.
  • Pokud cizí klíče nastavíte špatně, kaskádové řazení vás může dostat do problémů. Ale měli byste být v pořádku, pokud to uděláte správně.
  • Není moudré používat kaskádování, dokud tomu důkladně neporozumíte. Je to však užitečná funkce, a proto stojí za to věnovat čas jejímu pochopení.


  1. Jak timeofday() funguje v PostgreSQL

  2. Odstraňování problémů AlwaysOn – Někdy to vyžaduje mnoho pohledů

  3. Soubor výpisu jádra a přidání kódů ladění do aplikace spustitelné pro Oracle Apps

  4. Generování sql kódu programově