Důležitost normalizace dat

Tvorba PostgreSQL databází

Darryl Reeves

Industry Assistant Professor, New York University

Příklad 1: redundantní data

  • Redundance dat může být problematická
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, 
    ... 
);
Tvorba PostgreSQL databází

Příklad 1: redundantní data

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, 
    ... 
);
  • Problém 1: Různé banky se stejným názvem
  • Problém 2: Změny názvů
Tvorba PostgreSQL databází

Příklad 1: redundantní data

CREATE TABLE loan (
    borrower_id INTEGER REFERENCES borrower(id),
    bank_id INTEGER REFERENCES bank(id),
    ...
);
  • Banky sdílejí název s odlišnými id
  • Aktualizace názvů bank ovlivní pouze tabulku bank
Tvorba PostgreSQL databází

Příklad 2: konsolidace záznamů

applicant

id name
1 Jane Simmmons
2 Rick Demps
3 Pam Jones

borrower

id name
1 Jack Smith
2 Sara Williams
3 Jennifer Valdez
Tvorba PostgreSQL databází

Příklad 2: konsolidace záznamů

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
Tvorba PostgreSQL databází

Příklad 2: konsolidace záznamů

applicant

id name
1 Jane Simmmons
2 Rick Demps
3 Pam Jones

borrower

id name
1 Jack Smith
2 Sara Williams
3 Jennifer Valdez
Tvorba PostgreSQL databází

Příklad 2: konsolidace záznamů

applicant

id name
1 Jane Simmmons
2 Rick Demps

borrower

id name
1 Jack Smith
2 Sara Williams
3 Jennifer Valdez
4 Pam Jones
Tvorba PostgreSQL databází

Příklad 2: konsolidace záznamů

CREATE TABLE borrower (
    id SERIAL PRIMARY KEY,
    name VARCHAR(50) NOT NULL
);
Tvorba PostgreSQL databází

Příklad 2: konsolidace záznamů

CREATE TABLE borrower (
    id SERIAL PRIMARY KEY,
    name VARCHAR(50) NOT NULL,
    approved BOOLEAN DEFAULT NULL
);
  • approved je NULL => žadatel
  • approved je true => dlužník
  • approved je false => zamítnutá žádost
Tvorba PostgreSQL databází

Proč normalizovat data?

  • Snižuje duplicitu dat
  • Zvyšuje konzistenci dat
  • Zlepšuje organizaci dat
Tvorba PostgreSQL databází

Pojďme si procvičit!

Tvorba PostgreSQL databází

Preparing Video For Download...