ОП.08 · Основы проектирования баз данных · Практическая №1

Задание ключей и создание проекта базы данных

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

Редактор: diagrams.net / draw.ioОдна сквозная модельОтвет: редактируемый XML

Один проект — три этапа

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

Практическая №1Черновая модель
Практическая №2Нормализация
Практическая №3ER-диаграмма

Две части занятия: сначала изучите объяснения и примеры, затем перейдите к самостоятельным заданиям по магазину «ТехноКорзина».

1

Что такое база данных и зачем её проектируют?

База данных — организованное собрание данных. В магазине нужно хранить информацию о покупателях, товарах, заказах и их составе. Если записывать всё в произвольный текстовый файл, сложно надёжно находить записи, изменять цены и связывать товары с заказами.

СУБД (например, PostgreSQL или SQLite) — программа, которая позволяет создавать и использовать настоящие базы данных. diagrams.net — редактор схем. В этой работе мы проектируем структуру, а не создаём физическую базу в СУБД.

Покупатель«Где мой заказ?» Сервис магазинаЗапрашивает данные База данныхХранит связанные записи
Схема показывает, почему приложению нужна организованная структура. Сама диаграмма хранит описание проекта, а не реальные заказы.
Предметная область

Часть реального мира, которую моделируем: в нашем случае — продажи компьютерных товаров.

Объект (кандидат в сущности)

То, о чём нужно хранить данные: покупатель, заказ, товар, категория. Название объекта ещё не означает, что уже правильно спроектирована таблица.

Атрибут (поле)

Отдельная характеристика: дата заказа, название товара, телефон покупателя.

Запись (строка)

Информация об одном экземпляре: одном клиенте или одном заказе.

2

Таблица, поля, записи и ключи

Таблица имеет название, набор полей и множество строк. Посмотрите на посторонний пример — учебные кружки. Синий первый столбец показывает идентификаторы записей.

ГРУППЫ_КУРСОВ id [PK]названиекабинет1Робототехника2042Веб-разработка3103Дизайн105 Поля(столбцы) Записи(строки)Уникальныйключ
Это учебный пример формы таблицы, не решение задания об интернет-магазине.

Первичный ключ (PK, Primary Key) — поле или набор полей, которые однозначно отличают одну запись от другой. Значения первичного ключа не должны повторяться или быть NULL. Таблица имеет один PK, но он может включать несколько полей.

✓ Уникальный ID✕ ФИО не гарантирует уникальностьIDФИОФИО как ключ14Иван Иванов15Иван Иванов16Елена СмирноваИван ИвановИван ИвановЕлена Смирновадубль!
Два человека могут иметь одинаковые ФИО. Идентификатор удобнее использовать как устойчивый ключ.
Не путайте: уникальное поле — это кандидат в ключ, но не каждое уникальное поле необходимо выбирать как PK. Позже вам понадобится составной PK: одна строка определяется комбинацией двух полей. Внешний ключ (FK) появится при связывании таблиц во второй и третьей работах.

Типы полей и ограничения

ТипГде используютПочему
INTEGERНомер заказа, количествоЦелые числа
VARCHAR/TEXTИмя товара, телефон, код вида «Т01»Строковые значения; телефон не нужен для арифметики
DATEДата заказаПозволяет сравнивать календарные даты
DECIMAL(10,2)Цена в рубляхФиксированная точность для денежных значений
NOT NULLОбязательное полеНельзя оставить пустым
UNIQUEЗначение, которое не должно дублироватьсяНе заменяет PK во всех сценариях
3

Черновая модель: от описания процесса к таблице

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

№ заказаДатаПокупательТовары (в одной ячейке)
4107.09.2026ОльгаБлокнот ×2; ручка ×4
4208.09.2026ВикторПапка ×1

Это пример ненормализованного представления: перечисление нескольких независимых предметов в одной ячейке. Исправлять его сейчас не нужно. Во второй практической работе вы специально устраните этот недостаток.

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

Что считается модификацией структуры?

Не только добавление новой строки с данными, но и изменение проекта: добавление поля статус_заказа, переименование имя в фио_клиента, изменение типа поля, удаление ненужного атрибута. На схеме такие решения удобно сопровождать поясняющими заметками.

4

Как работать в diagrams.net

Откройте app.diagrams.net, выберите сохранение на устройство, создайте новую пустую диаграмму. Создавайте объекты из отдельных редактируемых фигур, а не вставляйте скриншот или готовое изображение.

Файл Правка Вид Упорядочить …Библиотека фигурТаблица Объект учебной схемыPK — поле идентификатораатрибут_1атрибут_201 · Черновик+Рабочий холст
Условная схема интерфейса, не скриншот. Слева — фигуры, в центре — холст, снизу — страницы документа.
  1. В левой панели выберите фигуры General или подключите библиотеку Entity Relation через More Shapes.
  2. Перетащите на холст таблицу или прямоугольник. Двойной щелчок позволяет редактировать текст.
  3. Для полей используйте отдельные строки таблицы или единый блок с чётко разделённым списком полей.
  4. Обозначайте ключи PK и при необходимости подписи VARCHAR, DATE, INTEGER.
  5. Сохраняйте рабочий проект на устройстве в формате .drawio. Для сдачи отдельно экспортируйте .xml.
Как не потерять сквозной проект: один файл с несколькими вкладками-страницами. В следующей работе откроете этот же проект и добавите страницы 02 · 1НФ, 03 · 2НФ и 04 · 3НФ, сохранив черновик без изменений.
5

Практические задания: проект «ТехноКорзина»

Ситуация: вы проектировщик базы данных интернет-магазина компьютерных товаров. Менеджер сегодня хранит сведения о заказах как список чеков. Ваша задача — нарисовать начальную структуру данных. В следующих занятиях вы исправите её недостатки и построите схему связей.

Д Исходные данные для всех трёх работ

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

Код клиентаФИОТелефон
К01Анна Смирнова8-900-111-11-11
К02Борис Ли8-900-222-22-22
К03Дарья Петрова8-900-333-33-33
ТоварНазваниеКод категорииКатегорияЦена
Т01МышьГ01Периферия900 ₽
Т02КлавиатураГ01Периферия2 500 ₽
Т03SSD 1 ТБГ02Накопители6 200 ₽
Т04USB-хабГ01Периферия1 400 ₽
ЗаказДатаПокупательСостав заказа
20105.10.2026К01Т01 × 2; Т02 × 1
20206.10.2026К02Т03 × 1
20306.10.2026К01Т03 × 1; Т01 × 1
20407.10.2026К03Т02 × 1; Т04 × 1
Эти исходные данные и правила сохраняются без изменений во всех трёх практических. Не переименовывайте выданные коды и не придумывайте дополнительных заказов вместо них.

Задание 1. Создайте проект и обозначьте предметную область

  1. Создайте новый документ в diagrams.net. Назовите его tehnokorzina_Фамилия.drawio.
  2. Назовите первую страницу 01 · Черновик.
  3. Создайте заголовок с названием проекта, ФИО и группой.
  4. На холсте разместите четыре отдельных блока-кандидата: «Клиент», «Заказ», «Товар», «Категория». Кратко подпишите, какую информацию хранит каждый объект.
Проверка: четыре блока присутствуют, подписи читаются, это ваши редактируемые фигуры.

Задание 2. Создайте первичную таблицу заказов

  1. Рядом с объектами из задания 1 нарисуйте таблицу с именем Заказ_черновик.
  2. Предусмотрите в ней номер и дату заказа, код и ФИО покупателя, телефон и состав заказа.
  3. Для каждого поля обозначьте разумный тип данных.
  4. Определите и отметьте PK. Подпишите рядом, почему выбранное поле подходит в качестве ключа.
  5. Заполните на схеме все четыре заказа из исходных данных (допускается отдельная таблица с примерами строк).
Проверка: 4 заказа, PK обозначен, значения не противоречат исходным данным, состав заказа пока намеренно остаётся перечнем товаров в одной ячейке.

Задание 3. Проверьте структуру и покажите модификации

  1. Добавьте в Заказ_черновик поле статус_заказа строкового типа.
  2. Для каждого из четырёх заказов укажите статус на выбор: «новый», «собирается», «отправлен» (придумайте статусы самостоятельно).
  3. Исправьте слишком общее название поля, если встретили его, и зафиксируйте изменение в выноске «Что изменил».
  4. Оформите рядом с таблицей блок «Проблемы черновика» с минимум тремя потенциальными трудностями такой структуры; подсказки о них есть в теории.
Проверка: изменения отражены именно на редактируемой схеме, есть три осмысленных замечания.

Задание 4. Подготовьте проект к продолжению

  1. Выделите разными цветами исходные объекты, таблицу черновика и замечания.
  2. Проверьте аккуратность: названия элементов не перекрываются, текст читается при масштабе 100%.
  3. Сохраните исходный .drawio файл для практической №2.
  4. Экспортируйте текущую работу в отдельный файл XML, используя инструкции в конце страницы.

📤 Сохранение и сдача

Ответом является один редактируемый XML-файл из diagrams.net. Скриншоты, PNG, PDF, Word и ссылки не заменяют XML. Страница материала не загружает работу автоматически — отправить файл нужно самостоятельно через сервис.

  1. Сохраните рабочий проект через File → Save или File → Save As в формате .drawio. Этот файл оставьте себе для продолжения.
  2. Выберите File → Export as → XML. Включите All Pages, чтобы в файл вошли все страницы проекта. Не включайте Selection Only. Параметр Compressed можно отключить для удобства проверки XML.
  3. Скачайте XML и назовите файл tehnokorzina_Фамилия_ПР01.xml (вместо слова «Фамилия» укажите свою фамилию латиницей или кириллицей).
  4. Для проверки откройте экспортированный XML через File → Open From → Device в diagrams.net и убедитесь, что он редактируется и содержит нужные страницы.
  5. Перейдите на homework.probochka-corp.ru, откройте соответствующую практическую работу №1, прикрепите полученный .xml и завершите отправку в интерфейсе сервиса.

После сдачи не удаляйте рабочий .drawio: в следующей практической потребуется продолжить тот же проект.

Чек-лист перед отправкой