Модель «сущность — связь»

Введение в моделирование данных в Snowflake

Nuno Rocha

Director of Engineering

Введение в моделирование «сущность — связь»

  • Модель «сущность — связь» (ER): структурирует нормализованные данные с помощью сущностей, атрибутов и связей

Сущности для моделирования в контексте колледжа

Введение в моделирование данных в Snowflake

Пример модели «сущность — связь»

Взаимодействие сущностей в контексте колледжа

Введение в моделирование данных в Snowflake

Почему стоит выбрать ER-модель

  • Ясность
    • Упрощает бизнес-связи, отражая реальные взаимодействия
  • Организованность
    • Разбивает данные на связанные сущности, упрощая управление информацией
  • Гибкость
    • Легко адаптируется и масштабируется со временем
Введение в моделирование данных в Snowflake

Построение ER-модели

Модель колледжа с добавлением записей на курсы

Введение в моделирование данных в Snowflake

Построение ER-модели

  • Добавление связи между существующими сущностями:
ALTER TABLE classes
ADD FOREIGN KEY (school_id) REFERENCES schools(school_id);

Модель колледжа: связь между сущностями classes и schools

Введение в моделирование данных в Snowflake

Построение ER-модели

Модель колледжа: новая сущность enrollments

Введение в моделирование данных в Snowflake

Построение ER-модели

CREATE OR REPLACE TABLE enrollments (
      -- Create a new entity with a unique identifier
      enrollment_id NUMBER(10,0) PRIMARY KEY

-- Add the entity's attributes year NUMBER(4,0), semester VARCHAR(255)
-- Add relationships to other entities FOREIGN KEY (student_id) REFERENCES students(student_id), FOREIGN KEY (class_id) REFERENCES classes(class_id)
);
Введение в моделирование данных в Snowflake

Построение ER-модели

Итоговая ER-модель колледжа

Введение в моделирование данных в Snowflake

Извлечение данных из ER-модели

Запрос к ER-модели: имена студентов и курсы в школе Science за 2023 год

Введение в моделирование данных в Snowflake

Извлечение данных из ER-модели

SELECT students.name  
FROM students;

Запрос к ER-модели: имена студентов

Введение в моделирование данных в Snowflake

Извлечение данных из ER-модели

SELECT students.name
FROM students
    JOIN enrollments 
    ON students.student_id = enrollments.student_id;

Запрос к ER-модели: студенты и записи на курсы

Введение в моделирование данных в Snowflake

Извлечение данных из ER-модели

SELECT students.name
FROM students
    JOIN enrollments 
    ON students.student_id = enrollments.student_id
WHERE enrollments.year = '2023';

Запрос к ER-модели: записи за 2023 год

Введение в моделирование данных в Snowflake

Извлечение данных из ER-модели

SELECT students.name, 
    classes.class_name
FROM students
    JOIN enrollments 
    ON students.student_id = enrollments.student_id
    JOIN classes 
    ON enrollments.class_id = classes.class_id
WHERE enrollments.year = '2023';

Запрос к ER-модели: названия курсов

Введение в моделирование данных в Snowflake

Извлечение данных из ER-модели

SELECT students.name, 
    classes.class_name
FROM students
    JOIN enrollments 
    ON students.student_id = enrollments.student_id
    JOIN classes 
    ON enrollments.class_id = classes.class_id
    JOIN schools 
    ON classes.department_id = schools.school_id
WHERE enrollments.year = '2023'
    AND schools.school_name = 'Science';
Введение в моделирование данных в Snowflake

Извлечение данных из ER-модели

  • JOIN ON: оператор SQL для объединения строк из таблиц по связанному столбцу, заданному через ON.

Запрос к ER-модели: школа Science

Введение в моделирование данных в Snowflake

Обзор терминологии и функций

  • Модель «сущность — связь» (ER): структурирует нормализованные данные с помощью сущностей и связей.
  • SELECT FROM: команда SQL для выборки столбцов из таблицы.
  • JOIN ON: оператор SQL для объединения строк из таблиц по связанному столбцу через ON.
  • WHERE: оператор SQL для фильтрации записей по заданному условию.
  • AND: логический оператор, используемый с WHERE для объединения нескольких условий.
-- Querying data from merged entities filtered by specific conditions
SELECT column_name
FROM table_name
    JOIN other_table ON table_name.FK = other_table.PK
WHERE column_name  condition  value
    AND column_name  condition  value;
Введение в моделирование данных в Snowflake

Давайте потренируемся!

Введение в моделирование данных в Snowflake

Preparing Video For Download...