sql >> Databáze >  >> RDS >> Oracle

Modelování jedno-konstantního vztahu

Není snadné to udělat tak, aby to bylo zdravé a správné, i když aktualizace provádí více relací. Pokud to zkusíte se spouštěči, dostanete se do nepořádku a deklarativní omezení Oracle nejsou dostatečně silná, aby to vyjádřila.

Lze to provést následovně:-

  1. Vytvořte protokol materializovaného zobrazení v nadřazené i podřízené tabulce
  2. Vytvořte zobrazení materializovaného spojení, které je spojí a spočítá počet dětí seskupených podle rodiče. Toto musí být RYCHLÉ OBNOVENÍ PŘI ZVĚTŠENÍ
  3. Omezte zobrazení materializovaného spojení, že počet podřízených záznamů se musí rovnat "n" (konstanta vaší databáze)

Poté můžete provést řadu příkazů vložení/aktualizace/smazání. Když potvrdíte, materializovaný pohled se obnoví, a pokud podmínka není splněna, zobrazí se v tomto bodě chyba porušení omezení.

Bonusovým trikem je zahrnout do materializovaného pohledu pouze řádky, které nesplňují omezení (HAVING count(ChildId) <> 5), takže neztrácíte žádný úložný prostor.



  1. Chybějící tabulka na materializovaném pohledu

  2. Jak vytvořit jednoduché fuzzy vyhledávání pouze s PostgreSQL?

  3. Nejlepší způsob, jak uložit čas nad 24:00:00 v postgresql?

  4. Chyba kompilace:Očekávaná funkce nebo proměnná ve VBA pro přístup