Hi,
ich plane momentan ein etwas größeres Projekt, das u.A. auch eine Bildergalerie beinhalten soll. Nun will ich halt die DB-Struktur von Anfang an richtig gestalten, also habe ich einige Fragen:
1. Ich habe gelesen, dass Felder mit festen Größen besser sind, als welche mir variablen Größen. Also dass man eher CHAR als VARCHAR benutzen soll. Stimmt das so? Was wäre, wenn ich einen Namen mit einer festen Grenze (also zB maximal 32 Zeichen) speichern will: Wenn ich CHAR(32) benutze und einen Namen mit 20 Zeichen habe, würden ja 12 Leerzeichen angehangen. Ist es also besser diese dann nach der Abfrage per trim() zu löschen oder lieber doch direkt VARCHAR(32) benutzen? Wie würde denn eine WHERE Abfrage bei so einem Typ aussehen? Würde "`name` = 'abc'" ein Ergebnis liefern, wenn abc + die auffüllenden Leerzeichen in der Tabelle stünde?
2. Ich habe einige Felder, in denen ich Einstellungen speichern will, also einstellige Werte (meistens nur 0 oder 1 evtl. auch mehr). Wie wären die am besten zu speichern? TINYINT oder CHAR(1)? Oder etwas ganz anderes?
3. Indizes: Also ich habe in jeder Tabelle einen PRIMARY KEY id Feld. Jetzt gibt es aber noch anderen Möglichkeiten für weitere INDEX Felder. Z.B. sind alle Fotokommentare mit der dazugehörigen Bild-ID in einer Tabelle gespeichert, also wäre es ja gut, wenn dieses Bild-ID Feld auch einen INDEX bekommt, weil ja eigentlich nur so auf die Tabelle zugegriffen wird. Jetzt haben ich irgendwo mal etwas von 1. Index 2. Index etc. gelesen. Haben mehrere Indizes also verschiedene Prioritäten, so dass ich mir da auch Gedanken zu machen muss oder ist das egal?
So, ich denke, das wars fürs erste :-)
MfG
Tobi
ich plane momentan ein etwas größeres Projekt, das u.A. auch eine Bildergalerie beinhalten soll. Nun will ich halt die DB-Struktur von Anfang an richtig gestalten, also habe ich einige Fragen:
1. Ich habe gelesen, dass Felder mit festen Größen besser sind, als welche mir variablen Größen. Also dass man eher CHAR als VARCHAR benutzen soll. Stimmt das so? Was wäre, wenn ich einen Namen mit einer festen Grenze (also zB maximal 32 Zeichen) speichern will: Wenn ich CHAR(32) benutze und einen Namen mit 20 Zeichen habe, würden ja 12 Leerzeichen angehangen. Ist es also besser diese dann nach der Abfrage per trim() zu löschen oder lieber doch direkt VARCHAR(32) benutzen? Wie würde denn eine WHERE Abfrage bei so einem Typ aussehen? Würde "`name` = 'abc'" ein Ergebnis liefern, wenn abc + die auffüllenden Leerzeichen in der Tabelle stünde?
2. Ich habe einige Felder, in denen ich Einstellungen speichern will, also einstellige Werte (meistens nur 0 oder 1 evtl. auch mehr). Wie wären die am besten zu speichern? TINYINT oder CHAR(1)? Oder etwas ganz anderes?
3. Indizes: Also ich habe in jeder Tabelle einen PRIMARY KEY id Feld. Jetzt gibt es aber noch anderen Möglichkeiten für weitere INDEX Felder. Z.B. sind alle Fotokommentare mit der dazugehörigen Bild-ID in einer Tabelle gespeichert, also wäre es ja gut, wenn dieses Bild-ID Feld auch einen INDEX bekommt, weil ja eigentlich nur so auf die Tabelle zugegriffen wird. Jetzt haben ich irgendwo mal etwas von 1. Index 2. Index etc. gelesen. Haben mehrere Indizes also verschiedene Prioritäten, so dass ich mir da auch Gedanken zu machen muss oder ist das egal?
So, ich denke, das wars fürs erste :-)
MfG
Tobi
Kommentar