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

hijerarhija .. odakle poceti

[es] :: MySQL :: hijerarhija .. odakle poceti

[ Pregleda: 2871 | Odgovora: 19 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

mojeKorIme
BiH

Član broj: 59512
Poruke: 350
92.36.242.*



+1 Profil

icon hijerarhija .. odakle poceti05.10.2011. u 13:02 - pre 151 meseci
Napravio sam strukturu tabele
id naziv cijena roditelj
1 pšenica 10 0
2 brašno 10 1
3 kolač 10 2

gdje je roditelj polje koje mi služi da odredim roditelja djetetu.
gore sam pokušao predstaviti podatke koje ću upisati u tablicu.
kako sada dobiti bez oracleovog START WITH CONNECT BY.
utrošene pšenice za 100 kolača /normative bih postavio..
razmišljam o nekim rekurzijama.. ima li neko neki prijedlog
Give me six hours to chop down a tree and I will spend the first four sharpening the axe.
 
Odgovor na temu

mojeKorIme
BiH

Član broj: 59512
Poruke: 350
92.36.242.*



+1 Profil

icon Re: hijerarhija .. odakle poceti05.10.2011. u 13:04 - pre 151 meseci
ovo je zanimljivo
http://www.artfulsoftware.com/mysqlbook/sampler/mysqled1ch20.html
:)
Give me six hours to chop down a tree and I will spend the first four sharpening the axe.
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.31.24.217.adsl2.beograd.com.

Sajt: mysql.rs


+2377 Profil

icon Re: hijerarhija .. odakle poceti05.10.2011. u 13:23 - pre 151 meseci
bio je nekad mnogo dobar dokument http://dev.mysql.com/tech-reso...rticles/hierarchical-data.html
ali to je nestalo u ovim migracijama :(

nested varijanta je medju najjacima ... evo deo nekog txt-a koji sam pre par godina objasnjavao nekome ... malo je izvadjeno iz konteksta ali svatices

Citat:

u slucaju "nested" strukture imas

Code:

 1  2  3  4  5  6  7  8  9  10 ... 

gde su nodovi:
(1                          10)
   (2        5)(6  7)(8  9)
      (3  4)

ili
(1                          10)
   (2        5)(6        9)
      (3  4)      (7  8)

ili
(1                          10)
   (2  3)(4  5)(6  7)(8  9)

...

Ako hoces da insertujes node desnod od noda sa id 12 (na primer) to znaci da insertujes nod koji ce biti u istom nivou sa nodom 12, radis nesto poput

SELECT @myRight := rgt FROM `t1` WHERE `id` = 12;
UPDATE `t1` SET rgt = rgt + 2 WHERE rgt > @myRight;
UPDATE `t1` SET lft = lft + 2 WHERE lft > @myRight;
INSERT INTO `t1` (lft, rgt) VALUES(@myRight + 1, @myRight + 2);

Ako hoces da dodas node kao child of a node that has no existing childred (ako ima dece onda dodajes node kao sto je malopre objasnjeno desno od deteta te dodajes nod gde dete ima siblinga) radis to ovako: dakle da dodas node kao prvo dete noda 12:

SELECT @myLeft := lft FROM `t1` WHERE `id` = 12;
UPDATE `t1` SET rgt = rgt + 2 WHERE rgt > @myLeft;
UPDATE `t1` SET lft = lft + 2 WHERE lft > @myLeft;
INSERT INTO `t1`(lft, rgt) VALUES(@myLeft + 1, @myLeft + 2);

Brisanje noda 12:
SELECT @myLeft := lft, @myRight := rgt, @myWidth := rgt - lft + 1 FROM `t1` WHERE `id`=12;
DELETE FROM `t1` WHERE lft BETWEEN @myLeft AND @myRight;
UPDATE `t1` SET rgt = rgt - @myWidth WHERE rgt > @myRight;
UPDATE `t1` SET lft = lft - @myWidth WHERE lft > @myRight;



dakle nije kompletno objasnjenje, bilo bi iskusno ako neko nadje onaj original doc sa http://dev.mysql.com/tech-reso...rticles/hierarchical-data.html ovo je samo neko razjasnjavanje koje sam nekome pisao vezano za nested model objasnjen (odlicno) i tom doc-u


 
Odgovor na temu

mojeKorIme
BiH

Član broj: 59512
Poruke: 350
92.36.242.*



+1 Profil

icon Re: hijerarhija .. odakle poceti05.10.2011. u 13:32 - pre 151 meseci
je li mislis na ovo http://www.sitepoint.com/hierarchical-data-database-2/
problem mi je prilikom ubacivanja novog node-a .. da se ponovo sve lijevo i desno obrojci..
vjerovatno ima veze i sa teorijom grafova .. nisam bio na casu kada je profa to objasnjavao :D
Give me six hours to chop down a tree and I will spend the first four sharpening the axe.
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.31.24.217.adsl2.beograd.com.

Sajt: mysql.rs


+2377 Profil

icon Re: hijerarhija .. odakle poceti05.10.2011. u 13:41 - pre 151 meseci
to je nested sistem .. ali to nije doc na koji sam mislio (doca nema nigde ... sad sam bacio mail nasem doc timu da vidim dal oni imaju ideju gde je i zasto nestao) ..

setovanje left i right vrednosti kod dodavanja, brisanja nodova je super jednostavno (vidis primer sql-a), jedino sto na ogromnim tabelama moze da potraje ..

osnovna prednost nested sistema je recimo kod drveta sa privilegijama .. nikada to drvo nije toliko veliko da ce oni update-i da traju problematicno dugo a dodatno menjanje strukture drveta je inace jako retko. U 90% slucajeva imas drvo koje se izgenerise kada se aplikacija inicijalizuje i menja se eventualno sa update-ima .. ali se kroz drvo cesto prolazi a to je za ovakvo drvo prilicno brzo
 
Odgovor na temu

mojeKorIme
BiH

Član broj: 59512
Poruke: 350
92.36.242.*



+1 Profil

icon Re: hijerarhija .. odakle poceti05.10.2011. u 13:47 - pre 151 meseci
pokusacu ovo implementirati.. treba mi kod
poluproizvoda i proizvoda kao i kod hijerarhije korisnika aplikacije..ko sta moze i kome moze sta gledati ... i sl.
Give me six hours to chop down a tree and I will spend the first four sharpening the axe.
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.31.24.217.adsl2.beograd.com.

Sajt: mysql.rs


+2377 Profil

icon Re: hijerarhija .. odakle poceti05.10.2011. u 14:04 - pre 151 meseci
hijerarhiju korisnika je sa ovim laganica, najjace ti je da napravis role tabelu gde imas hijerarhiju "uloga" i u user tabelu samo dodas role_id za usera i to je to .. na nodove u role tabeli nakacis privilegije i kraj price .. za proizvode nisam bas siguran, oni se dodaju i izbacuju cesto i moze da ih ima mnogo, pitanje zasto proizvode u drvo .. mozda imas "kategorije" koje bi stavio u drvo a onda proizvodima dodao kategoriju (ili cak vise njih) no to je sad druga prica
 
Odgovor na temu

mojeKorIme
BiH

Član broj: 59512
Poruke: 350
92.36.242.*



+1 Profil

icon Re: hijerarhija .. odakle poceti05.10.2011. u 14:16 - pre 151 meseci
kod proizvoda hocu da dobijem taj efekat u proizvodnji nakon n-tog proizvodnog procesa hocu da znam koliko sam utrosio pocetne sirovine tako sto za pojedini proizvodni proces napravim normative koliko cega treba..
nadam se da nisam previse zapetljao
Give me six hours to chop down a tree and I will spend the first four sharpening the axe.
 
Odgovor na temu

tarla

Član broj: 15527
Poruke: 1648



+42 Profil

icon Re: hijerarhija .. odakle poceti05.10.2011. u 14:23 - pre 151 meseci
Napisao sam kompletnu klasu u Javi za nested varijantu. (dodaj, obriši,...)

Samo da je iskopam pa ćemo je okačiti...


 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.31.24.217.adsl2.beograd.com.

Sajt: mysql.rs


+2377 Profil

icon Re: hijerarhija .. odakle poceti05.10.2011. u 14:27 - pre 151 meseci
@tarla, nested implementacija drveta je jedna od retkih stvari gde mislm da su stored procedure super stvar :)

@mojeKorIme, ja nikako ne bih pravio pracenje proizvodnje preko drveta
 
Odgovor na temu

mojeKorIme
BiH

Član broj: 59512
Poruke: 350
92.36.247.*



+1 Profil

icon Re: hijerarhija .. odakle poceti06.10.2011. u 07:06 - pre 151 meseci
Bogdane i ostali.. kako bih mogao dobiti sljedece
imam nekoliko skladista ..proizvodnih procesa od kojih svaki ima ulaz i izlaz...
u sifraniku sirovina i polproizvoda pa na kraju i proizvoda imam definisane normative za pojedini artikal..
npr

psenica - brasno - (kifle,tijesto,jufke,...) - (kolaci,cevapi,sendvici)

upitom da dobijem koliko je za 10 porcija potroseno psenice.. ili brasna.. i sl.

Nikako da prokljuvim..neka rekurzija mi treba..nesto.. ali ..

Hvala
Give me six hours to chop down a tree and I will spend the first four sharpening the axe.
 
Odgovor na temu

dragancesu
subotica

Član broj: 38340
Poruke: 2189
*.mbb.telenor.rs.



+73 Profil

icon Re: hijerarhija .. odakle poceti06.10.2011. u 09:31 - pre 151 meseci
Treba da vodis proizvodnju?

Ostavi sad po strani magacine nego obrati paznju na proizvodnju, tacnije normative i mislim da ti ne treba komplikovana struktura/procedura za stablo.

Moras da imas sifarnik proizvoda i sifarnik materijala

proizvodi (+ kolone pompotrebi)
---------------
1 hleb
2 kifla
...

materijal (+ kolone po potrebi)
----------
1 brasno
2 kvasac
3 jaja
4 voda
i ostalo od cega se prave testa

onda napravis tabelu normativa

normativ (proizvod, materijal, kolicina)
--------------
1 1 1000
1 2 5
1 3 1
2 1 200
.... itd (da ne lupam vise..)

onda je lako napraviti upit koliko si potrosio cega za proizvodnju nekog proizvoda (to bi trebalo uneti u radni nalog), a cene se verovatno odredjuju na neki drugi nacin

problem moze biti ako za proizvodnju nekog prozvoda koristis drugi proizvod (poluproizvod), i to prvo resis pa nastavis dalje. Vidim da pominjes psenicu i brasno pa jhe pitanje sta imate, da li nabavljate psenicu pa meljete ili imate i brasno, to bi mozda bio primer materijal-poluproizvod-proizvod, mada mislim da se moze izbeci








Pomozite Micro$oftu u borbi protiv piraterije, poklonite prijatelju Linux
 
Odgovor na temu

mojeKorIme
BiH

Član broj: 59512
Poruke: 350
92.36.247.*



+1 Profil

icon Re: hijerarhija .. odakle poceti06.10.2011. u 09:38 - pre 151 meseci
@dragancesu hvala na odgovoru.. problem i jeste sto hocu da napravim da bude flexibilno... bas kako sam naveo.. da odredjeni poluproizvod bude i gotov proizvod ili sirovina za kreiranje novog proizvoda
a uvijek da se vidi sta je utroseno.. trenutno razmisljam o kreiranju triggera koji ce ici do dubine koja ce insertovati za svaku stavku unazad stavke koje su kreirale taj proizvod po normativu dok ne dodje
do izvora..
Give me six hours to chop down a tree and I will spend the first four sharpening the axe.
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.31.24.217.adsl2.beograd.com.

Sajt: mysql.rs


+2377 Profil

icon Re: hijerarhija .. odakle poceti06.10.2011. u 10:43 - pre 151 meseci
nije problem da napravis triger ali problem je "kreiranje u nazad" ... ne mozes ti zato sto si dodao jednu kiflu da krenes u nazad i brises brasno i psenicu, posebno ne ako hoces da bude fleksibilno ...

vecina erpova to odradjuje na klasican nacin

1. tabela sa objektima (id, tip objekta - koji moze da ide iz drveta, ime objekta, cena, osnovni atributi)
2. tabela koja definise iz cega je nastao neki objekat (id target objekta, id source objekta)

to ti resava celu pricu ... te na primer imas

1 kifla
2 burek
3 sendvic
4 sir
5 meso
6 ulje
7 secer
8 brasno
9 psenica

1 6
1 7
1 8
2 4
2 5
2 6
2 8
3 5
3 8
8 9

tako da ako se neki "objekat" ne nalazi u tabeli koja definise "source" on je "kupljen" dok su ostali "napravljeni"


koliko cega ide u sta mozes da radis preko normativa (gde je moguce) ili preko posebne tabele gde se prati proizvodnja svake jedinice te imas u tabeli za svaki objekat od koliko kojih objekata je nastao a onda sabiras sve to da bi video koliko ga ima .. naravno onda napravis intermediate tabelu koju odrzavas trigerima u kojoj cuvas finalna stanja objekata da ne bi za svaku glupost radio sumu kroz tabelu od par miliona slogova ...
 
Odgovor na temu

karateka

Član broj: 155953
Poruke: 54
..106.109.adsl.dyn.beotel.net.



+1331 Profil

icon Re: hijerarhija .. odakle poceti06.10.2011. u 19:54 - pre 151 meseci
Citat:

Može li ovo: http://www.phpro.org/tutorials...l-Data-with-PHP-and-MySQL.html
Na dnu stranice piše:
"This tutorial follows on from the work of Mike Hillyer of MySQL AB. His original tutorial can be found at http://dev.mysql.com/tech-reso...rticles/hierarchical-data.html "
Deluje mi zanimljivo. ;)
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.31.24.217.adsl2.beograd.com.

Sajt: mysql.rs


+2377 Profil

icon Re: hijerarhija .. odakle poceti06.10.2011. u 20:50 - pre 151 meseci
nije los taj tekst, nije los ni ovaj koji je op sam nasao ... svi oni se dosta oslanjaju na tekst sa dev-a problem je sto je originalni tekst bas bio dobar a nema ga vise :( ... no ovi izvedeni tekstovi uopste nisu losi ..

Mike Hillyer vise nije sa namaa a zapalio je iz MySQL-a u vreme kada sam se ja prikljucio tako da ja nisam imao priliku da ga licno upoznam; sad je direktor u nekoj "message systems" firmi pa ne verujem da se preterano zanima za ovu temu :D

ja sam vec iscimao nas doc tim da proba da vrati taj dokument al ..

sve u svemu svi ovi ostali dokumenti na netu su isto ok .. tako da ako se original ne vrati nije prevelika steta ...

ako nekom treba objesnjenja oko tih implementacija pitajte, implementirao sam to toliko puta na toliko mesta ... no pre nego pitate procitajte bar jedan od tih dokumenata od pocetka do kraja
 
Odgovor na temu

karateka

Član broj: 155953
Poruke: 54
..178.212.adsl.dyn.beotel.net.



+1331 Profil

icon Re: hijerarhija .. odakle poceti06.10.2011. u 21:09 - pre 151 meseci
He-he, arhivirali ljudi originalnu stranicu:
http://web.archive.org/web/200...rticles/hierarchical-data.html
:D
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.31.24.217.adsl2.beograd.com.

Sajt: mysql.rs


+2377 Profil

icon Re: hijerarhija .. odakle poceti07.10.2011. u 23:41 - pre 151 meseci
extra, nikad ne umem da nadjem te web arhive kad mi trebaju :) ..
 
Odgovor na temu

svepomalo

Član broj: 306404
Poruke: 196



+21 Profil

icon Re: hijerarhija .. odakle poceti29.12.2012. u 00:41 - pre 136 meseci
Da ne otvaram noovu temu pa da iznesem moj problem :)

http://web.archive.org/web/200...rticles/hierarchical-data.html
odavde sa krenuo sa hijerarhijom jer mi treba unlimited kategorija i podkategorija na sajtu na kom radim.
E sad problem je sa dodavanjem cvora.
Strukura tabele:

Code (sql):

CREATE TABLE notre_offre(
 id INT AUTO_INCREMENT PRIMARY KEY,
 naziv VARCHAR(20) NOT NULL,
 lft INT NOT NULL,
 rgt INT NOT NULL
);
INSERT INTO `notre_offre` (`id`, `naziv`, `lft`, `rgt`) VALUES
(1, 'ROOT', 1, 4),
(2, 'TEST', 2, 3);

 


Ceo tree vadim sa upitom:

Code (sql):

SELECT node.id, CONCAT( REPEAT('-', COUNT(parent.naziv) - 1), node.naziv) AS name
FROM
     notre_offre AS node,
     notre_offre AS parent
WHERE
     node.lft BETWEEN parent.lft AND parent.rgt
GROUP BY node.naziv
ORDER BY node.lft;
 


I to smestam u selectbox gde je value ID kategorije.
Sada sa sledecim upitom pokusavam da ubacim novi cvor, svejedno da li je u root-u ili nekom ispod.
Code (sql):

LOCK TABLE notre_offre WRITE;
SELECT @myRight := rgt FROM notre_offre WHERE id = " . $this->input->post('category');
UPDATE notre_offre SET rgt = rgt + 2 WHERE rgt > @myRight;
UPDATE notre_offre SET lft = lft + 2 WHERE lft > @myRight;
INSERT INTO notre_offre(id, naziv, lft, rgt) VALUES(null, '"
. $this->input->post('title') . "', @myRight + 1, @myRight + 2);
UNLOCK TABLES;

I lepo mi doda post fieldsi to radi super.
Evo sveze kreirane tabele:
Code:

+----+-------+-----+-----+
| id | naziv | lft | rgt |
+----+-------+-----+-----+
|  1 | ROOT  |   1 |   4 |
|  2 | TEST  |   2 |   3 |
+----+-------+-----+-----+
2 rows in set (0.00 sec)


Posle inserta:
Code (sql):

LOCK TABLE notre_offre WRITE;
SELECT @myRight := rgt FROM notre_offre WHERE id = 2
UPDATE notre_offre SET rgt = rgt + 2 WHERE rgt > @myRight;
UPDATE notre_offre SET lft = lft + 2 WHERE lft > @myRight;
INSERT INTO notre_offre(id, naziv, lft, rgt) VALUES(NULL, 'Child TEST', @myRight + 1, @myRight + 2);
UNLOCK TABLES;
 


dobijam ispis:
Code:

+----+------------+-----+-----
| id | naziv      | lft | rgt
+----+------------+-----+-----
|  1 | ROOT       |   1 |   6
|  2 | TEST       |   2 |   3
|  3 | Child TEST |   4 |   5
+----+------------+-----+-----
3 rows in set (0.00 sec)

I ovaj "Child TEST " nece da bude dete TEST-a pa to ti je.
Dodavao sam jos cvorova sam rucno ali kad probam ovo opet nece da doda u vec postojeci ili npr. root.
Ne znam gde gresim, jel moze pomoc?
 
Odgovor na temu

dsivic

Član broj: 188446
Poruke: 105



+2 Profil

icon Re: hijerarhija .. odakle poceti29.12.2012. u 17:14 - pre 136 meseci
evo i na ovom mjestu original

http://ftp.nchu.edu.tw/MySQL/tech-resources/articles/hierarchical-data.html
 
Odgovor na temu

[es] :: MySQL :: hijerarhija .. odakle poceti

[ Pregleda: 2871 | Odgovora: 19 ] > FB > Twit

Postavi temu Odgovori

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