リレーショナルデータの正規化

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: 特定のエンティティから取得
  • 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...