Waar ik tot op heden een SET type kolom gebruikte, wil ik nu een extra tabel gebruiken om naar te linken (one-to-many en one-to-one). De reden waarom is dat ik tot de overtuiging ben gekomen dat SET (en ENUM) in MySQL meer kwaad dan goed doet, maar dat terzijde.
Op zich niets moeilijks aan, maar ik kom nu in de volgende situatie terecht die op mij gewoon vreemd overkomt. De data waar het over gaat zijn maten voor kleding (S, M, L, XL, XXL, Junior, etc). Unieke waardes, niet veel data en op zich zal het ook niet vaak veranderen. Omdat alle waardes uniek zijn heb ik geen andere key nodig (dus geen auto_increment id). Alleen wil ik het nu linken dan kom ik eigenlijk in de situatie dat ik de waarde uit de sizes tabel direct opneem in de andere tabel.
Tabel sizes:
- size VARCHAR(15)
(heeft dus maar 1 kolom)
one-to-one relatie:
Tabel items:
- item_id
- item_name
- size
etc
one-to-many relatie:
Tabel catalogue_items:
- item_id
- item_name
etc
Tabel size_options (link tabel):
- item_id
- size
In de item tabel (waar fysieke items in voorraad in staan) komt dus direct de maat te staan. Voor de tabel met catalogus items is een link tabel nodig, omdat er in de catalogus moet worden opgenomen in hoeveel maten een item beschikbaar is. Daar heb ik dus een link tabel, in die link tabel komt ook weer meteen de maat te staan.
Mijn gevoel zegt me nu dat die hele sizes tabel bijna overbodig is geworden. Zonder die tabel kan ik de one-to-one en one-to-many relatie in feite ook wel leggen. Nu besef ik wel dat die sizes tabel afbakent welke maten mogelijk zijn en geeft me de mogelijkheid om alle maten op te halen (voor een drop down box bijvoorbeeld), maar is dit echt de juiste manier? Het komt op de een of andere manier vreemd op mij over.
725 views