A 2-a Formă Normală

Crearea bazelor de date PostgreSQL

Darryl Reeves

Industry Assistant Professor, New York University

Exemplu: manuale școlare

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
);
Crearea bazelor de date PostgreSQL

Exemplu: manuale școlare

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
Crearea bazelor de date PostgreSQL

Exemplu: inconsistență la actualizarea URL-ului

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
Crearea bazelor de date PostgreSQL

Exemplu: inconsistență la actualizarea URL-ului

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
Crearea bazelor de date PostgreSQL

Exemplu: adăugare editor fără manual

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
Crearea bazelor de date PostgreSQL

Exemplu: adăugare editor fără manual

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 ??
Crearea bazelor de date PostgreSQL

Exemplu: eliminarea unui manual

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
Crearea bazelor de date PostgreSQL

Exemplu: eliminarea unui manual

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
  • Editorul necesită un tabel separat
  • Anomalii de date la inserții și ștergeri
Crearea bazelor de date PostgreSQL

Satisfacerea Formei Normale 2 (2NF)

  • 1NF este satisfăcută
  • Toate coloanele non-cheie depind de PRIMARY KEY-ul tabelului
Crearea bazelor de date PostgreSQL

Exemplu: manuale și editori în 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
);
Crearea bazelor de date PostgreSQL

Exemplu: manuale și editori în 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)
);
Crearea bazelor de date PostgreSQL

Exemplu: manuale și editori în 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)
);
Crearea bazelor de date PostgreSQL

Să exersăm!

Crearea bazelor de date PostgreSQL

Preparing Video For Download...