Paul: ID oder String als Primary Key

Hallo zusammen

ich habe eine Frage zu Primary Keys (im Allgemeinen und für MySQL).

Das ist das Ziel:

Benutzer können sich auf meiner Seite anmelden und verschiedene Dinge tun, zum Beispiel in einem Forum einen Beitrag schreiben. Der Anmeldename ist unique. Sollte ich nun den Anmeldenamen als Primäschlüssel verwenden oder lieber einen Integer (autoincrement), um die Datensätze (zum Beispiel Benutzer zu Foreneintrag) zu verknüpfen (Fremdschlüssel)... Was ist performanter? Ich habe schonmal ein bisschen getestet, aber keinen Unterschied festgestellt, was evtl. an der geringen Datenmenge lag.

Wie macht Ihr das? Und was spricht für Strings und gegen ID bzw. umgekehrt?

Danke schön und Gruß der Paul

  1. Hi,

    Benutzer können sich auf meiner Seite anmelden und verschiedene Dinge tun, zum Beispiel in einem Forum einen Beitrag schreiben. Der Anmeldename ist unique. Sollte ich nun den Anmeldenamen als Primäschlüssel verwenden oder lieber einen Integer (autoincrement), um die Datensätze (zum Beispiel Benutzer zu Foreneintrag) zu verknüpfen (Fremdschlüssel)... Was ist performanter?

    Zahlen belegen i.d.R. weniger Platz als Strings.

    Wie macht Ihr das? Und was spricht für Strings und gegen ID bzw. umgekehrt?

    Gegenfrage: Warum sollte man es je nach Fall unterschiedlich machen? Als Primärschlüssel wird allenthalben eine nummerische ID verwendet. Dies ist üblich, etabliert, augenscheinlich effizient. Und es darf erwartet werden. Um von diesem allgemeingültigen (fast jede Tabelle hat einen nummerischen PK) Vorgehen abzugehen solltest Du einen guten Grund haben, nicht das Fehlen von Gegenargumenten.

    (Was übrigens impliziert, dass ein textueller PK durchaus sinnvoll sein kann. In aller Regel ist er es aber nicht.)

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. Hallo Cheatah,

      danke für Deine Antwort.

      Der Vorteil den ich sehe(n könnte) wäre:

      Ich muss ohnehin den String (loginnamen) speichern und würde zusätzlich die ID mit aufnehmen. Lediglich als Fremdschüssel würde es weniger Speicherplatz benötigen.

      Ich kenne es ja auch so, dass man einen Integer als PK wählt, habe nun aber einen Vorgesetzten, der es anders sieht (mit genau der oben genannten Begründung). Ein "das macht man aber nicht so" wäre mir zu wenig als Gegenargument und im Moment habe ich nur mein Bauchgefühl

      Gruß
      Paul

      1. yo,

        Ich kenne es ja auch so, dass man einen Integer als PK wählt, habe nun aber einen Vorgesetzten, der es anders sieht (mit genau der oben genannten Begründung). Ein "das macht man aber nicht so" wäre mir zu wenig als Gegenargument und im Moment habe ich nur mein Bauchgefühl

        sprechende schlüssel sind meiner erfahrung nach so gut wie immer problematisch. was passiert den, wenn ein benutzer seinen anmeldenamen ändern will und einen neuen Unique namen auswählt ?

        Ilja