Autor Zpráva
Akacko
Profil
Zdravím.
Potřeboval bych poradit s problémem:
V databázi mám uložené stromové menu. Ke každé položce si ukládám ID rodiče
CREATE TABLE `menu` (
  `menuId` int(11) NOT NULL auto_increment,
  `text` varchar(100) NOT NULL,
  `url` varchar(100) NOT NULL,
  `parent` int(11) default NULL
  PRIMARY KEY  (`menuId`)
)
Teď ale potřebuji, znám-li ID jakékoliv položky zjistit „hlavního“ rodiče (toho co má parent = 0).

Napadly mě dvě možnosti
1) napsat PHP funkci, která by postupovala nahoru stromem až by narazila na položku s parent = 0. Toto řešeni jsem zavrhl, protože se mi zdá jako náročnější na čas (i když to asi nepůjde poznat, je to podle mě prasacke)
2) do databáze připsat sloupec do kterého bych ukládal ID „hlavního“ rodiče. Toto řešení se mi nezdá, protože je to hodně duplicitních údajů (i když je to jen jedno číslo)

Poraďte, jak to dělat nejlépe a nejjednodušejí.
Díky.
Nox
Profil
Nevim jestli to je to, co je tím myšlený, ale třeba to pomůže - http://interval.cz/clanky/metody-ukladani-stromovych-dat-v-relacnich-d atabazich/
Mastodont
Profil
Rovněž
http://www.sitepoint.com/article/hierarchical-data-database
http://www.dbazine.com/oracle/or-articles/tropashko4

Osobně se mi líbí materializovaná cesta, ale tu bych omezil třeba na diskuse, kde se nemění pořadí prvků ve stromu a nové příspěvky tvoří vždy list stromu.
Akacko
Profil
Nox, Mastodont
vybral jsem si. Díky

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: