Explode? Kan het sneller?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Thomas de Roo

Thomas de Roo

30/10/2010 16:15:03
Quote Anchor link
Ik heb dus in een database een tekst staan gescheiden met komma's.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
use-cvs, use-admin, use-ep


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.?
 
PHP hulp

PHP hulp

21/11/2024 20:00:54
 
Pim -

Pim -

30/10/2010 16:22:23
Quote Anchor link
Je kan een WHERE clausule met LIKE erin gebruiken. Maar als je zulke velden gebruikt is je datamodel fout.
 

30/10/2010 16:23:05
Quote Anchor link
Normaliseren.
Dan gaat het sneller.
Je hoort maar één ding per veld op te slaan.
 
Thomas de Roo

Thomas de Roo

30/10/2010 16:25:33
Quote Anchor link
Hoe zouden jullie het doen dan?

In elk geval niet voor elke waarde in deze waslijst een veld aanmaken, toch?
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
 

30/10/2010 16:27:44
Quote Anchor link
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?
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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!
 
Thomas de Roo

Thomas de Roo

30/10/2010 16:34:39
Quote Anchor link
Het zijn dus permissies en er wordt gecontroleerd of een user ze heeft of niet.
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.
 
Pim -

Pim -

30/10/2010 16:40:20
Quote Anchor link
Ja, en zo moet het ook...
Een logische optimalisatie is natuurlijk om gebruikers in groepen in te delen.
 
Thomas de Roo

Thomas de Roo

30/10/2010 16:41:06
Quote Anchor link
Oke, van wat je net zei snap ik niet echt iets...
 
Pim -

Pim -

30/10/2010 16:42:58
Quote Anchor link
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.
 

30/10/2010 16:44:01
Quote Anchor link
Natuurlijk moet je weer nadat je genormaliseerd hebt kijken naar de preformance. Maar ik gok dat in dit geval die niet veel onderuit zal gaan.
Als de preformance onderuit gaat, dan is er de optie om te denormaliseren.
 
Pim -

Pim -

30/10/2010 16:45:46
Quote Anchor link
Het vormen van groepen is toch niet denormalisatie?
 
Thomas de Roo

Thomas de Roo

30/10/2010 16:47:51
Quote Anchor link
Dan vorm ik groepen met rechten en maak ik een koppeltabel ;)

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
 
Pim -

Pim -

30/10/2010 16:54:43
Quote Anchor link
Ja, hoewel je permissions ook nog in een aparte tabel kan doen en in de koppeltabel naar het id verwijzen.
 

30/10/2010 17:05:35
Quote Anchor link
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.
 
Joren de Wit

Joren de Wit

30/10/2010 17:20:01
Quote Anchor link
Werk inderdaad met rollen (groepen) en ken vervolgen afzonderlijke rechten aan een rol toe. Een gebruiker krijgt vervolgs een rol waardoor hij de aan die rol gekoppelde rechten krijgt. Een simpele opzet:

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 :-)
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.