2NF і 3NF

Вступ до моделювання даних у Snowflake

Nuno Rocha

Director of Engineering

Вступ до 2NF

  • Друга нормальна форма (2NF): усуває часткові залежності; кожен некодовий атрибут має функціонально залежати від первинного ключа

Кроки від UNF до 3NF

Вступ до моделювання даних у Snowflake

Вступ до 2NF (1)

  • Друга нормальна форма (2NF): усуває часткові залежності; кожен некодовий атрибут має функціонально залежати від первинного ключа
  • Функціональна залежність: первинний ключ однозначно визначає атрибут

Посвідчення працівників, що ілюструють функціональну залежність

Вступ до моделювання даних у Snowflake

Вступ до 2NF (2)

  • Друга нормальна форма (2NF): усуває часткові залежності; кожен некодовий атрибут має функціонально залежати від первинного ключа.
  • Функціональна залежність: первинний ключ однозначно визначає атрибут.
  • Часткова залежність: лише частина первинного ключа потрібна, щоб ідентифікувати атрибут.

Посвідчення працівників, що ілюструють часткову залежність

Вступ до моделювання даних у Snowflake

Друга нормальна форма

Сутність Allproducts, скарга на продукт із 2NF

Вступ до моделювання даних у Snowflake

Друга нормальна форма

Сутність Allproducts, проблема з деталлю у 2NF

Вступ до моделювання даних у Snowflake

Друга нормальна форма

Сутність Allproducts, проблема з деталлю у виробника в 2NF

Вступ до моделювання даних у Snowflake

Перехід до 2NF

  • Крок 1: Створіть нові сутності для атрибутів із частковою залежністю.
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)
);
Вступ до моделювання даних у Snowflake

Перехід до 2NF

  • Крок 2: Заповніть сутності даними з початково ненормалізованої сутності.
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;
Вступ до моделювання даних у Snowflake

Перехід до 2NF

Дані All products, від UNF до 2NF

Вступ до моделювання даних у Snowflake

Вступ до 3NF

  • Третя нормальна форма (3NF): усуває транзитивні залежності; некодові атрибути мають безпосередньо залежати від первинного ключа.

Кроки від UNF до 3NF

Вступ до моделювання даних у Snowflake

Вступ до 3NF

  • Третя нормальна форма (3NF): усуває транзитивні залежності; некодові атрибути мають безпосередньо залежати від первинного ключа.
  • Транзитивна залежність: атрибут залежить від іншого атрибута, який не є первинним ключем.

Посвідчення працівників, що ілюструють транзитивну залежність

Вступ до моделювання даних у Snowflake

Третя нормальна форма

Розташування не відповідає 3NF

Вступ до моделювання даних у Snowflake

Перехід до 3NF

  • Крок 1: Створіть нову сутність для атрибутів із транзитивною залежністю.
CREATE TABLE locations (
    location_id NUMBER(10,0) PRIMARY KEY,
    location VARCHAR(255)
);
Вступ до моделювання даних у Snowflake

Перехід до 3NF

  • Крок 2: Заповніть сутності даними з початково ненормалізованої сутності.
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;
Вступ до моделювання даних у Snowflake

Перехід до 3NF

  • Крок 3: Створіть нову сутність, щоб виокремити з ненормалізованої сутності решту атрибутів.
CREATE OR REPLACE TABLE products (
    product_id NUMBER(10,0) PRIMARY KEY,
    name VARCHAR(255)
);
  • Крок 4: Заповніть сутність унікальними значеннями, що лишилися в ненормалізованій сутності.
INSERT INTO products (product_id, name)
SELECT DISTINCT product_id,
    product_name
FROM allproducts;
Вступ до моделювання даних у Snowflake

Завершення моделі

Кроки від UNF до 3NF

Вступ до моделювання даних у Snowflake

Завершення моделі

Дані All products, від UNF до 1NF

Вступ до моделювання даних у Snowflake

Завершення моделі

Дані All products, від UNF до 2NF

Вступ до моделювання даних у Snowflake

Завершення моделі

Дані All products, від UNF до 3NF

Вступ до моделювання даних у Snowflake

Завершення моделі

Дані All products, від UNF до 3NF з відношеннями

Вступ до моделювання даних у Snowflake

Огляд термінів і функцій

  • Друга нормальна форма (2NF): усуває часткові залежності; кожен некодовий атрибут має функціонально залежати від первинного ключа.
  • Третя нормальна форма (3NF): усуває транзитивні залежності; некодові атрибути мають безпосередньо залежати від первинного ключа.
  • Функціональна залежність: первинний ключ однозначно визначає атрибут.
  • Часткова залежність: лише частина первинного ключа потрібна, щоб ідентифікувати атрибут.
  • Транзитивна залежність: атрибут залежить від іншого атрибута, який не є первинним ключем.
  • ROW_NUMBER() OVER (ORDER BY): функція SQL для генерування послідовної нумерації.
  • DISTINCT: оператор SQL для повернення унікальних значень атрибута.
  • DROP: команда SQL, що з ALTER TABLE видаляє елементи із сутності.
Вступ до моделювання даних у 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;
Вступ до моделювання даних у Snowflake

Давайте потренуємось!

Вступ до моделювання даних у Snowflake

Preparing Video For Download...