Quelle est la différence entre une clé primaire et une identité?

Dans une base de données SQL Server, Quelle est la différence entre une clé primaire et une colonne D'identité? Une colonne peut être une clé primaire sans être une indentité. Une colonne ne peut cependant pas être une identité sans être une clé primaire.

En plus des différences, qu'est-ce qu'une colonne PK et Identity offre qu'une colonne PK n'offre pas?

Modifier: Oups. Comme indiqué ci-dessous et maintenant vérifié par moi, une colonne peut être une identité sans être un PK. Quand j'ai testé cela, mon type de colonne était une chaîne et je n'ai pas pu la définir sur une identité. Du sens.

55
demandé sur DenaliHardtail 2010-11-27 22:20:21

6 réponses

Une colonne peut certainement être une identité sans être un PK.

Une identité est simplement une colonne auto-croissante.

Une clé primaire est la ou les colonnes uniques qui définissent la ligne.

Ces deux sont souvent utilisés ensemble, mais il n'y a aucune exigence que ce soit le cas.

71
répondu Joe 2010-11-27 19:24:23

Cette réponse est plus de savoir pourquoi identity et primay key que ce qu'ils sont puisque Joe a répondu correctement ci-dessus.

Une identité est une valeur que vous contrôlez SQL. L'identité est une fonction ligne. Il est séquentiel en valeur croissante ou décroissante, au moins dans SQL Server. Il ne doit jamais être modifié et les lacunes dans la valeur doivent être ignorées. Les valeurs d'identité sont très utiles pour lier la table B à la table A car la valeur n'est jamais dupliquée. L'identité n'est pas le meilleur choix pour un index clusterisé dans tous les cas. Si une table contient des données d'audit, l'index en cluster peut être mieux créé à la date à laquelle il s'est produit, car il présentera la réponse à la question "ce qui s'est passé entre aujourd'hui et il y a quatre jours" avec moins de travail car les enregistrements des dates sont séquentiels dans les pages de données.

Une clé primaire rend la ou les colonnes d'une ligne uniques. La clé Primay est une fonction de colonne. Une seule clé primay peut être définie sur n'importe quelle table mais plusieurs index uniques peuvent être créé, qui simule la clé primaire. Le regroupement de la clé primaire n'est pas toujours le bon choix. Considérez un annuaire téléphonique. Si l'annuaire téléphonique est regroupé par la clé primay (numéro de téléphone), la requête pour retourner les numéros de téléphone sur "First Street" sera très coûteuse.

Les règles générales que je suis pour l'identité et la clé primaire sont:

  1. , utilisez Toujours une colonne d'identité
  2. crée l'index en cluster sur la ou les colonnes utilisées dans range recherche
  3. gardez l'index clusterisé étroit puisque l'index clusterisé est ajouté à la fin de chaque autre index
  4. créez une clé primay et des index uniques pour rejeter les valeurs dupliquées
  5. Les touches étroites sont meilleures
  6. crée un index pour chaque colonne ou colonnes utilisées dans les jointures

Ce sont mes règles générales.

11
répondu RC_Cleland 2010-11-28 15:14:00

Une clé primaire (également appelée clé candidate) est un ensemble d'attributs qui ont les propriétés d'unicité et de minimalité. Cela signifie que la ou les colonnes clés sont contraintes d'être uniques. En d'autres termes, le SGBD ne permettra pas à deux lignes d'avoir le même ensemble de valeurs pour ces attributs.

La propriété IDENTITY crée effectivement une valeur par défaut auto-incrémentée pour une colonne. Cette colonne ne doit pas nécessairement être unique, donc une colonne D'identité n'est pas nécessairement une clé.

Cependant, une colonne D'identité est généralement destinée à être utilisée comme clé et, par conséquent, elle a généralement une contrainte d'unicité pour s'assurer que les doublons ne sont pas autorisés.

8
répondu sqlvogel 2010-11-28 11:20:39

MODIFICATIONS EFFECTUÉES EN FONCTION DES COMMENTAIRES

Clé est unique à une ligne. C'est un moyen d'identifier une ligne. Les lignes peuvent avoir aucune, une ou plusieurs clés. Ces clés peuvent être constituées d'une ou plusieurs colonnes.

Les clés

Sont des index avec une contrainte unique. Cela les différencie des index non clés.

Tout index avec plusieurs colonnes est appelé un "index composite".

Traditionnellement, une clé primaire est considérée comme la clé principale qui identifie de manière unique une ligne. Il peut y avoir un seul de ces.

Selon la conception de la table, on peut n'avoir aucune clé primaire.

Une clé primaire est juste cela-une "clé principale". C'est le principal qui spécifie l'identité unique d'une ligne. Selon la conception d'une table, cela peut être un terme impropre et plusieurs clés expriment l'unicité.

Dans SQL Server, une clé primaire peut être mise en cluster. Cela signifie que les colonnes restantes sont attachés à cette clé au niveau de la feuille de l'index. En d'autres termes, une fois que SQL Server a trouvé la clé, il a également trouvé la ligne (pour être clair, c'est à cause de l'aspectclustered ).

Une colonne d'identité est simplement une méthode de génération d'un ID unique pour une ligne.

Ces deux sont souvent utilisés ensemble, mais ce n'est pas une exigence.

1
répondu IamIC 2010-11-30 09:57:57

Clé primaire mettant l'accent sur l'unicité et éviter la valeur de duplication pour tous les enregistrements sur la même colonne, tandis que identity fournit des nombres croissants dans une colonne sans insérer de données. Les deux caractéristiques pourraient être sur une seule colonne ou sur une différence.

0
répondu Shaahin 2015-09-10 07:49:03

Vous pouvez utiliser IDENTITY non seulement avec des entiers, mais aussi avec n'importe quel type de données numériques ayant une échelle de 0

La clé primaire pourrait avoir une échelle mais ce n'est pas nécessaire.

Identité, combinée avec une clé primaire ou une contrainte UNIQUE, vous permet de fournir un identifiant de ligne unique simple

0
répondu Nikki 2017-09-12 06:15:31