Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Wie man ein varchar automatisch inkrementiert

  1. Die Idee beim Datenbankdesign besteht darin, jedes Datenelement getrennt zu halten. Und jedes Element hat seinen eigenen Datentyp, Einschränkungen und Regeln. Das c0002 ist nicht ein Feld, sondern zwei. Dasselbe gilt für XXXnnn oder Wasauchimmer. Es ist falsch , und es wird Ihre Fähigkeit, die Daten zu verwenden und Datenbankfunktionen und -einrichtungen zu nutzen, stark einschränken.

    Teilen Sie es in zwei separate Datenelemente auf:
    column_1 CHAR(1)
    column_2 INTEGER

    Setzen Sie dann AUTOINCREMENT auf column_2

    Und ja, Ihr Primärschlüssel kann (column_1, column_2) sein , Sie haben also keine Bedeutung verloren c0002 hat für Sie.

  2. Platzieren Sie niemals Lieferanten und Kunden (was auch immer "c" und "s" bedeutet) in derselben Tabelle. Wenn Sie das tun, haben Sie keine Datenbanktabelle, sondern eine flache Datei. Und verschiedene Probleme und Einschränkungen, die daraus resultieren.

    Das heißt, normalisieren Sie die Daten. Am Ende erhalten Sie:

    • eine Tabelle für Person oder Organisation mit den gemeinsamen Daten (Name, Address ...)
    • eine Tabelle für Customer mit kundenspezifischen Daten (CreditLimit ...)
    • eine Tabelle für Supplier mit lieferantenspezifischen Daten (PaymentTerms ...)
    • keine mehrdeutigen oder optionalen Spalten, daher keine Nullen
    • keine Nutzungsbeschränkungen oder SQL-Funktionen
      .

    Und wenn Sie Spalten hinzufügen müssen, tun Sie dies nur dort, wo es erforderlich ist, ohne dass sich dies auf alle anderen Prozesse der Flatfile auswirkt. Der Wirkungsbereich ist auf den Umfang der Änderung beschränkt.