Чому нормалізація даних важлива

Створення баз даних PostgreSQL

Darryl Reeves

Industry Assistant Professor, New York University

Приклад 1: надлишкові дані

  • Надлишковість даних може бути проблемною
CREATE TABLE loan (
    borrower_id INTEGER REFERENCES borrower(id),
    bank_name VARCHAR(50) DEFAULT NULL,
    ...
);
CREATE TABLE bank ( 
    id SERIAL PRIMARY KEY, 
    name VARCHAR(50) DEFAULT NULL, 
    ... 
);
Створення баз даних PostgreSQL

Приклад 1: надлишкові дані

CREATE TABLE loan (
    borrower_id INTEGER REFERENCES borrower(id),
    bank_name VARCHAR(50) DEFAULT NULL,
    ...
);
CREATE TABLE bank ( 
    id SERIAL PRIMARY KEY, 
    name VARCHAR(50) DEFAULT NULL, 
    ... 
);
  • Проблема 1: Різні банки/те саме ім'я
  • Проблема 2: Зміни назв
Створення баз даних PostgreSQL

Приклад 1: надлишкові дані

CREATE TABLE loan (
    borrower_id INTEGER REFERENCES borrower(id),
    bank_id INTEGER REFERENCES bank(id),
    ...
);
  • Банки можуть мати однакову назву, але різні id
  • Оновлення назв впливатимуть лише на таблицю bank
Створення баз даних PostgreSQL

Приклад 2: об'єднання записів

applicant

id name
1 Jane Simmmons
2 Rick Demps
3 Pam Jones

borrower

id name
1 Jack Smith
2 Sara Williams
3 Jennifer Valdez
Створення баз даних PostgreSQL

Приклад 2: об'єднання записів

applicant

id name
1 Jane Simmmons
2 Rick Demps
3 Pam Jones

borrower

id name
1 Jack Smith
2 Sara Williams
3 Jennifer Valdez
4 Pam Jones
Створення баз даних PostgreSQL

Приклад 2: об'єднання записів

applicant

id name
1 Jane Simmmons
2 Rick Demps
3 Pam Jones

borrower

id name
1 Jack Smith
2 Sara Williams
3 Jennifer Valdez
Створення баз даних PostgreSQL

Приклад 2: об'єднання записів

applicant

id name
1 Jane Simmmons
2 Rick Demps

borrower

id name
1 Jack Smith
2 Sara Williams
3 Jennifer Valdez
4 Pam Jones
Створення баз даних PostgreSQL

Приклад 2: об'єднання записів

CREATE TABLE borrower (
    id SERIAL PRIMARY KEY,
    name VARCHAR(50) NOT NULL
);
Створення баз даних PostgreSQL

Приклад 2: об'єднання записів

CREATE TABLE borrower (
    id SERIAL PRIMARY KEY,
    name VARCHAR(50) NOT NULL,
    approved BOOLEAN DEFAULT NULL
);
  • approved має значення NULL => applicant
  • approved має значення true => borrower
  • approved має значення false => відмовлено в заявці
Створення баз даних PostgreSQL

Навіщо нормалізувати дані?

  • Зменшує дублювання даних
  • Підвищує узгодженість даних
  • Покращує організацію даних
Створення баз даних PostgreSQL

Давайте потренуємось!

Створення баз даних PostgreSQL

Preparing Video For Download...