Sestavení stromu, kde children může mít více parentů rubrika: Programování: PHP
Zdravím,
mám nějakou databázi produktů (MySQL), kde každý produkt má id a jméno.
Potom má tabulku vztahů, kde je uložená posloupnost produktů, tak jak na sebe navazují.
Jedná se o podobnout strukturu (viz. obrázek): http://i.stack.imgur.com/GR9mz.png
Já podle id produktu potřebuji vypsat strukturu "odspoda" nějak takhle:
- A
-- B
--- D
---- E
----- F
------ X
---- G
----- H
------ I
------- X - J
-- K
--- L
---- X
----- M
------ X
X je můj produktu a přes relations table je k němu se možné dostat mnoha cestami - pokusil jsem se naznačit obrázkem a schématem, které potřebuju vypsat.
Zatím zobrazuji jen vazby 1 level nahoru. Takže píšu jednoduše: X je M, X je I a X je F. Teď bych místo toho chtěl vypsat seznam "až nahoru".
Je jasné, že relační databáze a strom zrovna dohromady nepatří. Celý den se snažím najít řešení s ohledem na velikost db (150 000+ záznamů v relation).
Zatím mám vymyšleno, že vzledem k Nette které používám si pro každý produkt najdu cestu odshora dolů a strom si hodím do cache. To ale bude:
- trvat dlouho
- nevyužívat db - relations table najednou postrádá smysl?
- sakra velká cache
Možná mi jen něco uniká a jde to udělat strašně jednoduše. Pokud jste někdy dělali něco podobného v PHP/MySQL, tak určitě ocením vaše tipy :-)
Není to strom, strom má vždy jen jednoho rodiče. Je to orientovaný graf. Zkus pohledat něco na práci s orientovaným grafem.
Matematicky jde asi o úlohu, kdy vezmeš uzel (X) a procházíš všechny vstupujicí hrany od uzlu X nahoru až do uzlu (uzlů), které už žádné vstupní hrany nemají.
V relační databázi se s tím opravdu moc dobře nepracuje.
Pro zobrazení všech 5 odpovědí se prosím přihlaste:
Nebo se přihlaste jménem a heslem:
Komentáře