mysql database

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Beste (mede)tweakers,
Al enige tijd zit ik te dubben over het volgende. Stel, ik heb een MySQL database opzet met daarin de volgende 3 tabellen en data(ter verduidelijking):

tabel license
----------------------------
| id | name |
----------------------------
| 1 | Freeware |
| 2 | Open Source |
----------------------------

tabel operatingsystem
----------------------------
| id | name |
----------------------------
| 1 | Windows XP |
| 2 | Windows Vista |
| 3 | Windows 7 |
----------------------------

tabel program
-------------------------------------------------------------------------
| name | id_license | id_operatingsystem |
-------------------------------------------------------------------------
| Firefox | 2 | 1,2,3 |
| Internet Explorer | 1 | 2,3 |
-------------------------------------------------------------------------

De licentie van Firefox kan ik bijvoorbeeld opvragen door de volgende query:
SQL:
1
2
3
4
SELECT l.name
FROM license l
    INNER JOIN program p ON l.id = p.id_license
WHERE p.name = 'Firefox';

Als ik nu de besturingssystemen waarop Firefox kan draaien wil ophalen, verslikt een join zich op de veld waardes 1,2,3 ( die , tekens zijn puur voor de scheiding. had ook een . of | kunnen zijn ;) ) van de kolom id_operatingsystem.

Nu is mijn vraag: bestaat er in SQL een soort “explode” of separator functie (group_concat separator?) om veldwaardes te scheiden om zo meerdere joins achter elkaar uit te voeren - dus 1 query hiervoor te gebruiken? Hoe hebben jullie zoiets aangepakt? Waarschijnlijk kan ik beter deze database opzet wijzigen(verder normaliseren)?

Alle vorm van input, kritiek en tips zijn welkom! :)

Acties:
  • 0 Henk 'm!

  • Amras
  • Registratie: Januari 2003
  • Laatst online: 11-09 19:11
Ik zou inderdaad je databaseontwerp wijzigen en een koppeltabel introduceren. :)

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Bedankt voor je reactie! Dat is een goede tip, heb ik geheel over het hoofd gezien :$

[ Voor 5% gewijzigd door Verwijderd op 08-11-2011 15:37 ]