sql >> Database >  >> RDS >> Sqlserver

Wanneer/waarom Cascading gebruiken in SQL Server?

Samenvatting van wat ik tot nu toe heb gezien:

  • Sommige mensen houden helemaal niet van cascadering.

Cascade verwijderen

  • Cascade Delete kan zinvol zijn wanneer de semantiek van de relatie een exclusieve "is onderdeel van kan omvatten Een OrderLine-record maakt bijvoorbeeld deel uit van de bovenliggende order en OrderLines zullen nooit worden gedeeld tussen meerdere orders. Als de Order zou verdwijnen, zou de OrderLine dat ook moeten doen, en een regel zonder een Order zou een probleem zijn.
  • Het canonieke voorbeeld voor Cascade Delete is SomeObject en SomeObjectItems, waar het nergens op slaat dat een itemrecord ooit bestaat zonder een bijbehorend hoofdrecord.
  • Je moet niet gebruik Cascade Delete als u de geschiedenis bewaart of een "soft/logical delete" gebruikt waarbij u alleen een verwijderde bitkolom instelt op 1/true.

Cascade-update

  • Cascade-update kan zinvol zijn als u een echte sleutel gebruikt in plaats van een surrogaatsleutel (kolom identiteit/auto-increment) in tabellen.
  • Het canonieke voorbeeld voor Cascade Update is wanneer je een veranderlijke externe sleutel hebt, zoals een gebruikersnaam die kan worden gewijzigd.
  • Je moet niet gebruik Cascade-update met sleutels die kolommen voor identiteit/auto-increment zijn.
  • Cascade-update kan het beste worden gebruikt in combinatie met een unieke beperking.

Wanneer cascadering gebruiken

  • Misschien wil je een extra sterke bevestiging van de gebruiker krijgen voordat een bewerking trapsgewijs wordt uitgevoerd, maar dit hangt af van je toepassing.
  • Cascading kan u in de problemen brengen als u uw externe sleutels verkeerd instelt. Maar als je dat goed doet, zou het goed moeten komen.
  • Het is niet verstandig om cascadering te gebruiken voordat je het grondig begrijpt. Het is echter een handige functie en daarom de moeite waard om de tijd te nemen om het te begrijpen.


  1. Hoe voeg ik cascadebeperkingen toe?

  2. Op de juiste manier samengestelde primaire sleutels maken - MYSQL

  3. Hoe kan ik een kolom toevoegen die geen nulls toestaat in een Postgresql-database?

  4. PostgreSQL-implementatie en configuratie met Puppet