En gros : J'ai rien compris à tes tables, donc d'un point de vue "analytique", je ne peux pas te dire si c'est correct, bien que ça me paraîsse étrange.
Par contre, d'un point de vue purement logique, il y a deux énormes incohérences...
=> NUM_ENTREE est la clé primaire de TOUTES les tables. A ce moment, cela veut dire qu'une seule table "maxi-poubelle" peut stocker l'intégralité des informations, ce dont je doute.
=> Chaque "sous-clé" des autres tables sont présentes à la fois dans les tables "mères" et la table "entrée". Logiquement, num_entree n'a donc sa place que dans la table entrée, puisque cette dernière est déjà liée aux tables autour.
D'un point de vue purement analytique, t'as pas très bien détaillé, donc il est possible que je me trompe...
Généralement, on a :
Table CLIENT
Clé : NUMCLI
Table ADRESSE (rue)
Clé : NUMCLI / NUMADR (double clé - tu peux aussi ajouter "TYPADR" pour différencier adresses de livraison, communication et facturation)
FK : NUMCLI
Table PRODUIT
Clé : CODPRO
Table COMMANDE / CONTRAT
Clé : NUMCDE (tu peux aussi faire intervenir NUMCLI dans la clé, ainsi qu'un éventuel TYPCDE si tu gère des commandes/contrats/devis)
FK : NUMCLI / NUMADR (tu peux avoir plusieurs fois ce champ si tu gère plusieurs types d'adresses)
Table LIGNECDE
Clé : NUMCDE / NUMPOS (numéro de la ligne dans la commande)
FK : CODPRO
Pour ce qui est de la clé autoincrément, aucun souci à avoir. Voici par exemple les limitations de SQL Server, la plupart des autres SGBD ont des limitations similaires à ce niveau :
bigint
Integer (whole number) data from -2^63 (-9223372036854775808) through 2^63-1 (9223372036854775807).
int
Integer (whole number) data from -2^31 (-2,147,483,648) through 2^31 - 1 (2,147,483,647).
numeric
Fixed precision and scale numeric data from -10^38 +1 through 10^38 1.
|
Donc, déjà avec un simple type integer t'as de quoi faire... Si t'as peur, t'as toujours bigint, et si vraiment t'es assez parano pour penser que dans 10 000 ans on viendra déterrer ton corps pour te faire corriger un bug, tu peux toujours utiliser un number, il monte jusqu'à 17 bytes (136 bits). Après quelques calculs, si tu tente de référencer chaque atome de l'univers dans la base, t'auras encore de la place pour descendre au niveau des protons
Je pense que ton disque aura fumé d'ici là
Message édité par Arjuna le 07-07-2004 à 21:31:05