[database] IDs
Jij zou dan de ID dus als primary key instellen en auto_increment. Maar als je nu een tekst wil hebben dan moet je dus het veld key in de WHERE stoppen: ...WHERE key = 'welkom'. Is het dan een goed idee om op die key een index te zetten?
Ik zal dat proberen uit te leggen, en ik gebruik even als voorbeeld jouw productcode:
Stel je hebt een tabel voor de producten, dan zal je die producten (als het goed is) ook willen verkopen.
Dus dan heb je ook een tabel orders_producten, waarin die productcode voorkomt.
In die tabel heeft de productcode op zijn minst een index anders lopen (bij grotere tabellen) je queries voor geen meter.
Getallen zijn gewoon makkelijker met elkaar te vergelijken dan strings.
Daarnaast wordt ook nog elke keer (tenzij je met transacties werkt) als je iets insert de index opnieuw opgebouwd.
En stel dat je 100% (voor zover dat op voorhand kan) zeker zou weten dat je die teksten nooit ergens aan wilt koppelen, zou het in dat geval dan wel zonder ID kunnen? Of raad je dan nog steeds een numerieke ID aan, en zo ja... waar wordt die numerieke key dan eigenlijk voor gebruikt? (in het geval van de teksten bedoel ik dan)
Ik probeer vooral even te begrijpen WAAROM die numerieke ID van belang is.
Hoe je die samenstelt is een tweede, de enigste voorwaarde is dat ie uniek is. Je kan ook 5 kolommen een samengestelde primary key maken.
Op die primary key kan je dus andere tabellen koppelen, en of je dan op één of 5 kolommen wilt koppelen, het verschil lijkt me wel duidelijk.
Is dat een goede regel om aan vast te houden?
De orders_products tabel in mijn eerdere voorbeeld heeft geen uniek numeriek veld, maar de combinatie van order_id en product_id is wel uniek dus maak je daar de primary key van.
Ja, met eventueel een paar andere kolommen (bijv aantal).
Ah ja, oké. Duidelijk. Thanks Ger!