[MySQL] Foreign Key op varchar kolom lukt niet

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Morrey
  • Registratie: November 2005
  • Laatst online: 12-07 07:48
Hallo,

Ik wil graag het volgende: ik heb een "Transactions" tabel met daarin allerlei informatie over de betreffende boekingen. Om de dataintegriteit te bewaken heb ik een lookup tabel gemaakt, "TransactionType" waarin mijn transactie-codes staan opgeslagen (DEBET, CREDIT, TOPUP, etc). Nu ben ik vrijwel de hele ochtend bezig geweest om de foreign key goed aan te maken, maar het lukt niet.

De pk van TransactionType is een varchar(6) kolom, wat wellicht de oorzaak is van de problemen. Mijn integer gebaseerde foreign keys werken namelijk wel, maar ik heb een voorkeur toch varchar te gebruiken omdat mijn transactiontabel dan meteen een stuk leesbaarder wordt.

De volgende zaken heb ik al gecheckt, ik werk vanuit Workbench, de database bevat nog geen data:
  • Tabellen zijn InnoDB
  • De kolommen zijn gelijk wat betreft type (VARCHAR(6))
  • Ik heb een index gezet op de kolom in Transactions
  • Ik heb geen default value ingesteld.
  • Ik heb eerst de database opgezet zonder foreign keys (wel met de benodigde indexes), en deze nadien proberen toe te voegen via alter table.
Ik word er een beetje duf van, dus ik hoop dat jullie nog ideëen hebben. Mocht het niet lukken, dan ga ik wel integers gebruiken ipv de codes zelf. Wat vinden jullie er eigenlijk van om voor transactie-codes een lookup tabel met foreign keys te gebruiken? Ik kan dit natuurlijk ook gewoon in de applicatie zelf inbouwen.

Acties:
  • 0 Henk 'm!

  • Morrey
  • Registratie: November 2005
  • Laatst online: 12-07 07:48
Nou... heb hem gevonden: de collation is niet hetzelfde, alhoewel WorkBench deze op "table default" heeft gezet, maar blijkbaar toch 2 verschillende values heeft toegekend: utf8_general_ci en latin1_swedish_ci....

Mijn laatste vraag blijft staan, vinden jullie dit the way togo? Dus een relatief kleine lookup table koppelen via foreign keys?

Acties:
  • 0 Henk 'm!

  • Tukk
  • Registratie: Januari 2002
  • Laatst online: 11:32

Tukk

De α-man met het ẞ-brein

Is leebaarder worden een eis van de opdrachtgever of een wens van jezelf?

Als je een leesbaardere versie wil kun je ook een view maken die je keys koppelt en dan netjes de data toont op de manier die jij wil.

[ Voor 5% gewijzigd door Tukk op 21-02-2012 15:00 ]

Q: How many geeks does it take to ruin a joke? A: You mean nerd, not geek. And not joke, but riddle. Proceed.


Acties:
  • 0 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
Een ENUM-veld biedt geen oplossing?

Acties:
  • 0 Henk 'm!

  • Morrey
  • Registratie: November 2005
  • Laatst online: 12-07 07:48
@Tukk ja daar heb je ook wel een punt. ik ga er eens over nadenken. Hoe zit dat mbt tot performance als ik een extra kolom toevoeg, puur om een integer pk te hebben?

@Cartman, hiermee ben ik nog niet bekend, dus dat ga ik eens even uitzoeken. thanks voor de tip