Я вижу, что вы на самом деле добавили много полей, которые там не нужны.Подумайте об этом так: если вы можете объяснить, как вычислить поле, применяя какие-либо операции к другим полям, то это вычисляемое поле.
Эти поля не должны быть частью минималистического дизайна, поскольку они могутбыть получены путем работы над другими полями.Давайте рассмотрим самый сложный пример в ваших таблицах.
Если вы хотите получить сумму всех элементов для заказа в вашем примере, вам просто нужно выбрать поле item_total.Но что будет, если его там не было?Не могли бы вы получить этот номер?Да.Вот как:
select sum(oi.total) from order_items oi
inner join order o on (oi.order_id = o.id)
where (o.id = 5)
Теперь мы избавились от одного поля, но можем ли мы удалить поле order_items.total и все же получить этот результат?Да.Потому что это тоже расчетное поле.Вот как:
select sum(oi.quantity * oi.item_price) from order_items oi
inner join order o on (oi.order_id = o.id)
where (o.id = 5)
Применяя аналогичный шаблон, вы можете избавиться от всех полей, которые вы упомянули.И тогда у вас будет минимальный дизайн.
Одна вещь, на которую стоит обратить внимание, состоит в том, что вычисление полей является более сложным, чем просто запрос значения, поэтому они более дороги с точки зрения использования процессора и HD.Преимущество вычисляемых полей состоит в том, что вы избегаете избыточности данных и также экономите немного места:)