Utilisez l'adresse email comme clé primaire?

Est l'adresse de courriel d'un mauvais candidat pour la primaire, comparativement à l'auto incrémentation des numéros?

Notre application web a besoin de l'adresse de courriel pour être unique dans le système. Alors, j'ai pensé à utiliser l'adresse de courriel en tant que clé primaire. Cependant, mon collègue suggère que la comparaison de chaînes de caractères sera plus lente que la comparaison des entiers.

Est-ce une raison valable pour ne pas utiliser le courriel comme clé primaire?

Nous utilisons PostgreSQL.

  • Qu'entendez-vous par "principal"? Si l'adresse e-mail doit être unique, alors il est l'un des principaux et nécessite une contrainte unique. Si vous décidez de "promouvoir" - il être "primaire" est arbitraire, sauf s'il y a une raison pratique pour faire par exemple de l'optimisation d'un faible performance du système.
  • Si vous voulez que votre base de données pour appliquer une unique adresse de courriel, puis créer une colonne avec un index unique, mais ne pas l'utiliser en tant que clé primaire.
  • Si quelqu'un veut changer son adresse e-mail? Allez-vous changer toutes les clés étrangères trop?
  • Westgate: quelle est la distinction entre "index unique" et "clé primaire" que vous faites? Est-ce la même distinction que l'OP est prise? Pour moi, la différence entre une contrainte unique et une clé primaire sont si subtils qu'ils ne sont pas en vaut la peine avec.
  • pratiquement aucune différence, mais la clé primaire sera cluster par défaut, alors qu'un index unique ne sera pas. Vous aurez envie de définir la clé primaire qui sera la valeur par défaut d'enregistrement unique de recherche clés, l'index unique borne à appliquer l'unicité de la colonne sur un indice normal
  • une clé primaire est généralement utilisé pour être référencé par enfant entités. il peut également être exportations de données sur l'enfance à l'enseignement secondaire systèmes/DB. Comme un e-mail a tendance à changer au fil du temps, ce changement doit être mis en cascade. En tant que clé primaire je voudrais utiliser quelque chose de moins tendance à changer qu'une adresse e-mail
  • Westgate: pour info, il n'y a pas une telle chose comme la classification automatique dans PostgreSQL. Une CLÉ PRIMAIRE est mis en œuvre sur le disque exactement le même comme un INDEX UNIQUE où tous les champs ne sont PAS NULL.
  • Hmm ok. Ne sais pas sur postgres. Doit avoir été ajoutée à la question. Certainement dans MSSQL il y a un ordre physique.
  • Westgate: donc, retour à vous de commentaire originale: "créer une colonne avec un index unique, mais ne pas l'utiliser en tant que clé primaire" - ne vous conviennent maintenant qu'il n'est "guère" base pour recommander ce? Même dans SQL Server terre, où vous pouvez définir explicitement un tableau de l'index cluster (et est peut-être mieux fait de cette façon), il fait à peine la différence.
  • Non, pas du tout. Dans "Sql Server Terre" vous ne devriez pas l'cluster un index sur une clé vous n'êtes pas en utilisant par exemple courrier électronique. Dans Sql Server terre, vous auriez votre primaire ie index cluster sur une valeur entière. Vous serait toutefois assurer l'unicité de l'adresse de courriel à l'aide d'un index unique en plus de la clé primaire. Comme je l'ai dit, je ne sais rien à propos de postgres. J'espère que efface que pour vous.
  • Westgate: Dans " Sql Server Terre, vous pouvez réaliser tout ce que tu dis, sans l'aide de PRIMARY KEY. Alors, quelle est la justification de l'utilisation de PRIMARY KEY à tous?
  • Clé primaire doit être la cible d'une clé étrangère.
  • pas vrai, une clé étrangère peut être lié à un PK ou d'un champ avec une contrainte unique dans SQL Server.
  • C'est somethign je na sais - grâce HLGEM

InformationsquelleAutor robert | 2010-09-27