规范化关系型数据

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:返回属性唯一值的 SQL 子句
  • COUNT:统计满足条件的行数的 SQL 子句
  • GROUP BY:按指定属性分组相同值的 SQL 子句
  • HAVING:与 GROUP BY 搭配,用于基于条件筛选分组
  • WHERE:按条件筛选记录的 SQL 子句
  • AS:为列或表设置别名的 SQL 子句
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 中的数据建模入门

Passons à la pratique !

Snowflake 中的数据建模入门

Preparing Video For Download...