You are on page 1of 3

M из MVC. ActiveRecord.

Migrations and Associations


№ урока: 4 Курс: Ruby on Rails

Средства обучения: rvm, ruby, visual studio code

Обзор, цель и назначение урока

Цель данного урока в ознакомлении с принципом хранения данных и их интерпретации из


сущностей DB в сущности Rails. Научиться отслеживать весь пошаговый процесс изменения
структуры данных в DB. Налаживание связей, ассоциация индексов средствами фреймворка Ruby
on Rails

Изучив материал данного занятия, учащийся сможет:

 Формировать оптимальные структуры данных.


 Оптимизировать проект на стороне DB .
 Понимать принципы денормализации и три нормальные формы.
 Уметь проводить индексирование.
 Писать комплексные запросы, к таблицам только на чтение.
 Настраивать предварительные данные – seeds.rb.
 Использовать быстрый способ поднять структуру DB с помощью schema.rb.

Содержание урока

 ActiveModel
 ActiveRecord
 Migrations
 References
 Normalisation & Denormalisation
 Indexes
 Partial indexes
 View and Materialized View
 Associations
 Seeds
 db/schema.rb

Резюме

 Миграции – слепок изменений БД во времени с возможностью откатить структуру к более


раннему состоянию или проследить историю эволюции той или иной таблицы. Пишется
на Ruby синтаксисе, уменьшая порог вхождения в менеджмент данных.
 References – связи между таблицами, хранимые в БД и дополнительно индексируемые для
большей скорости доступа к ним.
 Нормализация БД – процесс приведения структуры БД к нормальной форме.
Производится путем разделения данных на атомарные структуры и последующее их
связывание с целью минимизации дублирования информации и централизованного её
изменения. Дает преимущество во время обновления данных связанных сущностей.
(убирает необходимость дублировать изменения в нескольких местах). Негативным
аспектом выступает необходимость затрачивать ресурсы на менеджмент и хранение
связей. В больших проектах может привести к снижению быстродействия.

Page | 1

CyberBionic Systematics ® 2020 Tel. 0 800 750 312 Title: Ruby on Rails
19 Eugene Sverstyuk Str., 5 floor E-mail: edu@cbsystematics.com Lesson: 4
Kyiv, Ukraine Site: www.edu.cbsystematics.com |
itvdn.com
 Денормализация – обратный нормализации процесс, призванный уменьшить связность
данных, дублируя или резервируя какие-либо результаты вычислений запросов в таблице.
Данный процесс приводит к уменьшению сложности запросов, требуя от БД меньше
связей с другими таблицами, что ускоряет общую скорость загрузки. Цена –
необходимость отдельно обновлять денормализованные поля таблицы.
 Индексация – это способ сортировки нескольких записей по нескольким полям. Создание
индекса для поля в таблице создает другую структуру данных, которая содержит значение
поля и указатель на запись, к которой он относится. Затем эта структура индекса
сортируется, что позволяет выполнять бинарный поиск. Недостатком индексации
является то, что эти индексы требуют дополнительного места на диске, так как индексы
хранятся вместе в таблице. этот файл может быстро достичь пределов размера базовой
файловой системы, если проиндексировано много полей в одной таблице.
 DB View – Запрос к БД, записанный на языке SQL, хранимый в файле при проекте,
обращение на чтение к которому происходит как к отдельной реальной таблице,
посредством ассоциации результата этого запроса и выводимых полей с отдельной
ActiveModel сущности им соответствующей. Отсутствует возможность добавлять данные
в эту виртуальную таблицу.

Закрепление материала

 Чем отличается ActiveModel сущность от DB entity?


 Чем отличаются связи, построенные через Ruby от связей, построенных через DB?
 Какую функцию выполняют миграции?
 Какие есть способы оптимизировать скорость доступа к данным?
 Какова негативная сторона оптимизации DB?
 Polimorphic relation – что это? Где применяется и как реализован на уровне DB?

Дополнительное задание

Задание
Сформировать seed.rb файл наполняющий сайт данными, посредством последовательного
выполнения команды create на необходимых моделях, передавая валидные параметры. Добавить
к Постам поле slug, которое должно выступать в виде уникальной ссылки, идентифицирующей
данную статью.

Самостоятельная деятельность учащегося

Задание 1
Создать структуру (Migrations, Models, Associations, Indexes, View)
Библиотека
Читатель имеет право осуществить поиск и заказ книг по каталогу Книг. В каталоге библиотекарь
выдает читателю книгу на абонемент или в читательский зал. Книга может присутствовать в
библиотеке в одном или нескольких экземплярах. Читатель может увидеть топ-10 самых
популярных книг., может оставить комментарий к книге, оставить комментарий к комментарию,
поставить оценку.

Задание 2
Создать структуру (Migrations, Models, Associations, Indexes, View)
Больница
Врач определяет диагноз, и делает назначение пациенту (процедуры, лекарства, операция).
Назначение может выполнить медсестра (процедуры, лекарства) или врач (процедуры, лекарства,

Page | 2

CyberBionic Systematics ® 2020 Tel. 0 800 750 312 Title: Ruby on Rails
19 Eugene Sverstyuk Str., 5 floor E-mail: edu@cbsystematics.com Lesson: 4
Kyiv, Ukraine Site: www.edu.cbsystematics.com |
itvdn.com
операция). Пациент может быть выписан из больницы, при этом фиксируется окончательный
диагноз. Пациент может оставить отзыв про Врача или Медсестру, которые его обслуживали. Все
участники могут оставить комментарий к отзыву. Пациент может поставить оценку лечащим его
врачам и медсестрам. Выводится список самых лучших врачей (топ-10).

Задание 3
Создать структуру (Migrations, Models, Associations, Indexes, View)
Турагентство
Заказчик выбирает и оплачивает Тур (отдых, экскурсия, шопинг). Турагентство определяет тур как
горячий и размеры скидок для постоянных клиентов. Заказчик может оставить отзыв,
комментарий на отзыв оценку на пройденный тур. Выводится рейтинг самых качественных туров
(топ-5).

Рекомендуемые ресурсы

Описание механизма Моделей на русском


http://rusrails.ru/active-model-basics

Описание механизма Миграций


http://rusrails.ru/rails-database-migrations

Описание ассоциаций и процесса их построений


http://rusrails.ru/active-record-associations

Рекомендации по денормализации
https://habr.com/ru/company/latera/blog/281262/

Page | 3

CyberBionic Systematics ® 2020 Tel. 0 800 750 312 Title: Ruby on Rails
19 Eugene Sverstyuk Str., 5 floor E-mail: edu@cbsystematics.com Lesson: 4
Kyiv, Ukraine Site: www.edu.cbsystematics.com |
itvdn.com

You might also like