Процесс правильного проектирования бд на примере
На сервисе QuintaDB данные хранятся в таблицах, которые заполняются с помощью форм[1]. На примере таблицы с заказами бытовой техники мы рассмотрим самую распространенную ошибку при создании базы данных. Предположим, что у нас есть задача создать таблицу для менеджеров, которые будут вводить данные клиента и его заказы. Для простой базы данных может хватить одной таблицы, но для большинства БД их нужно несколько.
Рассмотрим первый случай. Создадим форму Заказы со всеми необходимыми полями и попробуем работать только в этой таблице.
Но вот несколько неудобств, с которыми вы можете столкнуться:
Чтобы упростить задачу себе и менеджерам, а также сэкономить время, воспользуйтесь следующей инструкцией. Перед началом проектирования мы рекомендуем продумать заранее цель и назначение базы данных. Определите сколько вам нужно таблиц и какие сведения нужно в них поместить, а также список пользователей, которые будут работать с базой данных. Это поможет правильно определить задачи, которые нужно решить. В нашем примере, мы создадим простую базу данных для магазина бытовой техники, с которой будут работать менеджеры магазина.
Шаг 1. Создайте форму Каталог товаров и добавьте на нее поля: Категория, Наименование, Модель, Код товара, Статус, Цена за шт..
Шаг 2. Заполните таблицу с информацией о товарах или импортируйте данные[2] .
Шаг 3. По аналогии создайте форму Клиенты, которая будет содержать поля для заполнения данных о клиенте (Имя, Адрес, Телефон и др.). На данном этапе не обязательно заполнять таблицу с клиентами, но если у вас уже есть база данных, то вы можете сделать это сразу.
Шаг 4. Для оформления заказа клиента нужно создать третью форму - Форма заказа.
Нужно связать эту форму с таблицей Каталог товаров с помощью поля Связь[3]. Данное поле поможет связать данные из нескольких таблиц внутри вашего приложения (подробнее о связях между таблицами читайте по ссылке).
Желательно, чтобы колонка, по которой выполняется связь, содержала уникальные значения. Для это хорошо подойдет колонка Код товара в таблице Каталог товаров, т.к. код никогда не повторяется.
Выберем тип связи - Многие-к-одному, тип отображения поля - Выпадающий список или Поле с автодополнением и возможностью выбрать несколько значений. Теперь при выборе кода товара на форме заказа, система автоматически определяет: какое наименование у этого товара, модель, статус и цена за единицу. Эти колонки (Наименование, Модель, Цена за шт.) можно отобразить в текущей таблице, с помощью полей типа: Связанная колонка[4].
Шаг 5. Добавим на форму числовое поле Количество и формулу[5] Итого.
С помощью формулы Цена*Количество будет считаться итоговая сумма заказа.
Шаг 6. Создаем финальную форму - Продажи. С помощью поля связь - Клиент связываем таблицы Продажи и Клиенты. Тип связи - Многие-к-одному.
Шаг 7. Добавляем Форму заказа в виде поля Субформа[6]. Чтобы суммировать значения колонки Итого нужно добавить на форму Связанную колонку К оплате. Узнать подробнее как считается сумма по субформе можно по этой ссылке.
Шаг 8. Заполняем форму. Выбираем нужно клиента из связанной таблицы или добавляем нового с помощью поля Связь. Заказанный клиентом товар указывается в субформе Заказ.
В итоге имеем более компактную таблицу, без необходимости дублировать каждый раз данные вручную. Также, если обновить значения в одной таблице, то все изменения отобразятся в связанных таблицах тоже, потому что в основе построения базы данных находятся набор связанных значений. Такая база данных называется - реляционной.
В следующей статье, вы узнаете как правильно разграничить права доступа в базе данных, с помощью отчетов.
Полезные ссылки:
1. Как создать базу данных для сайта
2. Как создать базу данных онлайн, импортируя данные из Excel и CSV файлов
3. Как связать таблицы (формы) в QuintaDB