Une ou Deux Clés Primaires dans plusieurs-à-Plusieurs Table?

J'ai les tables suivantes dans ma base de données qui ont un plusieurs-à-plusieurs relations, ce qui est exprimé par une connexion de table qui a les clés étrangères pour les clés primaires de chacune des tables principales:

  • Widget: WidgetID (PK), Titre, Prix
  • Utilisateur: nom d'utilisateur (PK), FirstName, LastName

Supposent que chaque Utilisateur-Widget combinaison est unique. Je vois deux options pour la structure de connexion de la table qui définit la relation de données:

  1. UserWidgets1: UserWidgetID (PK), WidgetID (FK), l'Identifiant (FK)
  2. UserWidgets2: WidgetID (PK, FK), l'Identifiant (PK, FK)

L'Option 1 a une seule colonne de la Clé Primaire. Toutefois, cela semble inutile, car les seules données stockées dans le tableau est la relation entre les deux tables principales, et cette relation elle-même peut constituer une clé unique. Conduisant ainsi à l'option 2, qui a deux colonnes de clé primaire, mais perd la colonne identifiant unique que l'option 1 est. Je pourrais aussi éventuellement ajouter un à deux colonnes, index unique (WidgetID, UserID) à la première table.

Est-il une vraie différence entre les deux en terme de performance, ou aucune raison de préférer une approche sur l'autre pour la structuration de la UserWidgets plusieurs-à-plusieurs table?

Les indices dont vous avez besoin sont dictées par votre requête, et pas votre schéma de conception.

OriginalL'auteur Yaakov Ellis | 2008-09-02