L'importanza della normalizzazione dei dati

Creare database PostgreSQL

Darryl Reeves

Industry Assistant Professor, New York University

Esempio 1: dati ridondanti

  • La ridondanza dei dati può creare problemi
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, 
    ... 
);
Creare database PostgreSQL

Esempio 1: dati ridondanti

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, 
    ... 
);
  • Problema 1: banche diverse/stesso nome
  • Problema 2: cambi di nome
Creare database PostgreSQL

Esempio 1: dati ridondanti

CREATE TABLE loan (
    borrower_id INTEGER REFERENCES borrower(id),
    bank_id INTEGER REFERENCES bank(id),
    ...
);
  • Le banche condividono il nome ma hanno id distinti
  • Gli aggiornamenti ai nomi impattano solo la tabella bank
Creare database PostgreSQL

Esempio 2: consolidare i record

applicant

id name
1 Jane Simmmons
2 Rick Demps
3 Pam Jones

borrower

id name
1 Jack Smith
2 Sara Williams
3 Jennifer Valdez
Creare database PostgreSQL

Esempio 2: consolidare i record

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
Creare database PostgreSQL

Esempio 2: consolidare i record

applicant

id name
1 Jane Simmmons
2 Rick Demps
3 Pam Jones

borrower

id name
1 Jack Smith
2 Sara Williams
3 Jennifer Valdez
Creare database PostgreSQL

Esempio 2: consolidare i record

applicant

id name
1 Jane Simmmons
2 Rick Demps

borrower

id name
1 Jack Smith
2 Sara Williams
3 Jennifer Valdez
4 Pam Jones
Creare database PostgreSQL

Esempio 2: consolidare i record

CREATE TABLE borrower (
    id SERIAL PRIMARY KEY,
    name VARCHAR(50) NOT NULL
);
Creare database PostgreSQL

Esempio 2: consolidare i record

CREATE TABLE borrower (
    id SERIAL PRIMARY KEY,
    name VARCHAR(50) NOT NULL,
    approved BOOLEAN DEFAULT NULL
);
  • approved è NULL => applicant
  • approved è true => borrower
  • approved è false => domanda rifiutata
Creare database PostgreSQL

Perché normalizzare i dati?

  • Riduce la duplicazione dei dati
  • Aumenta la coerenza dei dati
  • Migliora l'organizzazione dei dati
Creare database PostgreSQL

Esercitiamoci!

Creare database PostgreSQL

Preparing Video For Download...