Ik moet een databaseje maken voor een klein siteje, zonder relationeel gedoe. Normaalgesproken identificeer ik dan de 'objecten' binnen zo'n site, zoals 'artikel' 'persoon' etc. Maar er zitten ook een heleboel stukjes op die site die maar 1 keer voor komen, dus dacht ik 'goh die pleur ik allemaal wel in een tabel, want de fields zijn toch meestal ongeveer zoiets als "id, parent_id, title, head, body, edit_date, author". Toen ik dat gedaan had zag ik ineens heel veel overeenkomsten met de 'persoon' en 'artikel' tabellen, dus dacht ik, waarom flikker ik de hele meuk niet in 1 dikke tabel? Zo ontzettend veel zal er niet in komen te staan...1000 entries zou me echt sterk verbazen.
Het vinden van de juiste data voor de juiste pagina wil ik doen met bitmasks. Ik gebruik daarvoor een 32-bit unsigned int field, en defineer in PHP m'n (max. 32) flags. Zo kan ik in 1 simpele query alle benodigde data voor 1 pagina gesorteerd eruit fietsen (simple voorbeeld voor nieuws-items op de home_page, alwaar ook een linker-kolom en rechter-kolom editabble text staat)
(kan zijn dat er fouten in de code zitten hoor)
Ik sorteer dus ook op flags, zodat ik de soorten content ook netjes gescheiden terugkrijg.
Ik heb dit nog niet geimplementeerd, maar ik vroeg me af of dit gewoon 'not done' is, of dat er haken en ogen aanzitten waar ik niet op zit te letten.
Tuurlijk is de uitbreidbaarheid lastig als je op een gegeven moment meer dan 32 flags nodig hebt, maar ik zit nu op 19, en dat kan als ik een beetje slimmer combineer ook nog wel minder. Sneller qua data ophalen is het enerzijds niet omdat alles door elkaar in 1 tabel staat, maar anderzijds wel omdat er maar 1 query per pagina is, welke ook nog eens akelig simpel is. Dus ja... is dit nou echt wat?
Het vinden van de juiste data voor de juiste pagina wil ik doen met bitmasks. Ik gebruik daarvoor een 32-bit unsigned int field, en defineer in PHP m'n (max. 32) flags. Zo kan ik in 1 simpele query alle benodigde data voor 1 pagina gesorteerd eruit fietsen (simple voorbeeld voor nieuws-items op de home_page, alwaar ook een linker-kolom en rechter-kolom editabble text staat)
PHP:
1
| <?$IS_NEWS_ITEM = 1;//..//..$IS_RIGHT_COLUMM_TEXT = 128;$IS_LEFT_COLUMM_TEXT = 256;//..//..$flags = $IS_RIGHT_COLUMM_TEXT | $IS_LEFT_COLUMN_TEXT | $IS_NEWS_ITEM;$query = "SELECT * FROM content WHERE (flags & ".$flags.") ORDER BY flags ASC, date DESC"; $result = my_process_query($query);?> |
(kan zijn dat er fouten in de code zitten hoor)
Ik sorteer dus ook op flags, zodat ik de soorten content ook netjes gescheiden terugkrijg.
Ik heb dit nog niet geimplementeerd, maar ik vroeg me af of dit gewoon 'not done' is, of dat er haken en ogen aanzitten waar ik niet op zit te letten.
Tuurlijk is de uitbreidbaarheid lastig als je op een gegeven moment meer dan 32 flags nodig hebt, maar ik zit nu op 19, en dat kan als ik een beetje slimmer combineer ook nog wel minder. Sneller qua data ophalen is het enerzijds niet omdat alles door elkaar in 1 tabel staat, maar anderzijds wel omdat er maar 1 query per pagina is, welke ook nog eens akelig simpel is. Dus ja... is dit nou echt wat?