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

Popunjavanje baze sa desna (n) u levo (1) ?

[es] :: Access :: Popunjavanje baze sa desna (n) u levo (1) ?

[ Pregleda: 2714 | Odgovora: 14 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

easyrider

Član broj: 37500
Poruke: 22
*.jptent.com.



Profil

icon Popunjavanje baze sa desna (n) u levo (1) ?07.03.2006. u 08:38 - pre 220 meseci
Pozdrav svima,
Recimo da imam 2 tabele. Veza je one(leva)-to-many(desna), i obezbedjen je referencijalni integritet,automatsko azuriranje, bez kaskadnog brisanja. Primarni kljuc iz leve(recimo ID_A) mi se pojavljuje naravno i u desnoj tabeli.

Pitanje.
Na koji nacin (ako je to moguce) mogu da u desnoj tabeli upisem neku novu vrednost za ID_A koje nema u levoj tabeli, a da mi je access automatski ubaci u levu tabelu?

Nadam se da sam bio dovoljno jasan i da je ovo uproscenje ispravno. Ja ustvari imam many-to-many vezu (sa medjutabelom koja sadrzi samo primarne kljuceve) dve glavne tabele. Kada napravim forme za sve tri tabele i spojim ih, dobija se forma,podforma i pod-podforma. Zeleo bih da izbegnem da korisnik otvara vise posebnih formi, tj. da koristi samo jednu sa svojim podformama.

Ako ne gresim, problem bi trebalo da se svodi na postavljeno pitanje.
 
Odgovor na temu

Zidar
Canada

Moderator
Član broj: 15387
Poruke: 3085
*.eqao.com.



+79 Profil

icon Re: Popunjavanje baze sa desna (n) u levo (1) ?07.03.2006. u 13:22 - pre 220 meseci
Pojam 'referential integrity' u Accessu znaci upravo da ti sistem nece dozvoliti da uradis ono sto si zamislio. Rekord mora postojati u atbeli na strani 1 pre nego sto se unese u tabelu na strani vise. Ako tvoj realni proces zahteva da se prvo kreiraju rekordi na strani vise, pa onda na strani 1, to znaci da nesto nije u redu sa data modelom. Ovo se obicno desava kad tabela na strani 1 i nema neki realni PK, nego koristis Autonumber. Tu negde lezi i resenje. bez poznavanja problema koji resavas, tesko je reci sta bi pomoglo.

Da se razumemo, akrobacije u kodu su moguce i absolutno je moguce unesti nekoliko 'child' rekorda, pa onda za njih napraviti parent. To se moze ako su forme unbound, pa ti je svejedno sta unosis. Na primer, uneses gomilu uplatnica, pa tu gomilu proglasis za transakciju. Onda prvo otrcis u tabelu Transakcije i insertujes rekord, pa mu zapamtis PK, pa onda ides u tabelu Uplatnice i insertujes celu gomilu, uz dodavanje PK koji si upravo dobio. Komplikovano? Jeste.
 
Odgovor na temu

easyrider

Član broj: 37500
Poruke: 22
*.jptent.com.



Profil

icon Re: Popunjavanje baze sa desna (n) u levo (1) ?08.03.2006. u 13:29 - pre 220 meseci
Tako je. Ja sam i mislio na neku CODE varijantu. A attachmentu imas bazu pa pogledaj. Recimo obrati paznju na vezu (SEEC Projekti-Projekti i korisnici-Korisnici), i pogledaj form [SEEC Projekti]. Klikni na karticu [Korisnici]. U njoj su podforma [Projekti i korisnici] i njena podforma [Korisnici]. Naravno tu se za sada dupliraju polja [Sifra_projekta] i [Korisnik] sto nije potrebno.

E, sad. Ja bi hteo da izbegnem da ''Onaj ko koristi aplikaciju'' prvo otvara drugu nezavisnu formu, recimo [Korisnici 2] i da preko nje prvo popunjava tabelu [Korisnici], a da kasnije povezuje Korisnike i SEEC Projekte preko podforme [Projekti i korisnici]. Hteo bi da ''Onaj ko koristi aplikaciju'' koristi samo jednu glavnu formu [SEEC Projekti], i prakticno da iz pod-podforme [Korisnici] unosi nove Korisnike.

Nadam se da sam bio malo jasniji. Naravno bilo kako bilo uvek ostaje varijanta sa vise formi za unos podataka u Parent tabele.

Hvala unapred.



Prikačeni fajlovi
 
Odgovor na temu

Zidar
Canada

Moderator
Član broj: 15387
Poruke: 3085
*.eqao.com.



+79 Profil

icon Re: Popunjavanje baze sa desna (n) u levo (1) ?08.03.2006. u 14:46 - pre 220 meseci
Pogledao sam dizajn tabela. Na logickom nivou, deluje ispravno. Ne mogu da kazem da li je zaista ispravno, to zavisi od procesa koji ti modeliras. Kakvi su projekti u pitanju? Kako se odredjuju korisnici? kako s epoajvljuju korisnici? kako se pojabvljuju projekti? Kako ce da izgleda ceo proces koji modeliras bzom podataka?
Nemoj da odgovars meni na ova pitanja, smo razmisli o njima.

Ako zelis da uneses na zaobilazan nacin korisnika, tako sto ces njegove podatke uneti u formu koju si dao, pri dodeli korisnika projektu, kako znas da taj isti korinik ne postoji u tabeli korisnici? Sta ako malo pogresis u imenu, pa korisnika "Metal Impex South East Europe" uneses dva puta, pod jos jednim imenom "Motal Imprex South Eat Europa" ? Kako ces da naplatis projekat? Da posaljes racun na dva razlicita imena?

Ovako kako si napravio absolutno je neophodno da prvo uneses korisnika u tabelu Korisnici, pa tek onda da ga dodelis tabeli ProjektiIKorisnici. Pretpostavljam da su projekti veliki i da se ne stvaraju tek onako, mahnes rukama i eto ti projekta. I korisnici ne dolaze tek tako, useta covek u kancelariju i kaze 'ja bih da koristim taj i taj projekat'. Unos korisnika u tabelu Korisnici traje 1 minut. Mrzi te da pravis novu formu? Tough luck buddy, gotta do it.

I subforma za unos u tabelu ProjektiIKorisnici mora da bude datasheet. Pravilo je prosto: parent table imaju master forme za unos parent rekorda. Intesection tabele su uvek datasheet, i povezuju se kao subforme sa jednim ili oba parenta.

Pravilo nisam ja izmislio tek tako. Malo sam analizirao i studirao proces (korak) prelaska sa data modela na aplikaciju i zakljucio da dato pravilo garantuje minimalnu kolicinu rada a progarmiranju. Veruj mi na rec, ovo radim preko 20 godina i radio sam na mnoogo projekata. U svim slucajevima, pravilo se pokazalo boljim od drugih opcija.

Pogledaj kako je organizovana aplikacija Kafic u top temi "Kafic".

Komentar na data model:
Logicki uglavnom dobar, implementovan lose. Evo zasto:
- Imas gomilu tabela gde nije definisan PK (desna strana, konzorcijumi, intersection tabele)

- Izbor PK za tabele Korisnici i Projekti. Vidim da je Text 50. sta ces da stavis u text 50? slicno vazi za sve ostale tabele.

- izbor tipa polja. zar bas sve treba da bude Text 50?

Sta moze bolje u logici:
-Tabela KljucniDatumi - sta ce se dsiti kad se pojavi jos neko kljucni datum? Dodaces novo polje u tabelu? I u sve forme i kverije gde se ta tabela pojavljuje? Bad idea. Normalizuj tu tabelu, neka postane slicno kao tabela Tenderska Dokumantacija

- Tretiranje adresa i kontaktnih tacaka: svima si dozvolio po dva telefona. Sta ako imaju vise od dva telefona? A sta ako imaju vise e-mailova? Sta ako je vise osoba zaduzeno za kontakt a svi pripadaju istom klijentu? Sta ako je neko nekada klijent a nekada konsultant? Cuvaces ih u dve tabele? Sta kad taj neko promeni adresu. Setices se da je promenis u dve tabele?

Pogledaj temu "Razduzivanje robe VP magacin u MP magacin", vrti se ovih dana. Tamo imas zgodnu ideju kako da modeliras adrese.

:-)

 
Odgovor na temu

easyrider

Član broj: 37500
Poruke: 22
*.jptent.com.



Profil

icon Re: Popunjavanje baze sa desna (n) u levo (1) ?09.03.2006. u 12:23 - pre 220 meseci
Prvo, hvala na trudu.

- Slazem se za tabelu KljucniDatumi i ispravicu je.
- Datasheet, Text 50, nedostatak validacije unosa posledice su pocetnog stadijuma baze.
- Sjedinjavanje tabela Korisnici, Saradnici (Spoljni i Unutrasnji), Investitori i ClanoviKonzorcijuma sa dodatnim poljem koje ih opisuje mi deluje prilicno zanimljivo, sa dodatkom tabele koja bi uzimala u obzir vise telefona, emaila....
-Problem pogresnog unosa koji si pomenuo resavam obicno upotrebom combobox-a koji se poziva na isto to polje, bez ogranicenja na listu.

Pitanje:
Zasto je korisno imati PK na svim tabelama (ili vecini), pogotovo u intersection tabelama. Nije problem da ih ubacim (npr. Redni broj), ali mi nije jasna svrha u konkretnom slucaju?

Pozdrav



[Ovu poruku je menjao easyrider dana 09.03.2006. u 13:51 GMT+1]
 
Odgovor na temu

Zidar
Canada

Moderator
Član broj: 15387
Poruke: 3085
*.eqao.com.



+79 Profil

icon Re: Popunjavanje baze sa desna (n) u levo (1) ?09.03.2006. u 13:47 - pre 220 meseci
Citat:
Datasheet, Text 50, nedostatak validacije unosa posledice su pocetnog stadijuma baze.

Ovo znaci da si jos uvek u fazi implementacije, da implementacija nije zavrsena. Sta mu to znaci implementacija modela podataka? Nista drugo nego "fizicko kreiranje tabela, odredjivanje podesnih data tipova, postavljanje veza (relacija)izmedju fizickih tabela u sitemu koji ce se koristiti za smestaj podataka (u tvom slucaju Access)". dakle, prodji onovo kroz SVE tabele, kroz SVA polja i vidi da li imas sve sto ti treba i da li tip polja odgovara. Budi siguran da polja koja ces povezati relacijama imaju identican tip podataka. text 50 i text 5 nije isto, mada bi verovatno radilo, sto se smatra slaboscu Accessa.

Citat:
Pitanje:
Zasto je korisno imati PK na svim tabelama (ili vecini), pogotovo u intersection tabelama. Nije problem da ih ubacim (npr. Redni broj), ali mi nije jasna svrha u konkretnom slucaju?


PK, zajedno sa FK je osnova garancije integriteta podataka. PK sprecava duplikate i jedinstveno odredjuje svaki red u tabeli. cela relaciona teorija je zasnovana na postojanju PK u svakoj tabeli. A Access jeste dobrim delom relaciona baza. i tvoja shema izgleda prilicno dobro, cak neverovatno dobro za nekoga ko jos uvek ne razume cemu sluzi PK. Da nisi shemu prepisao od negde?

U intersekcionim tabelama, PK NE SME da bude neki izmisljeni autonumber ili redni broj. U intersekcionim tabelama PK je SLOZEN. Intersekcion tabela ima 2 roditelja, i oni imaju svaki svoj PK, recimo PK1 i PK2. intersekciona tabela mora da sadrzi kolone koje u parent tabelama cine PK1 i PK2. Onda je PK intersekcione tabele kombinacija svih kolona koje cine PK1 i PK2.

Na primer, imas tabele Projekti i Klijenti. neka su njihovi PK ProjektID i KlijentID. Onda imas intersekcionu tabelu ProjektiKlijenti gde pokazujes koji klijent je ucesnik u kom projektu. Tabela ProjektiKlijenti mora da ima kolone ProjektID i KlijentID. PK za tabelu ProjektiKlijenti je kombinacija dve kolone (ProjektID i KlijentID). posto je to PK, on je po definiciji UNIQUE. To ti garantuje da se u tabelu ProjektiKlijenti jedan klijent moze uneti samo jednom za jedan odredjeni projekt. Kako da garantujes da se uvek unese samo onajklijent koji zaista postoji i samo onaj projekt koji zaista postoji? To garantuje FK - foreign key. To je ono sto vidis u Accessu pod imenom 'relationship' - ona linijica koja spaja tabele. I uvek mora imati "Enforce Data Integrity=YES". Bez toga je besmisleno uopste govoriti o PK ili 'relacijama'. Jos conceptualni jedan bug u Accessu. I sve ovo bez i jedne linije koda.

Baza podataka ne zna niti treba da zna kako ce i koje aplikacije da joj pristupaju. baza mora da ima ugradjen mehanizam za zastitu od prljavih i nelogicnih podataka. Taj mehanizam cine PK, FK, default values, data validation za polja i cele tabele, required property za polja. Sve ovo moze da se postigne i kroz aplikaciju, ali uz mnogo vise truda i rada i ogromne mogucnosti greske koju neces ni primetiti. Ko garantuje da sutra nece doci drugi programer, koji ce pretpostaviti da je integritet obezbedjen u samoj bazi i zanemariti proveru integriteta u aoplikaciji? Sta je sa slucajevima kad korisnici idu direktno u tabele da nesto promene ili dodaju ili obrisu?

Citat:
-Problem pogresnog unosa koji si pomenuo resavam obicno upotrebom combobox-a koji se poziva na isto to polje, bez ogranicenja na listu.

AKo vec nema ogranicenja na listu, znaci da se moze uneti i sta nije u kombo boksu. Otkud znas da to sto je uneto nije pogresno? U prethodnom paragrafu smo objeanili kako se problem losih podataka izbegava. Podaci se stite i odrzavaju na nivou tabela, a ne aplikacijom.

Ako si prepisao neciji rad, neka si, barem je dobar rad. Ali se potrudi da razumes o cemu se radi i cemu sve to, na duzi rok. U protivnom, imaces mnogo nevolja.

:-)





 
Odgovor na temu

easyrider

Član broj: 37500
Poruke: 22
*.jptent.com.



Profil

icon Re: Popunjavanje baze sa desna (n) u levo (1) ?10.03.2006. u 13:40 - pre 220 meseci
Kao sto neko rece....Jesam pocetnik ali se trudim. Bazu zaista pravim sam i hvala ti ako mislis da je u nekim segmentima dobra.

Problem je u tome sto se do sada nisam susreo sa potrebom da imam vezu vise-vise. Posto nisam jos probao kako se zapisi ponasaju u radu sa aplikacijom nisam shvatao potrebu za slozenim kljucem u intersection tabeli (izbegavanje istih kombinacija). Prica o PK, FK, Integritetu, Indeksiranjem mi je poznata, ali mi je drago sto si je napisao tako da kod mene ne ostaju dileme.

Poslusao sam savete pa sam malo prepakovao bazu (attachment). Tabela [Ucesnici na projektima] moze da se razbije da bi obuhvatila vise telefona, emailova...

Ono sto mi fali i sto ne znam da uradim jeste da formiram slozeni kljuc za svaku od intersection tabela. Ubih se ceo dan da to pronadjem, ali nigde nisam nasao eksplicitno objasnjeno, pa molim da mi neko pomogne savetom ili da me uputi gde to da pronadjem.

Pozdrav svima...

Prikačeni fajlovi
 
Odgovor na temu

Zidar
Canada

Moderator
Član broj: 15387
Poruke: 3085
*.eqao.com.



+79 Profil

icon Re: Popunjavanje baze sa desna (n) u levo (1) ?10.03.2006. u 14:40 - pre 220 meseci
Ako si pocetnik i bazu si zaista sam modelovao, onda svaka cast. Ti definitivno razumes kako treba raditi logicki dizajn, a to je i najvazniji korak u celom poslu. Ima tu jos sto sta da se uoci i razresi, ali si generalno na dobrom putu.

Stavljanje PK na intersection tabele je tehnika rada, nema veze sa modelovanjem. To zavisi od sistema koji koristis. U Accessu ide ovako (sto imas u svakoj knjizi):

Nacin 1: Otvori tabelu Saradnici u Design modu. Ona ima samo dva polja (SifraProjekta, Saradnik_ID).
Izaberi obadva polja istovremeno (kao dva rekorda u datasheet). Postace crni. Onda klikni ikonicu za PK. Gotovo. Dobio si slozeni PK.

Nacin 2: Otvori tabelu u design modu. Klikni ikonicu za indekse (ona munja). Kreiraj novi indeks i proglasi ga da je Unique i PK. U levu kolonu unesi ime indeksa, samo u prvi red, naprimer 'PK'. Onda u desnu kolonu u tom redu izaberi SifraProjekta. Spusti se jedan red nize u koloni Field_Name. Izaberi polje SaradnikID. U tom redu, polje Index_Name treba da ostane prazno. Kazi u donjem delu forme da indeks treba da je Unique=Yes i da je Primary=Yes. Gotovo.

Jos jedna stvar je dobra da se uradi. Neka si sve ucesnike na projektu ubacio u istu tabelu - lakse sa upravlja adresama. Uveo si Tip_Ucesnika u igru, da ti kaze ko je sta. Dobro je da imas sifranik tipova ucesnika (look up table). Uvedes tabelu Tipovi_Ucesnika i tu definises dozvoljene vrednosti. Onda stavis relaciju izmedju Tipovi_Ucesnika i Ucesnici_na_Projektima. Vidi zakaceni primer.

Primecujem da ovako kako si napravio, svaki ucesnik u projektu moze da bude samo jednog tipa. Ne ocekujes da neko bude istovremeno i korisnik i investitor. To je OK. Medjutim, nista te ne sprecava da u tabelu Sradnici ubacis i nekog investitora. Nigde ne pise da tabela Saradnici sme da sadrzi samo one korisnike ciji je tip_korisnika='Saradnik'. Ako ti ovako odgovara, OK, ne diraj nista.

Ako ne zalis da se invetstor nadje u tabeli Saradnici, onda trebas na tabeli Saradnici da ogranicis vrednosti za polje Saradnik, da primas samo ID onih ucesnika u prometu koji su zaista Sradnici. Da bi ovo postigao, treba ti polje Tip_Ucesnika u tabeli Sradnici. Stavi mu default value="Saradnik" i validation rule="Saradnik". to polje neces nikad ni na jednoj formi nikome pokazati. Nikoga to ne zanima, a deafult value ce uvek da popuni jednu jedinu dozvoljenu vrednost. Sad promeni relaciju izmedju Ucesnici-na_Projektima i Sardnici, tako da ide po dva polja. SardanikID i Tip_Ucesnika. Za ovo ti naravno treba UNIQUE index u tabeli Ucesnici_na_Projektima, slozeni index (Ucesnik, Tip_Ucesnika). Ko ti brani da ga napravis? Niko. Da li ce biti UNique? Bice, posto je i samo Ucesnik unique. Ovaj index ce ti valjati za sve ostale interskcijske tabele.

Ovu celu pricu uradio sam ti za tabelu Saradnici, vidi zakaceni primer. Za sve ostale uradi slicno. Table Dokumantacija je drugacija od ostalih. Razmisli sta bi tu bio PK. Naravno da bi imao SifruProjekta u sebi. Sta je jso potrebno (i dovoljno) da se jedinstveno odredi dokument?

Sta ne valja dalje u modelu? Ima li nesto sto zelis da znas o Saradniku, a ne interesuje te tio isto kod investitora ili korisnika? Svaki od tipova korisnika moze imati neke atribute znacajne samo za taj tip. Nije dobro da sad uzmes i dodas gomilu kolona u tabelu Ucesnici_u_Projektu pa da budu mahom prazne. O tome cemo neki drugi dan, iduce nedelje.
Prikačeni fajlovi
 
Odgovor na temu

easyrider

Član broj: 37500
Poruke: 22
*.jptent.com.



Profil

icon Re: Popunjavanje baze sa desna (n) u levo (1) ?14.03.2006. u 11:57 - pre 220 meseci
Evo primenio sam neke od saveta.
Imam jedno pitnje vezano za validaciju unetih podataka (Samo [Saradnik] iz tabele [Ucesnici na projektima] sa starog zakacenog fajla moze biti
[Saradnik] u tabeli [Saradnici]) i resenja koje je Zidar dao (default value + validation rule).
Meni je ranije palo na pamet da to resim (ako je potrebno) tako sto bi polje [Saradnik] u tabeli [Saradnici] stavio da je combo box i tu primenio upit:
(SELECT [Ucesnici na projektima].Ucesnik FROM [Ucesnici na projektima] WHERE ((([Ucesnici na projektima].Tip_Ucesnika)="Saradnik"));),
tako da nebi ni bilo moguce upisati Ucesnika drugog tipa. Pa sam hteo da zamolim za komentar ovoga (dobre i lose strane).

U novoj varijanti sam razdvojio [Ucesnike na projektima] na [Ucesnike] tj.ljude i [Firme] da bih pokusao da u celu stvar ukljucim i kontakt osobe pojedinih
firmi koje bi se takodje nasle u tabeli [Ucesnici]. Odmah da kazem de mi se ova varijanta ne svidjajer se sve veoma komplikuje ali ne znam kako bih to drugacije izveo, pa razmisljam da od toga cak i odustanem i vratim se na staru varijantu ciji je relationships zakačen sa porukom (Old Relationships).
Pitanja:
Kako da postignem da kada hocu da unesem npr. Korisnika u tabeli Korisnici preko combo boxa (u tabeli) dobijem ponudjene i Ucesnike i Firme ? Ja sada mogu da izaberem samo jedne.
Isto vazi i za ostale intersection tabele kao i za tabelu telefoni i faxovi
Da li postoji nacin da se npr. Ucesniku koji je Korisnik zabrani da bude ostalo (Saradnik, Investitor...) ili ako je dve stvari istovremeno da se zabrani treca..itd. Ovo mi je cisto palo na pamet, ali ukoliko bi u znacajnoj meri zakomplikovalo stvari nije neophodno.
[Tip_ucesnika] ne bi definisao da li je neko (Saradnik, Korisnik,...) jer to u ovom slucaju gubi smisao jer Ucesnik moze biti vise toga istovremeno.

Desna strana relationships-a mi se svidja ukljucujuci intersection tabele, medjutim leva mi zadaje probleme.

Citat:
Sta ne valja dalje u modelu? Ima li nesto sto zelis da znas o Saradniku, a ne interesuje te tio isto kod investitora ili korisnika? Svaki od tipova korisnika moze imati neke atribute znacajne samo za taj tip. Nije dobro da sad uzmes i dodas gomilu kolona u tabelu Ucesnici_u_Projektu pa da budu mahom prazne. O tome cemo neki drugi dan, iduce nedelje.


To bi me isto veoma zanimalo i mislim da bi mi koristilo u staroj varijanti.

Nadam se da sve ovo nije isuvise konfuzno napisano, vezano je za razmisljanja i bez definisanog konacnog ishoda.
Prikačeni fajlovi
 
Odgovor na temu

Zidar
Canada

Moderator
Član broj: 15387
Poruke: 3085
*.eqao.com.



+79 Profil

icon Re: Popunjavanje baze sa desna (n) u levo (1) ?14.03.2006. u 13:48 - pre 220 meseci
Nemam vremena za potpun odgovor, osim na ovaj deo:
Citat:
Meni je ranije palo na pamet da to resim (ako je potrebno) tako sto bi polje [Saradnik] u tabeli [Saradnici] stavio da je combo box i tu primenio upit:
(SELECT [Ucesnici na projektima].Ucesnik FROM [Ucesnici na projektima] WHERE ((([Ucesnici na projektima].Tip_Ucesnika)="Saradnik"));),
tako da nebi ni bilo moguce upisati Ucesnika drugog tipa. Pa sam hteo da zamolim za komentar ovoga (dobre i lose strane).

Sta ti znaci "svim polje u tabeli da bude combo box"? Tako nesto ne postoji u logickom smislu. Ti mozes da stavis da se polje vidi kao combo box, i da ogranicis combo box na LimitToList=YES i da mu das neki SELECT koji vrca zeljeni izbor. Medjutim, to se lako zaobilazi. Ako upotrebis ADO ili DAO mozes da uneses u ta polja sta god hoces, kombo box ce biti potpuno ignorisan. ANjobicniji Append kveri ce ignorisati tvoj combo box. Dakle, "pretvoriti polje u kombo box na nivou tabele' je ekvivalent pravljenja forme i postavljanja kombo boxa na formi. To znaci da je unos u polje kontrolisan samo kada se ide kroz tu formu. Relacione baze podataka omogucuju ti da na nivou tabela definises ogranicenja za unos podataka, putem Foreign Key Conatraints (relacije u Accessu) i preko CHECK constraints (Validation rule u Accessu. Kombo box koji si zamislio nije ni jedno od toga. Combo box je naprosto formatiranje polja sa delimicnom kontrolom unosa koja se lako zaobilazi.

Znaci li ovo da ne treba koristiti combo box na formama? Ne. Combo box je odlican alat za gradjenje efikasnog i efektivnog interfejsa, ali nista vise od toga. Na formi za dodeljivanje saradnika projektu ti MORAS da upotrebis kombo box sa SELECT koji si naveo gore u citatu.

Medjutim, integritet podataka se stiti sto je moguce vise na nivou tabela, a ono sto ne mozemo na nivou tabela, stitimo interfejsom. Da li ce se zbog ovoga stvari zakomplikovati? Sigurno da hoce. Do kog stepena komplikovanosti ici? Zavisi od slucaja do slucaja. Zavisi od toga koliko je znacajno 100% zastititi integritet podataka. Zavisi i od toga koliko si u stanju to sve da izvedes. Mora biti da ima neki razlog zasto su ljudi koji sve ovo umeju da izvedu veoma dobro placeni :-)
 
Odgovor na temu

Zidar
Canada

Moderator
Član broj: 15387
Poruke: 3085
*.eqao.com.



+79 Profil

icon Re: Popunjavanje baze sa desna (n) u levo (1) ?14.03.2006. u 18:03 - pre 220 meseci
Pogledao sam novi dizajn. Nista izgleda nisi razumeo :-(

Bolje je da se vratis na originalni dizajn. Sad vise ne verujem da si dobro razumeo sta radis. Vrati se na originalni dizajn i moli boga da sve radi onako kako si zamislio.

Cisto za kontrolu razumavanja, probaj da odgovoris na pitanja: Mozes li da objasnis cime se uopste bavi tvoja kompanija? Sta je svrha baze koju gradis? Sta su Firme? Sta su korisnici? Sta su Ucesnici? Sta su konzorcijumi? Sta Saradnici? Sta znaci "Predkvalifikovana firma"? U kakvoj su oni vezi medjusbno?

 
Odgovor na temu

easyrider

Član broj: 37500
Poruke: 22
..shall-bg.customer.sbb.co.yu.



Profil

icon Re: Popunjavanje baze sa desna (n) u levo (1) ?17.03.2006. u 14:13 - pre 220 meseci
Pa dobro, nemoj odmah da se ljutis. :-))
Evo je uoblicena baza pa je pogledaj.

Za kontrolu razumevanja:

Svrha Baze je da se brzo i na pregledan nacin, pretrazuju svi podaci vezani za projekat. Eventualno neki Izvestaj ali otom potom.

Ucesnici - Svi oni koji su na bilo koji nacin povezani sa bilo kojim projektom. To mogu biti (Ljudi i Firme), odnosno posmatrano u odnosu na projekat (Korisnici, Investitori, Pretkvalifikovane firme, Saradnici, Clanovi raznih konzorcijuma koji ce kasnije ucestvovati na realizaciji istog, Saradnici (Spoljni i unutrasnji), Kontakt osobe pojedinih firmi, itd....ako sam nesto zaboravio. Kao sto vidis mnogo je tu naroda.

E sad, posto moze da se desi da je neki Ucesnik na jednom projektu jedno, a na drugom drugo odustao sam da im definisem Tip_Ucesnika u smislu kao sto je to gore navedeno i uradjeno u prethodnim varijantama koje sam vam uploadovao. Dodelio sam im tipove (Firma, Saradnik, Kontakt osoba...ima u bazi) koji na ovom nivou nemaju uticaja na aplikaciju. A ti nemoj sada da poludis. Ti Tipovi_ucesnika ce se sistematizovati u skladu sa potrebama eventualnih Izvestaja (a i ostali su lako izmenjivi).

Bilo kako bilo, "ko je kada sta" definisano je u intersection tabelama i preko njih se i pretrazuje. Necu da ulazim u kombinacije npr. ako je "Pera" Investitor i Korisnik da li moze da bude i Saradnik (na istom projektu). Eventualno bih mogao da napravim neka ogranicenja na nekim intersection tabelama u smislu da je moguce uneti Ucesnika ciji je tip=firma itd, ali ne bi to moglo za sve pogotovo ako bih hteo da dozvolim unos dva ili vise tipa ucesnika. A i ko kaze da nece biti jos nekih novih tipova. Zbog svega toga odustao sam od ogranicenja za Intersection tabele u tom smislu.

Ne bih da prepricavam relacije posto je to ocigledno, integritet podataka je svuda ostvareni, i sve zaista radi kao sat (provereno). Verovatno zato sto sam se pomolio bogu. ;-)

Jedina stvar (po meni) koja je ostala nedorecena:

To su Kontakt osobe. Posto sam sve nagurao u istu tabeli Ucesnici, ne mogu nikako da povezem Kontakt osobe sa firmama kojima one pripadaju. Eventualno u Napomeni (u sadasnjoj varijanti). Ja sam to pokusao ranije (prethodni zakaceni fajl) da resim tako sto sam razdvojio tabelu Ucesnici na dve...Firme i Ljudi(ucesnici). To je dovelo do strasnog komplikovanja i ogromnog broja veza jer je svaku od te dve tabele trebalo povezati sa Intersections tabelama.

Logicki je to zaista bilo lepo povezano, ako bolje pogledas, ali si bio u pravu kad si rekao da bi to tesko radilo.

Pitanja:
1. Imas li neku ideju za kontakt osobe (koje su takodje Ucesnici, ali pripadaju firmama)?
2. Ovo mi je palo na pamet u prosloj varijanti. Pogledaj tri povezane tabele u prethodnom uploadu (Telefoni i faxovi, Ucesnici, Firme). Tu imamo slucaj da u jedno polje [Korisnik(telefona)] ulazi dva polja [Ucesnik] i [Firma] iz dve roditeljske tabele. Moze li to u teoriji? Zanima me nevezano za ovu bazu.
3. Ako me za jedan tip ucesnika zanima nesto sto me ne zanima za ostale tipove? Jednom si to pomenuo.

Pozdrav
Prikačeni fajlovi
 
Odgovor na temu

Zidar
Canada

Moderator
Član broj: 15387
Poruke: 3085
*.eqao.com.



+79 Profil

icon Re: Popunjavanje baze sa desna (n) u levo (1) ?20.03.2006. u 20:45 - pre 220 meseci
Slusaj, najbolje je da stanemo. Obecao sam da cu raditi na Veleprodaji a evo ne radim nista vec danima.

Ovo tvoje se komplikuje sve vise i vise. AKo ti radi kako si zamislio, ostavi ga tako. Zakacio sam isti primer koji si dao poslednji put, samo sam uneo neke podatke. Ti vidi da li ono sto sam ja uneo ima smisla i kako ces da sprecis da se unose gluposti.

Pitanja:
1. Imas li neku ideju za kontakt osobe (koje su takodje Ucesnici, ali pripadaju firmama)?
A: Mozes da ih izmestis u posebnu tabelu, dete tabele Ucesnici. Mozes i da napravis self-referencing relaciju, da Kontakt osoba mora da ima ParentUcesnika, koji naravno sme da bude samo firma.

2. Ovo mi je palo na pamet u prosloj varijanti. Pogledaj tri povezane tabele u prethodnom uploadu (Telefoni i faxovi, Ucesnici, Firme). Tu imamo slucaj da u jedno polje [Korisnik(telefona)] ulazi dva polja [Ucesnik] i [Firma] iz dve roditeljske tabele. Moze li to u teoriji? Zanima me nevezano za ovu bazu.
A: ne vidim tabelu Firme nigde.

3. Ako me za jedan tip ucesnika zanima nesto sto me ne zanima za ostale tipove? Jednom si to pomenuo.
A: To ti se zove "pod tipovi entiteta". definises objekt/tabelu Ucesnici i tamo stavis kolone koje su ajednicke za sve ucesnike. Onda za svaki ili neke tipove, napravis tabele koje su deca od tabele Ucesnici. Preneses PK iz tabele ucesnici i dodas kolone koje ti trebaju. Veza izmedju Ucesnici i na primer Saradnici bi bila 1:1 a Ucesnici se definise kao roditelj tabela.

Ne znamo nista o poslovnom procesu koji modelujes pa ne mozemo da pricamo sta i kako treba. Formalno gledano, iono sta si napravio moze da prodje, uz puno rada na inetrfejsu - da se sprece gluposti.

Pitanja za razmisljanje:
- Zasto ne definises Uloge na projektu, umesto da razmnozavas tabele. Ucesnici su ili ljudi ili firme. Dakle, vrednosti kao "Firma","spoljni saradnik", "kontakt osoba" dolaze u obzir. Naravno, "clan konzorcijuma" ne moze biti vrednost u tabeli Ucesnici. Zasto? To nije ni covek ni firma, to je ULOGA koju moze da na nekom projektu ima neki ucesnik. Onda neces imati problema da definises uloge po volji i da ucesnike stavljas u razlicte uloge po volji.

- Imas u tabeli Projekti polja VodjaProjekta, NosilacKonzorcijuma. Oba dolaze iz tabele Ucesnici. To ukazuje na greske u dizajnu. mozda njih treba definisati kao uloge na projektu?

- Isto, u tabeli Projekti imas kolnu "Faza Ponude". Znamo da ce projekt imati vise faza. kad se jedna zavrsi, druag pocinje. Sta tada radis? Prpeises staru vrednost u polju? Umesto "Pocetak" napises "Sredina"? Kad se zavrsio pocetak? kada je tacno pocela Sredina? Nemoj ni da pomislis da dodas polje "DatumPocetkaFaze" i "DatumZavrsetkaFaze". To ce upropastiti dizajn potpuno. I nece resiti problem istorije promena - imaces samo trenutnu fazu, )koja se zna i bez baze podataka :-) Da nisu faze isto sto i dogadjaji na projektu? Za tu svrhu imas celu lepo dizajniranu tabelu.

:-)
Prikačeni fajlovi
 
Odgovor na temu

Zidar
Canada

Moderator
Član broj: 15387
Poruke: 3085
*.eqao.com.



+79 Profil

icon Re: Popunjavanje baze sa desna (n) u levo (1) ?20.03.2006. u 20:48 - pre 220 meseci
Evo malo detalja o ideji da se uvedu "Uloge na projektu"
Prikačeni fajlovi
 
Odgovor na temu

easyrider

Član broj: 37500
Poruke: 22
*.jptent.com.



Profil

icon Re: Popunjavanje baze sa desna (n) u levo (1) ?24.03.2006. u 06:16 - pre 219 meseci
OK. Hvala puno. :-)
 
Odgovor na temu

[es] :: Access :: Popunjavanje baze sa desna (n) u levo (1) ?

[ Pregleda: 2714 | Odgovora: 14 ] > FB > Twit

Postavi temu Odgovori

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