Помощь Joomla



Mysql Workbench Уроки

Разработка → Руководство по проектированию реляционных баз данных (14-15 часть из 15) [перевод] перевод  Ноябрь 4, 2018 – 21:12
Создание таблицы Продолжение.
Предыдущие части: 1-3, 4-6, 7-9, 10-13
Продолжение. Каскадное удаление данных.

14. Другой пример: база данных интернет-магазина.

Вы познакомились, я надеюсь, с основными концепциями создания баз данных и теперь вы можете спроектировать простую реляционную базу данных. В примере ниже я резюмирую задачи, с которыми вы столкнетесь при разработке базы данных.
P.S. Информация ниже в очень упрощенной форме моделирует мыслительный процесс при создании базы данных.
Система интернет-магазина.
Для того, чтобы получить представление о данных, которые будут использоваться, давайте обозначим задачи, которые должен выполнять интернет-магазин.
  • Отображение товаров
  • Классификация товаров
  • Регистрация клиентов
  • Добавление товаров в корзину покупок
  • Отображение содержимого корзины покупок
  • Оформление заказов посетителями
  • И т.д.
Определяем сущности и отношения.
Из списка задач мы можем вывести сущности, которые имеют важные роли в нашей системе. Товары, категории, клиенты и заказы – сущности, которые можно найти почти в каждой базе данных интернет-магазина. В данном примере я покажу вам модель, содержащую только следующие сущности: клиент, заказ и товар. Определившись с сущностями, мы можем подумать над связями между ними.
  • Между заказом и товаром существует связь многие-ко-многим. Каждый заказ содержит 1 или более товаров и каждый товар может быть связан с 0, 1 или большим количеством заказов. Связь многие-ко-многим создается с помощью трех таблиц. Две таблицы – источники данных (order — заказ и products — товары) и одна – соединительная (OrderProducts), что вы и можете увидеть на картинке ниже. Обратите внимание на то, что и заказы и товары имеют связь один-ко-многим с соединительной таблицей. Вместе они образуют связь многие-ко-многим между заказами и товарами.
  • Клиенты и заказы имеют связь один-ко-многим. Каждая запись о клиенте может быть связана с множественными записями о заказах (заказами) и наоборот, каждая запись о заказе (конкретный заказ) может быть связана только с одной записью о клиенте.

Данная таблица является простым примером. “Настоящая” таблица клиентов, конечно, содержит больше информации (адрес, город и т.д.)

Некоторые замечания о данной модели.

Таблица заказов (order)

Каждая запись таблицы заказов, каждый заказ связан с уникальной записью о клиенте, с уникальным клиентом с помощью внешнего ключа – поля customer_id.

Количество заказов.

Если вы задались вопросом, а можете ли вы добавить, например, поле количества заказов (order_quantity), то ответ – нет. Эти данные могут быть получены из существующих данных. Общее количество товаров в заказе (order_quantity) может быть получено из таблицы OrderProduct. Запрос, который находит количество товаров в заказе может быть легко сформирован с помощью SQL.

Тип платежа.

Поле, которое вы могли бы добавить в таблицу заказов – payment_type (тип платежа). Это информация уникальна для конкретного заказа и не может быть получена из других данных (имейте в виду, что поле payment_type стало бы внешним ключом в таблице заказов – order – с сылкой на отдельную таблицу, содержащую типы платежей).

Source: habrahabr.ru

Похожие публикации:

  1. Mysql и C Уроки
  2. Java Script Уроки
  3. Cms Joomla Уроки
  4. Joomla Видеоуроки
  5. Сайт Joomla Уроки