2:a normalformen

Skapa PostgreSQL-databaser

Darryl Reeves

Industry Assistant Professor, New York University

Exempel: skolböcker

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
);
Skapa PostgreSQL-databaser

Exempel: skolböcker

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
Skapa PostgreSQL-databaser

Exempel: inkonsistens vid uppdatering av 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
Skapa PostgreSQL-databaser

Exempel: inkonsistens vid uppdatering av 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
Skapa PostgreSQL-databaser

Exempel: lägga till förlag utan lärobok

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
Skapa PostgreSQL-databaser

Exempel: lägga till förlag utan lärobok

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 ??
Skapa PostgreSQL-databaser

Exempel: ta bort en lärobok

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
Skapa PostgreSQL-databaser

Exempel: ta bort en lärobok

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
  • Förlag kräver en separat tabell
  • Dataanomalier vid infogning och borttagning
Skapa PostgreSQL-databaser

Uppfylla 2:a normalformen (2NF)

  • 1NF är uppfyllt
  • Alla icke-nyckelkolumner är beroende av tabellens PRIMARY KEY
Skapa PostgreSQL-databaser

Exempel: läroböcker och förlag i 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
);
Skapa PostgreSQL-databaser

Exempel: läroböcker och förlag i 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)
);
Skapa PostgreSQL-databaser

Exempel: läroböcker och förlag i 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)
);
Skapa PostgreSQL-databaser

Nu kör vi en övning!

Skapa PostgreSQL-databaser

Preparing Video For Download...