2 tabellen of 1 met blocked member_id's

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Daniel van Seggelen

Daniel van Seggelen

16/04/2017 16:35:02
Quote Anchor link
Hallo,


Scenario1

Ik heb een "leden" tabel

id|naam|
----------
1 | testnaam
2 | testnaam2
mensen kunnen andere leden zien en deze blokkeren. Als ze dit gedaan hebben, dan komen ze in een table genaamd "blocked"

member_id| blocked_id
------------------------
2 | 1

blocked_id verwijst dan naar id van de "leden" tabel

mysql queryy

SELECT * from blocked b, leden l WHERE b.blocked_id != l.id

Het lid krijg dat alle leden te zien behalve de geblokkeerde.



Ik wil dus een mysql query en zit te denken wat nu het snelst/beste is:

Scenario 2

Ik heb 1 table "leden" met een veld "blocked". In dat veld komt er een array die serialized word opgeslagen en unserialized weer word opgehaald.

wat is de beste query in dit geval om te zoeken in serialized arrays en is dit wel vertandig? sneller?
 
PHP hulp

PHP hulp

15/11/2024 20:50:47
 
Ben van Velzen

Ben van Velzen

16/04/2017 16:56:18
Quote Anchor link
>> wat is de beste query in dit geval om te zoeken in serialized arrays en is dit wel vertandig? sneller?
Die bestaat niet, en wat je hier voorstelt is denormalisatie, iets dat alleen in zeer beperkte gevallen nuttig is, bijvoorbeeld wanneer je er nooit in hoeft te zoeken en kunt garanderen dat dat echt nooit nodig zal zijn. Gewoon netjes normaliseren en daar je queries op schrijven is bijna altijd de juiste weg.
 
Frank Nietbelangrijk

Frank Nietbelangrijk

16/04/2017 23:30:15
Quote Anchor link
Je zou in deze situatie een leden tabel en een log tabel kunnen maken. In de log tabel bewaar je een log van belangrijke handelingen die verricht worden.

Leden:
- id
- name
- email
- locked (boolean)

Log:
- id
- when (datetime)
- who (userId)
- action (varchar) (vaste waardes bijv. LOCK USER en UNLOCK USER)
- note (varchar, nullable)
Gewijzigd op 16/04/2017 23:33:32 door Frank Nietbelangrijk
 



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.