Znaczenie normalizacji danych

Tworzenie baz danych w PostgreSQL

Darryl Reeves

Industry Assistant Professor, New York University

Przykład 1: redundantne dane

  • Redundancja danych może być problematyczna
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, 
    ... 
);
Tworzenie baz danych w PostgreSQL

Przykład 1: redundantne dane

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, 
    ... 
);
  • Problem 1: Różne banki, ta sama nazwa
  • Problem 2: Zmiany nazwy
Tworzenie baz danych w PostgreSQL

Przykład 1: redundantne dane

CREATE TABLE loan (
    borrower_id INTEGER REFERENCES borrower(id),
    bank_id INTEGER REFERENCES bank(id),
    ...
);
  • Banki o tej samej nazwie mają różne id
  • Zmiany nazw banków dotyczą tylko tabeli bank
Tworzenie baz danych w PostgreSQL

Przykład 2: konsolidacja rekordów

applicant

id name
1 Jane Simmmons
2 Rick Demps
3 Pam Jones

borrower

id name
1 Jack Smith
2 Sara Williams
3 Jennifer Valdez
Tworzenie baz danych w PostgreSQL

Przykład 2: konsolidacja rekordów

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
Tworzenie baz danych w PostgreSQL

Przykład 2: konsolidacja rekordów

applicant

id name
1 Jane Simmmons
2 Rick Demps
3 Pam Jones

borrower

id name
1 Jack Smith
2 Sara Williams
3 Jennifer Valdez
Tworzenie baz danych w PostgreSQL

Przykład 2: konsolidacja rekordów

applicant

id name
1 Jane Simmmons
2 Rick Demps

borrower

id name
1 Jack Smith
2 Sara Williams
3 Jennifer Valdez
4 Pam Jones
Tworzenie baz danych w PostgreSQL

Przykład 2: konsolidacja rekordów

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

Przykład 2: konsolidacja rekordów

CREATE TABLE borrower (
    id SERIAL PRIMARY KEY,
    name VARCHAR(50) NOT NULL,
    approved BOOLEAN DEFAULT NULL
);
  • approved jest NULL => wnioskodawca
  • approved jest true => pożyczkobiorca
  • approved jest false => wniosek odrzucony
Tworzenie baz danych w PostgreSQL

Dlaczego normalizować dane?

  • Ogranicza duplikację danych
  • Zwiększa spójność danych
  • Poprawia organizację danych
Tworzenie baz danych w PostgreSQL

Czas na ćwiczenia!

Tworzenie baz danych w PostgreSQL

Preparing Video For Download...