Question

J'essaie de faire preuve de discernement lors de la mise en oeuvre d'une base de données SQL Server '08 de petite taille.

Je traduis un fichier texte de sortie d'une base de données à fichier plat à partir d'un ancien système COBOL vers la base de données SQL Server susmentionnée. Il s'agit d'une base de données de prêts automobiles et immobiliers, qui peut être identifiée de manière unique par la combinaison d'un numéro d'identification de prêteur (un numéro à sept chiffres), d'un numéro de compte bancaire (15 chiffres) et d'un "suffixe de compte". (deux chiffres).

J'avoue que je suis assez naïf en matière d'administration de base de données (pour être honnête, je ne l'ai pas vraiment fait jusqu'à mon poste actuel) et j'essaie de déterminer laquelle des deux approches est la meilleure option. pour implémenter une clé qui indexera dans plusieurs autres tables:

1) Identifiez chaque prêt à l'aide d'une clé à trois colonnes contenant les valeurs ci-dessus, ou
2) dénormaliser les données en implémentant une "clé" colonne qui est une chaîne de 24 caractères combinant les trois valeurs.

La dénormalisation est laide, certes, mais je ne peux pas anticiper les anomalies de mise à jour, car les prêts ne peuvent pas être échangés entre banques ni changer de suffixe. Un changement dans ces valeurs est garanti pour être un compte différent.

Une clé composée est plus élégante, mais j’ai lu quelques traités suggérant que c’est une mauvaise chose.

Alors, quelle option est susceptible de constituer un meilleur choix et, plus important encore, pourquoi?

Était-ce utile?

La solution

J'utiliserais une clé de substitution générée automatiquement, puis un index unique sur la clé naturelle. Ainsi, si la clé naturelle change (et si une banque a été rachetée par une autre banque), il suffit de changer à un endroit. La chose la plus importante dans l’utilisation d’une clé de substitution est d’assurer l’unicité de la clé naturelle si l’on veut exister et que l’index unique le fera.

Autres conseils

S'il s'agit de données de référence qui ne seront pas mises à jour souvent, l'utilisation de la clé en plusieurs parties devrait suffire.

S'il s'agit de données transactionnelles à fort trafic, ajoutez une clé de substitution (identité int, clé primaire en cluster) et transformez la clé en trois parties en une clé alternative.

Je ne suggérerais absolument pas la mise en œuvre de l'option 2.

Je suggérerais simplement d’utiliser une clé de substitution numérique à incrémentation automatique. Pourquoi faudrait-il que ce soit un mashup des trois autres "clés"? colonnes?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top