"složkování " - návrh databáze rubrika: Databáze: SQL

2 zapotocnylubos
položil/-a 11.5.2017

Ahoj,

zajímalo mě, jak by se dala navrhnout tabulka, která by sloužila pro uživatelské prostředí, aby uživatel mohl vytvářet složky a zanožovat je libovolně do sebe.

Zatím jsem chtěl vyřešit jenom složky, né soubory. Napadlo mě, že by řádky tabulky byly složky a měli by sloupec jako parent_id, ve kterém my mylo nějak id té nadřazené složky/řádku v tabulce.

jak by se tohle mohlo namodelovat z hlediska aplikace (PHP) aby to bylo nějak "stylové" a přehledné

Díky

odkaz Vyřešeno
8 rmaslo
odpověděl/-a 11.5.2017

Ano, id, parent_id je správná cesta.

Takové struktuře se říká "hierarchická data" a databázový engine buď pro ní podporu má nebo nebo nemá (tree function). Pokud nemá je potřeba jí vytvořit ručně.

Samozřejmě, pokud je předem jasné, že žádné "hierarchická dotazy" nebudou tak takovou podporu není potřeba dělat. A spoustu aplikací tak navrhnout lze.
Pokud je předem zcela jasné, že hierarchických dat bude pár desítek řádků, tak lze načíst celou tabulku (nebo jen id a parent_id) do paměti a hierarchičnost vyřešit v PHP.

Pokud engine podporu nemá a hierarchické dotazy musí být a záznamy budou časem přibývat tak zřejmě nastal čas pro traverzování kolem stromu.
Na to doporučím odkazy třeba:
https://www.zdrojak.cz/clanky/ukladame-hierarchicka-data-v-databazi-ii/
https://www.interval.cz/clanky/metody-ukladani-stromovych-dat-v-relacnic...

Pro zobrazení všech 6 odpovědí se prosím přihlaste:

Rychlé přihlášení přes sociální sítě:

Nebo se přihlaste jménem a heslem:

Zadejte prosím svou e-mailovou adresu.
Zadejte své heslo.