Database triggers, proti/za?
 
SlimDeluxe 13. jan 2011 15:11:24 Pridružen od:
29. apr 2010
1223 objav
1022 144 9
#1

Zdravo,

mene zanimajo mnenja iz prakse glede uporabe prožilcev v podatkovni bazi oz. database triggerjev.

Še vedno razvijam sam, vendar se dostikrat postavim v kožo nekoga, ki bi delal na tem za mano ali ob meni.

Slabost, ki jo predvidevam, je ta da je triggerje težko dokumentirati v programu. Torej nekdo ki bi odprl razred Order, ne bi videl nobene dokumentacije o tem in bi se verjetno čudil, zakaj nimam funkcije, ki pri vnosu artikla v orderproduct tabelo poveča productssubtotal v tabeli order.

Zato razmišljam, da bi morda bilo dobro dati takim samodejno vzdrževanim stolpcem morda kakšen prefix, npr. productssubtotal.

Vendar ne vem, ali morda ne predvidevam še kakšne slabosti v tej separaciji, hm kako bi temu rekel... nizko nivojske podatkovne logike od objektne logike (?).


všeč(0) ni všeč(0) spam(0)
Freelance Web Developer
 
Gogy 13. jan 2011 16:26:44 Pridružen od:
17. mar 2007
2491 objav
2064 252 12
#2

Kaj pa če zakomentiraš v razredu Order, da obstaja trigger za to in to...


všeč(0) ni všeč(0) spam(0)
 
SlimDeluxe 13. jan 2011 18:12:19 Pridružen od:
29. apr 2010
1223 objav
1022 144 9
#3

Ja to bi eventuelno napisal v wiki-ju, vendar me zanima tudi kakšen predlog iz prakse, če sploh kdo uporablja triggerje in če, kakšen je pristop k temu :)


všeč(0) ni všeč(0) spam(0)
Freelance Web Developer
 
ledi 14. jan 2011 06:40:53 Pridružen od:
14. avg 2008
681 objav
325 223 14
#4

Čisto odvisno od situacije. Jaz jih bolj redko uporabljam (na Oraclu, na MySQL nikoli).

Uporabaljam pa jih samo takrat kadar je potrebno unique ID polja skopirati še v drugo polje v bazi (zato ker pri prenosu podatkov se unique IDji spremenijo). Ali pa se ID nastavi direktno iz za to predvidene sekvence.



Tudi na splošno pri nas težimo k temu, da se stvari rešujejo programsko, razen takšnih izjem kjer je preveč komplikacij.


všeč(0) ni všeč(0) spam(0)
 
SlimDeluxe 14. jan 2011 09:28:48 Pridružen od:
29. apr 2010
1223 objav
1022 144 9
#5

Aha.

Torej po tvoje, mojega primera (products_subtotal) ne bi naredil s triggerjem ampak programsko.


všeč(0) ni všeč(0) spam(0)
Freelance Web Developer
 
SpinX 14. jan 2011 09:40:15 Pridružen od:
17. mar 2007
2618 objav
1720 190 20
#6

Jaz kar je avtomatike na db uporabljam samo on update in on delete pri foreign keyih.


všeč(0) ni všeč(0) spam(0)
Developer? Bi delal v kul podjetju ? http://dlabs.si/jobs
 
Gogy 14. jan 2011 10:46:11 Pridružen od:
17. mar 2007
2491 objav
2064 252 12
#7

SlimDeluxe... zakaj pa ne bi naredil v kodi


UPDATE tablename SET products_subtotal=products_subtotal+1 WHERE pogoj

?


všeč(0) ni všeč(0) spam(0)
 
Vini 14. jan 2011 11:07:28 Pridružen od:
1. sep 2006
6612 objav
5234 611 56
#8

Glej na to s tega vidika, tudi če zadeve rešiš programsko, kot ti svetuje nekaj gornjih komentatorjev, ti bo bodoči razvijalec, ki ne bo vedel, da mora ob updatu nekega polja updatati tudi njegovo *_subtotals materializirano agregatno vrednost, lahko sesul konsistenco baze, če bo polje updatal na nekem drugem mestu v kodi. Za take zadeve so triggerji "a must", seveda moraš pa zadeve dovolj dobro dokumentirati.



BTW, tudi tale forum besno uporablja triggerje, če naštejem le en primer, število uporabnikovih objav, plusov, minusov in spamov so vse materializirane agregatne vrednosti, ažurirane s pomočjo triggerjev.


všeč(5) ni všeč(0) spam(0)
 
SlimDeluxe 14. jan 2011 15:15:01 Pridružen od:
29. apr 2010
1223 objav
1022 144 9
#9

Gogy, ne vem, se mi zdi škoda da imaš tako uporabno zadevo kot je trigger in da se ne zmeniš za njo, ker kot vidiš tudi Vini pravi da je super stvar za agregatne vrednosti, za kar jih tudi sam želim uporabiti :)

Veš koliko krat narediš query samo da dobiš neko agregatno vrednost; skupno prodano kosov artikla, št. naročil stranke, skupno DDV za mesec...



Vini, btw kako pa imate v praksi narejeno dokumentacijo? Generiranje phpDoc, wiki... ?

In, ali si za te stolpce uporabil kakšen prefix. Malo se mi zdi potrebno, da bi te stolpce nekako ločil.


všeč(0) ni všeč(0) spam(0)
Freelance Web Developer
 
Gogy 14. jan 2011 18:15:39 Pridružen od:
17. mar 2007
2491 objav
2064 252 12
#10

@SlimDeluxe, že že, vendar se mi je zdelo da imaš zadržke glede uporabe triggerja in sem mislil da lahko uporabiš UPDATE kot workaround.


všeč(0) ni všeč(0) spam(0)
 
 

🔒 Za odgovor na to temo se moraš prijaviti.

Prijavi se