2e forme normale

Créer des bases de données PostgreSQL

Darryl Reeves

Industry Assistant Professor, New York University

Exemple : manuels scolaires

CREATE TABLE textbook (
    id SERIAL PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    publisher_name VARCHAR(100) NOT NULL,
    publisher_site VARCHAR(50),
    quantity SMALLINT NOT NULL DEFAULT 0
);
Créer des bases de données PostgreSQL

Exemple : manuels scolaires

id title publisher_name publisher_site quantity
23 Introductory Algebra: 1st Edition ABC Publishing www.abc.com 32
74 Calculus Foundations ABC Publishing www.abc.com 27
112 Statistical Concepts Martin House www.mh.com 22
Créer des bases de données PostgreSQL

Exemple : incohérence après mise à jour de l'URL

id title publisher_name publisher_site quantity
23 Introductory Algebra: 1st Edition ABC Publishing www.abc.com 32
74 Calculus Foundations ABC Publishing www.abc.com 27
112 Statistical Concepts Martin House www.mh.com 22
Créer des bases de données PostgreSQL

Exemple : incohérence après mise à jour de l'URL

id title publisher_name publisher_site quantity
23 Introductory Algebra: 1st Edition ABC Publishing www.newabc.com 32
74 Calculus Foundations ABC Publishing www.abc.com 27
112 Statistical Concepts Martin House www.mh.com 22
Créer des bases de données PostgreSQL

Exemple : ajouter un éditeur sans manuel

id title publisher_name publisher_site quantity
23 Introductory Algebra: 1st Edition ABC Publishing www.abc.com 32
74 Calculus Foundations ABC Publishing www.abc.com 27
112 Statistical Concepts Martin House www.mh.com 22
Créer des bases de données PostgreSQL

Exemple : ajouter un éditeur sans manuel

id title publisher_name publisher_site quantity
23 Introductory Algebra: 1st Edition ABC Publishing www.abc.com 32
74 Calculus Foundations ABC Publishing www.abc.com 27
112 Statistical Concepts Martin House www.mh.com 22
?? ?? New Horizons www.nhorizon.com ??
Créer des bases de données PostgreSQL

Exemple : supprimer un manuel

id title publisher_name publisher_site quantity
23 Introductory Algebra: 1st Edition ABC Publishing www.abc.com 32
74 Calculus Foundations ABC Publishing www.abc.com 27
112 Statistical Concepts Martin House www.mh.com 22
Créer des bases de données PostgreSQL

Exemple : supprimer un manuel

id title publisher_name publisher_site quantity
23 Introductory Algebra: 1st Edition ABC Publishing www.abc.com 32
74 Calculus Foundations ABC Publishing www.abc.com 27
  • L'éditeur doit avoir une table séparée
  • Anomalies d'insertion et de suppression
Créer des bases de données PostgreSQL

Satisfaire la 2e forme normale (2NF)

  • 1NF est respectée
  • Toutes les colonnes non clés dépendent de la PRIMARY KEY de la table
Créer des bases de données PostgreSQL

Exemple : manuels et éditeurs en 2NF

CREATE TABLE textbook (
    id SERIAL PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    publisher_name VARCHAR(100) NOT NULL,
    publisher_site VARCHAR(50),
    quantity SMALLINT NOT NULL DEFAULT 0
);
Créer des bases de données PostgreSQL

Exemple : manuels et éditeurs en 2NF

CREATE TABLE textbook (
    id SERIAL PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    quantity SMALLINT NOT NULL DEFAULT 0,
);
CREATE TABLE publisher (
    id SERIAL PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    site VARCHAR(50)
);
Créer des bases de données PostgreSQL

Exemple : manuels et éditeurs en 2NF

CREATE TABLE textbook (
    id SERIAL PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    quantity SMALLINT NOT NULL DEFAULT 0,
    publisher_id INTEGER REFERENCES publisher(id)
);
CREATE TABLE publisher (
    id SERIAL PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    site VARCHAR(50)
);
Créer des bases de données PostgreSQL

Passons à la pratique !

Créer des bases de données PostgreSQL

Preparing Video For Download...