La plupart des moteurs utilisés (MS SQL Server, Oracle, DB2, MySQL, etc.) ne serait pas l'expérience de problèmes notables à l'aide d'une clé de substitution du système. Certains peuvent même l'expérience d'un boost de performance de l'utilisation d'un substitut, mais les problèmes de performances sont très spécifiques à la plateforme.
En termes généraux, la clé naturelle (et, par extension, clé composite), versets clé de substitution débat a une longue histoire avec pas susceptible de "droit de réponse" en vue.
Les arguments en faveur des clés naturelles (singulier ou composite), généralement inclure certains des éléments suivants:
1) Ils sont déjà disponibles dans le modèle de données. La plupart des entités à modéliser déjà inclure un ou plusieurs des attributs ou des combinaisons d'attributs qui répondent aux besoins d'une clé pour les fins de la création de relations. L'ajout d'un attribut supplémentaire pour chaque table comprend une redondance inutile.
2) Ils éliminent le besoin de certains jointures. Par exemple, si vous avez des clients avec les codes, et les factures avec les numéros de facture (qui sont "naturelles" clés), et vous souhaitez récupérer tous les numéros de facture pour un client spécifique, le code, vous pouvez simplement utiliser "SELECT InvoiceNumber FROM Invoice WHERE CustomerCode = 'XYZ123'"
. Dans le classique de la clé de substitution approche, le SQL ressemblerait à quelque chose comme ceci: "SELECT Invoice.InvoiceNumber FROM Invoice INNER JOIN Customer ON Invoice.CustomerID = Customer.CustomerID WHERE Customer.CustomerCode = 'XYZ123'"
.
3) Ils contribuent à une plus universellement applicable approche de modélisation de données. Avec des clés naturelles, le même modèle peut être utilisé en grande partie inchangée entre les différents moteurs SQL. Beaucoup de clé de substitution approches utilisation spécifique du moteur SQL techniques pour la génération de clés, ce qui exige plus de spécialisation du modèle de données à mettre en œuvre sur différentes plates-formes.
Des Arguments pour les clés de substitution ont tendance à tourner autour de questions qui sont le moteur SQL spécifiques:
1) Ils permettent de faciliter les modifications apportées aux attributs lorsque les exigences d'affaires/changement des règles. C'est parce qu'ils permettent les données d'attributs pour être isolé dans une seule table. C'est principalement un problème pour SQL moteurs qui ne sont pas à mettre efficacement en œuvre le standard SQL constructions, tels que les Domaines. Lorsqu'un attribut est défini par un DOMAINE de déclaration, de modifications à l'attribut peut être effectuée schéma à l'échelle à l'aide d'un ALTER DOMAINE de l'instruction. Différents SQL moteurs ont différentes caractéristiques de performance pour la modification d'un domaine, et certains SQL moteurs de ne pas mettre en œuvre les DOMAINES à tous, de sorte que les données modeleurs compenser ces situations par l'ajout de clés de substitution pour améliorer la capacité à effectuer des changements d'attributs.
2) Ils permettent plus facilement mises en œuvre de simultanéité que des clés naturelles. Dans la clé naturelle cas, si deux utilisateurs travaillent simultanément avec la même information, comme un client de ligne, et l'un des utilisateurs modifie le naturel de la valeur de la clé, puis une mise à jour par le deuxième utilisateur échoue parce que le code qu'ils sont à jour n'existe plus dans la base de données. Dans la clé de substitution cas, la mise à jour du processus avec succès immuable parce que les valeurs d'ID sont utilisés pour identifier les lignes dans la base de données, pas mutable codes du client. Cependant, il n'est pas toujours souhaitable pour permettre à la deuxième mise à jour – si le code client changé, il est possible que le second utilisateur ne doit pas être autorisé à procéder à leur changement, car la véritable "identité" de la ligne a changé – le second utilisateur peut être mise à jour de la mauvaise ligne. Ni les clés de substitution, ni les clefs naturelles, par eux-mêmes, régler ce problème. Complet de la simultanéité des solutions doivent être traités en dehors de la mise en œuvre de la clé.
3) Ils fonctionnent mieux que les clefs naturelles. Le rendement est le plus directement touchés par le moteur SQL. Le même schéma de base de données mis en œuvre sur le même matériel à l'aide de différents SQL moteurs ont souvent radicalement différentes caractéristiques de performance, en raison de la SQL moteurs de stockage de données et de mécanismes de repérage. Certains moteurs SQL rapproche de plate-systèmes de fichiers, où les données sont stockées de manière redondante lorsque le même attribut, tel qu'un Code Client, apparaît à plusieurs endroits dans le schéma de base de données. Cette redondance de stockage par le moteur SQL peut causer des problèmes de performance lorsque des modifications doivent être apportées aux données ou de schéma. D'autres SQL moteurs de fournir une meilleure séparation entre le modèle de données et le stockage/système de récupération de données, permettant rapidement les changements de données et le schéma.
4) les clés de Substitution à mieux fonctionner avec certaines bibliothèques d'accès aux données et de l'interface graphique de cadres. En raison de la nature homogène de plus de clé de substitution de modèles (exemple: tous les relationnel clés sont des nombres entiers), les bibliothèques d'accès aux données, Formulaires, et GUI cadres peuvent travailler avec les données sans avoir besoin de connaissances particulières de données. Les clefs naturelles, en raison de leur nature hétérogène (les différents types de données, la taille, etc.), ne fonctionne pas aussi bien avec automatisés ou semi-automatisés outils et de bibliothèques. Spécialisé scénarios, comme embedded SQL, bases de données, la conception de la base de données avec une trousse d'outils à l'esprit, peuvent être acceptables. Dans d'autres scénarios, les bases de données sont de l'information d'entreprise des ressources, accessible simultanément par plusieurs plates-formes, applications, rapport de systèmes et de dispositifs, et donc ne fonctionnent pas aussi bien quand conçu avec un focus sur une bibliothèque ou un cadre. En outre, les bases de données conçu pour fonctionner avec les boîtes à outils de devenir un passif lors de la prochaine grande trousse est introduit.
J'ai tendance à tomber sur le côté naturel de touches (évidemment), mais je ne suis pas fanatique à ce sujet. En raison de l'environnement où je travaille, où tous les base de données que je aider à la conception peuvent être utilisés par une variété d'applications, j'utilise des clés naturelles pour la majorité de la modélisation de données, et rarement introduire des mères porteuses. Cependant, je ne sors pas de ma façon d'essayer de re-mettre en œuvre des bases de données existantes qui utilisent des substituts. La mère porteuse-clés systèmes fonctionnent très bien – pas besoin de changer quelque chose qui fonctionne déjà bien.
Il ya quelques excellentes ressources en discutant les avantages de chaque approche:
http://www.google.com/search?q=natural++clé de substitution+clé
http://www.agiledata.org/essays/keys.html
http://www.informationweek.com/news/software/bi/201806814