Situatie: Ik heb een website met daarop een aantal "teasers", deze teasers kunnen linken naar 3 verschillende soorten pagina's:
* Keiharde (externe) URL
* Voorgedefineerde URL (url naar onderdeel van de website, komt uit een losse tabel)
* een CMS Pagina
Teasers worden aangemaakt via het CMS. Aan een teaser kunnen meerder URL's gekoppelt worden (op basis van datum, morgen kan er bijvoorbeeld andere pagina gelinkt worden dan vandaag). Hoe zou jij dit koppelen in de database?
Ik had samen met een collega al 2 opties bedacht maar heb bij alle 2 een beetje het gevoel dat het een te ranzige oplossing is.
Optie 1:
-----------------------------------------------------------------------------
Teasers
-------
Teasers_id
Titel
Soort
-------
Soort_id
Soort
Koppel
-------
Teasers_id
Soort_id
Datum
Koppeldata
------------------------------------------
In de soort tabel komen de 3 verschillende soorten links te staan (voordeel is uitbreidbaarheid). In het veld koppel.koppeldata staat naar gelang de soort het id van CMS pagina, keiharde URL of id van voorgedefineerde tabel.
-----------------------------------------------------------------------------
Optie 2:
-----------------------------------------------------------------------------
Teasers
-------
Teasers_id
Titel
Koppel
-------
Teasers_id
URL
pagina_id
cmspagina_id
datum
------------------------------------------
Gewoon een koppeltabel waar keihard de verschillende types in staan gedefineert, nadeel is dat dit absoluut niet dynamisch is en dat je een hoop NULL velden krijgt in de database.
-----------------------------------------------------------------------------
Ik kon geen 3e mogelijkheid bedenken en nadeel is dat je de relaties eigenlijk bij beide varianten alleen in de code kan leggen en niet in de Query.
Snap je het probleem en heb je een betere oplossing?
(Tabelnamen en dergelijke zijn fictief en dienen slechts als voorbeeld).
* Keiharde (externe) URL
* Voorgedefineerde URL (url naar onderdeel van de website, komt uit een losse tabel)
* een CMS Pagina
Teasers worden aangemaakt via het CMS. Aan een teaser kunnen meerder URL's gekoppelt worden (op basis van datum, morgen kan er bijvoorbeeld andere pagina gelinkt worden dan vandaag). Hoe zou jij dit koppelen in de database?
Ik had samen met een collega al 2 opties bedacht maar heb bij alle 2 een beetje het gevoel dat het een te ranzige oplossing is.
Optie 1:
-----------------------------------------------------------------------------
Teasers
-------
Teasers_id
Titel
Soort
-------
Soort_id
Soort
Koppel
-------
Teasers_id
Soort_id
Datum
Koppeldata
------------------------------------------
In de soort tabel komen de 3 verschillende soorten links te staan (voordeel is uitbreidbaarheid). In het veld koppel.koppeldata staat naar gelang de soort het id van CMS pagina, keiharde URL of id van voorgedefineerde tabel.
-----------------------------------------------------------------------------
Optie 2:
-----------------------------------------------------------------------------
Teasers
-------
Teasers_id
Titel
Koppel
-------
Teasers_id
URL
pagina_id
cmspagina_id
datum
------------------------------------------
Gewoon een koppeltabel waar keihard de verschillende types in staan gedefineert, nadeel is dat dit absoluut niet dynamisch is en dat je een hoop NULL velden krijgt in de database.
-----------------------------------------------------------------------------
Ik kon geen 3e mogelijkheid bedenken en nadeel is dat je de relaties eigenlijk bij beide varianten alleen in de code kan leggen en niet in de Query.
Snap je het probleem en heb je een betere oplossing?
(Tabelnamen en dergelijke zijn fictief en dienen slechts als voorbeeld).