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

Roditelj / dete multi level arhitektura u bazama potreban savet.

[es] :: Baze podataka :: Roditelj / dete multi level arhitektura u bazama potreban savet.

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

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Orome
programer

Član broj: 273201
Poruke: 115
81.93.74.*



+1 Profil

icon Roditelj / dete multi level arhitektura u bazama potreban savet.31.05.2018. u 13:06 - pre 70 meseci
Pozdrav, potreban mi je savet za organizaciju tabela da bih sto lakse izvestavao kasnije.

Potreba je sledeca, roditelj moze imati vise dece a dete moze imati vise roditelja.
Nisam nikad koristio ovakvu arhitekturu ali okolnosti nalazu da razmislim o ovome.
Okolnosti :
- ne znam broj nivoa
- ne znam broj roditelja (oni kojima je roditelj nula)
- dete moze imati vise roditelja (32 inca se pojavljuje i u tree-ju od FULL HD i u LED-u)

Da li iko ovo ovako snima u bazu. kakvo je izvestavanje iz ove strukture? ne vidim drugi nacin da se ovo snima. da li bi mi pomoglo da dodam kolonu 'nivo' koja bi dala smisao tom redu u hijerarhiji ?


tabela :

Code:
CREATE TABLE `kategorije` (
  `id` bigint(5) NOT NULL DEFAULT '0',
  `naziv` varchar(50) DEFAULT NULL,
  `id_roditelj` bigint(5) NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`,`id_roditelj`)
)


podaci :

id naziv id_roditelj
------ -------------- -------------
1 SMEDJA TEHNIKA 0
2 CRNA TEHNIKA 0
3 BELA TEHNIKA 0
4 TV 1
5 AV 1
6 FULL-HD 4
7 LED 4
9 32 INCA 6
10 40 INCA 6
11 32 INCA 7

 
Odgovor na temu

djoka_l
Beograd

Član broj: 56075
Poruke: 3445

Jabber: djoka_l


+1462 Profil

icon Re: Roditelj / dete multi level arhitektura u bazama potreban savet.31.05.2018. u 13:24 - pre 70 meseci
Ja sam video jedno rešenje koje mi se jako svidelo, ali ga nigde nisam sam implementirao.
U pitanju su višestruke hijerarhije. Na primer, imaš organizacione jedinice firme, kao neki šifarnik.
Onda napraviš jednu hijerarhiju nad tom tabelom koju nazoveš organizaciona hijerarhija. Napraviš drugu, koju nazoveš geografska hijerarhija. Napraviš treću, na primer hijerarhija po tome da li je maloprodaja ili veleprodaja, pa organizacija u toj veritkali.

Za svaku hijerarhiju imaš u tabeli naziv i strukturu stabla, a podatke koji je čvor (naziv i drugi podaci) su u nekom šifarniku.

Tako bi, u tvom primeru, imao jednu šifru u šifarniku koja bi bila 32 inča, a onda tri hijerarhije (hijerarhija smeđe tehnike, hijerarhija crne i hijerarhija bele tehnike).

Druga organizacija, koja mi pada na pamet, je da uopšte ne praviš hijerarhijsku strukturu (stablo).
Jednostavno, imaš proizvod, i listu atributa (kao neku listu ključnih reči). Proizvod 1 (SAMSUNG SDFG) ima ID 1 i ima atribute 1 (smedja tehnika), 6 (full HD), 9 (32 inča).
Možeš da kažeš i da je atribut nešto kao kombinacija klase i vrednosti (recimo klasa je dimenzija ekrana, vrednost je 32).
 
Odgovor na temu

nkrgovic
Nikola Krgović
Beograd

Član broj: 3534
Poruke: 2807

ICQ: 49345867
Sajt: https://www.twinstarsyste..


+655 Profil

icon Re: Roditelj / dete multi level arhitektura u bazama potreban savet.31.05.2018. u 13:27 - pre 70 meseci
A zasto kao hijerarhija? Ovo je tipican primer gde se koristi EAV model:

https://en.wikipedia.org/wiki/...3attribute%E2%80%93value_model


Please do not feed the Trolls!

Blasphemy? How can I blaspheme? I'm a god!'
 
Odgovor na temu

dusans
Stojanov Dušan
Pančevo

Član broj: 9551
Poruke: 1343
*.dynamic.sbb.rs.



+311 Profil

icon Re: Roditelj / dete multi level arhitektura u bazama potreban savet.31.05.2018. u 13:53 - pre 70 meseci
Ako mora hijerarhija i više parent-a, onda definitivno "Closure Table".

https://www.slideshare.net/bil...ive_Trees_Closure_Tables_Store

 
Odgovor na temu

jablan

Član broj: 8286
Poruke: 4541



+710 Profil

icon Re: Roditelj / dete multi level arhitektura u bazama potreban savet.31.05.2018. u 15:03 - pre 70 meseci
Ovde ti je sve pomešano, i proizvodi i kategorije, i karakteristike. Ja bih to razdvojio u odvojene tabele (nešto slično ovome što djoka_l predlaže na kraju, što se obično i implementira sa EAV). Svakako ne bih pravio graf, što ti izgleda hoćeš.
 
Odgovor na temu

nkrgovic
Nikola Krgović
Beograd

Član broj: 3534
Poruke: 2807

ICQ: 49345867
Sajt: https://www.twinstarsyste..


+655 Profil

icon Re: Roditelj / dete multi level arhitektura u bazama potreban savet.31.05.2018. u 20:42 - pre 70 meseci
Citat:
dusans:
Ako mora hijerarhija i više parent-a, onda definitivno "Closure Table".

Ma da, ali closure table je metodologija da spustis graph na relacionu bazu. Super je ako treba da radis graph discovery, da trazis drvo razapinjanja (spanning tree ;) ) ili nesto slicno. Ima smisla ako modeliras neke veze tipa trazis rute u mrezi, bilo LAN/WAN bilo saobracajnoj, ili ako juris neke teroriste pa istrazujes ko je sa kim u vezi, ko kome daje pare i takve stvari.

Sustina je da to njemu ne treba, on nema multiple links, da bi mu trebali multiple parent, samo mu je los model u glavi.

Covek ima bazu predmeta koji imaju neke atribute. Atribut ne mora da bude (stavise nije) parent od predmeta. Atribut je samo atribut. Nijedan normalan shop nema predmete potrpane u vise kategorija, to je nakaradan model koji ne radi, i zapravo nije logican (zato i kazem da mu je los model u glavi, tj. da nema smisla). Zamisli da ti jedan model televizora stoji na dve police (da upotrebim njegov primer). Prodavnica ima kategorije (rafove, odeljenja, sta god) a sve ostalo su osobine (atributi), povezani sa nekim entitetima (artiklima).

Pri tom, EAV je razradjena sema, ima stotine tutoriala, gotovih primera za sve RDBMS-ove, metodologije optimizacije indexa i upita, sta god hoces. Jeste, ima JOIN da bi nesto izvukao, ali da bi izvukao atribute za jedan predmet radis join dve ili tri tabele po primarnom kljucu i indexu, sto svaki engine guta bez problema. Stavise, u vecini primera, takve upite pokriva covering index. Da, analitike znaju da budu spore, ali cilj baze je brz OLTP, ne brz OLAP :). Plus i vecina analitika radi normalno, u najgorem slucaju imas full table scan, ali je upit takav da svaku tabelu citas samo jednom.

Ne izmisljati tocak.
Please do not feed the Trolls!

Blasphemy? How can I blaspheme? I'm a god!'
 
Odgovor na temu

Orome
programer

Član broj: 273201
Poruke: 115
81.93.74.*



+1 Profil

icon Re: Roditelj / dete multi level arhitektura u bazama potreban savet.01.06.2018. u 07:25 - pre 70 meseci
pre svega hvala svima na odgovorima i linkovima.

@djoka_l ne mogu da otvaram tabelu za svaki organizacioni kontekst jer to znaci da cu praviti neku veznu tabelu. ok je i to ali meni sve to treba u filteru za izvestavanje. ne vidim uspesnu primenu tog modela u filtriranju.

@nkrgovic vec mi je palo to na pamet, kao tagovi, da se svi atributi odredjenog modela dodele ravnopravno modelu. medjutim, korisniku treba hijerarhija, zeli najprodavanije velicine ekrana (32 inca, 40 inca) po tipu slike (FULL HD, HD, LED). u slucaju ravnopravnih atributa ne mogu znati da je FULL HD stariji od velicine ekrana da grupisem podatke tako. to me vodilo do komplikovanog filtera gde smatram da ce biti za mog korisnika jako tesko da to koristi.

@dusans e ovo mi se dopada, resava neke probleme koje sam anticipirao. javicu da li je resilo sve probleme. u svakom slucaju hvala za odlican link.

@jablan pogledaj odgovor za djoka_l predlog. pogledacu malo detaljnije i pokusati staviti na papir. javicu rezultat.


@nkrgovic x2 kako ne mora atribut da bude parent kada se 32 inca pojavljuje u tree-ju od LED tv i FULL HD. A sam FULL HD je atribut u okviru TV tree-ja, a TV tree postoji samo u SMEDJOJ TEHNICI. S druge strane, tacno je da jedan tv moze biti samo u jednom tree-ju. 1 nivo -> Smedja tehnika ; 2 nivo -> TV ; 3 nivo -> FULL HD ; 4 nivo -> 32 inca. Moguce je da ja nesto ne vidim, zato i pitam pa ako vidis nesto sto mi moze promeniti perspektivu, molim te seruj. :)
 
Odgovor na temu

jablan

Član broj: 8286
Poruke: 4541



+710 Profil

icon Re: Roditelj / dete multi level arhitektura u bazama potreban savet.01.06.2018. u 09:04 - pre 70 meseci
Citat:
Orome: kako ne mora atribut da bude parent


Zaboravi na taj parent-child odnos u ovom slučaju. Parent child odnos postoji između recorda istog tipa. "TV" i "32 inča" nisu recordi istog tipa. Jedno je proizvod, drugo je value atributa. Niko tebi ne brani da taj isti value primeniš i na neki drugi proizvod (tipa monitor). Ali "32 inča" ne može da bude parent "TV-u".

Mislim, teoretski, možeš ti celu bazu da strpaš u jednu tabelu od koje ćeš da napraviš graf, ali to ti je loše rešenje za web shop, ili šta već praviš.

Isprati ovo što ti nkrgović piše, čovek zna o čemu priča.

Edit: Evo ovde imaš lepo izmodelirano i objašnjeno baš to što ti treba: https://www.codingblocks.net/p...or-multiple-types-of-products/

[Ovu poruku je menjao jablan dana 01.06.2018. u 10:18 GMT+1]
 
Odgovor na temu

nkrgovic
Nikola Krgović
Beograd

Član broj: 3534
Poruke: 2807

ICQ: 49345867
Sajt: https://www.twinstarsyste..


+655 Profil

icon Re: Roditelj / dete multi level arhitektura u bazama potreban savet.01.06.2018. u 10:11 - pre 70 meseci
Ajde da probam plasticno:

Imas kategoriju Tehnika. Tv moze da bude i LED i FullHD. Moze da bude i LED i 4K . A i monitor moze da bude i 32" i 4K i LED. Sve to su samo atributi. atribut ti je i proizvodjac, sta ako covek hoce Sony. I razmisli dobro, da li je Sony parent od 32" ili je 32" parent od Sony-ja. Je'l Sony i LG imaju istu "decu" ? Svaki ima 32"? Zamisli da ti je 3. nivo Full HD i 4K. Onda imas 4. nivo npr 50", e taj 50" imas isti u dve grane. I kako sad da nadjes koji 50" covek hoce, ako on kaze hocu TV od 50"? A ti moras da trazis gde sve ima to?

U EAV modelu ti kad radis filtriranje ti trazis predmete koji imaju odredjene atribute, a ne kategorije. Stavise ako su ti sve to samo atriobuti (a realno jesu), ti mozes da pretrazis kako hoces po bazi. Na prikazu ti lepo fino mozes da napravi "kategorije", tj. realno filtere kako god vlasnik hoce. Ako sutra hcoe da promeni, nikakav problem, samo pustis drugaciji upit. Zamisli da ti u ovom tvom primeru dodje gazda i kaze da je ipak velicina ekrana treci a rezolucija nivo 4. jer hoce da prvo bira da li je TV 40 ili 50", a tek onda da li je FullHD ili 4K? Da prepakujes celu bazu, rekurzivno? :) Mnogo ti je lakse da budu samo atributi.
Please do not feed the Trolls!

Blasphemy? How can I blaspheme? I'm a god!'
 
Odgovor na temu

Orome
programer

Član broj: 273201
Poruke: 115
81.93.74.*



+1 Profil

icon Re: Roditelj / dete multi level arhitektura u bazama potreban savet.01.06.2018. u 10:56 - pre 70 meseci
@nkrgovic proizvodjaci su mi vec izdvojeni kao atributi artikla. njih sam resio. Ja bih najvise voleo da uzmem taj model jer mi je u celosti jasan. Ali lik hoce da uzme FULL HD i total njegovih podnivoa, tj nivou ispod. kako ja da znam sta je podnivo od FULL HD kada imam 600 artikala koji imaju oba ta atributa (FULL HD i neku velicinu ekrana izabranu). coveku treba procentualno ucesce u prodaji po velicinama FULL HD televizora. to ne mogu izvesti bez informacije da je hijerarhijski FULL HD na nivou iznad od velicine tv.

Proizvodjaci Sony i LG imaju za televizore kompletno istu hijerarhiju ali su izdvojeni kao atribut i nisu deo hijerarhije. ne pronalazim ja tv-ove od 50'' ovo je platforma za analizu poslovanja, to je cilj.

EAV je odlican za filtriranje ali ne mogu postici kombinovano grupisanje, po modelu grupa/podgrupa.
 
Odgovor na temu

dusans
Stojanov Dušan
Pančevo

Član broj: 9551
Poruke: 1343
*.dynamic.sbb.rs.



+311 Profil

icon Re: Roditelj / dete multi level arhitektura u bazama potreban savet.01.06.2018. u 11:42 - pre 70 meseci
Takve hijerarhije se u principu i ne prave eksplictino u DB već se koriste u fazonu drill-down report-a
gde korisnik ad-hoc posmatra hijerarhijski podatke onako kako mu odgovara u tom trenutku.
Dakle, svaka vrsta atributa ti pretstavlja jednu "dimenziju".

Korisnik prvo bira jednu ili više dimenzija (kaskadno) i onda na kraju razvije totale (ili šta već) po određenoj.

Primer 1:
TV > Full HD > Dijagonala
* 32" - 1000.00
* 40" - 2000.00
* 42" - 500.00

Primer 2:
TV > 32" > Sony > Smart > Rezolucija
* Full HD" - 120.00
* HD Ready - 90.00

Tako da pravi hijerarhiju kako mu se sviđa,
a i ovu drill-down kombinaciju možeš da snimiš u DB
da je ne bi korisnik svaki put pravio.
 
Odgovor na temu

jablan

Član broj: 8286
Poruke: 4541



+710 Profil

icon Re: Roditelj / dete multi level arhitektura u bazama potreban savet.01.06.2018. u 13:20 - pre 70 meseci
Citat:
Orome:
Ali lik hoce da uzme FULL HD i total njegovih podnivoa, tj nivou ispod. kako ja da znam sta je podnivo od FULL HD kada imam 600 artikala koji imaju oba ta atributa (FULL HD i neku velicinu ekrana izabranu). coveku treba procentualno ucesce u prodaji po velicinama FULL HD televizora. to ne mogu izvesti bez informacije da je hijerarhijski FULL HD na nivou iznad od velicine tv.

Ja ne razumem tvoj problem, voleo bih da pojasniš.

Sa EAV, ti možeš da filtriraš po pojedinim atributima (npr samo FHD i samo proizvođaš Sony) i onda tražiš, za taj filter, COUNT po vrednostima nekog trećeg atributa (npr veličina ekrana).
 
Odgovor na temu

Orome
programer

Član broj: 273201
Poruke: 115
*.telrad.net.



+1 Profil

icon Re: Roditelj / dete multi level arhitektura u bazama potreban savet.02.06.2018. u 12:56 - pre 70 meseci
@jablan razumem sta govoris. mogao bih da podatke snimim kao atribute i da onda napravim filter malo pametnije. da prvo bira filter za podatke a zatim atribut za neku agregatnu funkciju. samo sto je moj korisnik trenirani majmun. ne moze da ukapira filter (tj. pripremu za izvestaj) koji je komplikovaniji od najosnovnijeg.

ja sam zeleo da mu to nekako olaksam, da snimim podatke u hijerarhiji, da bi filter bio jednostavan. ako uzme FHD da ja znam da su nivo ispod tog samo velicine ekrana pa da generisem izvestaj.

mislim da sam prelomio, koristicu EAV sa pametnim filterom i to je to.

hvala svima na doprinosu temi, nadam se da ce biti korisna nekome.
 
Odgovor na temu

jablan

Član broj: 8286
Poruke: 4541



+710 Profil

icon Re: Roditelj / dete multi level arhitektura u bazama potreban savet.02.06.2018. u 15:29 - pre 70 meseci
Citat:
Orome: ja sam zeleo da mu to nekako olaksam, da snimim podatke u hijerarhiji, da bi filter bio jednostavan. ako uzme FHD da ja znam da su nivo ispod tog samo velicine ekrana pa da generisem izvestaj.

To možeš da dobiješ tako što atributima dodeliš redni broj i onda filtriraš redom.
 
Odgovor na temu

nkrgovic
Nikola Krgović
Beograd

Član broj: 3534
Poruke: 2807

ICQ: 49345867
Sajt: https://www.twinstarsyste..


+655 Profil

icon Re: Roditelj / dete multi level arhitektura u bazama potreban savet.03.06.2018. u 18:09 - pre 70 meseci
Cisto moja 0.02EUR: Formiranje date prema izvestajima nema smisla. U principu RDBMS se modelira prema dati. U neku ruku ima smisla modelirati i prema upitima, u nacelu - jednom kad se data smesti indexi se svakako formiraju prema tipu upita, a ima slucajeva kad se zbog nekih upita radi i denormalizacija. Ali formirati datu i strukturu prema izvestajima nema nikakvog smisla i obice se o glavu prvi put kad se promene upiti.

Tako da mislim da je dobra odluka. Eventualno, ako se zeli ubrzanje, i ako baza podrzava, moze da se napravi materialized view.
Please do not feed the Trolls!

Blasphemy? How can I blaspheme? I'm a god!'
 
Odgovor na temu

[es] :: Baze podataka :: Roditelj / dete multi level arhitektura u bazama potreban savet.

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

Postavi temu Odgovori

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