Door
j opla
op 15-11-2015 10:50
gewijzigd op 15-11-2015 10:50
3.668 views
Beste mensen,
Een vraagje over MySQL tabellen. Ik heb ooit gelezen dat je als het even kan tabellen zou moeten opsplitsen in meerdere tabellen als een waarde verschillende keren voor komt. voorbeeld:
id plaats land
1 dorp nl
2 dorp2 nl
3 dorp3 gb
Als ik het goed begrijp zou je dan van land een nieuwe tabel kunnen/moeten maken en in deze tabel alleen een verwijzing maken naar de index van tabel land.
Mijn vraag is nu:
Wanneer, bij welke aantallen, heeft dit werkelijk nut?
Die foutmelding houdt in dat je een TEXT of BLOB voor 'landcode' gebruikt, en dat kan niet als index gebruikt worden, omdat alleen de eerste X tekens geindexeerd kunnen worden. Kies voor een VARCHAR, en gebruik alleen TEXT of BLOB wanneer je dat nodig hebt.
De achterliggende reden is heel eenvoudig, zoals ik eerder ook al heb aangegeven. Het organiseren van je data zorgt dat je database er snel mee om kan gaan, en je applicatie dus eenvoudiger gegevens op een gestructureerde manier kan opvragen. Ook voorkomt normaliseren het maken van fouten. Om terug te komen op de landen, stel dat je een tabel hebt met 4 kolommen: een id, een naam van een persoon, naam van een land en een landcode. Het is nu heel eenvoudig om daar inconsistente data in te zetten, bijvoorbeeld 2x dezelfde landcode met een andere naam van een land. Als je normaliseert en de FK relaties goed legt voorkom je die problemen. Ja, je schrijft dat een JOIN, maar je kan die landen dan hergebruiken voor andere dingen. En een query schrijf je maar 1 keer, dus veel verschil maakt het niet in "eenvoud".
Je had helemaal gelijk Ben. Ik zat krampachtig een lengte op te geven aan een tinytxt, maar dat kan dus niet ;-) Het is ook al weer een tijdje geleden dat ik met MySql bezig was dus veel is weggezakt.