2010-03-23 6 views
-1

Quelle est la différence entre une clé primaire et un numéro RRN?Clé primaire vs. RRN

+0

Ce n'est pas, bien sûr. Cette question pourrait utiliser plus de contexte, cependant. –

+0

@Phenom, cela a été répondu dans votre question récente: http: // stackoverflow.com/questions/2497729/records-in-a-file – paxdiablo

+0

La réponse n'est pas aussi claire que celle-ci. – neuromancer

Répondre

2

Une clé primaire identifie de manière unique et non ambiguë un enregistrement donné (dans une table/vue de base de données) ou une ligne donnée (dans un fichier texte). Bien qu'il puisse être pratique que la clé primaire soit basée sur un seul champ (une seule "colonne"), il est également possible qu'un primaire soit basé sur plusieurs champs/colonnes.

RRN est un acronyme qui peut soit être compris comme "enregistrement Row Numéro" ou "Ligne relative Nombre". Le numéro de ligne d'enregistrement est généralement considéré comme un nombre, généralement (mais pas nécessairement) attribué par incrément simple (basé sur la valeur du précédent RRN affecté) qui est "ajouté" aux autres champs/colonnes d'un type d'enregistrement particulier . De nombreux SGBD fournissent des fonctionnalités pour la prise en charge de tels RRN "auto-incrémentés" ou plus généralement attribués automatiquement.

Défini comme ci-dessus, un numéro RRN peut être utilisé comme clé primaire. Il existe de nombreux avantages - et inconvénients - à avoir un RRN [sémantiquement nul] par rapport à une clé primaire basée sur [un ou plusieurs] attributs (champ ou colonne) de l'enregistrement. Ceci est probablement discuté dans une autre question de SO; Voici quelques-uns des arguments les plus courants:

  • Une clé primaire peut être modifiée, un RRN est "immuable".
    Par exemple, si la clé primaire est un numéro de sécurité sociale (SSN), un enregistrement peut à un moment donné être mis à jour car le numéro de sécurité sociale a été saisi à l'origine avec une erreur typographique. Quand/si cela se produit, tous les enregistrements associés qui utilisent ce SSN pour se référer à l'enregistrement mis à jour doivent également être mis à jour. Si ces enregistrements liés utilisaient le RRN [non significatif], ils seraient immunisés contre les changements possibles de la valeur du SSN.
  • Quand il n'y a pas « naturel » clé primaire basée sur une seule colonne, il peut être plus pratique d'utiliser le RRN
  • RRN sont généralement plus courts
  • tableaux et listes connexes qui se réfèrent à des documents originaux au moyen d'un clé primaire non-RRN, en quelque sorte dupliquer les informations sous-jacentes. Cela peut être à la fois un avantage et un inconvénient: on peut connaître la valeur de champ sous-jacente sans avoir à la rechercher dans la table d'origine: bien si vous voulez que la table liée contienne de telles informations, Le numéro de sécurité peut être considéré comme sensible, etc.
  • Les RRN sont garantis uniques (à l'exception d'un bogue lié à la logique de génération RRN), les clés basées sur les valeurs d'attribut ayant tendance à être non uniques ("oops! Nous avons pensé que nous pouvions utiliser le numéro de téléphone comme ID de maison, dang !, la compagnie de téléphone a commencé à réutiliser les numéros ... ")
0

Une clé primaire identifie une ligne dans une table.

Un RRN (je présume que vous voulez dire le numéro d'enregistrement relatif) identifie également une ligne par position dans un sous-ensemble (c'est-à-dire un résultat de requête).

J'ai trouvé cela utile si vous avez besoin d'extrapoler un ordre séquentiel pour un ensemble d'enregistrements non liés à la clé primaire.