關聯資料正規化

Snowflake 資料建模入門

Nuno Rocha

Director of Engineering

認識未正規化資料

  • 未正規化資料(UNF):可能缺乏結構、雜亂,且含有重複或異常

所有產品實體

Snowflake 資料建模入門

認識未正規化資料

所有產品實體中的異常

Snowflake 資料建模入門

認識未正規化資料

香蕉異常標示

Snowflake 資料建模入門

認識未正規化資料(3)

製造商異常標示

Snowflake 資料建模入門

認識未正規化資料(4)

詳細說明異常標示

Snowflake 資料建模入門

認識未正規化資料(5)

產品異常標示

Snowflake 資料建模入門

未正規化資料的問題

  • 資料冗餘:不必要的重複
  • 資料異常:資料中的不規則或不一致

所有產品實體中的異常

Snowflake 資料建模入門

辨識未正規化資料

SELECT manufacturer_id, 
       manufacturer_name, 
       location, 
       COUNT(*) AS repetitions
FROM allproducts
GROUP BY manufacturer_id, 
    manufacturer_name, 
    location
HAVING COUNT(*) > 1;

製造商清單與產品重複計數

Snowflake 資料建模入門

辨識未正規化資料

SELECT DISTINCT category 
FROM allproducts;

類別清單

Snowflake 資料建模入門

辨識未正規化資料

SELECT DISTINCT product_name,
    category
FROM allproducts
WHERE category = 'L';

L 類別的產品清單

Snowflake 資料建模入門

辨識未正規化資料

SELECT DISTINCT product_name,
    category
FROM allproducts
WHERE category = 'L';

所有含有 L 的產品清單

Snowflake 資料建模入門

正規化資料

  • 正規化資料:將資料組織為獨立且原子化的實體
  • 好處
    • 提升資料正確性與可靠性
    • 強化查詢效能
    • 最佳化資源使用
    • 具擴充性
Snowflake 資料建模入門

術語與函式總覽

  • 未正規化資料(UNF):可能缺乏結構、雜亂,或包含重複或異常
  • 正規化資料:將資料組織為獨立且原子化的實體
  • SELECT FROM:從特定實體擷取資料的 SQL 子句
  • DISTINCT:回傳屬性中不重複的唯一值
  • COUNT:計算符合條件的列數
  • GROUP BY:依指定屬性分組相同值的列
  • HAVING:與 GROUP BY 搭配,用於依條件篩選群組
  • WHERE:依條件篩選記錄
  • AS:將欄位或資料表重新命名為別名
Snowflake 資料建模入門

函式總覽

-- 在特定條件篩選下查詢唯一值
SELECT DISTINCT column_name
FROM table_name
WHERE column_name  condition  value;
-- 依特定欄位彙總計數,並篩選結果
SELECT column_name, 
    COUNT(*) AS alias_name
FROM table_name
GROUP BY column_name
HAVING COUNT(*)  condition  value;
Snowflake 資料建模入門

一起來練習吧!

Snowflake 資料建模入門

Preparing Video For Download...