ความสำคัญของการ normalize ข้อมูล

การสร้างฐานข้อมูล 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

ทำไมต้อง normalize ข้อมูล?

  • ลดความซ้ำซ้อนของข้อมูล
  • เพิ่มความสอดคล้องของข้อมูล
  • ปรับปรุงการจัดระเบียบข้อมูล
การสร้างฐานข้อมูล PostgreSQL

มาฝึกกันเถอะ!

การสร้างฐานข้อมูล PostgreSQL

Preparing Video For Download...