[ dzigilibonglica @ 27.01.2012. 16:03 ] @
[ dzigilibonglica @ 27.01.2012. 16:03 ] @
[ mret @ 27.01.2012. 16:42 ] @
Citat: Pitanja 1) Da li je moguće uraditi Code: INSET INTO VLjudi (Ime,Prezime) VALUES ('Mika','Pantić') -- NIJE! View moze da se insertuje samo nad jednom tabelom (ako je naravno MySQL u pitanju). Ubacivanje podataka kroz "kompozitni" View je tesko ili nikako izvodljiv. Citat: znači ime i prezime postoje u referenciranim tabelama 2) Da li je moguće uraditi Code: INSET INTO VLjudi (Ime,Prezime) VALUES ('Marko','Marković') ime i prezime NE postoje u referenciranim tabelama, i morao bi da se u njih radi INSERT -- isto je vrlo nemoguće ili nije pametno Citat: Predpostavljam da je odgovor NE, i da MySQL ne može baš toliko da se automatizuje (jer sam probao ove Query-je), 3) Da li bar postoji mogućnost da se podigne Trigger nad Ovim View-om u koji bih ja mogao da gurnem kood koji će pešaka kroz SQL kood proveriti da li ima, i ako treba dodati, pa onda gurnuti Key-ve u tabelu. -- nije pametno resenje jer ces ovo tesko da odrzavas, mislim da ces brzo doci na nivo upetljavanja, pa ako vec radi ispocetka uradi ga kako treba. Da dam neki zakljucak - ovo ti nece piti vode lepo je kada je dosta stvari normalizovano (ili ako vec hoces - sve), ali treba u svemu imati meru, jer akademske stvari tipa "zatvarac skupa funkcionalnih zavisnosti" i totalno izbegavanje redundanse je pogresno navodjenje u praXi. Ja sam radio na brdo aplikcaija i nigde nisam video ovakav koncept sa imenom i prezimenom (nadam se da su ovo samo test podaci), a pogotovo je z.....no da kroz neki mehanizam kontrolises da li nesto postoji od vrednosti ili ne i da ubacujes u druge tabele. Moras da pri projektovanju nadjes meru koja ce uslovno receno zadovoljiti sve strane. Mislim da ces se ovde brzo zapucati ako zelis bas ovako da projektujes sistem. View moze da se ponasa kao tabela u nekom smislu ako predjes na ORACLE bazu (PK, FK....). Ako sam bio od neke ideje za ispravljanje, drago mi je. [ dzigilibonglica @ 27.01.2012. 17:05 ] @
Hvala na odgovoru,
ovo je banalan primer naravno, u praksi su podaci drugog tipa. Normalizaciju i radimo da bi se neke stvari ubrzale maximalno, a ne zbog pedantnosti. U pitanju je obrada nekoliko desetina miliona slogova i vrlo često umesto: Code: SELECT DISTINCT Naziv FROM TNeka_velika_tabela_od_par_miliona_slogova mnogo brže je uraditi Code: SELECT Naziv FROM TNeka_mala_tabela_sa_par_stotina_naziva_ciji_su_key-vi_u velikoj_tabeli Pretpostavio sam da ne može, šteta... a i bilo bi mnogo kada bi i to moglo ;) [ bogdan.kecman @ 27.01.2012. 23:37 ] @
Citat: dzigilibonglica: Normalizaciju i radimo da bi se neke stvari ubrzale maximalno, a ne zbog pedantnosti. Normalizacija u velikom procentu USPORAVA stvari a ne ubrzava!!! Poenta normalizacije je INTEGRITET, ne brzina. Vrlo cesto se u optimizaciji radi denormalizacija dela baze kako bi se dobilo na brzini. Inace, cela prica sa view-ovima nema pretarano smisla, ni za select ni za insert. Posebno ako zelite da dobijete na brzini! MySQL ne zna sta je to materijalized view tako da se view kao takav izvrsava prilicno "obicno" te nikakvog ubrzanja nema. Jedini razlog za koristenje istih je "skrivanje underlying tabela koje cine podatke iz tog view-a" ali "od koga ih krijete i zasto?". Bolje u aplikaciji napravite poseban layer koji radi "vadjenje" i "smestanje" tih podataka (i napisite ga sami, nemojte da koristite neke pateticne ORM sisteme koji ce tek da uspore celu pricu) nego da se zezate sa view's i stored procedures. Ovo je naravno moje licno misljenje i iskustvo, ne "zvanican stav mysql konsalting tima" posto se on donekle razlikuje ... no to sad ima mnogo vise veze sa politikom i manje sa performansama :) Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.
|