Maison > base de données > tutoriel mysql > Comment implémenter des relations plusieurs-à-plusieurs dans PostgreSQL à l'aide de tables de jonction ?

Comment implémenter des relations plusieurs-à-plusieurs dans PostgreSQL à l'aide de tables de jonction ?

DDD
Libérer: 2025-01-22 15:02:11
original
186 Les gens l'ont consulté

How to Implement Many-to-Many Relationships in PostgreSQL Using Junction Tables?

Utilisez la table de jointure pour implémenter une relation plusieurs-à-plusieurs dans PostgreSQL

Comprendre les relations plusieurs-à-plusieurs

Dans une relation plusieurs-à-plusieurs, une seule entité peut être liée à plusieurs autres entités et vice versa. Pour représenter cela dans une base de données, une table distincte appelée « table de jointure » est généralement utilisée.

Créer une structure de table dans PostgreSQL

Pour créer une relation plusieurs-à-plusieurs dans PostgreSQL, vous devez d'abord définir deux tables principales, puis créer la table de jointure.

<code class="language-sql">CREATE TABLE product (
  product_id serial PRIMARY KEY  -- 隐式主键约束
, product    text NOT NULL
, price      numeric NOT NULL DEFAULT 0
);

CREATE TABLE bill (
  bill_id  serial PRIMARY KEY
, bill     text NOT NULL
, billdate date NOT NULL DEFAULT CURRENT_DATE
);

CREATE TABLE bill_product (
  bill_id    int REFERENCES bill (bill_id) ON UPDATE CASCADE ON DELETE CASCADE
, product_id int REFERENCES product (product_id) ON UPDATE CASCADE
, amount     numeric NOT NULL DEFAULT 1
, CONSTRAINT bill_product_pkey PRIMARY KEY (bill_id, product_id)  -- 显式主键
);</code>
Copier après la connexion

Principales caractéristiques de la structure du tableau

  • Produit : représente un seul produit avec un nom et un prix.
  • Facture : représente une seule facture avec description et date.
  • Bill_Product : Créez une table de connexion pour les relations plusieurs-à-plusieurs. Il contient deux clés étrangères vers les tables Produit et Facture, ainsi qu'une colonne de montant pour chaque combinaison.

Remarques

  • Clé primaire de substitution : Nous avons défini la colonne série comme clé primaire de substitution pour les tables Produit et Facture. Il s'agit de valeurs entières uniques générées automatiquement par le système, ce qui rend la jointure de tables dans les requêtes plus efficace.
  • Convention de dénomination : Nous suivons une convention de dénomination cohérente, en utilisant des noms singuliers pour les tableaux et des lettres minuscules pour les noms de colonnes.
  • Type de données : Nous avons choisi des types de données appropriés tels que le prix comme type de numéro et la date de facturation comme type de date pour garantir l'exactitude.
  • Clés étrangères : Les clés étrangères ont été définies comme ON UPDATE CASCADE et ON DELETE CASCADE pour propager automatiquement les modifications ou les suppressions.
  • Contrainte NOT NULL : Nous avons défini toutes les colonnes comme NOT NULL pour garantir l'intégrité des données.
  • Index : créera automatiquement un index sur la clé primaire de la table Bill_Product, accélérant ainsi les requêtes.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal