-
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 avecXXXnnn
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 INTEGEREnsuite, définissez AUTOINCREMENT sur
column_2
Et oui, votre clé primaire peut être
(column_1, column_2)
, donc vous n'avez rien perdu du sensc0002
a pour vous. -
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
ouOrganisation
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.
- une table pour