2NF và 3NF

Nhập môn Mô hình dữ liệu trong Snowflake

Nuno Rocha

Director of Engineering

Giới thiệu 2NF

  • Dạng chuẩn thứ hai (2NF): Loại bỏ phụ thuộc bộ phận; mọi thuộc tính không khóa phải phụ thuộc hàm vào khóa chính

Các bước từ UNF đến 3NF

Nhập môn Mô hình dữ liệu trong Snowflake

Giới thiệu 2NF (1)

  • Dạng chuẩn thứ hai (2NF): Loại bỏ phụ thuộc bộ phận; mọi thuộc tính không khóa phải phụ thuộc hàm vào khóa chính
  • Phụ thuộc hàm: Khóa chính xác định rõ một thuộc tính

Thẻ nhân viên minh họa phụ thuộc hàm

Nhập môn Mô hình dữ liệu trong Snowflake

Giới thiệu 2NF (2)

  • Dạng chuẩn thứ hai (2NF): Loại bỏ phụ thuộc bộ phận; mọi thuộc tính không khóa phải phụ thuộc hàm vào khóa chính.
  • Phụ thuộc hàm: Khóa chính xác định rõ một thuộc tính.
  • Phụ thuộc bộ phận: Chỉ một phần khóa chính là đủ để xác định thuộc tính.

Thẻ nhân viên minh họa phụ thuộc bộ phận

Nhập môn Mô hình dữ liệu trong Snowflake

Dạng chuẩn thứ hai

Thực thể Allproducts, sản phẩm đạt 2NF

Nhập môn Mô hình dữ liệu trong Snowflake

Dạng chuẩn thứ hai

Thực thể Allproducts, vấn đề 2NF với detail

Nhập môn Mô hình dữ liệu trong Snowflake

Dạng chuẩn thứ hai

Thực thể Allproducts, vấn đề 2NF với manufacturer

Nhập môn Mô hình dữ liệu trong Snowflake

Chuyển sang 2NF

  • Bước 1: Tạo các thực thể mới để chứa thuộc tính có phụ thuộc bộ phận.
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)
);
Nhập môn Mô hình dữ liệu trong Snowflake

Chuyển sang 2NF

  • Bước 2: Nạp dữ liệu vào thực thể từ thực thể ban đầu chưa chuẩn hóa.
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;
Nhập môn Mô hình dữ liệu trong Snowflake

Chuyển sang 2NF

Dữ liệu All products, từ UNF đến 2NF

Nhập môn Mô hình dữ liệu trong Snowflake

Giới thiệu 3NF

  • Dạng chuẩn thứ ba (3NF): Loại bỏ phụ thuộc bắc cầu; thuộc tính không khóa phải phụ thuộc trực tiếp vào khóa chính.

Các bước từ UNF đến 3NF

Nhập môn Mô hình dữ liệu trong Snowflake

Giới thiệu 3NF

  • Dạng chuẩn thứ ba (3NF): Loại bỏ phụ thuộc bắc cầu; thuộc tính không khóa phải phụ thuộc trực tiếp vào khóa chính.
  • Phụ thuộc bắc cầu: Một thuộc tính phụ thuộc vào thuộc tính khác không phải khóa chính.

Thẻ nhân viên minh họa phụ thuộc bắc cầu

Nhập môn Mô hình dữ liệu trong Snowflake

Dạng chuẩn thứ ba

Location không tuân 3NF

Nhập môn Mô hình dữ liệu trong Snowflake

Chuyển sang 3NF

  • Bước 1: Tạo thực thể mới để chứa các thuộc tính có phụ thuộc bắc cầu.
CREATE TABLE locations (
    location_id NUMBER(10,0) PRIMARY KEY,
    location VARCHAR(255)
);
Nhập môn Mô hình dữ liệu trong Snowflake

Chuyển sang 3NF

  • Bước 2: Nạp dữ liệu vào thực thể từ thực thể ban đầu chưa chuẩn hóa.
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;
Nhập môn Mô hình dữ liệu trong Snowflake

Chuyển sang 3NF

  • Bước 3: Tạo thực thể mới để tách các thuộc tính còn lại từ thực thể chưa chuẩn hóa.
CREATE OR REPLACE TABLE products (
    product_id NUMBER(10,0) PRIMARY KEY,
    name VARCHAR(255)
);
  • Bước 4: Nạp các giá trị duy nhất còn lại trong thực thể chưa chuẩn hóa.
INSERT INTO products (product_id, name)
SELECT DISTINCT product_id,
    product_name
FROM allproducts;
Nhập môn Mô hình dữ liệu trong Snowflake

Hoàn thiện mô hình

Các bước từ UNF đến 3NF

Nhập môn Mô hình dữ liệu trong Snowflake

Hoàn thiện mô hình

Dữ liệu All products, từ UNF đến 1NF

Nhập môn Mô hình dữ liệu trong Snowflake

Hoàn thiện mô hình

Dữ liệu All products, từ UNF đến 2NF

Nhập môn Mô hình dữ liệu trong Snowflake

Hoàn thiện mô hình

Dữ liệu All products, từ UNF đến 3NF

Nhập môn Mô hình dữ liệu trong Snowflake

Hoàn thiện mô hình

Dữ liệu All products, từ UNF đến 3NF kèm quan hệ

Nhập môn Mô hình dữ liệu trong Snowflake

Tổng quan thuật ngữ và hàm

  • Dạng chuẩn thứ hai (2NF): Loại bỏ phụ thuộc bộ phận; mọi thuộc tính không khóa phải phụ thuộc hàm vào khóa chính.
  • Dạng chuẩn thứ ba (3NF): Loại bỏ phụ thuộc bắc cầu; thuộc tính không khóa phải phụ thuộc trực tiếp vào khóa chính.
  • Phụ thuộc hàm: Khóa chính xác định rõ một thuộc tính.
  • Phụ thuộc bộ phận: Chỉ một phần khóa chính là đủ để xác định thuộc tính.
  • Phụ thuộc bắc cầu: Một thuộc tính phụ thuộc vào thuộc tính khác không phải khóa chính.
  • ROW_NUMBER() OVER (ORDER BY): Hàm SQL tạo số thứ tự tăng dần.
  • DISTINCT: Mệnh đề SQL trả về giá trị duy nhất của thuộc tính.
  • DROP: Lệnh SQL dùng với ALTER TABLE để xóa phần tử khỏi thực thể.
Nhập môn Mô hình dữ liệu trong Snowflake

Tổng quan hàm

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;
Nhập môn Mô hình dữ liệu trong Snowflake

Ayo berlatih!

Nhập môn Mô hình dữ liệu trong Snowflake

Preparing Video For Download...