Важность нормализации данных

Создание баз данных 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 => заявитель
  • approved равно true => заёмщик
  • approved равно false => отказ в заявке
Создание баз данных PostgreSQL

Зачем нормализовать данные?

  • Снижает дублирование данных
  • Повышает согласованность данных
  • Улучшает организацию данных
Создание баз данных PostgreSQL

Давайте потренируемся!

Создание баз данных PostgreSQL

Preparing Video For Download...