Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Comment auto-incrémenter un varchar

  1. L'idée dans la conception de bases de données est de garder chaque élément de données séparé. Et chaque élément a son propre type de données, ses contraintes et ses règles. Ce c0002 n'est pas un champ, mais deux. Idem avec XXXnnn ou peu importe. C'est incorrect et cela limitera considérablement votre capacité à utiliser les données et à utiliser les fonctionnalités et les installations de la base de données.

    Divisez-le en deux éléments de données discrets :
    column_1 CHAR(1)
    column_2 INTEGER

    Ensuite, définissez AUTOINCREMENT sur column_2

    Et oui, votre clé primaire peut être (column_1, column_2) , donc vous n'avez rien perdu du sens c0002 a pour vous.

  2. Ne placez jamais les fournisseurs et les clients (quelle que soit la signification de "c" et "s") dans le même tableau. Si vous faites cela, vous n'aurez pas de table de base de données, vous aurez un fichier plat. Et divers problèmes et limitations qui en découlent.

    Cela signifie, normaliser les données. Vous obtiendrez :

    • une table pour Person ou Organisation contenant les données communes (Name, Address ...)
    • une table pour Customer contenant des données spécifiques au client (CreditLimit ...)
    • une table pour Supplier contenant des données spécifiques au fournisseur (PaymentTerms ...)
    • pas de colonnes ambiguës ou facultatives, donc pas de valeurs nulles
    • aucune limitation d'utilisation ou de fonctions SQL
      .

    Et lorsque vous avez besoin d'ajouter des colonnes, vous ne le faites que là où c'est nécessaire, sans affecter toutes les autres suites du fichier plat. La portée de l'effet est limitée à la portée du changement.