web-dev-qa-db-fra.com

Quelle est la différence entre les contraintes de clé primaire, unique et étrangère et les index?

Quelle est la différence entre primary, unique et foreign key constraints et indexes?

Je travaille sur Oracle 10g et SQL Server 2008

22
Gold

La clé primaire et la clé unique sont des contraintes d'intégrité d'entité

La clé primaire permet à chaque ligne d'une table d'être identifiée de manière unique et garantit qu'aucune ligne en double n'existe et qu'aucune valeur nulle n'est entrée.

Une contrainte de clé unique est utilisée pour empêcher la duplication des valeurs de clé dans les lignes d'une table et autoriser les valeurs nulles. (Dans Oracle, un null n'est pas égal à un autre null).

  • KEY ou INDEX fait référence à un index non unique normal. Des valeurs non distinctes pour l'index sont autorisées, donc l'index peut contenir des lignes avec des valeurs identiques dans toutes les colonnes de l'index. Ces index n'appliquent aucune structure sur vos données, ils ne sont donc utilisés que pour accélérer les requêtes.
  • UNIQUE fait référence à un index où toutes les lignes de l'index doivent être uniques. Autrement dit, la même ligne peut ne pas avoir de valeurs non NULL identiques pour toutes les colonnes de cet index en tant qu'une autre ligne. En plus d'être utilisés pour accélérer les requêtes, les index UNIQUE peuvent être utilisés pour appliquer la structure sur les données, car le système de base de données ne permet pas de rompre cette règle de valeurs distinctes lors de l'insertion ou de la mise à jour des données. Votre système de base de données peut autoriser un index UNIQUE sur les colonnes qui autorisent les valeurs NULL, auquel cas deux lignes peuvent être identiques si elles contiennent toutes les deux une valeur NULL (NULL est considéré comme différent de lui-même), bien que ce ne soit probablement pas souhaitable selon votre application.
  • PRIMARY agit exactement comme un index UNIQUE, sauf qu'il est toujours nommé 'PRIMARY', et qu'il ne peut y en avoir qu'un sur une table (et il devrait toujours y en avoir un; bien que certains systèmes de base de données ne l'imposent pas). Un index PRIMARY est conçu comme un moyen d'identifier de manière unique n'importe quelle ligne de la table, il ne doit donc pas être utilisé sur les colonnes qui autorisent les valeurs NULL. Votre index PRIMARY doit toujours se trouver sur le plus petit nombre de colonnes suffisant pour identifier de manière unique une ligne. Souvent, il s'agit d'une seule colonne contenant un numéro unique incrémenté automatiquement, mais s'il y a autre chose qui peut identifier de manière unique une ligne, comme "countrycode" dans une liste de pays, vous pouvez l'utiliser à la place.
  • Les index FULLTEXT sont différents de tout ce qui précède, et leur comportement diffère davantage entre les systèmes de base de données. Contrairement aux trois ci-dessus, qui sont généralement b-tree (permettant la sélection, le tri ou les plages à partir de la colonne la plus à gauche) ou hash (permettant la sélection à partir de la colonne la plus à gauche), les index FULLTEXT ne sont utiles que pour les recherches de texte intégral effectuées avec le Clause MATCH ()/AGAINST ().

voir Différences entre INDEX, PRIMARY, UNIQUE, FULLTEXT dans MySQL?

25
Nadir SOUALEM

Clé primaire: identifier de manière unique chaque ligne, elle ne peut pas être nulle. il ne peut pas s'agir d'un doublon.

Clé étrangère: créer une relation entre deux tables. peut être nul. peut être un doublon

25
sana

Voici quelques références pour vous:

Contrainte de clé primaire et étrangère.

Clé primaire: une clé primaire est un champ ou une combinaison de champs qui identifient de manière unique un enregistrement dans une table, de sorte qu'un enregistrement individuel puisse être localisé sans confusion.

Clé étrangère: une clé étrangère (parfois appelée clé de référence) est une clé utilisée pour lier deux tables ensemble. En règle générale, vous prenez le champ de clé primaire d'une table et l'insérez dans l'autre table où il devient une clé étrangère (il reste une clé primaire dans la table d'origine).

Index , d'autre part, est un attribut que vous pouvez appliquer sur certaines colonnes afin d'accélérer la récupération des données sur ces colonnes.

7
Graviton

Clé/index: Une clé est un aspect d'une conception de base de données LOGIQUE, un index est un aspect d'une conception de base de données PHYSIQUE. Une clé correspond à une contrainte d'intégrité, un index est une technique d'enregistrement physique de valeurs qui peut être utilement appliquée lors de l'application de ces contraintes.

Primaire/étranger: une clé "primaire" est un ensemble d'attributs dont les valeurs doivent former une combinaison unique dans l'ensemble du tableau. Il peut y avoir plus d'un ensemble (> 1 clé), et le mot "principal" est un vestige des premiers jours où le concepteur a ensuite été contraint de choisir l'une de ces multiples clés comme étant "la plus importante/pertinente" . La raison en était principalement en combinaison avec des clés étrangères:

Comme une clé "primaire", une clé "étrangère" est également un ensemble d'attributs. Les valeurs de ces attributs doivent former une combinaison qui est une valeur de clé primaire existante dans la table référencée. Je ne sais pas exactement à quel point cette règle s'applique toujours dans SQL aujourd'hui. La terminologie est restée de toute façon.

Unique: mot-clé utilisé pour indiquer qu'un index ne peut pas accepter les entrées en double. Les index uniques sont évidemment un excellent moyen d'appliquer les clés primaires. Dans la mesure où le mot "unique" est utilisé dans des contextes de conception LOGIQUE, il est superflu, bâclé, inutile et déroutant. Les clés (c'est-à-dire les clés primaires) sont uniques par définition.

4
Erwin Smout
  1. Une clé primaire est une colonne ou un ensemble de colonnes qui identifient de manière unique une ligne dans une table. Une clé primaire doit être courte, stable et simple. Une clé étrangère est une colonne (ou un ensemble de colonnes) dans une deuxième table dont la valeur est requise pour correspondre à la valeur de la clé primaire dans la table d'origine. Habituellement, une clé étrangère se trouve dans une table différente de la table dont la clé primaire doit correspondre. Une table peut avoir plusieurs clés étrangères.
  2. La clé primaire ne peut pas accepter de valeurs nulles. Les clés étrangères peuvent en accepter plusieurs.
  3. Nous ne pouvons avoir qu'une seule clé primaire dans une table. Nous pouvons avoir plusieurs clés étrangères dans une table.
  4. Par défaut, la clé primaire est un index clusterisé et les données de la table de base de données sont physiquement organisées dans la séquence d'index clusterisé. Les clés étrangères ne créent pas automatiquement un index, en cluster ou non. Vous pouvez créer manuellement un index sur une clé étrangère.
3
Khadija

1) A primary key est un ensemble d'un ou plusieurs attributs qui identifie de manière unique Tuple dans la relation.

2) A foreign key est un ensemble d'attributs d'un schéma de relation qui peut identifier de manière unique des tuples sur un autre schéma de relation.

3
aishwarya g

La clé primaire empêche principalement la duplication et montre l'unicité des colonnes La clé étrangère montre principalement la relation sur deux tables

1
Alex alais