Explode? Kan het sneller?
Op te kijken of een van die waarden bijv 'use-cvs' is, explode ik die tekst en kijk of het in de array zit.
Nu vroeg ik me af, kan dit sneller, in SQL zelf al bijv.?
Je kan een WHERE clausule met LIKE erin gebruiken. Maar als je zulke velden gebruikt is je datamodel fout.
In elk geval niet voor elke waarde in deze waslijst een veld aanmaken, toch?
Code (php)
1
use-admin, use-admin-all, use-admin-boards, use-admin-theme, use-admin-user, use-admin-settings, use-cvs, use-cvs-unread, use-cvs-delete, use-cvs-edit, use-cvs-new, use-cvs-profile, use-cvs-topics, use-cvs-boards, use-cvs-search, use-cvs-unreadtoyour, use-cvs-all, use-ep, use-pm, use-pm-all, use-pm-new, use-pm-inbox, use-pm-reply, use-pm-outbox
Thomas de Roo op 30/10/2010 16:25:33:
Hoe zouden jullie het doen dan?
In elk geval niet voor elke waarde in deze waslijst een veld aanmaken, toch?
In elk geval niet voor elke waarde in deze waslijst een veld aanmaken, toch?
Code (php)
1
use-admin, use-admin-all, use-admin-boards, use-admin-theme, use-admin-user, use-admin-settings, use-cvs, use-cvs-unread, use-cvs-delete, use-cvs-edit, use-cvs-new, use-cvs-profile, use-cvs-topics, use-cvs-boards, use-cvs-search, use-cvs-unreadtoyour, use-cvs-all, use-ep, use-pm, use-pm-all, use-pm-new, use-pm-inbox, use-pm-reply, use-pm-outbox
Ik heb geen idee wat voor data dat allemaal is. Mijn antwoord blijft dus bij databasenormalisatie.
Misschien moet er zelfs wel data weg!
Ik zou niet weten hoe ik het anders dan dit moet opslaan, met een koppeltabel zou ik voor elke user en elke permissie een record moeten hebben.
Een logische optimalisatie is natuurlijk om gebruikers in groepen in te delen.
Oke, van wat je net zei snap ik niet echt iets...
Quote:
Ik zou niet weten hoe ik het anders dan dit moet opslaan, met een koppeltabel zou ik voor elke user en elke permissie een record moeten hebben.
Quote:
Ja, en zo moet het ook...
Als je users eerst in groepen indeelt en die groepen rechten geeft, beperkt je het aantal records in die koppeltabel flink.
Als de preformance onderuit gaat, dan is er de optie om te denormaliseren.
Het vormen van groepen is toch niet denormalisatie?
Toevoeging op 30/10/2010 16:50:40:
Komt de tabel er dan dus zo uit te zien?
permission | group
use-cvs | 1
use-cvs | 3
use-ep | 1
use-ep | 3
Ja, hoewel je permissions ook nog in een aparte tabel kan doen en in de koppeltabel naar het id verwijzen.
Pim - op 30/10/2010 16:45:46:
Het vormen van groepen is toch niet denormalisatie?
Als je de rechten per groep indeeld, dan is dat niet denormalisatie inderdaad. Dan lijkt het mij juist de bedoeling dat het gebeurd.
Ik bedoelde meer dat de rechten weer terug gaat in de user tabel.
roles
----
id
role
permissions
----------
id
permission
role_permission
-------------
role_id
permission_id
users
-----
id
username
role_id
Mocht een gebruiker meerdere rollen kunnen hebben, dan kun je daar nog een aparte tabel voor gebruiken. Deze basis kun je zelf uiteraard verder uitbreiden :-)