[MySQL] Databasedesign - relatie * OP * groep

Pagina: 1
Acties:

  • RePlayer
  • Registratie: September 2003
  • Laatst online: 18-09 23:19
Wat is de beste oplossing voor de volgende kwestie?

Ik heb twee tabellen:

RELATIES
-id
-naam
-groepen_ids

GROEPEN
-id
-naam

Een relatie kan deel uitmaken van meerdere groepen. Een groep kan gekoppeld zijn aan meerdere relaties.

Ik heb bedacht om in relaties.groepen_ids de id's van de bijbehorende groepen te zetten, gescheiden door komma's.

Is dit wel de beste goede oplossing?
Welke query moet ik draaien om alle groepen van een relatie in een overzicht te krijgen?
Welke query moet ik draaien om alleen relaties te laten zien die deel uit maken van groep 1 of 2?

---


  • P_de_B
  • Registratie: Juli 2003
  • Niet online
NEE! Ieuw.

Je moet een koppeltabel maken met twee velden: relatie_id en groep_id. Je kunt hiermee eenvoudig relaties aan groepen toekennen.

Via een eenvoudige JOIN kun je de gewenste gegevens ophalen.

Oops! Google Chrome could not find www.rijks%20museum.nl


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
RePlayer schreef op donderdag 11 december 2008 @ 16:28:
Ik heb bedacht om in relaties.groepen_ids de id's van de bijbehorende groepen te zetten, gescheiden door komma's.
Lees je eens in in databasenormalisatie; dit is niet wat je wil. Gebruik een koppeltabel.
RePlayer schreef op donderdag 11 december 2008 @ 16:28:
Is dit wel de beste goede oplossing?
Kort? Nee! :+
P_de_B schreef op donderdag 11 december 2008 @ 16:30:
Je moet een koppeltabel maken met twee velden: relatie_id en groep_id. Je kunt hiermee eenvoudig relaties aan groepen toekennen.
voorkruipert!
:Y En bij voorkeur nog een compound key van maken of iig zorgen dat er een goede index op zit ;)

@TS: Dit noemt men een n:m (veel op veel) relatie (itt. bijv. een 1:n (1 op veel) relatie) en dan is een koppeltabel gewoon de juiste oplossing.

[ Voor 54% gewijzigd door RobIII op 11-12-2008 16:35 ]

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


  • MueR
  • Registratie: Januari 2004
  • Laatst online: 25-09 20:21

MueR

Admin Tweakers Discord

is niet lief

Sums it all up. Helemaal eensch :)

Anyone who gets in between me and my morning coffee should be insecure.


  • whoami
  • Registratie: December 2000
  • Laatst online: 10:55
Toch raar dat een dergelijke 'oplossing' (komma-separated values) (:r) om de zoveel tijd eens opduikt op GoT ...

Ik zou zeggen, leesvoer; mensen die dezelfde fout gingen maken, of gemaakt hebben:
[MySQL] LIKE query op komma-gescheiden veld
\[PHP/MySQL] Serialize versus koppeltabellen

Ik zou dus zeggen: doe het niet (id's comma separated opslaan), en lees je even in in normalisatie-regels, en los het probleem op zoals het moet opgelost worden. :) (n:m relatie -> koppeltabel)

[ Voor 60% gewijzigd door whoami op 11-12-2008 16:42 ]

https://fgheysels.github.io/


  • RePlayer
  • Registratie: September 2003
  • Laatst online: 18-09 23:19
Het voelde al niet helemaal lekker.

Maar ik snap nu hoe het wel moet.. Bedankt, en excuses voor hen die gefrustreerd raakten ;)

---


Verwijderd

whoami schreef op donderdag 11 december 2008 @ 16:37:
Toch raar dat een dergelijke 'oplossing' (komma-separated values) (:r) om de zoveel tijd eens opduikt op GoT ...
Wij hebben 'op de zaak' te maken met een HEEL oud database model. In die tijd had iemand het idee om nieuwe velden (die ontstonden uit de wens van een klant) 'tijdelijk' op te slaan in een veld en bij een nieuwe release zouden ze dan in het 'nieuwe' datamodel worden opgenomen. Je voelt hem al aankomen, natuurlijk was er nooit tijd/geld/mankracht beschikbaar om dat ook daadwerkelijk te doen en in de loop van de afgelopen 25(!) jaar is dat veld dus verkracht en mismaakt tot een vergaarbak van van alles en nog wat (in een stuk of 200 tabellen).

Bijzonder plezierig in het onderhoud 8)7 zeker nu we de oude (Progress) programmatuur aan het ombouwen zijn naar .NET kom je nog wel eens 'leuke' dingen tegen :o

[ Voor 7% gewijzigd door Verwijderd op 11-12-2008 19:48 ]

Pagina: 1