[MySQL] Werden Fremdschlüssels IDs automatisch übernommen (Normalisierung)?

Abschließend (hoffe ich :D) möchte ich Euch Fragen ob es einen Unterschied in der Performance macht wenn ich mich für eines der beiden Beispiele entscheide:

Beispiel 1: Mehr Spalten in characters
Code:
characters
**characterid | *userid | *levelid | *raceid | charactername
---------------------
1 | 1 | 15 | 4 | Max
2 | 1 | 23 | 3 | Mus
3 | 2 | 31 | 3 | Ter
 
 
levels
**levelid | exppoints
-----------------
1 | 200
2 | 500
3 | 1000
 
*Index
**Primary


Beispiel 2: Mehr doppelte Einträge der character und mehr kleinere Tabellen
Code:
characters
**characterid | *userid | charactername
---------------------
1 | 1 | Max
2 | 1 | Mus
3 | 2 | Ter
 
 
levels
**levelid | exppoints
-----------------
1 | 200
2 | 500
3 | 1000


character_levels
*levelid | *characterid
-----------------
15 | 1
23 | 2
31 | 3


character_races
*raceid | *characterid
-----------------
4 | 1
3 | 2
3 | 3
 
*Index
**Primary

Danke bis hier :)
 
Zuletzt bearbeitet:
1:1-Bezihungen machen meistens wenig Sinn.
Da ein Char nur ein Level haben kann, würde ich Variante 1 nehmen

Beid er Normalisierung geht es nicht darum möglichst alle Felder aus der Haubttabelle zu lösen. Es geht eher darum sich wiederholende Werte auszulagern (also der Level wie in Bsp 1) oder 1:n-Beziehungen.
 
In diesem Beispiel wäre Variante 1 vor allem besser, weil sie weniger Arbeit ergibt beim Auslesen aus der Datenbank. Die Statements sind um einiges kürzer, weil du keine Joins verwenden musst.

Würde - in diesem Fall - auch Variante 1 nehmen.
 
Zurück