Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Veza vise ka vise? Kako zapamtiti trajanje neke aktivnosti?

[es] :: Access :: Veza vise ka vise? Kako zapamtiti trajanje neke aktivnosti?

[ Pregleda: 4189 | Odgovora: 11 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

positive
BGD

Član broj: 20599
Poruke: 30
77.46.236.*



Profil

icon Veza vise ka vise? Kako zapamtiti trajanje neke aktivnosti?05.09.2007. u 13:56 - pre 201 meseci
treba da napravim bazu u Accessu koja pamti promocije.

Bazne tabele: Objekat (id#, naziv, lokacija...), Proizvod (id#, naziv, cena), Promoterke (id#, ime, tel...), PromoMaterijal (id#, naziv, kolicina), Promocija (id#, datum, trajanje)

Tabela promocija povezuje sve ove tabele. Veza ka tabeli Objekat 0,1 a sa druge strane 0,*.
Veza sa Promoterkama 1,* a sa druge strane 0,*. Kako ostvariti ovakvu vezu u Accessu? (veza vise ka vise)
Da li rucno dodavati medjutabelu da bude nosilac relacije ili postoji neki drugi nacin?



Drugi problem sto imam je: kako napisati da nesto traje nekoliko sati.
Primer, promocija traje 5 sati, pocinje u 12h. Kako to zapamtiti u bazi?
stay cool and be positive
ne budi bez veze, povezi se: www.bgwireless.net
 
Odgovor na temu

Getsbi

Moderator
Član broj: 124608
Poruke: 2828



+45 Profil

icon Re: Veza vise ka vise? Kako zapamtiti trajanje neke aktivnosti?05.09.2007. u 14:44 - pre 201 meseci
Vezu više ka više rešavaš asocijativnom tabelom između dve postojeće, razbijajući je tako na dve veze jedan prema više. Najsvežiji primer imaš na temi :

http://www.elitesecurity.org/t280112-Vise-sastanaka-jednom-danu

u prikačenom fajlu sastanci_2G.zip


Za drugi problem je najbolje koristiit dva datuma tipa Date/Time, i formata General Date. Jedan je početak aktivnosti, adrugi završetak aktivnosti.
 
Odgovor na temu

Zidar
Canada

Moderator
Član broj: 15387
Poruke: 3085
*.100.46-69.q9.net.



+79 Profil

icon Re: Veza vise ka vise? Kako zapamtiti trajanje neke aktivnosti?05.09.2007. u 20:35 - pre 201 meseci
Ako koristis dva datuma, PocetakPromocije i KrajPromocije, ne zaboravi da na nivou tabele imas constraint [PocetakPromocije] > [KrajPromocije] i da su obe kolone required. Grdni problemi mogu da nastanu kad su naki datumi NULL i kad se greskom unese da Kraj dolazi pre pocetka :-)

Usput, licno mi se vise dopada varijanta sa PocetakPromocije i Trajanje, jer je bliza pravilima mormalizacije. PocetakPromocije i Trajanje ne zavise jedno od drugoga, a kolone PocetakPromocije i KrajPromocije zavise jedna od druge (Kraj ne sme biti pre pocetka), sto narusva tamo neko pravilo koje kaze 'svaka kolona sme da zavisi samo i samo od PK i nicega vise'. S druge strane, poneki kveriji su nesto malo laksi za pisanje ako se koristi PocetakPromocije i KrajPromocije. Tek toliko da te boli glava od razmisljanja :-)

Citat:
Drugi problem sto imam je: kako napisati da nesto traje nekoliko sati.
Primer, promocija traje 5 sati, pocinje u 12h. Kako to zapamtiti u bazi?


Ako nesto pocinje 12. septembra 2007 u 12:00 i traje 5 sati, imao bi sledece u kolonama

PocetakPromocije = '12 Sep 2007 12:00 PM' (ovo u navodnicima otkucas, PM je vazno i to je to. Naravno da ti je kolona DateTime)
Trajanje = 5 (nadam se da je ova kolona tipa Number Single )


 
Odgovor na temu

Getsbi

Moderator
Član broj: 124608
Poruke: 2828



+45 Profil

icon Re: Veza vise ka vise? Kako zapamtiti trajanje neke aktivnosti?06.09.2007. u 10:09 - pre 201 meseci
@ Zidar

Odmah da bude jasno da se slažem da je u ovom slučaju primerenije koristiti polje Trajanje. Ali samo do onog momenta dok aktivnost traje nekoliko sati. Ako prilikom unosa treba da se u glavi računa koliko je sutra u 10 manje od danas u 14 i 30 onda time neću baš biti oduševljen.
Ono na čega imam primedbu, a ne mora da znači da sam u pravu je normalizacija. Mislim da bi kršenje normalizacije bilo kad bi ostavili sva tri polja PoctakPromocije, Trajanje i KrajPromocije. U tom slučaju bi bila kršena normalizacija.

2. normalna forma : “Entitet zadovoljava drugu normalnu formu ako zadovoljava prvu i ako svaki atribut koji nije ključ potpuno zavisi od primarnog ključa i ne može biti pronađen ako se zna samo deo ključa.”
3. normalna forma kaže: “Entitet zadovoljava treću normalnu formu ako svaki atribut koji nije ključ zavisi od ključa, čitavog ključa i ne služi ničemu osim ključu.” - Komentar: odnosi se na greške oko izračunatih polja.

U slučaju koji sam naveo KrajPromocije bi mogao da bude izračunat sabiranjem pocetka i trajanja i time bi normalizacija bila narušena. Prvu normalnu formu neću komentarisati jer to ovde nije sporno.

U prvobitnom primeru kada bi ostali samo atributi PocetakPromocije i KrajPromocije ne bi postojala zavisnost drugog od prvog. I dalje bi kraj određene promocije (PromocijaID) mogao da bude pronađen samo na osnovu ključa. To što ova dva atributa imaju neki ugovoreni odnos na logičkom nivou, rešava se validacijom prilikom unosa bilo na nivou tabele bilo na nivou forme za unos. U praksi ćemo naći dosta tabela kao što je sledeća (ZaposleniID,........, DatumPocetkaRadnogOdnosa, DatumZavršetkaRadnogOdnosa......). Naknadno služba zadužena za to računa: koliko godina, koliko meseci i koliko dana, te to upisuje u radnu knjižicu. Ima još ovakvih primera gde postoje neki odnosi između atributa ali ne znače i kršenje normalizacije.

Dakle , to je moje mišljenje, ostavljam mogućnost da nisam u pravu i ponavljam još jednom da je za postavljeni primer korišćenje polja Trajanje sasvim u redu.

 
Odgovor na temu

Zidar
Canada

Moderator
Član broj: 15387
Poruke: 3085
*.100.46-69.q9.net.



+79 Profil

icon Re: Veza vise ka vise? Kako zapamtiti trajanje neke aktivnosti?06.09.2007. u 16:22 - pre 201 meseci
@Getsbi: slazem se da moja primedba o normalizaciji zvuci kao cepanje dlake na cetvoro. Mislim barem cisto torijski da nisam pogresio. Pravilo "svaki atribut koji nije ključ zavisi od ključa, čitavog ključa i ne služi ničemu osim ključu.” , dakle 'atribut zavisi od kljuca . Celo pravilo glasi "Each non-key attribute depends on the whole key and nothing but the key". Drugi deo je preveden 'sluzi samo kljucu' a mozda bi trebalo 'zavisi od kljuca i samo od kljuca'. Ako atribut zavisi od kljuca i samo od kljuca, onda bilo koja dva atributa za koja moramo da posatvimo CHECK constraint formalno narusavaju ovo pravilo, jer medju njima postoji nekakva zavisnost (na primer Pocetak>Kraj). Moje grubo pravilo subtilnih narusavanja normalizacije jeste da pogledam CHECK constraints (ili ti table validation rules u Accessu) i ako tamo ima nesto sto povezuje dve ili vise kolona, nesto se desava sto mozda (samo mozda) ne treba da se desava.

Naravno da se u praksi ne mora doslovce postovati bas svako pravilo, ako to ne remeti integritet podataka i ako olaksava zivot. Kad se barata datumskim tipovima sve je uvek mnogo komplikovanije nego sto izgleda na prvi pogled i ponekad vredi posotovati pravilo doslovce, a ponekad obrnuto. Problem je sto je nemoguce odrediti koji je postupak bolji bez probanja.

Jednom recju, svi su u pravu, ali treba se setiti svih opcija
 
Odgovor na temu

Getsbi

Moderator
Član broj: 124608
Poruke: 2828



+45 Profil

icon Re: Veza vise ka vise? Kako zapamtiti trajanje neke aktivnosti?06.09.2007. u 18:12 - pre 201 meseci
@ Zidar
Zahvaljujem na ispravljenom prevodu. Složiću se na kraju da je to ipak kršenje treće normalne forme ali sam toliko puta u tabelama susretao ovaj tandem podataka da mi je to postalo normalno. Čak je i čuveni profesor Branislav Lazarević sa FON-a (a on je "number one" na ovim prostorima) na jednom predavanju rekao da je ponekad dozvoljeno kršiti pravila normalizacije ukoliko je recimo odziv sistema brži. Ovde bi to bio slučaj kada bi broj slogova bio jako veliki. Sigurno je da bi dodavanje Trajanja na PocetakPromocije i računanje završetka pri takvim uslovima duže trajalo. Naravno da ja u početku nisam to imao u vidu, već me je ponela praksa i broj modela koje sam imao prilike da vidim. Ja sam doduše starog kova i u duši proceduralni programer. Validation Rule na nivou tabela slabo koristim iako znam za njih i sve rešavam na nivou korisničke forme jer sam navikao da ja budem taj koji radi ispravke u bazi, a ponekad je baš to nužno i moraju se zaobilaziti validaciona pravila. (Devalvacije, denominacije i razne druge ...acije koje su samo nama znane).
 
Odgovor na temu

chachka
Srđan Mijatov
Programer
BUS Computers
Kikinda

Član broj: 53780
Poruke: 576
*.ADSL.neobee.net.

Sajt: www.baze-podataka.net


+4 Profil

icon Re: Veza vise ka vise? Kako zapamtiti trajanje neke aktivnosti?06.09.2007. u 19:58 - pre 201 meseci
Ja ne mogu da se složim da je postojanje dva atributa 'datum_pocetka' i 'datum_zavrsetka' krešenje 3NF, pa čak ni 2NF!

Za objašnjenje 2NF i 3NF se koristi pojam 'funkcionalne zavisnosti'. To se često skrati pa se koristi samo pojam 'zavisnosti'. Ubacite ovo 'funkcionalno' u predhodne postove, i ti postovi dobijaju sasvim drugo značenje.

Da bi postojala funkcionalna zavisnost, mora postojati funkcija.

Neka imao sledeće sasvim legitimne podatke:
Code:

datum_pocetka   datum_zavrsetka
-------------   ---------------
2007-09-06      2007-09-07
2007-09-06      2007-09-08

Podsetimo se da funkcija za jedan argument mora imati samo jednu vrednost.

Neka je datum početka argument neke naše funkcije, a datum završetka njena vrednost. Da li postoji funkcija koja atribut 'datum_pocetka' preslikava u atribut 'datum_zavrsetka'? Ne postoji, jer se isti datum početka preslikava u dva različita datuma završetka. Ovo je u kontradikciji sa samom definicijom funkcije.

Pošto nemamo funkciju, nemamo ni funkcionalnu zavisnost.

-------------------------

Nemojte zaboraviti da je znak '<' ustvari relacija između dva argumenta.

Svaka funkcija je relacija, ali nije i svaka relacija funkcija.
"The best code is no code at all."
- Zidar (ES član)
"Biggest obstacle to learning
SQL is unlearning procedural
programming."
- Joe
Celko
"Minimize code, maximize data."
- A. Neil Pappalardo
 
Odgovor na temu

positive
BGD

Član broj: 20599
Poruke: 30
77.46.236.*



Profil

icon Re: Veza vise ka vise? Kako zapamtiti trajanje neke aktivnosti?07.09.2007. u 00:19 - pre 201 meseci
hvala za odgovore, dobri ljudi.

ispostavlio se da su sve promocije istog dana i da traju nekoliko sati, tako da imam samo jedno polje datum, i 2 polja za vreme (stavio sam pocetno i krajnje vreme).

Ono sto me sad muci je sto ne znam kako da napravim podformu da sama povecava broj redova kako se oni popunjavaju. Znaci, kad se popuni prvi red, da se otvori drugi, itd.
Stavicu bazu u attach, ako neko zeli da pogleda. (u pitanju je forma Promocije i njena podforma).


Sto se tice 3 NF, po teoriji pocetni i krajnji datum ne bi trebalo da krsi NF (kao sto je chachka napisao). I resenje sa trajanjem je sasvim ok.

stay cool and be positive
ne budi bez veze, povezi se: www.bgwireless.net
Prikačeni fajlovi
 
Odgovor na temu

Getsbi

Moderator
Član broj: 124608
Poruke: 2828



+45 Profil

icon Re: Veza vise ka vise? Kako zapamtiti trajanje neke aktivnosti?07.09.2007. u 06:48 - pre 201 meseci
Desni klik na formu, pa Tab Order i poređaj polja onim redom kako treba da budu unošena. Isto to uradi i za podformu. Kad popuniš zadnje polje automatski će se otvotiti novi zapis. Predlažem da podformu prebaciš sa Single Form na Datasheet.
 
Odgovor na temu

Zidar
Canada

Moderator
Član broj: 15387
Poruke: 3085
*.100.46-69.q9.net.



+79 Profil

icon Re: Veza vise ka vise? Kako zapamtiti trajanje neke aktivnosti?07.09.2007. u 14:39 - pre 201 meseci
Znaci, ipak nisam u pravu :-(
Opet mi je jezik brzi od pameti. Hvala Srdjanu na uocenoj gresci i objasnjenju. :-)

Mogu da pokazem da i kad bih bio u pravu, to ne bi donelo zadovoljavajuce resenje.

Ako posmatram Pocetak i Zavrsetak kao dva dogadjaja i odlucim umesto intervala (Pocetak, Kraj) da cuvam dva dogadjaja, imacu umesto jedna tabele dve. Ovako:

1) Promocija(PromocijaID, Opis) PK = PromocijaID
2) Dogadjaji (promocijaID, NazivDogadjaja, Vreme) PK = PromocijaID, NazivDogadjaja, CHECK NazivDogadjaja IN ('Pocetak','Kraj')

Lepo, ali kako da obezbedim da Kraj bude veci datum od Pocetka? Ispada da jedan red u tabeli zavisi od negog prethodnog reda u tabeli. Ne znam koju normalnu formu ovo narusava ili ne, ali narusava jedan od osnovnih postulata (?) relacione teorije - redosled redova u tabeli nije bitan. Mozda u teoriji redosled nije bitan, ali u praksi u nekim slucajevima i te kako jeste. Sta dakle imamo - jedan red zavisi o nekog prethodnog reda, lici na hijerarhiju, ili na listu u kojoj jedan element ukazuje na sledeci. A relacione baze nisu bas zgodne za rad sa hijerarhijama.

Da ne lupam dalje, Ako imamo posla samo sa dva dogadjaja (Pocetak, Kraj) onda ih u praksi naravno proglasimo funkcionalno nezavisnim atributima koji su u nekoj medjusobnoj relaciji, i dobijemo ono od cega smo posli - Promocije(PromocijaID, Pocetak, Kraj) CHECK (Pocetak<Kraj)

Ali sta ako ima vise dogadjaja? Pocetak, Kraj i nekoliko medjufaza? Da li bismo se odlucili za nesto ovako:

Promocije(PromocijaID, Pocetak, Faza1, Faza2, Faza3, Kraj) CHECK (Pocetak<Faza1<Faza2<Faza3<Kraj)

Ako samo malo promenimo nazive polja, na sta imamo pravo, dobili bismo

Promocije(PromocijaID, Faza0, Faza1, Faza2, Faza3, Faza_N), gde su Faza0 = Pocetak, Faza_N = Kraj

Ovo vec ne lici na preterano normalizovanu situaciju, osim ako ne pokazete da su sda ova polja i FUNKCIONALNO zavisna (ja ne umem da to pokazem)

Da li bi sada trebalo ici na pamcenje dogadjaja u posebnoj tabeli? Mozda a mozda i ne. Ako imamo neodredjen broj medjufaza, onda se cini da nemamo izbora, mora druga tabela. Medjutim, problem redosleda ostaje neresen. Ako imamo fiksan broj faza, mozda ipak samo jedna tabela sa mnogo atributa? Mozda. Muka je u tome sto su kveriji koji se pisu nad tabelama gde vreme (poredak) igra ulogu, jako slozeni i teski za razumevanje. Pogledajte Mozgalice na forumu Baze Podataka - najteze su one koje se bave vremenskim serijama ili intervalima.

Zakljucak: molite Boga da ne morate da se bavite problemima koji ukljucuju vremenske serije. Nazalost, Boga izgleda nema, pa ce vas to zakaciti pre ili kasnije.

Teorija vazi ali ce vasm praksa ponuditi zanimljive izazove.

:-)

 
Odgovor na temu

chachka
Srđan Mijatov
Programer
BUS Computers
Kikinda

Član broj: 53780
Poruke: 576
*.ADSL.neobee.net.

Sajt: www.baze-podataka.net


+4 Profil

icon Re: Veza vise ka vise? Kako zapamtiti trajanje neke aktivnosti?07.09.2007. u 15:57 - pre 201 meseci
Izvinite zbog offtopica, ali sve što sledi je jače od mene.

Odosmo u teško teoretisanje :)

Citat:
Zidar: Promocije(PromocijaID, Faza0, Faza1, Faza2, Faza3, Faza_N), gde su Faza0 = Pocetak, Faza_N = Kraj

Ovo vec ne lici na preterano normalizovanu situaciju, ...

@Zidar: Predpstavljam da smatraš da gornja struktura narušava prvu normalnu formu?!

Biće lakše i tebi i ostalima ako prihvatite da NIJEDNA tabela ma kako izgledala nemože da naruši prvu normalnu formu!

Pogledajte najnoviju Chris Date-ovu definiciju 1NF koja se od nedavno nalazi na wikipediji. Ovo je definicija koju gopodin Date daje i u svojoj poslednjoj knjizi ‘Date on Database: Writings 2000-2006’, u kojoj čak priznaje da je 30 godina pogrešno tumačio pojam prve normalne forme!

Oči mu je svojim radovima otvorio Hugh Darwen. Pojam atomske vrednosti, na kojem se bazira 1NF, je subjektivan i nalazi se u očima onoga ko posmatra problem. Kao subjektivan, takav pojam je ništavan za nauku (u ovom slučaju relacionu teoriju).

Na kraju poglavlja o 1NF Date kaže da svaka relacija po DEFINICIJI zadovoljava 1NF!

"The best code is no code at all."
- Zidar (ES član)
"Biggest obstacle to learning
SQL is unlearning procedural
programming."
- Joe
Celko
"Minimize code, maximize data."
- A. Neil Pappalardo
 
Odgovor na temu

Zidar
Canada

Moderator
Član broj: 15387
Poruke: 3085
*.100.46-69.q9.net.



+79 Profil

icon Re: Veza vise ka vise? Kako zapamtiti trajanje neke aktivnosti?07.09.2007. u 16:36 - pre 201 meseci
Citat:
Pojam atomske vrednosti, na kojem se bazira 1NF, je subjektivan i nalazi se u očima onoga ko posmatra problem. Kao subjektivan, takav pojam je ništavan za nauku (u ovom slučaju relacionu teoriju).


Slazem se. Ako proglasim nesto da je atomsko, ono ce to i biti. Ako proglasim nesto za atribut, to ce i biti atribut. Ili nece ako drugacuje odlucim.

@Chachka: OK, OK, pobedjen sam Forum i sluzi da cujemo razlicita misljenja i razlicite fakte. Tvoji prvi odgovorina ovu temu mi je pomogao da nesto razumem sto izgleda pre i nisam bas razumeo dobro - (zavisnost vs. funkcionalna zavisnost). Drugi odgovor donosi novosti koje jos nisam stigao da procitam. Cenim primedbu i zahvaljuejm.

Formu za to i sluzi


 
Odgovor na temu

[es] :: Access :: Veza vise ka vise? Kako zapamtiti trajanje neke aktivnosti?

[ Pregleda: 4189 | Odgovora: 11 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.