Quelle est la différence entre la clé primaire et la clé Unique?

j'ai essayé de la trouver sur google mais pas de réponse satisfaisante n'est donnée. Quelqu'un peut-il expliquer le solide différence.

en fait, si la clé primaire est utilisée pour sélectionner les données de façon unique, Quel est le besoin de la clé Unique?

quand utiliser une clé primaire et quand utiliser une clé Unique?

24
demandé sur a_horse_with_no_name 2010-06-04 14:52:50

11 réponses

clé primaire et clé Unique sont utilisés pour différentes choses - comprendre ce qu'ils sont pour vous aider à décider quand les utiliser.

la clé primaire est utilisée pour identifier une rangée de données dans un tableau. Il est utilisé chaque fois que vous avez besoin de se référer à une rangée particulière, par exemple. dans d'autres tableaux ou par code d'application etc. Pour identifier une rangée, les valeurs D'un PK doivent être uniques. De plus, elles ne peuvent pas être nulles, car la plupart des SGBD traitent nulles comme n'étant pas égales à nulles (puisque nulles signifie généralement "inconnu"). Une table ne peut avoir qu'un PK. Toutes les tables de votre base de données devraient avoir un PK (bien que cela ne soit pas appliqué par la plupart des SGBD), et PK peut s'étendre sur plusieurs colonnes.

des contraintes Clés uniques sont utilisées pour s'assurer que les données ne sont pas dupliquées en deux lignes dans la base de données. Une rangée dans la base de données est autorisée à avoir null pour la valeur de la contrainte clé unique. Bien qu'une table devrait avoir un PK, il n'a pas besoin d'avoir des Clés uniques supplémentaires. Cependant, les tableaux peut avoir plus d'une clé unique si qui répond à vos besoins. Comme PKs, les clés uniques peuvent couvrir plusieurs colonnes.

il est également intéressant de savoir que, par défaut, de nombreux dbms index et physiquement commander des tables sur le disque en utilisant le PK. Cela signifie que la recherche de valeurs par leur PK est plus rapide que l'utilisation d'autres valeurs dans une rangée. Généralement, cependant, vous pouvez outrepasser ce comportement si nécessaire.

33
répondu Kramii 2015-05-20 14:32:37

l'expression" clé unique " est à la fois ambiguë et tautologique. Dans le modèle relationnel, une "clé" signifie une clé candidate, qui par définition est unique de toute façon. Une clé primaire est juste n'importe laquelle des clés candidates d'une relation. Donc "clé unique" signifie exactement la même chose que "clé candidate de" qui veut dire exactement la même chose que "clé primaire". Il n'y a pas de différence.

cependant, SQL a quelque chose appelé une contrainte UNIQUE qui est subtilement différent D'une clé primaire SQL contrainte - les deux font respecter l'unicité, mais la clé primaire ne peut être utilisée qu'une fois par table. Les contraintes uniques permettent également les nulls, alors que les contraintes clés primaires ne le permettent pas.

ainsi, le terme" clé unique", qui prête à confusion, est le plus souvent utilisé pour désigner une clé imposée par une contrainte UNIQUE. Il pourrait même être utilisé pour signifier une contrainte UNIQUE sur les colonnes nullables, bien que ce soit une utilisation très douteuse du terme à mon avis parce qu'un ensemble de colonnes qui comprennent nulls ne peut pas être un candidat la clé ainsi l'utilisation du mot "clé" pour les colonnes nullables n'est pas vraiment correcte et est liée à causer la confusion.

11
répondu sqlvogel 2010-06-04 18:32:24

avant de discuter de la différence entre la clé primaire et la clé Unique, il est important de déterminer ce qui est la clé, comment elle joue un rôle dans les affaires et comment elle est mise en œuvre dans SQL / Oracle, etc.

selon les perspectives d'affaires: Pour une organisation ou une entreprise, il y a tant d'entités physiques (comme des personnes, des ressources, des machines, etc.) et les entités virtuelles (leurs tâches, transactions, activités). Habituellement, les entreprises doivent enregistrer et traiter l'information pour ces entités commerciales. Ces entités commerciales sont identifiées par une clé dans l'ensemble du domaine d'activité.

selon la prospective RDBMS: Clé (A. K. une clé Candidate), une valeur ou un ensemble de valeurs qui identifie l'entité de façon unique. Pour une table Db, il y a tellement de clés existent et pourraient être éligibles pour la clé primaire. Afin que toutes les clés, la clé primaire, la clé unique, etc sont collectivement appelés comme la clé Candidate.

pour un tableau DBA clé Candidate sélectionnée est appelée clé primaire, les autres clés candidates sont appelées clés secondaires.

différence entre la clé primaire et la clé Unique

"

1. Comportement: la clé primaire est utilisée pour identifier une ligne (Enregistrement) dans une table alors que la clé Unique est pour empêcher les valeurs dupliquées dans une colonne.

2. Indexation: par défaut Sql-engine crée L'Index groupé sur la clé primaire si non existe et Index Non ordonné en Clusters sur l'Unique clé.

3. Nullabilité: la clé primaire n'inclut pas les valeurs nulles, contrairement à la clé Unique.

4. Existence: une table peut avoir au plus une clé primaire mais peut avoir plusieurs Unique-clé.

5. Modifiabilité: vous ne pouvez pas changer ou supprimer les valeurs primaires mais Unique-valeurs clés peuvent.

pour plus d'informations avec des exemples: http://dotnetauthorities.blogspot.in/2013/11/Microsoft-SQL-Server-Training-Online-Learning-Classes-Integrity-Constraints-PrimaryKey-Unique-Key_27.html

8
répondu nayeemDotNetAuthorities 2014-01-10 06:33:56

Une clé primaire est une clé unique. Les deux types de clés servent à identifier de façon unique une seule rangée dans une table. De nombreux RDBMSs exigent que l'une des Clés uniques d'une table soit désignée comme la "clé primaire", pour plusieurs raisons de mise en œuvre différentes. En termes d'intégrité des données, il n'y a pas de différence.

4
répondu Christian Hayter 2010-06-04 10:56:42

une clé primaire ne permet pas les null, Une clé unique permettra un null (sur le serveur sql et plusieurs NULL sur Oracle)) Une table ne peut avoir qu'une seule clé primaire mais plusieurs clés uniques

utilisez les clés primaires lorsque vous voulez établir des relations avec des clés étrangères

voici un petit exemple avec seulement une colonne dans chaque tableau

--primary key table
CREATE TABLE PrimaryTest (id INT PRIMARY KEY NOT NULL)
GO

-- foreign key table
CREATE TABLE ForeignTest (Pkid INT NOT NULL)
GO


--relationship
ALTER TABLE dbo.ForeignTest ADD CONSTRAINT
    FK_ForeignTest_PrimaryTest FOREIGN KEY
    (
    Pkid
    ) REFERENCES dbo.PrimaryTest
    (
    id
    ) ON UPDATE  NO ACTION 
     ON DELETE  NO ACTION 

GO

insérer une ligne dans le tableau des clés primaires

insert PrimaryTest values(1)

insérer un ligne dans la table clé étrangère avec une valeur qui existe dans la table clé primaire

insert ForeignTest values(1)

maintenant cela va échouer parce que la valeur 2 n'existe pas dans la table de la clé primaire

insert ForeignTest values(2)

Msg 547, Niveau 16, État 0, Ligne 1 La déclaration INSERT est en conflit avec la contrainte de clé étrangère "FK_ForeignTest_PrimaryTest". Le conflit est survenu dans la base de données "aspnetdb", table "dbo.PrimaryTest", colonne "id". La déclaration a été résilié.

4
répondu SQLMenace 2010-06-04 11:07:14

juste pour ajouter un autre exemple:

pensez à une table contenant des données utilisateur, où chaque utilisateur a une adresse e-mail. Aucun utilisateur ne peut avoir la même adresse email, de sorte que la colonne devient une clé unique. Alors qu'elle pourrait être la clé primaire (je n'ai jamais fait une chaîne de clé primaire), il n'a pas à être.

2
répondu Quentamia 2010-06-04 18:38:55

les deux représentent une identification unique à une rangée dans une table, mais il ya peu de différence de bits est que

la clé primaire ne permet pas les valeurs nulles

alors que

La touche

unique ne permet qu'une valeur nulle.

c'est la principale différence ..

2
répondu jaideep 2013-09-17 06:32:48

contrainte principale

1. Une clé primaire ne peut pas permettre null.

2. Les clés primaires multiples ne sont pas autorisées.

3. Sur certains RDBM, une clé primaire génère un index groupé par défaut.

contrainte Unique

1. Une contrainte unique peut être définie sur les colonnes qui permettent les nulls.

2. Plusieurs touches uniques sont autorisés.

3. Sur certains RDBM, une clé unique génère par défaut un index non-clustered.

Source Wikipédia

1
répondu A-patel-guy 2016-01-22 02:50:26

vous pouvez avoir beaucoup de contraintes uniques par tableau, mais seulement une contrainte principale par tableau. Plus d'informations peuvent être trouvées ici

0
répondu Brian Kenya 2014-04-23 09:08:36

non nul signifie qu'aucune entrée dans cette colonne ne doit être nulle. UNIQUE signifie que chaque entrée dans la colonne doit être distincte. Clé primaire signifie que toute entrée dans la colonne doit être distincte et non nulle.

si simple..

  PRIMARY KEY= UNIQUE + NOT NULL
0
répondu Siddappa Walake 2017-12-13 11:54:38

une clé unique sera servie avec une autre clé alors qu'une clé primaire ne sert aucune autre clé avec elle. La clé primaire est utilisée sans aucune association d'autres clés.

-1
répondu RAJA 2015-03-25 02:25:11