Pierwsza postać normalna

Tworzenie baz danych w PostgreSQL

Darryl Reeves

Industry Assistant Professor, New York University

Przykład: zarządzanie danymi studentów

CREATE TABLE student (
    id SERIAL PRIMARY KEY,
    name VARCHAR(50) NOT NULL,
    courses VARCHAR(50) NOT NULL,
    home_room SMALLINT NOT NULL
);
  • Błędy aktualizacji
  • Błędy wstawiania
  • Błędy usuwania
Tworzenie baz danych w PostgreSQL

Przykład: zduplikowane dane po aktualizacji

id name courses home_room
122 Susan Roth Algebra I, Physics, Spanish II 101
413 Robert Cruz History, Geometry, Biology 204
613 Thomas Wright English III, Chemistry, Algebra II 102
Tworzenie baz danych w PostgreSQL

Przykład: zduplikowane dane po aktualizacji

id name courses home_room
122 Susan Roth Algebra I, Chemistry, Spanish II 101
413 Robert Cruz History, Geometry, Biology 204
613 Thomas Wright English III, Chemistry, Algebra II 102
Tworzenie baz danych w PostgreSQL

Przykład: zduplikowane dane po aktualizacji

id name courses home_room
122 Susan Roth Algebra I, Chemistry, Spanish II, Chemistry 101
413 Robert Cruz History, Geometry, Biology 204
613 Thomas Wright English III, Chemistry, Algebra II 102
Tworzenie baz danych w PostgreSQL

Przykład: wstawianie z ograniczeniami kolumny

CREATE TABLE student (
    id SERIAL PRIMARY KEY,
    name VARCHAR(50) NOT NULL,
    courses VARCHAR(50) NOT NULL,
    home_room SMALLINT NOT NULL
);
id name courses home_room
122 Susan Roth Algebra I, Physics, Spanish II 101
413 Robert Cruz History, Geometry, Biology 204
613 Thomas Wright English III, Chemistry, Algebra II 102
Tworzenie baz danych w PostgreSQL

Przykład: wstawianie z ograniczeniami kolumny

CREATE TABLE student (
    id SERIAL PRIMARY KEY,
    name VARCHAR(50) NOT NULL,
    courses VARCHAR(50) NOT NULL,
    home_room SMALLINT NOT NULL
);
id name courses home_room
122 Susan Roth Algebra I, Physics, Spanish II 101
413 Robert Cruz History, Geometry, Biology, French Literature 204
613 Thomas Wright English III, Chemistry, Algebra II 102
Tworzenie baz danych w PostgreSQL

Przykład: integralność danych naruszona przez usunięcie rekordów

id name courses home_room
122 Susan Roth Algebra I, Physics, Spanish II 101
413 Robert Cruz History, Geometry, Biology 204
613 Thomas Wright English III, Chemistry, Algebra II 102
Tworzenie baz danych w PostgreSQL

Przykład: integralność danych naruszona przez usunięcie rekordów

id name courses home_room
122 Susan Roth Algebra I, Physics, Spanish II 101
413 Robert Cruz History, Geometry, Biology 204
613 Thomas Wright ??? 102
Tworzenie baz danych w PostgreSQL

Spełnianie pierwszej postaci normalnej (1NF)

  • Wymaganie 1NF:
    • Wartości w tabeli muszą być atomowe
Tworzenie baz danych w PostgreSQL

Przykład: tabela student spełniająca 1NF

CREATE TABLE student (
    id SERIAL PRIMARY KEY,
    name VARCHAR(50) NOT NULL,
    courses VARCHAR(50) NOT NULL,
    home_room SMALLINT NOT NULL
);
Tworzenie baz danych w PostgreSQL

Przykład: tabela student spełniająca 1NF

CREATE TABLE student (
    id INTEGER,
    name VARCHAR(50) NOT NULL,
    courses VARCHAR(50) NOT NULL,
    home_room SMALLINT NOT NULL
);
Tworzenie baz danych w PostgreSQL

Przykład: tabela student spełniająca 1NF

CREATE TABLE student (
    id INTEGER,
    name VARCHAR(50) NOT NULL,
    course VARCHAR(50) NOT NULL,
    home_room SMALLINT NOT NULL
);
Tworzenie baz danych w PostgreSQL

Przykład: tabela student spełniająca 1NF

id name course home_room
122 Susan Roth Algebra I 101
122 Susan Roth Physics 101
122 Susan Roth Spanish II 101
413 Robert Cruz History 204
413 Robert Cruz Geometry 204
413 Robert Cruz Biology 204
Tworzenie baz danych w PostgreSQL

Przykład: tabela student spełniająca 1NF

CREATE TABLE student (
    id INTEGER,
    name VARCHAR(50) NOT NULL,
    course VARCHAR(50) NOT NULL,
    home_room SMALLINT NOT NULL
);
Tworzenie baz danych w PostgreSQL

Przykład: tabela student spełniająca 1NF

CREATE TABLE student (
    student_id INTEGER,
    first_name VARCHAR(50) NOT NULL,
    last_name VARCHAR(50) NOT NULL,
    course VARCHAR(50) NOT NULL,
    home_room SMALLINT NOT NULL
);
Tworzenie baz danych w PostgreSQL

Przykład: tabela student spełniająca 1NF

id first_name last_name course home_room
122 Susan Roth Algebra I 101
122 Susan Roth Physics 101
122 Susan Roth Spanish II 101
413 Robert Cruz History 204
413 Robert Cruz Geometry 204
413 Robert Cruz Biology 204
Tworzenie baz danych w PostgreSQL

Czas na ćwiczenia!

Tworzenie baz danych w PostgreSQL

Preparing Video For Download...