ik heb een componisten tafel, met wat gegevens over een componist, naam etc, maar ook een veld abr(eviation). Abbreviation is dus de afkorting van de "publisher" die bladmuziek van deze componist uitgeeft.
Ik heb een tweede tafel, "publisher" waarin opgenomen de details van die publisher, adres etc. Maar wederom het veld abr.
En dus een pagina waarin de details van een geselecteerde componist staan en dus ook de afkorting van de publisher. Die wil ik graag linken met de details van de benoemde "publisher" Kan dat via dat veld "abr"? Ik zie het niet echt,
Misschien een makkie, maar niet voor mij. Vandaar.
Ik mag aannemen dat je tabellen bedoelt in plaats van tafels :p
Als je het goed gedaan hebt heb je ook een id kolom met auto_increment, deze kun je beter gebruiken voor relaties i.p.v. een afkorting.
Cijfers zijn namelijk beter voor de performance dan letters.
Inderdaad gaat het om tabels. Maar als ik het goed "begrijp" moeten de twee "tables" handmatig gelinkt worden. Dwz bijna 1000 keer de relatie aan geven tussen composers_publisher<->publisher_abbreviation?
Tables zijn ontstaan vanuit een import uit twee bestaand excell sheets tbv een website (www.pianoquartet.nl) van deze (door de jaren) verzamelde gegevens van een kennis.
Dat zou jammer zijn.
De manier waarop het nu is, is dat het veld "Publisher" in de tabel "Composers" verwijst naar het veld "abbreviation" in de tabel "publishers".
Eigenlijk zijn de tabellen dus al gelinkt, maar op een hele slechte manier. Linken doe je normaal gesproken via zogenaamde "foreign keys" en die zijn van het type INT vanwege de snelheid.
Je kunt dit denk ik wel optimaliseren door een nieuw veld type INT aan te maken in de tabel "composers" en vervolgens een query op te stellen waarmee je dat veld vult.
Nee, je kunt de relatie gewoon moet een foreign key constraint aanbrengen in de database.
Verder zou ik eerst nog eens naar de datamodel kijken, want je gebruikt nu bijna overal varchar(255) als datatype terwijl dat lang niet overal nodig/juist is.
Enkele voorbeelden:
- composers.birth lijkt me een datum dus dat hoort gewoon in een DATE veld.
- composers.publisher is een foreign key op de publishers tabel. Hier sla je dus het id van de publisher in op.