sql >> Databáze >  >> RDS >> PostgreSQL

Jaký je nejlepší způsob, jak modelovat mnohočetný vztah

Správný model, který umožňuje vše, co potřebujete při vynucování referenční integrity, by mohl vypadat takto:

CREATE TABLE contact (
  contact_id serial PRIMARY KEY
, name text
, phone text
, ...
);

CREATE TABLE product (
  product_id serial PRIMARY KEY
, ...
);

CREATE TABLE product_role (
  role_id int PRIMARY KEY
, role text UNIQUE
);

CREATE TABLE product_contact (
  product_id int REFERENCES product
, contact_id int REFERENCES contact
, role_id    int REFERENCES product_role
, PRIMARY KEY (product_id, contact_id, role_id)
);

Pokud stejný kontakt nikdy nemůže vystupovat ve více než jedné roli pro stejný produkt, nezahrnujte roli do PK:

, PRIMARY KEY (product_id, contact_id)

To umožňuje jednoduše přidat řádek do product_role pro povolení a další typ kontaktu.

Pokud existuje pouze ruka plná různých rolí, datový typ "char" může být vhodné pro role_id .

Základy:



  1. Nejlepší způsoby, jak vytvořit zálohy pro offline aplikace?

  2. Chyba databáze Postgres Neplatné záhlaví stránky

  3. Doctrine2 - Vícenásobná vložka v jednom záběru

  4. Jak vytvořit offline aplikaci pro internacionalizaci:Použijte databázi Sqlite