2NF และ 3NF

Data Modeling ใน Snowflake เบื้องต้น

Nuno Rocha

Director of Engineering

แนะนำ 2NF

  • รูปแบบปกติที่สอง (2NF): กำจัด Partial Dependency; แอตทริบิวต์ที่ไม่ใช่คีย์ทุกตัวต้องขึ้นอยู่กับ Primary Key

ขั้นตอนจาก UNF ถึง 3NF

Data Modeling ใน Snowflake เบื้องต้น

แนะนำ 2NF (1)

  • รูปแบบปกติที่สอง (2NF): กำจัด Partial Dependency; แอตทริบิวต์ที่ไม่ใช่คีย์ทุกตัวต้องขึ้นอยู่กับ Primary Key
  • Functional Dependency: Primary Key ระบุแอตทริบิวต์ได้อย่างชัดเจน

บัตรพนักงานแสดง Functional Dependency

Data Modeling ใน Snowflake เบื้องต้น

แนะนำ 2NF (2)

  • รูปแบบปกติที่สอง (2NF): กำจัด Partial Dependency; แอตทริบิวต์ที่ไม่ใช่คีย์ทุกตัวต้องขึ้นอยู่กับ Primary Key
  • Functional Dependency: Primary Key ระบุแอตทริบิวต์ได้อย่างชัดเจน
  • Partial Dependency: ใช้เพียงบางส่วนของ Primary Key ก็สามารถระบุแอตทริบิวต์ได้

บัตรพนักงานแสดง Partial Dependency

Data Modeling ใน Snowflake เบื้องต้น

รูปแบบปกติที่สอง

เอนทิตี Allproducts และการร้องเรียนสินค้าที่ผ่าน 2NF

Data Modeling ใน Snowflake เบื้องต้น

รูปแบบปกติที่สอง

เอนทิตี Allproducts และปัญหา detail ใน 2NF

Data Modeling ใน Snowflake เบื้องต้น

รูปแบบปกติที่สอง

เอนทิตี Allproducts และปัญหา detail ใน 2NF ในส่วน manufacturer

Data Modeling ใน Snowflake เบื้องต้น

การเปลี่ยนผ่านสู่ 2NF

  • ขั้นตอนที่ 1: สร้างเอนทิตีใหม่เพื่อรองรับแอตทริบิวต์ที่มี Partial Dependency
CREATE OR REPLACE TABLE manufacturers (
    manufacturer_id NUMBER(10,0) PRIMARY KEY,
    manufacturer VARCHAR(255),
    location VARCHAR(255)
);
CREATE OR REPLACE TABLE details (
    detail_id NUMBER(10,0) PRIMARY KEY,
    detail VARCHAR(255)
);
Data Modeling ใน Snowflake เบื้องต้น

การเปลี่ยนผ่านสู่ 2NF

  • ขั้นตอนที่ 2: เติมข้อมูลในเอนทิตีจากเอนทิตีที่ยังไม่ได้ทำ Normalization
INSERT INTO manufacturers (manufacturer_id, manufacturer, location)
SELECT DISTINCT manufacturer_id, 
    manufacturer_name,
    location
FROM allproducts;
INSERT INTO details (detail_id, detail)
SELECT DISTINCT detail_id, 
    detail_description
FROM allproducts;
Data Modeling ใน Snowflake เบื้องต้น

การเปลี่ยนผ่านสู่ 2NF

ข้อมูล All products จาก UNF สู่ 2NF

Data Modeling ใน Snowflake เบื้องต้น

แนะนำ 3NF

  • รูปแบบปกติที่สาม (3NF): กำจัด Transitive Dependency; แอตทริบิวต์ที่ไม่ใช่คีย์ต้องขึ้นอยู่กับ Primary Key โดยตรง

ขั้นตอนจาก UNF ถึง 3NF

Data Modeling ใน Snowflake เบื้องต้น

แนะนำ 3NF

  • รูปแบบปกติที่สาม (3NF): กำจัด Transitive Dependency; แอตทริบิวต์ที่ไม่ใช่คีย์ต้องขึ้นอยู่กับ Primary Key โดยตรง
  • Transitive Dependency: แอตทริบิวต์ขึ้นอยู่กับแอตทริบิวต์อื่นที่ไม่ใช่ Primary Key

บัตรพนักงานแสดง Transitive Dependency

Data Modeling ใน Snowflake เบื้องต้น

รูปแบบปกติที่สาม

Location ที่ไม่ผ่าน 3NF

Data Modeling ใน Snowflake เบื้องต้น

การเปลี่ยนผ่านสู่ 3NF

  • ขั้นตอนที่ 1: สร้างเอนทิตีใหม่เพื่อรองรับแอตทริบิวต์ที่มี Transitive Dependency
CREATE TABLE locations (
    location_id NUMBER(10,0) PRIMARY KEY,
    location VARCHAR(255)
);
Data Modeling ใน Snowflake เบื้องต้น

การเปลี่ยนผ่านสู่ 3NF

  • ขั้นตอนที่ 2: เติมข้อมูลในเอนทิตีจากเอนทิตีที่ยังไม่ได้ทำ Normalization
INSERT INTO locations (location_id, location)
SELECT ROW_NUMBER() OVER (ORDER BY location), 
    location
FROM manufacturers
GROUP BY location;
ALTER TABLE manufacturers
DROP COLUMN location;
Data Modeling ใน Snowflake เบื้องต้น

การเปลี่ยนผ่านสู่ 3NF

  • ขั้นตอนที่ 3: สร้างเอนทิตีใหม่เพื่อดึงแอตทริบิวต์ที่เหลือออกจากเอนทิตีที่ยังไม่ได้ทำ Normalization
CREATE OR REPLACE TABLE products (
    product_id NUMBER(10,0) PRIMARY KEY,
    name VARCHAR(255)
);
  • ขั้นตอนที่ 4: เติมเอนทิตีด้วยค่าที่ไม่ซ้ำกันที่เหลืออยู่ในเอนทิตีที่ยังไม่ได้ทำ Normalization
INSERT INTO products (product_id, name)
SELECT DISTINCT product_id,
    product_name
FROM allproducts;
Data Modeling ใน Snowflake เบื้องต้น

สรุปโมเดลขั้นสุดท้าย

ขั้นตอนจาก UNF ถึง 3NF

Data Modeling ใน Snowflake เบื้องต้น

สรุปโมเดลขั้นสุดท้าย

ข้อมูล All products จาก UNF สู่ 1NF

Data Modeling ใน Snowflake เบื้องต้น

สรุปโมเดลขั้นสุดท้าย

ข้อมูล All products จาก UNF สู่ 2NF

Data Modeling ใน Snowflake เบื้องต้น

สรุปโมเดลขั้นสุดท้าย

ข้อมูล All products จาก UNF สู่ 3NF

Data Modeling ใน Snowflake เบื้องต้น

สรุปโมเดลขั้นสุดท้าย

ข้อมูล All products จาก UNF สู่ 3NF พร้อมความสัมพันธ์

Data Modeling ใน Snowflake เบื้องต้น

สรุปคำศัพท์และฟังก์ชัน

  • รูปแบบปกติที่สอง (2NF): กำจัด Partial Dependency; แอตทริบิวต์ที่ไม่ใช่คีย์ทุกตัวต้องขึ้นอยู่กับ Primary Key
  • รูปแบบปกติที่สาม (3NF): กำจัด Transitive Dependency; แอตทริบิวต์ที่ไม่ใช่คีย์ต้องขึ้นอยู่กับ Primary Key โดยตรง
  • Functional Dependency: Primary Key ระบุแอตทริบิวต์ได้อย่างชัดเจน
  • Partial Dependency: ใช้เพียงบางส่วนของ Primary Key ก็สามารถระบุแอตทริบิวต์ได้
  • Transitive Dependency: แอตทริบิวต์ขึ้นอยู่กับแอตทริบิวต์อื่นที่ไม่ใช่ Primary Key
  • ROW_NUMBER() OVER (ORDER BY): ฟังก์ชัน SQL สำหรับสร้างหมายเลขลำดับ
  • DISTINCT: คำสั่ง SQL สำหรับดึงค่าที่ไม่ซ้ำกันจากแอตทริบิวต์
  • DROP: คำสั่ง SQL ที่ใช้ร่วมกับ ALTER TABLE เพื่อลบองค์ประกอบออกจากเอนทิตี
Data Modeling ใน Snowflake เบื้องต้น

สรุปฟังก์ชัน

INSERT INTO table_name (column_name, other_columns)
SELECT DISTINCT column_name,
    other_columns
FROM another_table;
INSERT INTO table_name (column_name)
SELECT ROW_NUMBER() OVER (ORDER BY column_name)
FROM another_table
GROUP BY TRIM(column_name);
ALTER TABLE table_name
DROP COLUMN column_name;
Data Modeling ใน Snowflake เบื้องต้น

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

Data Modeling ใน Snowflake เบื้องต้น

Preparing Video For Download...