Autor Zpráva
aDAm
Profil
Zdravím pánové,
potřeboval bych pomoc db guru s návrhem struktury databáze na projektu co právě řeším. Už sem nad tím strávil několik hodin a stále nevím zda je to ok.

Co se snažím navrhout:
Datovou strukturu dynamického obsahu. Uvedu to na příkladu. Mějme univerzální blog. Budou se na něm zveřejňovat články ruzného typu: obyčený textový, video článek, článek zaměřený na galerii fotek apod. Každý z těchto typů má odlišné položky, např. pro videočlánek je přidána položka pro vložení videa, pro článek galerie je zase prostor pro vybrání fotek atd. Takže si založím seznam typů:

Types [id,name,description]
1, Clanek, Popis
2, Video, Popis
3, Galerie, Popis

Prvky které budou jednotlivé typy obsahovat si zadefinuju jako elementy. Element bude třeba textové pole což bude znamena že se zadá jen text, nebo může být video což bude složeno z formulářového prvku pro výběr videosoubor, jeho popis a třeba náhledová fotka. Takže dostaneme nějakou takovou strukturu:

Elements[id,name,description,type]
1, Text článku, Popis, text
2, Zajímavé video, Popis, video
3, Fotogalerie, Popis, galery
4, Tagy, Popis, tags

Každý typ může obsahovat libovolný počet elementů a každý element má vlastní konfiguraci, takže je spojím vazební tabulkou

Types_has_elements[id, types_id, elements_id, params]
1, 1, 1, {parametry}
2, 1, 1, {parametry}
3, 1, 4, {parametry}
4, 2, 2, {parametry}
5, 2, 1, {parametry}

Tak a teď ta složitější část. Když chci vytvořit nový článek, tak zvolím typ, tím tedy zjistím jaké elementy se mají ve formuláři zobrazit (text, vybrání videa, atd.) Jenže ten formulář co se zobrazí je rozdělen na nějaké části (pozice) a ještě je formulář rozdělen na admin/user. Takže mám založené nějaké šablony a jejich pozice

Templates[id, name]
1, Sablona pro admina
2, Sablona pro usera
3, Sablona detailu clanku
4, Sablona nahledu clanku

Position[id, name]
1, description
2, metadata
3, media
4, atributy
5, hlavicka

Tak a teď potřebuju poskladat resp přiřadit jednotlivé elementy jednotlivých typů do jednotlivých šablon na určite pozice a ještě potřebuju každému elementu udělat konfiguraci (jak bude zobrazeny atd.) Takže si vytvořím spojovací tabulku:

Templates_elements[id, positions_id, templates_id, types_has_elements_id, params]
1, 1, 1, 1, {parametry}
2, 1, 1, 2, {parametry}

Samotnou strukturu jsem se pokusil načrtnout ve workbenchi zde:

Co myslíte je tento návrh ok? Snažil sem se to udělat tak abych nikde neměl nadbytečná data a dal se přes jednotlivé vazby dostat tam kam je potřeba.
Jinak bude to v Doctrine2 takže vše jako entity a jejich vazby

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:

0