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

PMOV problem oko agregacije

[es] :: Baze podataka :: PMOV problem oko agregacije

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

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

vbvlada
Petrović Vladimir
Beograd

Član broj: 59233
Poruke: 209
..106.109.adsl.dyn.beotel.net.



Profil

icon PMOV problem oko agregacije07.01.2011. u 22:19 - pre 102 meseci
Na slici je deo modela koji radim i imam problem sa prijavom.
Mogu da kažem da sam početnik u ovom modelovanju, nadam se da ćete razumeti šta mi treba.
Mislim da su objekti Kurs, Profil, Nastavnik i Polaznik jasni.
Objekat Program je agregacija Kursa i Profila, dakle tu se kao identifikatori nalaze IDKurs i IDProfil.
Dalje taj Program ulazi u dve agregacije: Angažovanje i IzborKurseva, što znači da će se u njima kao deo identifikatora naći IDKurs i IDProfil, zajedno sa IDNastavnik i IDPolaznik, respektivno.
Prijava treba da predstavi sledeće: Koji su polaznici prijavili polaganje iz kurseva koji se nalaze na njihovim listama, a ujedno angažuju nekog nastavnika u nekom profilu.

Ako je identifikator agregiranog objekta sastavljen od identifikatora objekata koji čine tu agregaciju, imam dupliranje IDKurs i IDProfil.
Kako se ovo rešava?

Mogao bih da povežem direktno Nastavnika ili direktno Polaznika ali tada sistem ne bi oslikavao ograničenja koja želim da postoje, ili je to možda ok?


A vi,kako 'te?
 
Odgovor na temu

Zoran.Eremija
Zoran Eremija
SYSTEM ANALYST
Freelancer
Beograd

Član broj: 251342
Poruke: 855
..106.109.adsl.dyn.beotel.net.

Sajt: zoraneremija.wix.com/erem..


+47 Profil

icon Re: PMOV problem oko agregacije08.01.2011. u 12:51 - pre 102 meseci
Ja bih model postavio na sledeci nacin...


Prikačeni fajlovi
 
Odgovor na temu

vbvlada
Petrović Vladimir
Beograd

Član broj: 59233
Poruke: 209
..106.109.adsl.dyn.beotel.net.



Profil

icon Re: PMOV problem oko agregacije08.01.2011. u 13:26 - pre 102 meseci
Možda mi ovo ne odgovara jer sam model krenuo da pravim na osnovu dokumenata i poznavanja poslovanja, pa ovaj model do pred sam kraj oslikava pravo stanje.
Zorane, imaš li možda komentar na model koji sam ja krenuo da pravim, tj. da li nekako može da se reši ova situacija?
Ne poznajem previše ER modelovanje, ali koliko vidim ništa nije toliko striktno, možda bih i mogao da povežem te dve agregacije, ali nakon toga ne bih mogao lepo da izgenerišem relacije.
Inače ne radim u ERWin-u već crtam u Visiu...

A vi,kako 'te?
 
Odgovor na temu

Getsbi

Član broj: 124608
Poruke: 2731



+32 Profil

icon Re: PMOV problem oko agregacije08.01.2011. u 14:01 - pre 102 meseci
Mislim da imaš problem u proceduri postupanja tokom modelovanja. Zoran ti je dao dobar model, onako kako ga on vidi. On poznaje materiju ali mu ti nisi dao svoja jasna pravila. Niko ne može da ti napravi model, a da ti ne zadaš pravila. Kako to otprilike izgleda?

Prvo moraš da zadaš iskazne rečenice odnosno poslovna pravila. Iskazne rečenice moraju da budu jasne:

1. Za jedan obrazovni profil, potrebno je savladati jedan ili više studijskih programa.
2. Polaznik može da upiše jedan ili više studiskih programa.
3. Isti studijski program mogu da pohađaju jedan ili više studenata.
4. Studijski program se sastoj iz više kurseva.
5. Jedan kurs može da se nađe u više studijskih programa.
6. Jedan nastavnik može da predaje jedan ili više kurseva.
7. Jedan kurs može da predaje jedan ili više nastavnika.
8. Jedan polaznik može da podnese jednu ili više ispitnih prijava.
9.........
10....

U prvoj iteraciji prolaziš kroz rečenice, čitajući ih i odlučujući šta je tu entitet. Najbolje je podvući takve reči.
U drugoj iteraciji sve te entitete popišeš na papiru ili na ekranu (razbacano) i dodaješ im atribute.
U trećoj iteraciji od atributa, koji su kandidati za ključeve, postavljaš PK i FK, te ih povezuješ međusobno vodeći računa o pravilima iskaznih rečenica. Ovde se donosi odluka da li će neki entitet imati prost ili složeni PK, odnosno da li će FK preći u ključne ili neključne atribute. Takođe se donosi odluka o dodavanju veznih (asocijativnih) entiteta koji najčešće imaju za ključne atribute, prenesene ključeve svojih roditeljskih entiteta.

Najčešće se postavljaju veštački ključevi, odnosno atributi tipa ObjekatID.




[Ovu poruku je menjao Getsbi dana 09.01.2011. u 07:47 GMT+1]
 
Odgovor na temu

vbvlada
Petrović Vladimir
Beograd

Član broj: 59233
Poruke: 209
..106.109.adsl.dyn.beotel.net.



Profil

icon Re: PMOV problem oko agregacije08.01.2011. u 14:24 - pre 102 meseci
Ok, evo malo da pojasnim kako stoji u realnom sistemu:
Obrazovni profil ima svoj naziv i opis kakav je to stručnjak koji dobije diplomu tog profila.
U profil spadaju kursevi koji se mogu naći u više obrazovnih profila i to je entitet Program.
Dalje, Nastavnik može da bude predavač na nekom kursu koji se nalazi u nekom programu, dok na istom kursu ali u nekom drugom Programu, predaje neko drugi, a može ih biti i više od jednog.
Studijski program, tj. smer ne postoji u ovom slučaju, dakle Polaznik bira predmete iz nekog Programa, ali nema ograničenje da to bude samo jedan program, može da izabere kurs iz bilo kog programa, samo mora da se zna iz kog je programa uzet kurs.

Kada prijavljuje polaganje, Polaznik bira kurs koji može biti samo iz njegove liste, i bira kod koga će da polaže, dakle iz liste predavača za taj kurs u tom programu (dakle na jednom kursu u nekom programu može biti više nastavnika)

Ovo je realno stanje i mislim da sam to realno stanje i predstavio kako treba...
A vi,kako 'te?
 
Odgovor na temu

Zoran.Eremija
Zoran Eremija
SYSTEM ANALYST
Freelancer
Beograd

Član broj: 251342
Poruke: 855
..106.109.adsl.dyn.beotel.net.

Sajt: zoraneremija.wix.com/erem..


+47 Profil

icon Re: PMOV problem oko agregacije08.01.2011. u 17:59 - pre 102 meseci
Vasim poslednjim postom malo pojasnjavate stvar, ali moram da priznam da jos uvek nisam razumeo o kojem realnom sistemu se radi?!?!

Citat:
vbvlada: ... jer sam model krenuo da pravim na osnovu dokumenata i poznavanja poslovanja, pa ovaj model do pred sam kraj oslikava pravo stanje...


Kada kazete da vam je osnov modela iz dokumenata i poznavanja poslovanja tj poznavanje realnog sistema... Da li ste opisali nekom metodom dinamiku sistema?

Principijelno vezu agregacije treba koristiti za definisanje pravila, a izbegavati za opis dinamike sistema.

Dobro ste uocili da nista nije striktno, a striktonst zavisi od granice sistema koju postavite, pravila koja definisu sistem i ciljeve koje postavite da Vas model mora da ispuni.
 
Odgovor na temu

chachka
Srđan Mijatov
Programer
BUS Computers
Kikinda

Moderator
Član broj: 53780
Poruke: 575
*.dynamic.isp.telekom.rs.

Sajt: www.baze-podataka.net


+4 Profil

icon Re: PMOV problem oko agregacije08.01.2011. u 20:54 - pre 102 meseci
Citat:
vbvlada: Ako je identifikator agregiranog objekta sastavljen od identifikatora objekata koji čine tu agregaciju, imam dupliranje IDKurs i IDProfil.
Kako se ovo rešava?

Nema ovde dupliranja ID-jeva! Vrednosti koje uzima "IDKurs" u relaciji "PrijavaPolaganja" su podskup vrednosti atributa "IDKurs" u relaciji "Kurs" (govorim o originalnom dijagramu). Isto tako, vrednosti koje uzima "IDProfil" u relaciji "PrijavaPolaganja" su podskup vrednosti atributa "IDProfil" u relaciji "Profil".

Slobodno bi mogao da spojiš gerunde "Angažovanje" i "IzborKurseva" i da dobiješ nov gerund "PrijavaPolaganja".

ALI, taj dijagram nebi odgovarao opisu problema kojeg si razradio u poslednjem postu.

U tvom dijagramu ne valja što si direktno spojio nastavnike sa programima jer tako može doći do slučaj da jedan program sadrži dva puta isti kurs samo zato što taj kurs predaje različiti nastavnik. Informaciju o tome koji nastavnik predaje koji kurs nesmeš čuvati u relaciji "Programi", nego se to mora izdvojiti u zasebnu relaciju.

Citat:
vbvlada: Mogao bih da povežem direktno Nastavnika ili direktno Polaznika ali tada sistem ne bi oslikavao ograničenja koja želim da postoje, ili je to možda ok?
Netreba to da radiš. Priijavu ispita treba da povežeš sa relacijom koju sam gore spominjao (gerund između nastavnika i kursa).

"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

vbvlada
Petrović Vladimir
Beograd

Član broj: 59233
Poruke: 209
*.viser.edu.rs.



Profil

icon Re: PMOV problem oko agregacije10.01.2011. u 11:55 - pre 102 meseci
Citat:
chachka:U tvom dijagramu ne valja što si direktno spojio nastavnike sa programima


Srđane, ne znam da li razumeš ovu notaciju koju ja koristim, ali Angažovanje i IzborKurseva su objekti-agregacije u ovom modelu, nisu klasične veze, i oni će se kasnije prevesti u relacije, tj. tabele (vezne), tako da ja nisam direktno spojio nastavnika i program. Angažovanje upravo služi da opiše koji nastavnik je na nekom kursu u nekom programu, ili u drugom smeru: koje kurseve drži neki nastavnik. Dakle sve je više na više.

Ako sam ja sada pojasnio ovo, imaću dve tabele: Angažovanje i IzborKurseva koje će da sadrže IDKurs i IDProfil kao delove svojih ključeva:

Code:
Angazovanje(IDNastavnik, IDKurs, IDProfil, bla, bla)
IzborKurseva(IDPolaznik,  IDKurs, IDProfil, bla, bla)


I sada kada treba da napravim PrijavuPolaganja, treba da spustim njihove ključeve, a delovi tih ključeva se poklapaju...

Izvini, možda u stvari ja tebe nisam razumeo, ali meni i dalje nije jasno šta da uradim sa PrijavomPolaganja.
A vi,kako 'te?
 
Odgovor na temu

chachka
Srđan Mijatov
Programer
BUS Computers
Kikinda

Moderator
Član broj: 53780
Poruke: 575
*.dynamic.isp.telekom.rs.

Sajt: www.baze-podataka.net


+4 Profil

icon Re: PMOV problem oko agregacije10.01.2011. u 17:07 - pre 102 meseci
Razumem dijagram kojeg koristiš, nije u tome problem, nego sam sam loše protumačio dati dijagram.

U pravu si za nastavnika, ali ipak, ono što mi je zasmetalo u polaznom dijagramu je i dalje prisutno. To što mi smeta ću nazvati "simetrijom" između dela dijagrama nastavnik-program i polaznik-program, a iz navedenih pravila je jasno da simetrije nema. Ja sam tu simetriju brzopleto pokušao da razbijem dodatnim entitetima u dijagramu.

Spomenuta simetrija se odražava i u tvojoj rečenici:
Citat:
vbvlada: Ako sam ja sada pojasnio ovo, imaću dve tabele: Angažovanje i IzborKurseva koje će da sadrže IDKurs i IDProfil kao delove svojih ključeva
Po meni to nije tačno! Ključ "tabele" Angažovanje zaista treba da bude (IDKurs, IDProfil, IDNastavnik), ali kljuć tabele IzborKurseva mora da bude samo (IDKurs, IDPolaznik)! Ako bi ključ tabele IzborKurseva ipak bio (IDKurs, IDPRofil, IDPolaznik), onda bi jedan polaznik mogao da odabere isti kurs dva puta samo zato što se taj kurs nalazi u dva profila. (Ja sam u prethodnom postu ovo pripisao delu koji se odnosi na angažovanje nastavnika, što je bila greška).


Citat:
vbvlada: ... ali meni i dalje nije jasno šta da uradim sa PrijavomPolaganja.

Što se tiče spornog "PrijavaPolaganja": Pa prosto poveži Angažovanje i IzborKurseva, a to što se delovi ključeva poklapaju nema veze, u novom entitetu ih netreba duplirati, nego se ti atributi pojavljuju samo jednom (i to sa svojim izvornim imenom), jer to ovaj slučaj ne zahteva (postoje neki slučajevi kada ih treba duplirati).

Dobijaš gerund (odnosno po tvome "objekat-agregacije") "PrijavaPolaganja" koji ima atribute (IDKurs, IDProfil, IDNastavnik, IDPolaznik, foo, bar), gde je ključ (IDKurs, IDProfil, IDNastavnik, IDPolaznik), i važe referencijalni integriteti:
- PrijavaPolaganja(IDKurs, IDProfil, IDNastavnik) JE_PODSKUP_OD Angažovanje(IDKurs, IDProfil, IDNastavnik) i
- PrijavaPolaganja(IDKurs, IDProfil, IDPolaznik) JE_PODSKUP_OD IzborKurseva(IDKurs, IDProfil, IDPolaznik). Ovde treba upotrebiti činjenicu da se povezivanje "tabela" nemora uvek izvršavati upotrebom primarnog ključa!


"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

vbvlada
Petrović Vladimir
Beograd

Član broj: 59233
Poruke: 209
*.viser.edu.rs.



Profil

icon Re: PMOV problem oko agregacije11.01.2011. u 12:05 - pre 102 meseci
Ok, sada mi je dosta jasnije.

Citat:
Po meni to nije tačno! Ključ "tabele" Angažovanje zaista treba da bude (IDKurs, IDProfil, IDNastavnik), ali kljuć tabele IzborKurseva mora da bude samo (IDKurs, IDPolaznik)!


Slažem se sa ovim, međutim, ostavio sam da se IzborKurseva vezuje za Program jer je takvo poslovanje.
Polaznik, kada prijavljuje polaganje, treba da dobije izbor nastavnika koji predaju na tom kursu koji se nalazi u istom programu, a ovako bi polaznik mogao da izabere nastavnika koji po nekom pravilu ne bi smeo da ga ispituje, tako da bi i ovde imali nedostatak pravila koji nije implementiran u model.

Ok, znači da mogu slobodno i ovako da povežem, kao što kažeš, nema dupliranja i lepo si mi to objasnio.

Što se tiče IzboraKurseva, znam da sada polaznik može da izabere isti kurs koji se nalazi na više programa, ali mi se čini da ovim više pratim ono kako "preduzeće" posluje, pa bih ga ovako i ostavio. Jedino ako me još nekim argumentom ubediš da je to prilično pogrešno :)

Hvala!
A vi,kako 'te?
 
Odgovor na temu

chachka
Srđan Mijatov
Programer
BUS Computers
Kikinda

Moderator
Član broj: 53780
Poruke: 575
*.dynamic.isp.telekom.rs.

Sajt: www.baze-podataka.net


+4 Profil

icon Re: PMOV problem oko agregacije11.01.2011. u 13:02 - pre 102 meseci
Po onome što sam predložio će se na kraju sve kockice sklopiti i neće moći da se prijavi ispit kod neodgovarajućeg profesora.

Pretpostavljam da će se implementacija vršiti u nekoj SQLoidnoj bazi podataka. Ja znam kako bih to uradio u SQL-u:
Code:
...
CREATE TABLE Angazovanje (
  IDNastavnik INTEGER NOT NULL,
  IDKurs INTEGER NOT NULL,
  IDProfil INTEGER NOT NULL,
  ...,
  CONSTRAINT pk_ang PRIMARY KEY (IDNastavnik, IDKurs, IDProfil),
  ...
);

CREATE TABLE IzborKurseva (
  IDPolaznik INTEGER NOT NULL,
  IDKurs INTEGER NOT NULL,
  IDProfil INTEGER NOT NULL,
  ...,
  CONSTRAINT pk_iku PRIMARY KEY (IDPolaznik, IDKurs),
  CONSTRAINT ak_iku UNIQUE (IDPolaznik, IDKurs, IDProfil), -- nadkljuc
  ...
);

CREATE TABLE PrijavaPolaganja (
  broj_prijave INTEGER NOT NULL,
  IDPolaznik INTEGER NOT NULL,
  IDKurs INTEGER NOT NULL,
  IDProfil INTEGER NOT NULL,
  IDNastavnik INTEGER NOT NULL,
  ...,
  CONSTRAINT pk_ppo PRIMARY KEY (broj_prijave),
  CONSTRAINT fk_ppo_ang FOREIGN KEY (IDNastavnik, IDKurs, IDProfil) REFERENCES Angazovanje (IDNastavnik, IDKurs, IDProfil),
  CONSTRAINT fk_ppo_iku FOREIGN KEY (IDPolaznik, IDKurs, IDProfil) REFERENCES IzborKurseva (IDPolaznik, IDKurs, IDProfil),
  -- ovo referenciranje je izvrseno upotrebom nadkljuca!
  ...
);
Ovako nema šanse da se u prijavu unese nastavnik koji ne predaje na odgovarajućem kursu odgovarajućeg profila, niti da se unese dva puta isti kurs pri izboru kurseva.

Ne ubeđujem te, samo mi je dosadno, a problem interesantan :)

PS: Znam da napravim model koji odgovara gornjem SQL DDL-u u raznim CASE alatima, ali i mene interesuje kako se on prikazuje upotrebom PMOV-a (sa sve onim pravougaonicima, rombovima i kardinalnostima), pa ako neko zna...
"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

vbvlada
Petrović Vladimir
Beograd

Član broj: 59233
Poruke: 209
*.viser.edu.rs.



Profil

icon Re: PMOV problem oko agregacije11.01.2011. u 16:51 - pre 102 meseci
Srđane, slobodno daj predloge, samo želim da mi bude sve jasno jer ovo radim kao zadatak za projekat na faksu.
A evo ti linka gde možeš da pročitaš o tome
PMOV skripta
PMOV se kasnije prevodi u relacioni model gde se dobijaju tabele i ograničenja, a pošto sam prvo učio tabele, sve me ovo nekad zbuni, jer uvek mislim kako ću sve to da prevedem posle.
A vi,kako 'te?
 
Odgovor na temu

[es] :: Baze podataka :: PMOV problem oko agregacije

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

Postavi temu Odgovori

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