1. Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm
    Information ausblenden

Automatisches Inkrementieren der ID

Dieses Thema im Forum "Datenmodellierung, Datenbank-Design" wurde erstellt von cece90, 12 Januar 2015.

  1. cece90

    cece90 Benutzer

    Hallo,
    ich bin neu hier und noch ein ziemlicher Anfänger, was Datenbanken angeht. Ich habe eine Frage, zu der ich im Internet leider noch keine direkte Antwort gefunden habe.
    Und zwar möchte ich eine Datenbank mit eine Anwendung entwerfen, die darauf zugreifen kann und entsprechend neue Einträge in der Datenbank anlegen kann.
    Nun Frage ich mich, wenn diese Anwendung bspw. einen neuen Kunden anlegt, dann soll die ID-Vergabe ja nicht vom Benutzer vorgenommen werden, sondern von der Anwendung. Bei MySQL ist beispielsweise über ein Autoincrement möglich, die ID automatisch zu inkrementieren.
    Ist dies nicht eigentlich IMMER (also in JEDER Tabelle) sinnvoll und wird so auch in der Praxis gehandhabt, oder kann man teilweise Probleme bekommen, wenn man die ID immer automatisch inkrementieren lässt?


    Vielen Dank schon einmal für eure Antworten!
     
  2. akretschmer

    akretschmer Datenbank-Guru

    Es ist üblich und praktisch, einen Primary Key zu haben - dazu dient oft solch ein automatisch generierter Wert. Das geht bei MySQL wie Dir bekannt, bei PostgreSQL z.B. über Sequencen (die noch etwas mehr können als MySQL). Probleme gibt es dabei eigentlich erst, wenn der Wertebereich überläuft.
     
  3. cece90

    cece90 Benutzer

    Vielen Dank für deine Antwort akretschmer!
    Okay, mich hat einfach gewundert, dass beispielsweise bei Oracle bis Version 11g scheinbar kein Autoincrement möglich ist. Bis zu dem Zeitpunkt musste man in einer Oracle-Datenbank scheinbar für jede Tabelle also eine eigene Sequence erstellen, damit man einen Autoincrement bekommt. Warum dort nicht schon früher wie bei MySQL die Möglichkeit gegeben war, verstehe ich nicht so ganz. Hast du dafür eine Erklärung?
     
  4. akretschmer

    akretschmer Datenbank-Guru

    MySQL ist nun nicht gerade Maßstab, eher nur ein schlechtes Beispiel. Sequencen sind erheblich praktischer und vielseitiger als das, was man bei MySQL da improvisiert hat. Glaub mir.
     
  5. ukulele

    ukulele Datenbank-Guru

    Oder beim Zusammenführen von zwei Datenbeständen unter Beibehaltung der IDs. Das wäre mit einer GUID z.B. nicht so.
     
  6. cece90

    cece90 Benutzer

    Damit ich jetzt also nichts falsch verstanden habe:
    es wird also (in der Regel) so gehandhabt, für jede Tabelle eine eigene Sequence erstellt wird, die die jeweilige ID einer Tabelle inkrementiert?
     
  7. akretschmer

    akretschmer Datenbank-Guru

    Zumindest in PostgreSQL geht das impliziet, wenn man beim create table sagt: 'id serial', durch den Datentyp serial wird impliziet eine Sequence angelegt. Du kannst aber auch eine Sequence anlegen und darauf verweisen, und Du kannst auf eine Sequence von mehreren Tabellen aus verweisen - das geht z.B. in MySQL nicht.
     
    Walter gefällt das.
  8. cece90

    cece90 Benutzer

    Okay, vielen Dank für deine schnelle Hilfe!
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden