poslovni dokumenti sa slicnim osobinama - kako predstaviti n

1

poslovni dokumenti sa slicnim osobinama - kako predstaviti n

offline
  • Pridružio: 02 Maj 2003
  • Poruke: 430
  • Gde živiš: NBG

poslovni dokumenti sa slicnim osobinama - kako predstaviti na jednostavniji nacin



Radimo projekat iz jednog predmeta na faxu. Uradili smo veci deo posla ali ja imam neke nedoumice pa bih jedan deo posla da se uradi ponovo, ovog puta dosta preglednije, tj. jasnije/jednostavnije.

U pitanju je firma koja se bavi veleprodajom odredjenih proizvoda. I kupci i dobavljaci su poslovni partneri (pravna lica) tako da postoji jedan objekat PoslovniPartner, posto moze da se desi da kupac u nekom trenutku bude dobavljac i obrnuto.
Citat:Od dobavljaca se dobijaju sledeca dokumenta: Ponuda, Otpremnica, OdobrenjeZaUmanjenje.
Dobavljacu se salju: Porudzbina, Reklamacija.
Kupac salje: Porudzbina, Reklamacija.
A kupcu: Otpremnica, Povratnica, OdobrenjeZaUmanjenje.


Svi ovi objekti (dokumenti) su povezani sa objektom PoslovniPartner i svi imaju, kao slab objekat, stavku koja je povezana sa objektom Proizvod. Neki dokumenti su u vezi sa drugim dokumentima:
Citat:PorudzbinaDobavljaca sa Ponudom,
OtpremnicaDobavljaca sa PorudzbinomDobavljacu,
ReklamacijaDobavljacu sa OtpremnicomDobavljaca,
OdobrenjeZaUmanjenjeDobavljaca sa ReklamacijomDobavljaca,
OtpremnicaKupcu sa PorudzbinomKupca,
ReklamacijaKupca sa OtpremnicomKupcu,
OdobrenjeZaUmanjenjeKupcu sa ReklamacijomKupcu.

(ne obracajte paznju na moguci nedostatak nekih dokumenata - tako su nam rekli u firmi da ide, s druge strane nisam bio kada su pricali za reklamacije itd)

Slede atributi (kljucevi su podvuceni) - PoslovniPartner, Proizvod, Ugovor nisu dati sa atributima zato sto nema potrebe:
Citat:
Ponuda (PonudaID, PPid, DatumPonude, VremePlacanja, StatusPonude)
StavkaPonuda (PonudaID, RedniBrojStavkaPonuda, PPid, ProizvodID, KolicinaStavkaPonuda,CenaStavkaPonuda)

PorudžbinaDobavljac (PorudzbinaDobID, DatumPorudzbinaDob, PPid, PonudaID, UgovorID)
StavkaPorudžbinaDobavljac (PorudzbinaDobID, RedniBrojStavkaPorudzbinaDob, KolicinaStavkaPorudzbinaDob, ProizvodID)

OtpremnicaDobavljac (OtpremnicaDobID, PPid, StatusOtpremnicaDob, BrojOtpremnicaDob, DatumOtpremnicaDob, DatumPrometaOtpremnicaDob,PorudzbinaDobID)
StavkaOtpremnicaDobavljac (RedniBrojStavkaOtpremnicaDob, OtpremnicaDobID, PPid, CenaStavkaOtpremnicaDob, PDV, KolicinaStavkaOtpremnicaDob, ProizvodID)

ReklamacijaDobavljac (ReklamacijaDobID, DatumReklamacijaDob, OtpremnicaDobID, PPid)
StavkaReklamacijaDobavljac (ReklamacijaDobID,RedniBrojStavkaReklamacijaDob, KolicinaStavkaReklamacijaDob, ProizvodID, )

OdobrenjeneZaUmanjenjeDobavljac (OdobrenjeDobID, PPid, DatumOdobrenjeDob, UkupnoUmanjenjeOdobrenjeDob, ReklamacijaDobID)
StavkaOdobrenjeZaUmanjenjeDobavljac (OdobrenjeDobID, PPid, RedniBrojStavkaOdobrenjeDob, CenaStavkaOdobrenjeDob, KolicinaStavkaOdobrenjeDob, ProizvodID)

PorudžbinaKupac (PPid, PorudzbinaKupacID, DatumPorKup, MestoID, UgovorID)
StavkaPorudžbinaKupac (PorudzbinaKupacID, PPid, RedniBrojStavkaPorKup, KolicinaStavkaPorKup, ProizvodID)

OtpremnicaKupac (OtpremnicaKupacID, OverenoOtpKup, BrojOtpKup, DatumOtpKup, DatumPrometaOtpKup, PorudzbinaKupacID, PPid, MestoID)
StavkaOtpremnicaKupac (RedniBrojStavkaOtpKup, OtpremnicaKupacID, CenaStavkaOtpKup, PDV, KolicinaStavkaOtpKup, ProizvodID)

ReklamacijaKupac (ReklamacijaKupacID, PPid, DatumReklamacijaKupac, OtpremnicaKupID, MestoID)
StavkaReklamacijaKupac (ReklamacijaKupacID,RedniBrojStavkaReklamacijaKupac, PPid, KolicinaStavkaReklamacijaKupac, ProizvodID)

OdobrenjeneZaUmanjenjeKupac (OdobrenjeKupacID, DatumOdobrenjeKupac, UkupnoUmanjenjeOdobrenjeKupac, ReklamacijaKupacID, PPid, MestoID)
StavkaOdobrenjeZaUmanjenjeKupac (OdobrenjeKupacID, RedniBrojStavkaOdobrenjeKupac, CenaStavkaOdobrenjeKupac, KolicinaStavkaOdobrenjeKupac, ProizvodID)



Vidi se da objekti (dokumenti) koji stizu od poslovnih partnera imaju slozen kljuc - ID dokumenta i ID PoslovnogPartnera. Uobicajeno, stavke imaju slozen kljuc: RedniBroj i kljuc nadredjenog im objekta (da se tako izrazim).


E, da pocnem sa onim sto me muci Smile Odradio sam IDEF1X model ovij objekata i stvarno je bilo cimanje to odraditi. Drugar mi rece da se svi ovi silni objekti mogu predstaviti samo preko tri objekta: DOKUMENT koji je u vezi sa PoslovnimPartnerom , sa samim sobom i sa TIPOM DOKUMENTA (drugi objekat) i STAVKA koja je u vezi sa Proizvodom.
Primetio sam da se tako radi gledajuci neke primere na ovom sajtu, konkretno ovaj, ovaj, ovaj, ovaj(Father of all Data Models), ovaj (Reference Data Manager), ovaj i ovaj primer. Ovaj, sta sam hteo reci... Da, ne kontam kako da to primenim na primer koji sam dao.

Mislim da bi trebalo napraviti 6 objekta: DOKUMENT_OD (koji ima slozen kljuc IDdok i PPid), TIP_DOK_OD, STAVKA_DOK_OD i DOKUMENT_ZA, TIP_DOK_ZA, STAVKA_DOK_ZA. Ono sto mene buni jeste TIP_DOKUMENTA (REference u nekim primerima na sajtu). U njemu bi trebalo da stoji sta je u pitanju (otpremnica, reklamacija...) al mi nije jasno kako da se podesi da se ne povezuju dokumenti koji ne bi trebalo da se povezuju (iako su indirektno u vezi) kao i za neke tipove mora u stavkama da stoji cena (otpremnice).
Nesto mi govori da se ovo ipak moze predstaviti preko samo tri objekta, kao sto mi je drugar rekao, al' ja ne vidim kako da predstavim u tipu dokumenta da neki objekti (dokumenti) imaju slozen kljuc.


Eto, mene muci lakse "predstavljanje" svega ovoga. Cini mi se da je nacin preko 3 objekta bolji i sa stanovista pisanja aplikacija. Nadam se da ce neko uspesti da mi sredi ove nedoumice. Valjda sam dobro izlozio problem, kucao sam sat vremena (dok sam kopirao i prepravljao liste atributa istovremeno sam ispravljao neke greske u radu koje nisam primetio ranije - pogubim se u ovoliko dokumenata). Izvinjavam se sto nisam okacio dijagrame za date objtekte (tabele, je'lte), to bi vec bilo preterivanje. Takodje, samo da naglasim da cu napisati i kardinalnost veza ako je potrebno (mada se moze i iz opisa veza na pocetku pretpostaviti kardinalnost). Ako sam napravio nege greske u kucanju ili opisu veza ili atributima izvinajvam se, pogubih se nacisto.
Trazio sam slicnu temu (kljucne reci stavka, stavke, refer, referentni) i nisam nasao Sad


prekopirano odavde



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • Emil Beli
  • Pridružio: 03 Jan 2005
  • Poruke: 2990
  • Gde živiš: Beograd

Ono sto ti hoces je znatno kompleksnije i ne moze da se uradi (kako Bog zapoveda) iz 3 tabele.
Inace, kakve veze ima tip dokumenta sa povezivanjem dokumenata?!

To je samo jedna tabela, ciji ce ID da ima tabela dokumenti, i koji ce samo da ti sluzi da mozes da razvrstas koji je koji dokument. Ne sluzi nicemu drugom.



offline
  • Pridružio: 02 Maj 2003
  • Poruke: 430
  • Gde živiš: NBG

da, tip dokumenta, ili , kako sam video u nekim primerima, referentna tabela (ako dobro upamtih) ima tu ulogu da razvrstava koji je koji dokument
sada to shvatih Smile

mislim da se nekim atributima koji se ne pojavljuju kod svih dokumenata moze dozvoliti da moze da ima nula vrednost stp bi olaksalo projektovanje iz samo tri ili sest tabela

imas li neki predlog?

offline
  • Emil Beli
  • Pridružio: 03 Jan 2005
  • Poruke: 2990
  • Gde živiš: Beograd

Ti izgleda nista ne razumes.

OK.. .hadjedmo ocigledniji primer

Imas tabelu, adresar. Tu smestas info o tvojim drugovima, brojeve telefona, i slicno

i sad resis da dodas jos jedno polje "Pol". Imas opciju "Muski" i "Zenski". Ako je stavis kao STRING, jednom ces napisati "Muski", drui put ces da pogresis pa na pises "MMusHki" i tako dalje.
Ocigledno to ne pali, jel?

Onda ces da napravis jednu tabelu, sa 2 polja: ID, Opis, koja ce da bude popunjena ovako:
POL_CdiPol - integer, POL_DssPol - opis
0, nepoznat
1, muski
2, zenski

pa ces onda da dodas u tvoju tabelu adresar, polje "ADR_CdiPol", pa ces u njega da trpas 0, 1 ili 2

E to ti omogucuje da uradis sledece:
"Hocu da vidim sve osobe zenskog pola", tako sto ces da uradis:
SELECT * FROM adresar where ADR_CdiPol = 1

Aha!, a sta je to 1?!
SELECT ADR_CdiAdresar, ADR_DssPrezime, ADR_DssIme, POL_DssPol FROM Adresar INNER JOIN Polovi on (POL_CdiPol=ADR_CdiPol) WHERE ADR_CdiPol = 1

Voila!!

Jel sad jasno cemu sluzi tabela TipDokumenta?!

offline
  • Pridružio: 02 Maj 2003
  • Poruke: 430
  • Gde živiš: NBG

razumeo sam cemu sluzi TipDokumenta odmah cim si mi ukazao na razvrstavanje
jasno mi je cemu sluzi Smile to me je malko kopkalo i hvala ti sto si mi ukazao na to, bilo mi je "na vrhu jezika" da se tako izrazim samo mi nije bilo najjasnije
hvala ti na tome Smile


a sad da opet nastavim sa misljenjem oko nula vrednosti: vrednosti atributa koji se nalaze u svim dokumentima ne smeju biti null
da ne bude zabuna: ova prica sa nula vrednostima se odnosi na DOKUMENT i STAVKA

offline
  • Emil Beli
  • Pridružio: 03 Jan 2005
  • Poruke: 2990
  • Gde živiš: Beograd

Ajd izdizajniraj tabele, kako bi po tvom misljenju trebalo da izgledaju, pa onda da krpimo.

offline
  • Pridružio: 02 Maj 2003
  • Poruke: 430
  • Gde živiš: NBG

zamislih ovako nekako, sa 5 tabela
Citat:DokumentOd (BrojDokOd, TipID, PPid, Datum, VremePlacanja, StatusPonude, UkupnoUmanjenje, MestoID, RefDokID, RefTipID)
StavkaDokOd (Rbr, BrojDokOd, TipID, PPid, PDV, Cena, Kolicina, ProizvodID)

DokumentZa (BrojDokOd, TipID, PPid, Datum, VremePlacanja, StatusPonude, UkupnoUmanjenje, MestoID, RefDokID, RefTipID)
StavkaDokOd (Rbr, BrojDokOd, TipID, PPid, PDV, Cena, Kolicina, ProizvodID)

TipDok (TipID, NazivTipa)

ovde mi je ukazan na opasan problem obaveznog (bilo sa tri bilo sa 5 tabela, obavezno je ubog same prirode zamisli) mesanja podataka i metapodataka


odradicemo kako smo poceli, sa 18 tabela iako moze, na misice, da se odradi sa 5

offline
  • Emil Beli
  • Pridružio: 03 Jan 2005
  • Poruke: 2990
  • Gde živiš: Beograd

Pravilno:

1. TipoviDokumenta
2. ModeliDokumenta
3. StatusDokumenata
4. Lokal
5. Dokumenti
6. Stavke

(ne znam cemu ti sluzi " refDokId i refTipId" )

Dokumenti
DOC_CdiDokument, DOC_CdiModel, DOC_CdiTip,DOC_CdiDatum, DOC_CdiLokal,DOC_CdiStatusPonude, DOC_VlnUkupnoUmanjenje

TipoviDokumenata
TPD_CdiTipDokumenta, TPD_DssDokumenta

ModeliDokumenata
MOD_CdiModelDokumenta, MOD_DssDokumenta

StatusDokumenata
STD_CdiStatusDokumenta, STD_DssStatusDokumenta

Lokali
LOC_CdiLokal, LOC_DssLokal + ostale informacije o lokalu (mestu) itd.

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

Legenda index-a
Cdi = Code Integer
Dss = Description String (varchar)
Vln = Value Number
Opl = Option Logic
itd...

Q: Zasto prefix (3 slova, underscore)?
A: Jednostavno vezivanje, bez alijasa

Primer sa prefixima:
Select DOC_CdiDokument, LOC_DssLokal from Dokumenti
inner join Lokali on (LOC_CdiLokal=DOC_CdiLokal)

primer bez prefixa

Select A.dokumentId, B.LokalOpis from Dokumenti A
inner join Dokumenti B on (A.LokalId=B.LokalId)

offline
  • Pridružio: 02 Maj 2003
  • Poruke: 430
  • Gde živiš: NBG

beli0135 ::
(ne znam cemu ti sluzi " refDokId i refTipId" )

refDokId, refTipID+refPPid su referencirajuci atributi, tj. spoljni kljuc (kod ReklamacijeDobavljacu to bi bili <BrojDokOd, TipID, PPid> odgovarajuce OpremniceDobavljaca

malo sam se zeznuo u prethodnoj poruci, trebalo bi:
Citat:DokumentOd (BrojDokOd, TipID, PPid, Datum, VremePlacanja, StatusPonude, UkupnoUmanjenje, MestoID, RefDokID, RefTipID)
StavkaDokOd (Rbr, BrojDokOd, TipID, PPid, PDV, Cena, Kolicina, ProizvodID)

DokumentZa (BrojDokOd, TipID, PPid, Datum, VremePlacanja, StatusPonude, UkupnoUmanjenje, MestoID, RefDokID, RefTipID, RefPPid)
StavkaDokOd (Rbr, BrojDokOd, TipID, PPid, PDV, Cena, Kolicina, ProizvodID)

TipDok (TipID, NazivTipa)

ref atributi mogu biti null u nekim slucajevima (Otpremnica nema spoljne kljuceve,npr)


nije mi jasno sta su Model, Tip i Status
status koji se nalazi kod nekih tabela je tipa boolean (true,false), zaboravih to da napomenem (izvinjavam se)

sto se Lokala tice, ako sam dobro razumeo to je Mesto
tabelu mesto nisam naveo kao sto nisam naveo ni PoslovnogPartnera, Proizvod (u vezi sa 5 ili 6 tabela) i jos neke tabele eventualno. nisu navedeni zato sto nisu od vaznosti za ovu temu, bitno je da znamo da postoje i koji su im kljucevi

offline
  • Emil Beli
  • Pridružio: 03 Jan 2005
  • Poruke: 2990
  • Gde živiš: Beograd

Model?

Pa zasto da pravis 2 tabele DokumentOD i dokumentZA kad mozes da stavis u tabelu Modeli

1 - Od
2 - Za

Ko je trenutno na forumu
 

Ukupno su 1337 korisnika na forumu :: 58 registrovanih, 5 sakrivenih i 1274 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: 357magnum, A.R.Chafee.Jr., Acivi, amaterSRB, aramis s, babaroga, bankulen, Bobrock1, bojankrstc, Botovac, Bubimir, comi_pfc, danilopu, dankisha, darcaud, DENIRO, Dimitrise93, Djokkinen, Doca, dule10savic, GandorCC, Georgius, HogarStrashni, HrcAk47, hyla, Ivan001, kalens021, kjkszpj, krkalon, kunktator, kybonacci, laurusri, Luka Blažević, milanovic, milutin134, Miroljub1979, Mixelotti, mrvica78, nenooo, opt1, Panonsky, panzerwaffe, pristinski korpus, proka89, raptorsi, robertino, ruma, sap, sickmouse, slonic_tonic, Smajser, Sumadija34, suton, taz1cl, vathra, VJ, Vladko, vukovi