SQL mozgalice za SQL majstore
08.03.2007. u 14:41 · pre 238 meseci
#1
Nedavno sam dobio knjigu "Joe Celko's SQ: Puzzles and Answers" i jako mi se dopala ideja. Naime, g. Celko je pokupio interesantna pitanja sa Oracle, MS SQL, SQL, Access i slicnih foruma, stavio sve u knjigu sa resenjima i komentarima. Pa sam nesto dobio slicnu ideju. Ovako: postavimo pitanje, pitalicu na forumu Baze Podataka, i trazimo SQL odgovor. Znamo da razlicti sistemi imaju razlicit stepen postovanja SQL standarda i razlicite nadogradnje. Nista zato, ko zeli da ponudi odgovor, neka lepo napise u kom sistemu radi. Ovo ce nam pomoci da razvijemo SQL nacin razmisljanja i da ujedno vidimo kako se to moze uraditi u drugim bazama.
Namerno ne zelimo ovo da pitamo na specificnim forumima, da ne bismo dobili specificne odgovore. zelimo da vidimo akko se isti problem moze resiti na vise nacina, i u vise razlicitih okruzenja.
Ako se ovo dopadne posetiocima foruma, mozemo da zamolimo moderatore da pitalice stave na TOP, ili na neki nacin omoguce da se pitalice lako mogu pronaci.
Evo je prva pitalica:
Imam tabelu Students:
(
StudentID, int, PK,
MinistryNumber int, NULL dozvoljene
)
Ovo je zadatak: MinistryNumber ne postoji u momentu kad dodamo novog studenta u tabelu. Stoga moramo dozvoliti NULL vrednosti. Medjutim, kada kasnije dobijemo MinistryNumber, onda taj broj mora biti jedinstven. Dva student ne mogu imati isti MinistryNumber. Znaci, NULL je dozvoljeno, a ako nije NULL, mora biti jedinstvena vrdnost.
Sve je dozvoljeno, pa i promena modela - razbijanje tabela na dve ako neko msili da ce pomoci. Dozvoljeni su i kursori (ali se ne cene mnogo), temp tabele, trigeri, st god hocete.
Evo resenje, koje vazi za MS Access: kreirati unique index po koloni MinistryNumber. I to je sve. U Accessu je moguce imati kolonu gde indeks ignorise NULL vrednosti. Indeks ima property IgnoreNulls, koja je po defaultu Yes, pa mnogi Access programeri nisu ni svesni da se ovo desava u bazi. Dakle, zahvaljujuci odstupanju Accessa od SQL standarda, ovo je trivijalan zadatak. Da li je ovo dobro ili lose odstupanje od standarda, ostaje za neku drugu diskusiju.
U MS SQL na primer, ne mozete da kreitae UNIQUE constraint na kolni koja ima NULL vrednosti. Mozete, ali ce vam dozvoliti samo jedan red sa NULL, sledeci NULL bice tretiran kao duplikat. znaci, sta moze Access, MS SQL ne moze. Zanimljivo, zar ne ;-)
Moji programeri su pronasli jedno veoma originalno resenje u MS SQL, razlicto od svega sto su mi Microsoft VIP sugerisali. Resenje cu pokazati kad dobijemo nekoliko drugih ponuda.

Namerno ne zelimo ovo da pitamo na specificnim forumima, da ne bismo dobili specificne odgovore. zelimo da vidimo akko se isti problem moze resiti na vise nacina, i u vise razlicitih okruzenja.
Ako se ovo dopadne posetiocima foruma, mozemo da zamolimo moderatore da pitalice stave na TOP, ili na neki nacin omoguce da se pitalice lako mogu pronaci.
Evo je prva pitalica:
Imam tabelu Students:
(
StudentID, int, PK,
MinistryNumber int, NULL dozvoljene
)
Ovo je zadatak: MinistryNumber ne postoji u momentu kad dodamo novog studenta u tabelu. Stoga moramo dozvoliti NULL vrednosti. Medjutim, kada kasnije dobijemo MinistryNumber, onda taj broj mora biti jedinstven. Dva student ne mogu imati isti MinistryNumber. Znaci, NULL je dozvoljeno, a ako nije NULL, mora biti jedinstvena vrdnost.
Sve je dozvoljeno, pa i promena modela - razbijanje tabela na dve ako neko msili da ce pomoci. Dozvoljeni su i kursori (ali se ne cene mnogo), temp tabele, trigeri, st god hocete.
Evo resenje, koje vazi za MS Access: kreirati unique index po koloni MinistryNumber. I to je sve. U Accessu je moguce imati kolonu gde indeks ignorise NULL vrednosti. Indeks ima property IgnoreNulls, koja je po defaultu Yes, pa mnogi Access programeri nisu ni svesni da se ovo desava u bazi. Dakle, zahvaljujuci odstupanju Accessa od SQL standarda, ovo je trivijalan zadatak. Da li je ovo dobro ili lose odstupanje od standarda, ostaje za neku drugu diskusiju.
U MS SQL na primer, ne mozete da kreitae UNIQUE constraint na kolni koja ima NULL vrednosti. Mozete, ali ce vam dozvoliti samo jedan red sa NULL, sledeci NULL bice tretiran kao duplikat. znaci, sta moze Access, MS SQL ne moze. Zanimljivo, zar ne ;-)
Moji programeri su pronasli jedno veoma originalno resenje u MS SQL, razlicto od svega sto su mi Microsoft VIP sugerisali. Resenje cu pokazati kad dobijemo nekoliko drugih ponuda.
Re: SQL mozgalice za SQL majstore