1
votes

SQL plusieurs-à-plusieurs

diagramme de relation d'entité

J'ai besoin de créer un forum simple (babillard électronique) en tant que projet scolaire. Mais je suis tombé sur un problème. Dans l'image ci-dessus, il y a 2 tables: post et category , qui ont une relation plusieurs-à-plusieurs. J'ai fait une table de bridge, qui stocke la postKey et la categoryKey . Est-ce une mauvaise pratique de créer une clé primaire composite à partir de ces 2 clés, ou j'ai besoin de quelque chose comme postCategoryKey ? Et que dois-je améliorer d'autre?


0 commentaires

3 Réponses :


1
votes

À mon avis, il n'y a pas besoin de PostCategoryKey, car il ne s'agit que d'une table de relations et vous ne pourrez pas y accéder par postCategoryKey. Je créerais le PK en utilisant les 2 autres FK (postKey et categoryKey).

J'espère que cela aide!


0 commentaires

1
votes

Cela dépend, si vous prévoyez plus tard d'ajouter des métadonnées supplémentaires à postCategoryKey dans un tableau séparé, alors cela a du sens.

Dans votre cas, j'irais avec une clé primaire composite et je me débarrasserais de postCategoryKey


0 commentaires

1
votes

Vous devrez rendre postKey et categoryKey non null et créer quand même une contrainte unique sur eux. Cela en fait une clé pour la table, que vous l'appeliez ou non la "clé primaire".

Il existe donc trois options:

  1. Laissez ceci comme décrit avec NOT NULL et la contrainte d'unicité.
  2. Déclarez les deux colonnes comme clé primaire de la table.
  3. Créez une colonne supplémentaire postCategoryKey et faites-en la clé primaire.

La décision n'a pas vraiment d'importance. Certaines entreprises ont une convention de style de base de données. Dans ce cas, c'est facile; suivez simplement les règles de l'entreprise. Certaines personnes souhaitent que chaque table ait une clé primaire à une seule colonne. Si tel est le cas, ajoutez cette colonne PK. Certaines personnes veulent que les tables de pont aient une clé primaire composite pour montrer immédiatement ce qui identifie une ligne. Ma préférence personnelle est la dernière, mais n'importe quelle méthode est aussi bonne que l'autre en fait. Restez cohérent dans votre base de données.


0 commentaires