[PHP & Mysql] Data aan elkaar linken.

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • TJHeuvel
  • Registratie: Mei 2008
  • Niet online
Hallo,

Ik ben bezig met het maken van een nieuwsbrief systeem.
Gebruikers kunnen zich aanmelden aan (meerdere) groepen, en de administratie kan dus emails sturen naar een groep

Zo'n groep heeft een template, en zijn eigen gebruikers.

Hoe kan ik in mijn mysql database 1 gebruiker linken aan meerdere groepen, zonder redundantie?

Normaliter zou ik de table Gebruikers gewoon een Group veld, maar er kunnen dus meerdere groepen zijn per gebruiker.
Zet ik in een group veld gewoon alle Id's van de group, met comma gescheiden? Niet zo netjes, maar werkt wel :).

Freelance Unity3D developer


Acties:
  • 0 Henk 'm!

  • marcieking
  • Registratie: Februari 2005
  • Niet online

marcieking

Mannetje Pug en een stokbrood

Een tabel voor elke groep, en daarin op elke regel een User.

https://onzetaal.nl/taaladvies/welke-die/


Acties:
  • 0 Henk 'm!

  • webinn
  • Registratie: Oktober 2002
  • Laatst online: 06-06 12:44
tabel met userID's + gegevens
tabel met userID groupID (hier kan een userID dus 10 keer inzitten bv)
tabel met alle groepen + gegevens

[ Voor 21% gewijzigd door webinn op 23-09-2008 17:09 ]


Acties:
  • 0 Henk 'm!

  • HyperioN
  • Registratie: April 2003
  • Laatst online: 24-05 15:42
Een tabel met je users (met bijbehorende info),
een tabel met je groups (met bijbehorende info),
een tabel met groupid+userid waar je dus alle users bij een bepaalde groep kan opvragen.

edit: spuit 11 |:(

[ Voor 5% gewijzigd door HyperioN op 23-09-2008 17:10 ]


Acties:
  • 0 Henk 'm!

  • TJHeuvel
  • Registratie: Mei 2008
  • Niet online
Dus een tabel Subscribe met UserId GroupId?
Ok bedankt voor de snelle reacties :)

Freelance Unity3D developer


Acties:
  • 0 Henk 'm!

  • Jasperrr
  • Registratie: Augustus 2008
  • Laatst online: 10-09 11:35
Zover ik weet kan je ook gewoon meerdere (group) id's toevoegen aan 1 field...

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
marcieking schreef op dinsdag 23 september 2008 @ 17:07:
Een tabel voor elke groep, en daarin op elke regel een User.
Jasperrr schreef op dinsdag 23 september 2008 @ 17:40:
Zover ik weet kan je ook gewoon meerdere (group) id's toevoegen aan 1 field...
En jullie allebei terug naar school! Dit druist echt in tegen alle normalisatie regels.
Het enige juiste antwoord is (zoals aangegeven) een koppeltabel.

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • webinn
  • Registratie: Oktober 2002
  • Laatst online: 06-06 12:44
RobIII schreef op dinsdag 23 september 2008 @ 17:42:
[...]


[...]


En jullie allebei terug naar school! Dit druist echt in tegen alle normalisatie regels.
Het enige juiste antwoord is (zoals aangegeven) een koppeltabel.
Inderdaad, kijk hier maar eens: Wikipedia: Database normalization . Vooral de eerste normaalvormen zijn belangrijk (zeker voor beginners)

  • YopY
  • Registratie: September 2003
  • Laatst online: 13-07 01:14
Normaalvormen en normalisatie zijn leuk, maar dan zou je wel eerst de basis van relaties moeten weten - one to one, many to one, en many to many, en hoe je dit vertaalt naar een database schema, anders snap je (in mijn eigen ervaring) niet veel van databasenormalisatie of de juiste toepassing daarvan.

One-to-many en many-to-one is simpelweg een parent-child relatie, een child heeft een verwijzing naar een parent - zou in dit geval een gebruiker zijn met een verwijzing naar een groep.

Many-to-many is wanneer vele gebruikers zich kunnen abboneren op vele groepen, zoals in dit geval is. Zoals al ge-spuit-11d is, moet je hiervoor een koppeltabel gebruiken.

Het is handig als je eerst even je relaties schetst op de achterkant van een krant of iets dergelijks, dat je een goed idee hebt van wat er precies nodig is en welke relaties van toepassing zijn.
Pagina: 1