globe: [MySQL] numerical vs. string identifiers

Beitrag lesen

n'abend,

aus früheren Zeiten hat sich die Einbildung manifestiert, man müsse Primary Keys (und in der Konsequenz auch die Foreign Keys) mit sequenziellen numerischen Schlüsseln belegen.

Ich habe nun den Fall, dass ich aus Applikationssicht nicht viel mit numerischen Schlüsseln anfangen kann, sondern irgendwelche String Keys benötige.

Auf Grund der alten Einbildung habe ich meine Tabellen nun etwa so gebaut:

table_groups
 - field_id (integer) [PRIMARY]
 - field_key (character) [UNIQUE]
 - field_name (character)
 - …

table_items
 - field_id (integer) [PRIMARY]
 - field_key (character) [UNIQUE]
 - field_group (integer) [FOREIGN: table_groups->field_id]
 - field_name (character)

Die numerischen IDs nutzt hier aber nur die Datenbank für die interne Fremdschlüsselverwaltungsgeschichten. GeJOINt wird auf den Tabellen nicht. Abfragen passieren nach folgenden Schema:

SELECT * FROM table_groups WHERE Wetter = schön;
SELECT * FROM table_items WHERE field_group IN ( *mengeVonGruppenIDs* );

Mir stellt sich die Frage, ob meine Annahmen / Einbildungen seit MySQL 5.0 (InnoDB) vielleicht überholt sein könnten. Also dass man auf die numerischen Schlüssel verzichtet und gleich die String Keys als Primary Keys benutzt.

hat da einer von euch 'ne Ahnung? Tests gefahren? kann was zu sagen?
(Interessant wäre dieses Thema auch auf Basis von PostGreSQL...)

weiterhin schönen abend...

--
#selfhtml hat ein Forum?
sh:( fo:# ch:# rl:| br:> n4:& ie:{ mo:} va:) de:] zu:} fl:( ss:? ls:[ js:|