Задание ключей и создание проекта базы данных
Изучите поля, записи, ключи и способы моделирования. Затем создайте первый черновик структуры интернет-магазина.
Один проект — три этапа
Все практические выполняются последовательно в одном файле diagrams.net. На каждой практической добавляются новые страницы, а прежние остаются для проверки хода проектирования. Все задания выполняются на схеме; отдельные текстовые ответы и автоматическое тестирование здесь не нужны.
Две части занятия: сначала изучите объяснения и примеры, затем перейдите к самостоятельным заданиям по магазину «ТехноКорзина».
Что такое база данных и зачем её проектируют?
База данных — организованное собрание данных. В магазине нужно хранить информацию о покупателях, товарах, заказах и их составе. Если записывать всё в произвольный текстовый файл, сложно надёжно находить записи, изменять цены и связывать товары с заказами.
СУБД (например, PostgreSQL или SQLite) — программа, которая позволяет создавать и использовать настоящие базы данных. diagrams.net — редактор схем. В этой работе мы проектируем структуру, а не создаём физическую базу в СУБД.
Часть реального мира, которую моделируем: в нашем случае — продажи компьютерных товаров.
То, о чём нужно хранить данные: покупатель, заказ, товар, категория. Название объекта ещё не означает, что уже правильно спроектирована таблица.
Отдельная характеристика: дата заказа, название товара, телефон покупателя.
Информация об одном экземпляре: одном клиенте или одном заказе.
Таблица, поля, записи и ключи
Таблица имеет название, набор полей и множество строк. Посмотрите на посторонний пример — учебные кружки. Синий первый столбец показывает идентификаторы записей.
Первичный ключ (PK, Primary Key) — поле или набор полей, которые однозначно отличают одну запись от другой. Значения первичного ключа не должны повторяться или быть NULL. Таблица имеет один PK, но он может включать несколько полей.
Типы полей и ограничения
| Тип | Где используют | Почему |
|---|---|---|
INTEGER | Номер заказа, количество | Целые числа |
VARCHAR/TEXT | Имя товара, телефон, код вида «Т01» | Строковые значения; телефон не нужен для арифметики |
DATE | Дата заказа | Позволяет сравнивать календарные даты |
DECIMAL(10,2) | Цена в рублях | Фиксированная точность для денежных значений |
NOT NULL | Обязательное поле | Нельзя оставить пустым |
UNIQUE | Значение, которое не должно дублироваться | Не заменяет PK во всех сценариях |
Черновая модель: от описания процесса к таблице
В начале проекта заказ часто записывают одной строкой с номером, датой, покупателем и перечнем покупок. Так выглядит привычный чек. Это удобно человеку, но плохо подходит для реляционной таблицы, если поле «Товары» содержит сразу несколько отдельных товаров.
| № заказа | Дата | Покупатель | Товары (в одной ячейке) |
|---|---|---|---|
| 41 | 07.09.2026 | Ольга | Блокнот ×2; ручка ×4 |
| 42 | 08.09.2026 | Виктор | Папка ×1 |
Это пример ненормализованного представления: перечисление нескольких независимых предметов в одной ячейке. Исправлять его сейчас не нужно. Во второй практической работе вы специально устраните этот недостаток.
Что считается модификацией структуры?
Не только добавление новой строки с данными, но и изменение проекта: добавление поля статус_заказа, переименование имя в фио_клиента, изменение типа поля, удаление ненужного атрибута. На схеме такие решения удобно сопровождать поясняющими заметками.
Как работать в diagrams.net
Откройте app.diagrams.net, выберите сохранение на устройство, создайте новую пустую диаграмму. Создавайте объекты из отдельных редактируемых фигур, а не вставляйте скриншот или готовое изображение.
- В левой панели выберите фигуры General или подключите библиотеку Entity Relation через More Shapes.
- Перетащите на холст таблицу или прямоугольник. Двойной щелчок позволяет редактировать текст.
- Для полей используйте отдельные строки таблицы или единый блок с чётко разделённым списком полей.
- Обозначайте ключи
PKи при необходимости подписиVARCHAR,DATE,INTEGER. - Сохраняйте рабочий проект на устройстве в формате
.drawio. Для сдачи отдельно экспортируйте.xml.
02 · 1НФ, 03 · 2НФ и 04 · 3НФ, сохранив черновик без изменений.Практические задания: проект «ТехноКорзина»
Ситуация: вы проектировщик базы данных интернет-магазина компьютерных товаров. Менеджер сегодня хранит сведения о заказах как список чеков. Ваша задача — нарисовать начальную структуру данных. В следующих занятиях вы исправите её недостатки и построите схему связей.
В магазине есть три покупателя и четыре товара. Для каждого товара известны код, название, категория и текущая цена из каталога. Считайте, что один товар может встретиться внутри одного заказа только одной позицией с указанным количеством.
| Код клиента | ФИО | Телефон |
|---|---|---|
| К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 ₽ |
| Т03 | SSD 1 ТБ | Г02 | Накопители | 6 200 ₽ |
| Т04 | USB-хаб | Г01 | Периферия | 1 400 ₽ |
| Заказ | Дата | Покупатель | Состав заказа |
|---|---|---|---|
| 201 | 05.10.2026 | К01 | Т01 × 2; Т02 × 1 |
| 202 | 06.10.2026 | К02 | Т03 × 1 |
| 203 | 06.10.2026 | К01 | Т03 × 1; Т01 × 1 |
| 204 | 07.10.2026 | К03 | Т02 × 1; Т04 × 1 |
Задание 1. Создайте проект и обозначьте предметную область
- Создайте новый документ в diagrams.net. Назовите его
tehnokorzina_Фамилия.drawio. - Назовите первую страницу
01 · Черновик. - Создайте заголовок с названием проекта, ФИО и группой.
- На холсте разместите четыре отдельных блока-кандидата: «Клиент», «Заказ», «Товар», «Категория». Кратко подпишите, какую информацию хранит каждый объект.
Задание 2. Создайте первичную таблицу заказов
- Рядом с объектами из задания 1 нарисуйте таблицу с именем
Заказ_черновик. - Предусмотрите в ней номер и дату заказа, код и ФИО покупателя, телефон и состав заказа.
- Для каждого поля обозначьте разумный тип данных.
- Определите и отметьте PK. Подпишите рядом, почему выбранное поле подходит в качестве ключа.
- Заполните на схеме все четыре заказа из исходных данных (допускается отдельная таблица с примерами строк).
Задание 3. Проверьте структуру и покажите модификации
- Добавьте в
Заказ_черновикполестатус_заказастрокового типа. - Для каждого из четырёх заказов укажите статус на выбор: «новый», «собирается», «отправлен» (придумайте статусы самостоятельно).
- Исправьте слишком общее название поля, если встретили его, и зафиксируйте изменение в выноске «Что изменил».
- Оформите рядом с таблицей блок «Проблемы черновика» с минимум тремя потенциальными трудностями такой структуры; подсказки о них есть в теории.
Задание 4. Подготовьте проект к продолжению
- Выделите разными цветами исходные объекты, таблицу черновика и замечания.
- Проверьте аккуратность: названия элементов не перекрываются, текст читается при масштабе 100%.
- Сохраните исходный
.drawioфайл для практической №2. - Экспортируйте текущую работу в отдельный файл XML, используя инструкции в конце страницы.
📤 Сохранение и сдача
Ответом является один редактируемый XML-файл из diagrams.net. Скриншоты, PNG, PDF, Word и ссылки не заменяют XML. Страница материала не загружает работу автоматически — отправить файл нужно самостоятельно через сервис.
- Сохраните рабочий проект через File → Save или File → Save As в формате
.drawio. Этот файл оставьте себе для продолжения. - Выберите File → Export as → XML. Включите All Pages, чтобы в файл вошли все страницы проекта. Не включайте Selection Only. Параметр Compressed можно отключить для удобства проверки XML.
- Скачайте XML и назовите файл
tehnokorzina_Фамилия_ПР01.xml(вместо слова «Фамилия» укажите свою фамилию латиницей или кириллицей). - Для проверки откройте экспортированный XML через File → Open From → Device в diagrams.net и убедитесь, что он редактируется и содержит нужные страницы.
- Перейдите на homework.probochka-corp.ru, откройте соответствующую практическую работу №1, прикрепите полученный
.xmlи завершите отправку в интерфейсе сервиса.
После сдачи не удаляйте рабочий .drawio: в следующей практической потребуется продолжить тот же проект.