Вводный курс
10 модулей
5 недели

Дизайнер модели данных

Скопировать

Создание базы данных с использованием дизайнера модели данных


Создание базы данных

Пришло время спроектировать собственную базу данных. Для этого нужно перейти во вкладку Database (База данных) на левой панели.

Data models designer

Модели данных

Данные в базе хранятся в виде специальных таблиц (моделей). И вы можете заметить, что одна модель у нас уже есть. Она является частью модуля авторизации и включена в каждый проект по умолчанию. Благодаря ей осуществляется создание новых пользователей приложения и управление уже существующими. Но мы сейчас не будем останавливаться на ее изучении, а создадим собственную модель.

Представим, что мы разрабатываем картографический сервис. Создадим модель, которая содержит информацию о странах. Для ее создания нужно нажать правой кнопкой мыши в пустом месте холста и выбрать Create empty model (Создать пустую модель).

Для создания нам достаточно указать только название модели. С автогенерацией эндпойнтов и элементов пользовательского интерфейса мы будем разбираться в дальнейших модулях курса.

Create new model

Поля модели

Обратите внимание на то, что сразу после создания модель уже содержит 4 поля. Это системные поля, наличие которых значительно упрощает начальное создание и дальнейшее использование модели.

ID (integer) - Уникальный идентификатор, первичный ключ (primary key). Автоматически создается для каждой новой записи в таблице и предназначен для того, чтобы гарантировать отсутствие дублей. Именно по ID можно однозначно идентифицировать запись в таблице. Его значение начинается с 1 и автоматически увеличивается на 1 для каждой новой записи.

CreatedAt (datetime) - Время создания записи в таблице.

UpdatedAt (datetime) - Время последнего внесения изменений в запись.

DeletedAt (datetime) -  Время удаления записи. Конечно, только в том случае, если было использовано soft-удаление. То есть такое удаление, когда запись только помечается удаленной и фильтруется запросами на доступ к ней, но при этом физически остается в таблице. В этом отличие от bulk-удаления, которое действительно полностью удаляет данные.

Помимо системных будет разумно добавить в созданную модель и пользовательские поля. Предположим, что мы хотим видеть название страны и какое-то описание с информацией о ней.

Выбор типа поля не должен составить проблем. Для названия подойдет String, а для информационного описания Text.

Add model field

Помимо этого доступны еще четыре переключателя:

Multiple values (Array) - использование массивов вместо одиночных записей.

Not null - указанное поле не может быть пустым, всегда должно содержать в себе данные.

Unique - значение поля должно быть уникальным, в данной модели не может быть двух записей, чьи значения данного поля совпадают.

Index - говорит о том, что будет создан специальный индекс для этого поля с целью ускорения поиска.

В целом, правильным будет ставить отметки только в том случае, если это действительно необходимо. Например, мы могли бы отметить Not null и Unique для названий стран, предположив, что не может быть страны без названия, или двух стран с одинаковым названием. Тем не менее хорошей идеей будет контролировать это на этапе создания логики работы приложения, а не закладывать ограничения в саму базу данных.

Аналогичным образом создайте таблицу с информацией о городах. Подумайте, какие поля данных могут в ней содержаться, какой тип этих полей.

Связи моделей данных

Данные в базе существуют не сами по себе, а в виде разрозненных таблиц. Они определенным образом связаны друг с другом. Ключевым моментом разработки модели данных является определение этих отношений и построение связей.

Для установления таких связей необходимо провести мышкой линию от границы одной модели, до другой. В нашем примере мы точно знаем, что каждый город находится в какой-то стране, соответственно можем создать связь от страны к городу.

Data models relations

Существует 3 различных типа связей:

Один-к-одному (has one). Каждой записи в таблице сопоставляется одна запись из связанной таблицы (это верно и в обратную сторону). Простой пример - человек и его паспорт. Мы всегда можем быть уверены, что эта связь уникальна. У паспорта может быть только один владелец, а у каждого человека может быть только один действительный паспорт.

Один-ко-многим (has many). Каждой записи одной таблицы может соответствовать множество записей другой таблицы. Наша база данных является подобным примером. В стране может быть множество различных городов, но при этом каждый город может принадлежать только одной стране. Именно такую связь мы и установим.

Многие-ко-многим (many to many). Связь при которой множественным записям из одной таблицы могут соответствовать множественные записи из другой. Простой пример - связь преподавателей и студентов. Каждый преподаватель может обучать множество студентов, равно как и каждый студент может обучаться у множества различных преподавателей.

Was this article helpful?
Все еще ищете ответ?
Cообщество