[ bigguy @ 18.09.2009. 10:14 ] @
Imam jednu tabelu u kojoj imam polja: ID(Primary Key tipa Int), Name(nvarchar), Sur_name(nvarchar), Date_start(smalldatetime), Result(nchar) i Date_end(smalldatetime). Polje Result se popunjava na osnovu stanja neke druge tabele u kojoj se upisuju numericki rezultati, a u okviru tog polja moze stojati samo "Complete" ili "Not complete". Taj deo mogu odraditi preko aplikacije iz C#, ali mene sad zanima da li je moguce, i kako, da mi se polje Date_end automatski popuni onog momenta kada vrednost polja Result se postavi na "Complete"?
[ M E N E @ 18.09.2009. 10:41 ] @
trigger je to sto tebi treba
[ bigguy @ 18.09.2009. 11:48 ] @
Neki primer.....
[ Zidar @ 18.09.2009. 17:45 ] @
Moze i bez trigera. POlja Compleet i Date_End su ocigledno zavisna jedno od drugoga. Date_End je NULL sve dok se Result ne dobije vrednost "Completed".

Posto su polja zavisna jedno od drugog, pravila projektovanaj tabela kazu da se onda treba zadrzati samo jedno polje, a jedno odbaciti. Ja bih odbacio Result a zadrzao Date_End. Kad je aktivnos zaista zavrsena (completed), sto znas iz neke druge tabele, onda samo upises datum u Date_End. Znaci, kad saznas da je vreme da se nesto proglasi za 'Compleetd' tada upises datum u Datum_End, ne pre toga. Ti mozes na formi da imas dugme ili check box 'Completed' pa kad kliknes, onda tvoj kod upise GetDate() u Date_End.

Tacno je da ovo moze da odradi triger, ali potreba za trigerom je znak da smo nesto verovatno promasili u dizajnu baze. U ovom slucaju deluje da imas dva polja koje zavise jedno od drugoga, pa je resenje kako sam opisao. Medjutim i to sto kazes da "Polje Result se popunjava na osnovu stanja neke druge tabele u kojoj se upisuju numericki rezultati", ukazuje da mozda ne treba ni jedno od ova dva polja (Result, Date_End). Ako se iz te neke druge tabele moze pokazati da li je nesto Completed ili nije, onda nema potrebe ni za jednim od ova dva polja. Dovoljno je na formi pokazati rezultat nekakvog kverija koji proverava tu neku drugu atbelu gde se upsuju numericki podaci.

Ne valja da u tabeli naka polja zavise od bilo cega sto nije PK. A jos manje valja da neko polje zavisi od necega sto se desilo ili nije desilo u nekoj drugoj tabeli.



[ bigguy @ 21.09.2009. 09:52 ] @
Donekle Zidar imas prava sto se tice polja Complete, ali moram se ipak vratiti na trigger. Stvar je malo komplikovanija nego sto ovde izgleda i hajde pokusacu da je objasnim.

Zamisljeno je da aplikacija komunicira sa jednim uredjajem i da u okviru aplikacije postoji klasa koja razbija string koji se dobija od tog uredjaja. Podaci koji se dobijaju razbijanjem tog stringa se smestaju u okviru odgovarajucih polja tabela, pa tako se i polje Result puni sa podacima o rezultatu nekog ispitivanja. Ovaj deo se odvija u pozadini aplikacije automatski.

Takodje, punjenje polja Result nije strogo ograniceno na punjenje iskljucivo podacima iz stringa koji se dobija iz komunikacije sa uredjajem, jer neke stvari koje se zadaju za analizu rade se rucno, stoga za te slucajeve omoguceno je da se podaci o rezultatima jednostavno mogu upisati iz forme u okviru aplikacije. Iz ovoga se jasno moze videti da se polje Result moze puniti na dva nacina.

Meni je sad potrebno da se zabelezi datum i vreme kada je polje Result popunjeno. Mozda za ovo i ne treba trigger ali ja ne znamna koji bi nacin ovo realizovao.

[Ovu poruku je menjao bigguy dana 21.09.2009. u 12:20 GMT+1]
[ Zidar @ 21.09.2009. 13:37 ] @
Ko je tako, onda zaista treba triger. Zakaci skriptu za CREATE TABLE i daj INSERT INTO za nekoliko podataka, pa da vidimo sta mzoe da se napravi.
[ .:Marvin:. @ 23.09.2009. 07:34 ] @
Cek, da vidim da li sam dobro razumeo: ti dobijas string od tvog uredjaja, parsiras ga, i onda upisujes u tebelu?
U momentu kad je string 'razbijen', njega si verovatno smestio u razne druge stringove, pomocu kojih kreiras neki SQL iskaz za insert u tabelu?
U tom slucaju, znaci da ti u nekom stringu, nazovimo ga StrCompleted, imas vrednost koju tek treba da upises u kolonu Completed u tabeli?
Da li sam dobro razumeo?
[ bigguy @ 23.09.2009. 09:22 ] @
Sve pada u vodu Baza mi nije dobro definisana

No hajde da probam ovde da postavim pitanja oko novonastalih problema da nebih otvarao novu temu. Izvucicu samu srz problema, a to su 2 sledeca pitanja:
Baza: tblReagensi -> tblAnalizatori -> tblAnaliza -> tblNalog.

1. Tabela tblAnalizatori ima sledece kolone: idAnalizator Primary Key (int), naziv_analizatora (nchar 50) i idReagens (int) preko koje je ova tabela u vezi sa tabelom tblReagensi. Takodje, imam tblAnaliza koja ima sledece kolone:idAnaliza Primary Key (int), naziv_analize (nvarchar 50), jedinica_mere (nchar 5), donja_granica (decimal (5,2)), gornja_granica (decimal (5,2)) i idAnalizator (int). Medjutim, svaka analiza ima minimum 3 analizatora, i pitam se da li to sad zaci da ustavri ja treba da imam, u slucaju da postoje 3 analizatora, ustvari tri identicna reda u tabeli tblAnaliza koji imaju samo razlicitu vrednost u zadnjoj koloni??? Kakva je to vrsta veze koja treba da postoji izmedju tblAnalizator i tblAnaliza, jedan -> vise ili .....??? Kako se ovo realizuje?

2. Tabela tblNalog treba da ima sledece kolone: idNalog Primary key (int), ime (nvarchar 50), prezime (nvarchar 50), pol (bit), LIB (int), datum_prijema(smalldatetime), vreme_prijema(smalldatetime), idAnaliza (int), datum_zavrsetak (smalldatetime), vreme_zavrsetka (smalldatetime), rezultat (decimal (5,2)). Napomenucu da je ukupan broj analiza 40 (ali se njihov broj moze uvecati kupovinom novog aparata) i da je dnevni broj pacijenata odprilike oko 100, a prosek broja analiza koje se rade za svakoga pojedinacnog pacijenta je oko 20. ako bi isao logikom predhodnog pitanja to bi onda znacilo da u proseku ta tabela bi trebalo da ima oko 2000 redova dnevno i oko 60000 mesecno, pa nisam siguran da je to pravi nacin realizacije ovako neke baze?! :-\

Kako ustvari treba da se kreira ova baza???? Moze pomoc PLEASE!!!!!!!!
[ .:Marvin:. @ 23.09.2009. 12:17 ] @
Za pocetak, procitaj malo o normalizaciji, i normalnim formama. Obavezno nadji i primere. Koristice ti ovo znanje ubuduce.

Sto se tice tvojih novih pitanja...

1. Imas dva resenja.
a) Ako svaka analiza ima tacno 3 analizatora (manje moze, a ne vise), onda mozes da napravis 3 kolone u tabeli tblAnaliza, gde ces upisivati Id-jeve analizatora. Ovo resenje je ne bas sasvim ispravno, ali korisno :)
b) Napravis novu tabelu, tblAnalizaAnalizator, koja ce imati dve kolone, idAnaliza (sa stranim kljucem ka istoj koloni na tabeli tblAnaliza) i idAnalizator (i strani kljuc ka tabeli tblAnalizatori). Tako da za jednu analizu mozes imati vise analizatora:
Evo kako bi onda izgledali redovi u toj tabeli:
kolone: idAnaliza, idAnalizator
vrednosti:
1, 1
1, 2
1, 3
1, 4
2, 1
3, 1
4, 1
4, 2
...
Ovo resenje pod b je mnogo bolje, jer i ako se sutra promeni da analiza moze da ima jos analizatora, ti samo dodajes nove redove.

2. Nisam siguran sta si hteo s ovom drugom tabelom. Najbolje da das tekst opisa posla koji imas (makar u svojoj glavi) pa da vidimo da li ti je dobro osmisljena ta tabela. U svakom slucaju, broj redova u nekoj tabeli ne treba da te brine dok ne pocne da se meri milionima. A i tad postoje razna resenja.

[ bigguy @ 23.09.2009. 12:52 ] @
Sto se tice prvog pitanja upravo sam danas radio na tvom predlogu pod stavkom b) ali imam problem kod unosa vrednosti. Ako na taj nacin oformim relationship onda mi je strogo ogranicen tok upisa vrednosti od tblAnalize, pa vrednosti u tblAnalizeAnalizatori pa onda u tblAnalizatori. Meni je potrebno da omogucim ne zavisno punjenje tabela tblAnalizatori i tblAnalize, a da tek posle izvrsim punjenje tblAnalizeAnalizatori. E to vec ne znam kako da izvedem???

A za drugo pitanje dao si mi odgovor Thank you
Plasio sam se da je unos od 1milion rows u toku godine prevelik problem
[ Zidar @ 23.09.2009. 14:22 ] @
Zasto nam ne kazes lepo od pocetka, sta to u stvari pokusavas da napravis? Bilo bi mnogo lakse da nam opises sta je to Analiza, sta su to Reagensi, sta su to Analizatori, sta je to Nalog i kakvoj vezi te stvari stoje u prirodi. Pusti bazu i relacije za trenutak.

Iz delica u porukama moze se zakljuciti da je u pitanju nekakv sistem za pracenje nekakvih analiza koje se vrse za neke pacijente. Rezultati se dobijaju ili sa uredjaja ili se unose rucno. Bilo bi mnogo lakse da nam opises od pocetka sta je to sto pokusavas sa da napravis. Ovako, dajes nam poneku nekompletnu informaciju onako iz sredine i mi treba da pogadjamo sta se desava. I onda dolazis sa gotovim predlozima (kao treba ti triger) da bi zakljucio da ti baza nje definisana kako valja, pa nam onda umesto objasnjenja pokazes relacije iz te lose definisane baze. Ako baza nije definisana kako valja, ne moze se popraviti, mora se iznova napraviti a to se moze kad s epocne od opisa procesa koji pokusavas da podrzis.
[ bigguy @ 23.09.2009. 21:58 ] @
Pa Zidar imas pravo da je tako bolje. Evo kao sto si i ti, i verujem mnogi drugi skontali rec je o laboratorijskom informacionom sistemu i njegovom povezivanju sa jednim laboratorijskim aparatom-analizatorom. Bazama se nikada nisam puno opterecivao jer sam vecinu stvari radio preko aplikacije, ijako znam da je to greska. Greske se daju ispraviti pa sam prionuo na rad. Deo problema mi je bio kako da ispostujem protokol proizvodjaca aparata-analizatora i omogucim pravilno iscitavanje stringa koji se dobija na izlazu analizatora. Taj problem polako raspetljavam, ali ideja je da mi se podaci dobijeni razbijanjem izlaznog stringa analizatora prema automatizmu upisuju u odgovarajuca polja baze. Drugi deo problema je napraviti LIS. Taj LIS treba da obuhvati mnogo toga. Pa ajdemo od pocetka. On treba da omoguci da se u podesavanjima kreiraju:analize sa svim njenim pratecim podacima (granicne vrednosti, jedinica mere, kao i spisak analizatora koji mogu da analiziraju serum za tu analizu), analizatori sa njegovim parametrima (misli se na reagens koji se koristi prilikom procesa analiziranja seruma, kao i kolicina utrosnje reagensa), reagensi sa njegovim parametrima (cena, naziv dobavljaca, itd.), operateri, itd. Kada izvrsim kreiranje ovih analiza, analizatora i reagenasa na osnovu toga preko forme aplikacije osoblje kreira nalog koji obuhvata podatke o pacijentu, datum prijema, vreme prijema i analize koje se sve trebaju izvrsiti, a prilikom odabira analize opredeljuju se i za analizator koji ce vrsiti analizu seruma. Nakon obrade seruma dobijaju se rezultati koji se mogu uneti na dva nacina: automatski (ako je rec o uredjaju koji je u mrezi sa LIS-om i ukoliko je on odabran prilikom odabira analizatora koji ce vrsiti analizu) ili rucno preko forme aplikacije. U oba slucaja neophodno je registrovati datum i vreme kada je rezultat upisan zbog nekih kasnijih administrativnih potreba. Ovo je ukratko sve ono sto sam do sada kroz parcijalna pitanja postavlja kao problem. Naravno pored svega ovog postoji tu jos i niz drugih sitnica koje ce dopunjavati LIS, ali ovo su mi kljucni problemi.

Nadam se da je sad iole malo jasnije ono sto pokusavam uraditi, ako nisam uspeo jos i dodatno da vas zabunim
Naravno da mi nije namera da onu staru bazu prepravljam vec mi je namera da kreiram novu koja ce upravo raditi ono sto je meni potrebno.
[ Zidar @ 24.09.2009. 14:44 ] @
OK, sad je nesto bolje. Pazi, pokusavamo da ti pomognemo, a ne da drzimo lekcije tipa 'ne valja ti to sto radis' - s tim smo zavrsili.

Verujem da ces resiti problem citanja stringa sa uredjaja, to je cisto programiranje i tu si ti expert. Sto se tice baze koja ce te podatke da cuva, prvo pravilo je da se mora napraviti nezavisno od bilo kakvog programa koje ce postojati. Znaci, bazu pravimo tako da je nezavisna od bilo kojih programa koji ce joj pristupati. Znaci, zaboravimo programe na trenutak. Kad napravis bazu, onda ce programi vec naci nacina da unesu podatke, bilo citanjem sa uredjaja bilo kucanjem podataka preko neke forme.

Ovako sam razumeo proces, na osnovu tvog poslednjeg posta. Ti me ispravi, dodpuni sta treba. U navodnicima je tvoj tekst.

1) Laboratorija vrsi analize seruma, za pacijente.
2) Analize se vrse u uredjju koji se zove analizator.
3) Za svaku analizu koristi se odredjeni reagens, ili vise njih, sa definisanim kolicinama "analizatori sa njegovim parametrima (misli se na reagens koji se koristi prilikom procesa analiziranja seruma, kao i kolicina utrosnje reagensa), "
4) Ne moze svaki analizator da vrsi svaku analizu, otud ono "spisak analizatora koji mogu da analiziraju serum za tu analizu"
5) O reagensima zelimo da cuvamo podatke "cena, naziv dobavljaca, itd"
6) Analizatorima upravljaju ljudi koje zovemo Operateri.
7) Za svakog pacijenta kreira se nalog.
8 ) Nalog opisuje koje se analize imaju izvrsiti i na kom analizatoru (uredjaju)
9) U nalog se upisuju i podaci o pacijentu (koji?), datum i vreme prijema (pacijenta? uzorka?)
10) Za neke uredjaje napisan je program koji cita izmerene podatke u vidu stringa. Program je us stanju da dolazni string isparsira na delove koji ce se spakovati negde u bazu.
11) To sto dolazi sa stringa jesu rezultati analize, parametri.
12)Za svaku nalizu definisali smo sta su ulazi (koji reagensi, kolicine) i sta su izlazi.
13) Ako rezultati dolaze sa analizatora (uredjaja) za koji ne psotoji program za automatsko citanje, onda se rezultati unose rucno.
14) Datum upisivanja rezultata ce se registrovati automatski, nema potrebe da operator to kuca.
15) Moja pretpostavka: ne moze svaki operater da radi na svakom analizatoru

Analizom ovih 14 recenica, moze se napraviti skup tabela koje nam trebaju, barem za prvu iteraciju. Ja cu ti dati ono sto se zove logicki model. Model ce pokazati samo nazive entiteta (to ce biti tabele), njihovih atributa (bice to kolone, polja u tabelama) i osnovne veze medju njima. Ne ulazim u tipove podataka i da li treba autonumber ili ne, to ces da resis kad budes logicki model prevodio u fizicki. Pokazujem samo obavezna polja i Primerne Kljuceve (PK) i strane kljuceve (FOREIGN KEY) FK. Ovako nekako:

Analiza (OznakaAnalize = PK, ZvanicniNazivAnalize)

ReagensiAnalize (OznakaAnalize, OznakaReagensa, Kolicina) PK=(OznakaAnalize, OznakaReagensa), FK=OznakaAnalize REF. Analiza

ParametriKojiSeOdredjujuAnalizom (OznakaAnalize , OznakaParametra, Jedinicamere) PK (OznakaAnalize , OznakaParametra), FK=OznakaAnalize REF. Analiza

Raeagensi (Oznakareagensa = PK, ZvanicniNazivReagensa, JedinicaMere)

Analizatori (OznakaAnalizatora = PK, ZavnicniNazivAnaliztora, ImaIliNemaProgramZaAutomatskoCitanje)

SpisakAnalizatoraZaAnalizu (OznakaAnalize, OznakaAnalizatora) PK = (OznakaAnalize, OznakaAnalizatora)

Operater (OznakaOperatera = PK, Ime, prezime...)

OpearteriAnalizatora (OznakaOperatera, OznakaAnalizatora) PK = (OznakaOperatera, OznakaAnalizatora), FK1: OznakaOparatera REF Operateri, FK2: OznakaAnalizatora REF ANalizatori

PrimljeniPacijenti (OznakaPrijema = PK, Ime, Prezime, DatumPrijema) Napomena: ovo omogucava da se jedan pacijent pojavi vise puta

AnalizeKojeTrebaIzvrsitiZaPacijenta (OznakaPacijenta, OznakaAnlize, OznakaAnalizatora, Operator) PK = (OznakaPacijenta, OznakaAnlize), FK1=( OznakaAnalize, OznakaAnalizatora) REF. SpisakAnalizatoraZaAnalizu , FK2 = (OznakaPrijema) REF PrimljeniPacijenti, FK3 = (OZnakaOperatera,OznakaAnalizatora) REF OperateriAnalizatora

RezultatiIzvrsenihNalize (OznakaPrijema , OznakaAnalize , OznakaParametra, VrednostParametra, DatumUnosa, KoJeUneo)
PK = (OznakaPrijema , OznakaAnalize , OznakaParametra), FK1 = (OznakaPacijenta, OznakaAnlize) REF AnalizeKojeTrebaIzvrsitiZaPacijenta , FK2 = (OznakaAnalize , OznakaParametra) REF ParametriKojiSeOdredjujuAnlizom


To se sve moze prikazati pojednostavljenom slikom (samo PK i FK su prikazani):



Sad da se vratimo na pocetna pitanja:
1) Kako zanm da li je i kada odredjena anliza kompletirana? U tabelu RezultatiIzbvrsenihAnaliza upisuju se - rezultati. Ako neka analiza daje kao rezultat vise parametara, analiza je kompletitrana kada su svi rezultati (rezultati za svaki parametar) uneti u tabelu RezultatiIzvrsenihAnaliza.
2) Koji je datum kompletiranja odredjene analize? Pa to je datum kad je unesen poslednji parametar.
Odgovore na pitanja 1 i 2 ne treba cuvati u tabeli, oni se uvek mogu dobiti nekim kverijem. Mogao bi na primer u aplikaciji imati zvestaj "Status Analize" koji bi se zasnivao na kverijima koji odgovaraju na pitanja 1 i 2. Takodje bi verovatno bio zgodan izvestaj tipa "Pokazati sve analize koje jos nisu zavrsene (nedostaju rekordi o nekim rezultatima)"

Pitanaj 1 i 2 se mogu podici na nivo pacijenta, pa se kaze:
3) kako da znam kada su sve analize za nekog pacijenta zavrsene
4) Kada su zavrsene sve analize
5) Koji pacijenti nisu kompletirani (imaju jos nezavrsenih analiza)

Odgovori se diobijaju kverijima, na isti nacin kao z apitanja 1 i 2.

Ako ti ovo predstavlja problem, javi se kad to doje na red pa cemo pomoci.


Unos podataka u tabele
Ako pogledas sliku logickog modela, videces da postoje tabele koje su na rubu sheme i tabele koje su 'unutra'. One na rubu su uvek na strani vise (Reagensi, Analize, Analizatori, Operateri, PrimljeniPacijenti). Sve osim PrimljeniPaciejnti su tzv. 'bazne tabele' ili kako se cestio u Srbiji zovu 'sifranici' te tabele moraju biti popunjene pre nego se pokusa unos u ostale tabele. sadrzaj baznih tabela se ne menja tako cesto, one su prakticno staticne.

Zatim se unose podaci u ReagensiAnalize, ParametriKojiSeOdredjujuanlizom i AnalizatoriAnalize, OperateriAnaliza. Ove tabele nisu bazne, jer zavise od baznih, ali su vazne jer obezbedjuju podatke za operativne tabele.

Sad si spreman da pocnes da radis sa operativnim tabelama.

Operatvne tabele su PrimljeniPacijenti, AnalizeKojeTrebaIzvrsitiZaPacijenta i RezultatiIzvrsenihAnaliza. Kad dodje pacijent asa uputom od specijaliste, onda se unosi novi red u tabelu PrimljeniPacijenti. Odmah posle toga se moze kreirati nalog. Nalogom definises koje ce se analize raditi, na kom analizatoru i koji operater ce to da uradi. 'Nalog' mi deluje kao skracenica od 'Radni nalog'. Ako je u pitanju vise operatera z avise analiza, onda cemo iamti vise radnih naloga. To je u tabeli AnalizeKojeTrebaIZzrsitiZaPacijenta. Nalog to i kazuje: "Analizu X za pacijenta Y na masini Z izvrsice operater Laza". Znaci, Nalog = AnalizeKojeTrebaIZzrsitiZaPacijenta. Ako se stampa radni nalog kao izvestaj, onda se mogu ukljuciti i reagensi i kolicine koje ulaze u analizu, da operater zna sta treba da trebuje ili uzme odakle se vec uzimaju reagensi.

Opearteri s ebace vredno na rad i mic po mic, pojavljuju se podaci u tabeli RezultatiIzvrsenihAnaliza. Kad operater podnsi rezultat, mora da kaze na kog pacijenta (oznaka prijema), na koju se analizu, koji parametra se odnosi, vrednost koju ce upravo uneti. Sve ovo je lep combo box u palikaciji, a baza vodi racuna da se ne pobrkaju podaci, zato imamo PK i FK. Ako ce neki C program da cita podatke sa masine direktno, program mora da obezbedi iste ove podatke - za kog pacijenta, koju anlizu, koji parametar i vrednost.

Naravno da svakoj tabeli treba dodati polja DatumUnosa DateTime DEFAULT = GetDate() i KoJeUneo, moze DEFAULT = UserName() ili tako nesto.

Na kraju se moze napraviti kveri koji sve rezultate pokupi i prikaze na izvestaju koji bi se zvao, je li, "Laboratorijski Nalaz"....

Pazi kad budes gradio fizicki model, da ne preskocis neki od FK. Verujem da ces dodati i neki autonumber koji bi ti pomogao 'da lakse pises kverije'. To ne preporucujem, ali verovatno ne bih mogao date ubedim u suprotno, pa ni ne pokusavam. Sacuvaj ono sto sma ti dao u logickom modelu, a dodaj sta god hoces.

Nadam se da je ovo pomoglo.






[ bigguy @ 24.09.2009. 16:02 ] @
Zidar ovo je bas izdasan odgovor i sta reci za ovako nesto...

Mozesli mi samo tacno reci kada si pisao npr. citiracu ovo:


ParametriKojiSeOdredjujuAnalizom (OznakaAnalize , OznakaParametra, Jedinicamere) PK (OznakaAnalize , OznakaParametra), FK=OznakaAnalize REF. Analiza


Da li si tu podrazumevao da je i kolona OznakaAnalize i OznakaParametra su ustvari Primary Key za tu tabelu? Da li su to ustvari slucajevi kada imam po dva ili i vise Primary Key u jednoj tabeli? Takodje me interesuje kada si pisao REF npr. u ovo delu:


AnalizeKojeTrebaIzvrsitiZaPacijenta (OznakaPacijenta, OznakaAnlize, OznakaAnalizatora, Operator) PK = (OznakaPacijenta, OznakaAnlize), FK1=( OznakaAnalize, OznakaAnalizatora) REF. SpisakAnalizatoraZaAnalizu , FK2 = (OznakaPrijema) REF PrimljeniPacijenti, FK3 = (OZnakaOperatera,OznakaAnalizatora) REF OperateriAnalizatora

sta to ustvari oznacava?

Mozda sam dosadan ali kako jednom davno rece onaj cika sa novcanice od 100$:
"Reci mi i ja ću zaboraviti,
Pokaži mi i ja ću možda zapamtiti,
Uključi me i ja ću razumeti."

[ Zidar @ 24.09.2009. 17:22 ] @
Citat:
Da li si tu podrazumevao da je i kolona OznakaAnalize i OznakaParametra su ustvari Primary Key za tu tabelu?

Tacno tako. Tabela ParametriKojiSeOdredjujuAnalizom ima slozeni PK, sastoji se od dva atributa, kako je navedeno. Ako ne uradis ovako, nego recimo uvedes ParametarID, IDENTITY polje i kazes "To je moj PK jer je uvek jedinstven" mogu se desiti interesantne stvari. Na primer, mozes da namerno ili greskom izvrsis ovu operaciju:

INSERT INTO ParametriKojiSeOdredjujuAnalizom (OznakaAnalize , OznakaParametra, Jedinicamere) VALUES (1,1,'mg');
INSERT INTO ParametriKojiSeOdredjujuAnalizom (OznakaAnalize , OznakaParametra, Jedinicamere) VALUES (1,1,'mg');
INSERT INTO ParametriKojiSeOdredjujuAnalizom (OznakaAnalize , OznakaParametra, Jedinicamere) VALUES (1,1,'mg');

Upravo sam parametar '1' dodelio analizi '1' tri puta, i svaki put je SQL server pametno dodao jedinstveni PK. Imamo dakle triplikat, a da to i ne znamo. E, kad pocnemo da vrtimo kverije, onda nastane haos i svi traze bug u aplikaciji, pa ispadne programer kriv. A nije. Kriv je onaj ko je napravio bazu. E sad, ako su programer i onaj ko pravi bazu ista osoba...

Znaci, bez slozenog PK se u ovom slucaju jednostavno ne moze. Mozes ti da dodas jos jednu kolonu, nekakav jedinstveni ParametarID, da bude tipa atonumber (identity) ali ti to nicemu ne sluzi. Mozes cak i da je proglasis za PK, tu novi identity kolonu. Sve je to OK ukoliko imas UNIQUE index na kolonama (OznakaAnalize , OznakaParametra). Taj UNIQUE index je tvoj stvarni PK, makar na silu uveo nekakav jedinstveni identity (autonumber) i proglasio ga za PK.


Citat:
Takodje me interesuje kada si pisao REF npr. u ovo delu: .... sta to ustvari oznacava?

Ovo je MS SQL forum i pretpostavka je da si upoznat sa osnovnim pojmovima. FK znaci FOREIGN KEY, na srpskom 'slozeni kljuc'. FK znaci da vrednost ne moze biti unesena u posmatranu tabelu, ukoliko takva vrednost ne postoji u nekoj drugoj tabeli. REF je skracenica od reci REFERENCES koja oznacava tabelu u koju se gleda. pre nego se unese vrednost u nasu tabelu. FOREIGN KEYS su deo onoga sto zovemo 'referential integrity' a to je koncept koji omogucuje da se podaci u bazi podataka odrze u konsistentnom i sinhronizovanom stanju.

Ovo je otprilike komanda za uspostavljanje referencijalnog integriteta izmedju dve tabele:
Code:

ALTER TABLE AnalizeKojeTrebaIzvrsitiZaPacijenta
ADD CONSTRAINT fk_OznakaPacijenta 
FOREIGN KEY (OznakaPacijenta)
REFERENCES PrimljeniPacijenti(OznakaPacijenta)
Sat to znaci?

ALTER TABLE AnalizeKojeTrebaIzvrsitiZaPacijenta znaci da cemo nesto da uradimo sa tabelom AnalizeKojeTrebaIzvrsitiZaPacijenta

ADD CONSTRAINT fk_OznakaPacijenta znaci da cemo da uvedemo neko ogranicenje pod imenom fk_OznakaPacijenta

FOREIGN KEY (OznakaPacijenta) znaci da je ogranicenje tipa FOREIGN KEY i da to ogranicenje postavljamo na kolonu OznakaPacijenta

REFERENCES PrimljeniPacijenti(OznakaPacijenta) znaci da kolona OznakaPacijanta u tabeli AnalizeKojeTrebaIzvrsitiZaPacijenta sme da
dobije vrednost iz tabele PrimljeniPacijenti kolona OznakaPacijenta. Ovo je i logicno, jer ne mozes zahtevati da se odradi analiza za pacijenta koji jos nije ni primljen.

Dakle, jedan logican zahtev smo preveli na jezik baze podataka i baza ce to da postuje 100%. Ako to radi baza, onda programer ne mora da o tome vodi racuna. Sama baza nece dozvoliti da djubre bude uneseno. Ovaj zahtev doduse nismo explicitno naveli u listi zahteva, ali zato postoje projektanti baza podataka, da se sete takvih zahteva. Korisnik nikada nece spomenuti ovako nesto, ali to nije razlog da projektant ne zapita ili sam ne postavi takvo ogranicenje.

Sto se tice cike sa novcanice od $100, on jeste verovatno rekao
Citat:

"Reci mi i ja ću zaboraviti,
Pokaži mi i ja ću možda zapamtiti,
Uključi me i ja ću razumeti."

ali to je tipicna americka glupost. Nedostaje 'nauci me' ili 'naucicu' sto je jako vazno. Ukljucenej dodje tek posle toga, barem u mojoj firmi

U Americi se velika paznja poklanja 'ucenju na primerima' (case studies). Kao rezultat, vecinu poslova gde se trazi znaje i razmisljanje, rade stranci, iz drustava gde se tarzi da se nesto i nauci i nije dovoljno reci, pokazati i ukljuciti. IT poslove rade kinezi, indusi, srbi, rusi, a svi dolaze iz zemalja gde se trazi da debelo zagrejes stolicu. Ameri ne vole da strebaju i tu im je greska. Dokaz da je tako vidi se ovih dana u novinama i televiziji....

Eto, rekao sam ti i pokazao ti. Sad je na tebi da to naucis, pa kad naucis i dokazes da si naucio, tek onda moze da se prica o ukljucivanju. A da razumes moras pre toga. U skoli se uci analiza sistema na osnovu koje se radi dizajn baze i to je lepa dva semestra, mozad i duze. Ako je krace, jednostavno nije dovoljno vremena da se sve savlada. A onda dodju godine nekakvog iskustva, pa ipak ne moze da se kaze 'ja umem ovo da radim'. Bolje je reci diplomatski 'postoji znacajna sansa da cu napraviti bazu podataka koja uglavnom zadovoljava potreba korisnika'. I tek onda nastupaju programeri. Nikako pre.

Srecan rad







[ bigguy @ 25.09.2009. 00:59 ] @
Jos jednom hvala na ovim opsirnim objasnjenjima, a sad onda na mozganje. Pre samoga pocetka imasli neko korisno stivo da preporucis, sto na strpkom ili engleskom gde bi ovakve stvari mogle biti jasno objasnjene?

PS-samo da znas da je meni oduvek u toj Frenklinovoj izjavi ne dostajao deo koji se odnosio na ucenje. Cak sam se, secam se, i kladio, i naravno izgubio opkladu, da postoji deo koji se odnosi i na ucenje. Zato i znam ovu recenicu napamet jer me je davno doooosta kostala

Snasao sam se za literaturu ali ako imas zelju da nesto posebno preporucis voljan sam da cujem

[Ovu poruku je menjao bigguy dana 25.09.2009. u 14:18 GMT+1]
[ Zidar @ 25.09.2009. 14:42 ] @
Drago mi je da imas zelju da naucis ovo

Nisam siguran da postoji neka knjiga za koju iko moze da kaze "e odavde se uci projektovanje baza podataka". Opste pravilo je: citaj sve sto ti dodje pod ruku. Ako imas nekoga ko studira u Americi ili Kanadi, preko njih mozes doci do odlicnih knjiga, oblast bi bila "System Anlysis and Design" ili "Database Management and Design". Razliciti univerziteti daju kursevima razlicita imena, a knjige se mogu naci na popustu po univerzitetskim knjizrama (starija izdanja, polovne itd, sve je OK).

Meni su se najvise dopali originalni radovi koje je postavio Dr Peter Chen, tvorac ER metodologije. Originalni radovi su mnogo prostiji nego ono sto se predaje u skolama kao Entity Relationship Model. Ne znam zasto profesori toliko komplikuju, valjda sve mora da izgleda kao viskoa nauka... ER metod se zove MOV u Jugoslaviji (Model Objekti - Veze?).

Elem, evo ga sajt gde se mogu skinuti originalni papiri
http://bit.csc.lsu.edu/~chen/chen.html
Odes na papers and Downlaods i skidas redom. Obrati posebnu paznju na rad koji se zove *English Sentence Structure and Entity-Relationship Diagram. Ako shvatis taj rad, uz malo vezbe moci ces direktno iz recenica da gradis shemu baze. Posle tu shemu mozes da proveris postupcima normalizacije i uglavnom ispadne dobro. Primeti da sam tcoj opis projekta razbio na recenice i napisao ih jednu ispod druge. POsle toga sam te recenice jednostavno preveo u crtez sheme baze. malo vezbe treba, ali se isplati stostruko.

I naravno, klasik od koga je sve pocelo - *The Entity-Relationship Model--Toward a Unified View of Data

Uz Chena, na internenetu se moze naci i originalan rad EF.F. Codd-a, koji su smatra za osnovu relacuione teorije. To je bas suva teorija, koju je lepo procitati ne na pocetku, nego kasnije, kad (ako) vec udjes u te vode. Relativno je lako naci, barem u Americi, i knjigu "An Introduction To Database Systems", autor Chris Date, koji se uz Codd-a smatra ocem relacione teorije

Ako ti dodje pod ruku nesto sto je napisao Joe Chelko, Itzik Ben Gan ili Ken Henderson, ne propusti priliku, za praksu mozda najkorisnije stivo, ne doduse iz projektovanja baza, ali razumevanje SQL svakako. Joe i Itzik su napisali po cetiri knjige a Ken samo jedu, ali vrednu. Chelkove knjige su nezavisne jedna od druge i mogu s ecitati u bilo kom redosledu. Itzikove knjige treba citati po redu, jer se ama bas nista ne ponavlja od knjige do knjige, a da bi rezumeo neku moras da znas sta pise u prethodnim.

Sreacn rad i samo napred


[ bigguy @ 25.09.2009. 15:56 ] @
Kao i do sada jos jednom hvala na prilozenom.

Pogledacu ovo sto si mi preporucio kao linkove pa cu na osnovu svega toga, ali i na osnovu ovoga sto si mi predhodno sve izlozio pokusati da napravim valjani DataBase Diagram za ovaj moj slucaj. Ako ti ne bude bilo tesko, na ovoj temi cu ga okaciti, pa cu sa znatizeljom ocekivati tvoje komentare i sugestije.

Hvala jos jednom
[ pikac @ 26.09.2009. 09:50 ] @
>

--0015174765b05244f40474772982
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable

Vasa riznica znanja mi je od neprocenjive pomoci i jos jednom Vam se duboko zahvaljujem na pomoci koju mi ukazujete<br><br>a evo o cemu se kod mene radi, postoje 2 teme<br><br>1 tema:<br><b>sistem evidencije za borilacki klub,</b> projekat sam vec radila, ali je korisniku otisao operativni sistem, izgubio je bazu,<br>
a ja je nisam backapovala-mislim na projekat-tamo gde su povezane tabele-sto je i najvazniji deo, podaci su otisli,<br>i posto i dalje treniram u tom borilackom klubu, sada sam po principu putuj igumane-ponovo ispocetka sve osmislila<br>
pisacu Vam detaljnije-sada sam malo neispavana-----imala sam ideje za snimanje spotova-rezija-scenario-muzika-sve one man shou-ja , a ispred kamere...aikido tehnike<br><br>2tema:<br><b>sistem evidencije arhiviranih i aktivnih video spotova</b> u jednoj lokalnoj TV stanici-tamo vise ne radim, a moji sefovi nisu bili <br>
zainteresovani za taj projekat, tako da to moze da saceka jos, ali mi je ostao izazov da kako resiti problem.u ovoj bazi bi se skladistili kratki video filmcici-reklame koje bi se pretrazivale po IMENU reklame-proizvodu koji reklamiraju i PERIODU EMITOVANJA.<br>
<br>eto toliko za sada, pogledacu sve knjige koje ste naveli<br>Jelena Stajic<br>srdacan pozdrav<br><br><div class="gmail_quote">2009/9/25 Zidar <span dir="ltr">&lt;<a href="mailto:[email protected]">[email protected]</a>&gt;</span><br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">Drago mi je da imas zelju da naucis ovo :-)<br>
<br>
Nisam siguran da postoji neka knjiga za koju iko moze da kaze &quot;e odavde se uci projektovanje baza podataka&quot;. Opste pravilo je: citaj sve sto ti dodje pod ruku. Ako imas nekoga ko studira u Americi ili Kanadi, preko njih mozes doci do odlicnih knjiga, oblast bi bila &quot;System Anlysis and Design&quot; ili &quot;Database Management and Design&quot;. Razliciti univerziteti daju kursevima razlicita imena, a knjige se mogu naci na popustu po univerzitetskim knjizrama (starija izdanja, polovne itd, sve je OK).<br>

<br>
Meni su se najvise dopali originalni radovi koje je postavio Dr Peter Chen, tvorac ER metodologije. Originalni radovi su mnogo prostiji nego ono sto se predaje u skolama kao Entity Relationship Model. Ne znam zasto profesori toliko komplikuju, valjda sve mora da izgleda kao viskoa nauka... ER metod se zove MOV u Jugoslaviji (Model Objekti - Veze?). <br>

Elem, evo ga sajt gde se mogu skinuti originalni papiri <a href="http://bit.csc.lsu.edu/%7Echen/chen.html" target="_blank">http://bit.csc.lsu.edu/~chen/chen.html</a><br>
Odes na papers and Downlaods i skidas redom. Obrati posebnu paznju na rad koji se zove **English Sentence Structure and Entity-Relationship Diagram*. Ako shvatis taj rad, uz malo vezbe moci ces direktno iz recenica da gradis shemu baze. Posle tu shemu mozes da proveris postupcima normalizacije i uglavnom ispadne dobro. Primeti da sam tcoj opis projekta razbio na recenice i napisao ih jednu ispod druge. POsle toga sam te recenice jednostavno preveo u crtez sheme baze. malo vezbe treba, ali se isplati stostruko.<br>

<br>
I naravno, klasik od koga je sve pocelo - **The Entity-Relationship Model--Toward a Unified View of Data*<br>
<br>
Uz Chena, na internenetu se moze naci i originalan rad EF.F. Codd-a, koji su smatra za osnovu relacuione teorije. To je bas suva teorija, koju je lepo procitati ne na pocetku, nego kasnije, kad (ako) vec udjes u te vode. Relativno je lako naci, barem u Americi, i knjigu &quot;An Introduction To Database Systems&quot;, autor Chris Date, koji se uz Codd-a smatra ocem relacione teorije<br>

<br>
Ako ti dodje pod ruku nesto sto je napisao Joe Chelko, Itzik Ben Gan ili Ken Henderson, ne propusti priliku, za praksu mozda najkorisnije stivo, ne doduse iz projektovanja baza, ali razumevanje SQL svakako. Joe i Itzik su napisali po cetiri knjige a Ken samo jedu, ali vrednu. Chelkove knjige su nezavisne jedna od druge i mogu s ecitati u bilo kom redosledu. Itzikove knjige treba citati po redu, jer se ama bas nista ne ponavlja od knjige do knjige, a da bi rezumeo neku moras da znas sta pise u prethodnim.<br>

<br>
Sreacn rad i samo napred<br>
<br>
:-)<br><font color="#888888">
<br>
<br>
--<br>
<a href="http://www.elitesecurity.org/p2397038" target="_blank">http://www.elitesecurity.org/p2397038</a><br>
<br>
Prijave/odjave: <a href="http://www.elitesecurity.org/pracenje-korisnika" target="_blank">http://www.elitesecurity.org/p...-korisnika</a><br>
<br>
Ne menjajte sledece dve linije ukoliko odgovarate putem emaila!<br>
esauth:375980:702598e9ed3e4826a39f62a79a75bcd3<br>
[ pikac @ 17.11.2009. 17:37 ] @
>>
>
>

--00151747b76ebaab2a047894932c
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable

Hvala Zidar<br><br>izlgeda da sam nasla pravog ucitelja<br>veliki pozdrav i duboki naklon<br><br>Jelena<br><br><div class="gmail_quote">2009/9/26 Jelena St <span dir="ltr">&lt;<a href="mailto:[email protected]">[email protected]</a>&gt;</span><br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">Vasa riznica znanja mi je od neprocenjive pomoci i jos jednom Vam se duboko zahvaljujem na pomoci koju mi ukazujete<br>
<br>a evo o cemu se kod mene radi, postoje 2 teme<br><br>1 tema:<br><b>sistem evidencije za borilacki klub,</b> projekat sam vec radila, ali je korisniku otisao operativni sistem, izgubio je bazu,<br>
aH ja je nisam backapovala-mislim na projekat-tamo gde su povezane tabele-sto je i najvazniji deo, podaci su otisli,<br>i posto i dalje treniram u tom borilackom klubu, sada sam po principu putuj igumane-ponovo ispocetka sve osmislila<br>

pisacu Vam detaljnije-sada sam malo neispavana-----imala sam ideje za snimanje spotova-rezija-scenario-muzika-sve one man shou-ja , a ispred kamere...aikido tehnike<br><br>2tema:<br><b>sistem evidencije arhiviranih i aktivnih video spotova</b> u jednoj lokalnoj TV stanici-tamo vise ne radim, a moji sefovi nisu bili <br>

zainteresovani za taj projekat, tako da to moze da saceka jos, ali mi je ostao izazov da kako resiti problem.u ovoj bazi bi se skladistili kratki video filmcici-reklame koje bi se pretrazivale po IMENU reklame-proizvodu koji reklamiraju i PERIODU EMITOVANJA.<br>

<br>eto toliko za sada, pogledacu sve knjige koje ste naveli<br>Jelena Stajic<br>srdacan pozdrav<br><br><div class="gmail_quote">2009/9/25 Zidar <span dir="ltr">&lt;<a href="mailto:[email protected]" target="_blank">[email protected]</a>&gt;</span><div>
<div></div><div class="h5"><br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">Drago mi je da imas zelju da naucis ovo :-)<br>
<br>
Nisam siguran da postoji neka knjiga za koju iko moze da kaze &quot;e odavde se uci projektovanje baza podataka&quot;. Opste pravilo je: citaj sve sto ti dodje pod ruku. Ako imas nekoga ko studira u Americi ili Kanadi, preko njih mozes doci do odlicnih knjiga, oblast bi bila &quot;System Anlysis and Design&quot; ili &quot;Database Management and Design&quot;. Razliciti univerziteti daju kursevima razlicita imena, a knjige se mogu naci na popustu po univerzitetskim knjizrama (starija izdanja, polovne itd, sve je OK).<br>


<br>
Meni su se najvise dopali originalni radovi koje je postavio Dr Peter Chen, tvorac ER metodologije. Originalni radovi su mnogo prostiji nego ono sto se predaje u skolama kao Entity Relationship Model. Ne znam zasto profesori toliko komplikuju, valjda sve mora da izgleda kao viskoa nauka... ER metod se zove MOV u Jugoslaviji (Model Objekti - Veze?). <br>


Elem, evo ga sajt gde se mogu skinuti originalni papiri <a href="http://bit.csc.lsu.edu/%7Echen/chen.html" target="_blank">http://bit.csc.lsu.edu/~chen/chen.html</a><br>
Odes na papers and Downlaods i skidas redom. Obrati posebnu paznju na rad koji se zove **English Sentence Structure and Entity-Relationship Diagram*. Ako shvatis taj rad, uz malo vezbe moci ces direktno iz recenica da gradis shemu baze. Posle tu shemu mozes da proveris postupcima normalizacije i uglavnom ispadne dobro. Primeti da sam tcoj opis projekta razbio na recenice i napisao ih jednu ispod druge. POsle toga sam te recenice jednostavno preveo u crtez sheme baze. malo vezbe treba, ali se isplati stostruko.<br>


<br>
I naravno, klasik od koga je sve pocelo - **The Entity-Relationship Model--Toward a Unified View of Data*<br>
<br>
Uz Chena, na internenetu se moze naci i originalan rad EF.F. Codd-a, koji su smatra za osnovu relacuione teorije. To je bas suva teorija, koju je lepo procitati ne na pocetku, nego kasnije, kad (ako) vec udjes u te vode. Relativno je lako naci, barem u Americi, i knjigu &quot;An Introduction To Database Systems&quot;, autor Chris Date, koji se uz Codd-a smatra ocem relacione teorije<br>


<br>
Ako ti dodje pod ruku nesto sto je napisao Joe Chelko, Itzik Ben Gan ili Ken Henderson, ne propusti priliku, za praksu mozda najkorisnije stivo, ne doduse iz projektovanja baza, ali razumevanje SQL svakako. Joe i Itzik su napisali po cetiri knjige a Ken samo jedu, ali vrednu. Chelkove knjige su nezavisne jedna od druge i mogu s ecitati u bilo kom redosledu. Itzikove knjige treba citati po redu, jer se ama bas nista ne ponavlja od knjige do knjige, a da bi rezumeo neku moras da znas sta pise u prethodnim.<br>


<br>
Sreacn rad i samo napred<br>
<br>
:-)<br><font color="#888888">
<br>
<br>
--<br>
<a href="http://www.elitesecurity.org/p2397038" target="_blank">http://www.elitesecurity.org/p2397038</a><br>
<br>
Prijave/odjave: <a href="http://www.elitesecurity.org/pracenje-korisnika" target="_blank">http://www.elitesecurity.org/p...-korisnika</a><br>
<br>
Ne menjajte sledece dve linije ukoliko odgovarate putem emaila!<br>
esauth:375980:702598e9ed3e4826a39f62a79a75bcd3<br>