Vergabe des Primary Keys



  • Ist es eher zu Empfehlen den Primary Key einer Datenbank-Tabelle vom Programm oder von der datenbank generieren zu lassen?



  • Hallo,

    von der Datenbank, wenn möglich. Du meinst aber eher festlegen, oder?



  • schrankwand schrieb:

    Ist es eher zu Empfehlen den Primary Key einer Datenbank-Tabelle vom Programm oder von der datenbank generieren zu lassen?

    vom dbms. gut ist z.b. ein longint, natürlich auto-increment



  • Dachte ich mir schon, aber in meiner Datenbank (MS Access), beginnen automatische fortlaufene Werte immer bei 1 und können nicht manipuliert werden. Und das ist sofern ein Problem da ich eine Software für ein Kleinunternehmen entwickel, welches bis jetzt keine Datenbank hat, jedoch fortlaufene Nummern für jede Rechnung, Angebot, Lieferschein etc. vergeben hat, die jetzt nicht wieder bei 1 anfangen sollen.



  • Hallo,

    man kann ja auch einen aus mehreren Werten zusammgesetzt PK festlegen. Außerdem ist es äußerst ungünstig, wenn du 200 Tabellen hast, die alle die gleiche Nummerierung haben. Kann man zwar machen, find ich aber äußerst unschön.



  • schrankwand schrieb:

    Dachte ich mir schon, aber in meiner Datenbank (MS Access), beginnen automatische fortlaufene Werte immer bei 1 und können nicht manipuliert werden. Und das ist sofern ein Problem da ich eine Software für ein Kleinunternehmen entwickel, welches bis jetzt keine Datenbank hat, jedoch fortlaufene Nummern für jede Rechnung, Angebot, Lieferschein etc. vergeben hat, die jetzt nicht wieder bei 1 anfangen sollen.

    die rechnungsnummer müsstest du schon anderweitig generieren (z.b. neue_rechnungsnummer = höchste_rechnungsnummer +1, mit sql geht sowas ganz gut). primary keys sind eigentlich nur dazu da, dass sich die records eindeutig unterscheiden und für beziehungen zu anderen tabellen.



  • Also wenn ich in einer Tabelle in meiner Access-db ein primary-Key festlege und ihn als Auto-Wert des Typs long integer mit fortlaufendem Wert festlege, bekommt ein neuer Datensatz (bzw. eine neue Rechnung) auch automatisch eine Nummer die um 1 höher ist als die der vorigen Rechnung. Nur sollte der Auto-Wert nich bei 1 sondern bei ca. 800 anfangen zu zählen.



  • schrankwand schrieb:

    Nur sollte der Auto-Wert nich bei 1 sondern bei ca. 800 anfangen zu zählen.

    da gibts mehrere möglichkeiten
    1. man gibt im select statement schon an, dass 800 dazugezählt wird
    2. man holt sich den wert unverändert und das programm addiert für die ausgabe 800 dazu
    3. man hat ein dbms, dass auto-increment werte ab einem offset hochzählt. aber ich glaube sowas ist selten


Log in to reply