Het belang van normaliseren van data

PostgreSQL-databases maken

Darryl Reeves

Industry Assistant Professor, New York University

Voorbeeld 1: redundante data

  • Dataredundantie kan problematisch zijn
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-databases maken

Voorbeeld 1: redundante 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, 
    ... 
);
  • Probleem 1: Verschillende banken/zelfde naam
  • Probleem 2: Naamswijzigingen
PostgreSQL-databases maken

Voorbeeld 1: redundante data

CREATE TABLE loan (
    borrower_id INTEGER REFERENCES borrower(id),
    bank_id INTEGER REFERENCES bank(id),
    ...
);
  • Banken delen naam maar hebben unieke id's
  • Naamupdates raken alleen de bank-tabel
PostgreSQL-databases maken

Voorbeeld 2: records consolideren

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-databases maken

Voorbeeld 2: records consolideren

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-databases maken

Voorbeeld 2: records consolideren

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-databases maken

Voorbeeld 2: records consolideren

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-databases maken

Voorbeeld 2: records consolideren

CREATE TABLE borrower (
    id SERIAL PRIMARY KEY,
    name VARCHAR(50) NOT NULL
);
PostgreSQL-databases maken

Voorbeeld 2: records consolideren

CREATE TABLE borrower (
    id SERIAL PRIMARY KEY,
    name VARCHAR(50) NOT NULL,
    approved BOOLEAN DEFAULT NULL
);
  • approved is NULL => applicant
  • approved is true => borrower
  • approved is false => aanvraag geweigerd
PostgreSQL-databases maken

Waarom normaliseren?

  • Minder duplicatie
  • Meer consistentie
  • Betere organisatie
PostgreSQL-databases maken

Laten we oefenen!

PostgreSQL-databases maken

Preparing Video For Download...