Clef de remplacement

Une clef de substitut de dans une base de données est une marque unique pour une entité de dans le monde modelé ou un objet de dans la base de données. La clef de remplacement est le pas dérivé des données d'application.

Définition

Il semblent y avoir deux définitions d'un substitut dans la littérature. Nous appellerons ces derniers substitut de (1) et substitut de (2) :

; Substitut (1) : Cette définition est basée sur cela donnée par Hall, Owlett et Todd (1976). Ici un substitut représente une entité de dans le monde extérieur. Le substitut est intérieurement produit par le système mais est néanmoins évident par l'utilisateur ou l'application. ; Substitut (2) : Cette définition est basée sur cela donnée par Wieringa et de Jung (1991). Ici un substitut représente un objet dans la base de données lui-même de . Le substitut est intérieurement produit par le système et est invisible à l'utilisateur ou à l'application.

Nous adopterons la définition du substitut de (1) dans tout cet article en grande partie parce que c'est plus de modèle de données plutôt que le modèle de stockage de orienté.

Une distinction importante existe entre un substitut et une clé primaire, selon si la base de données est une base de données courante ou une base de données temporelle . Une base de données courante de stocke seulement des données valides du actuellement , donc il y a une correspondance linéaire entre un substitut dans le monde modelé et la clé primaire d'un certain objet dans la base de données ; dans ce cas-ci le substitut peut être employé comme clé primaire, ayant pour résultat la clef de substitut de de limite. Cependant, dans une base de données temporelle il y a d'a beaucoup--un au rapport entre les clés primaires et le substitut. Puisqu'il peut y avoir plusieurs objets dans la base de données correspondant à un substitut simple, nous ne pouvons pas employer le substitut comme clé primaire ; un autre attribut est exigé, en plus du substitut, pour identifier uniquement chaque objet.

Bien que Hall et alia (1976) ne disent rien à ce sujet, le d'autres auteurs de ont argué du fait qu'un substitut devrait avoir les contraintes suivantes :
le

la valeur unique, par conséquent jamais n'est au niveau système réutilisé ;
la valeur est générée par le système ;
la valeur n'est pas manipulable par l'utilisateur ou l'application ;
la valeur ne contient aucune signification sémantique ;
la valeur n'est pas évidente à l'utilisateur ou à l'application ;
la valeur ne se compose pas de plusieurs valeurs de différents domaines.

Substituts dans la pratique

Dans une base de données courante , le principal de remplacement est la clé primaire , produite par le système de gestion de base de données et le pas dérivé de n'importe quelles données d'application dans la base de données. La seule signification de la clef de remplacement est d'agir en tant que clé primaire.

Une clef de remplacement est fréquemment un nombre séquentiel (un " de serveur par exemple de Sybase ou de SQL ; column" d'identité ; ou un Oracle SEQUENCE ou une colonne définie avec AUTO_INCREMENT dans le MySQL ) mais ne doit pas être. Avoir l'indépendant de clef de toutes autres colonnes isole les rapports de base de données des changements des valeurs de données ou de la conception de base de données (faisant à votre base de données plus agile) et garantit l'unicité.

Dans une base de données temporelle , il est nécessaire de distinguer la clef de remplacement et la clé primaire . Typiquement, chaque rangée aurait une clé primaire et une clef de remplacement. La clé primaire identifie la rangée unique dans la base de données, la clef de remplacement identifie l'entité unique dans le monde modelé ; ces deux clefs ne sont pas identiques. Par exemple, le personnel table peut contenir deux rangées pour le " ; John Smith" ; , une rangée quand il a été employé entre 1990 et 1999, une autre rangée quand il a été employé entre 2001 et 2006. La clef de remplacement est identique (non-unique) dans les deux rangées cependant que le de clé primaire sera unique.

Quelques concepteurs de base de données emploient des clefs de remplacement religieusement indépendamment de la convenance d'autres clefs de candidat tandis que d'autres emploieront une clef déjà dans les données, s'il y a d'une.

Un substitut de peut également s'appeler l'a
clef de remplacement de

,
marque d'entité,
clef générée par le système,
numéro de séquence de base de données,
clef synthétique,
clef technique, ou
marque unique arbitraire.

Certaines de ces limites décrivent la manière du produisant de nouvelles valeurs de remplacement de plutôt que la nature de du concept de remplacement.

Voici quelques candidats possibles pour produire des substituts :
marques universellement uniques (UUIDs)
Marques uniques (GUIDs) de globalement -
Marques (OIDs) d'objet de
Colonne d'identité du serveur Sybase ou de SQL
Oracle SEQUENCE
Publication périodique de PostgreSQL
MySQL AUTO_INCREMENT
Les données d'AutoNumber saisissent le Microsoft Access

Avantages des clefs de remplacement

Immuabilité

Les clefs de remplacement ne changent pas tandis que la rangée existe. Ceci a deux avantages :
Les applications de base de données de

ne perdront pas leur " ; handle" ; sur la rangée parce que les données changent ;
Beaucoup de systèmes de base de données ne soutiennent pas les mises à jour de cascade des clefs à travers les clefs étrangères des tables relatives. Ceci a comme conséquence la difficulté en modifiant les données de clé primaire.

Exécution

Des clefs souvent de remplacement se composent de type de données compact, tel que des nombres entiers de quatre octets. Ceci permet à la base de données de questionner plus rapidement qu'il pourrait les colonnes multiples.

Compatibilité

Plusieurs systèmes de développement d'applications de base de données, conducteurs, et systèmes de cartographie Objet-apparentés du , tels que le rubis de sur les rails ou Hibernate (Java) , dépendent de l'utilisation du nombre entier ou des clefs de remplacement de GUID afin de soutenir des opérations et la cartographie base de données-système-agnostiques d'objet-à-rangée.

Inconvénients des clefs de remplacement

Dissassociation

Puisque la clef de remplacement est complètement indépendante des données de la rangée à laquelle elle est attachée, la clef est dissociée avec cette rangée. Les clefs dissociées sont artificielles au monde de l'application, ayant pour résultat un niveau d'adressage indirect additionnel duquel pour auditer.

Optimisation de question

Les bases de données relationnelles supposent qu'un index unique est appliqué à la clé primaire d'une table. L'index unique atteint deux objectifs : 1) pour imposer des données principales intégrité-primaires d'entité doit être unique à travers rangée-et 2) pour rechercher rapidement des rangées questionnées. Puisque les clefs de remplacement remplacent l'identification d'une table attribue-le la clef normale - et puisque les attributs de identification sont probables pour être ceux questionnés, puis l'optimiseur de question est forcée d'exécuter un plein balayage de table en accomplissant des questions probables. Le remède au plein balayage de table est d'appliquer l'index (non-unique) d'a sur chacun des attributs de identification. Cependant, ces index additionnels prendront l'espace disque, ralentiront des insertions, et ralentiront des suppressions.

Normalisation

La présence d'une clef de remplacement peut avoir comme conséquence l'administrateur de base de données oubliant d'établir, ou d'enlever accidentellement, un index unique secondaire sur la clef normale de la table. Sans index unique sur la clef normale, les rangées doubles sont susceptibles d'apparaître et sont difficiles à identifier.

Modélisation de processus d'affaires

Puisque les clefs de remplacement sont artificielles, les pailles peuvent apparaître en modelant les conditions d'affaires. Des conditions d'affaires, se fondant sur la clef normale, doivent alors être traduites à la clef de remplacement.

Révélation négligente

L'information de propriété industrielle peut être coulée si des générateurs principaux séquentiels sont utilisés. En soustrayant une clef séquentielle précédemment produite d'une clef séquentielle récemment produite, on a pu apprendre le nombre de rangées insérées au cours de cette période de temps. Ceci a pu exposer, par exemple, le nombre de transactions ou de nouveaux comptes par période. La solution au problème de révélation négligente est de produire d'une clé primaire aléatoire. Cependant, une clé primaire aléatoirement produite doit être questionnée avant qu'assigné pour empêcher la duplication et pour causer un rejet d'insertion.

Prétentions négligentes

Les clefs de remplacement séquentiellement produites créent l'illusion que les événements avec une valeur plus élevée de clé primaire se sont produits après des événements avec une valeur plus basse de clé primaire. Cette illusion apparaîtrait quand un événement est manqué pendant le processus normal de saisie de données et est au lieu de cela inséré après que des événements suivants aient été précédemment insérés. La solution au problème négligent de prétention est de produire d'une clé primaire aléatoire. Cependant, une clé primaire aléatoirement produite doit être questionnée avant qu'assigné pour empêcher la duplication et pour causer un rejet d'insertion.

Voir également

Clef normale
Marque d'objet de

.

Random links:International baptiste de camaraderie de bible | Jean-Luc Nancy | Louis Bamberger | Rickie D. Moore | Kempten im Allgäu | Llave_sustituta