Как правильно организовать связанные таблицы в базе данных MySQL?
Существует две таблицы - users и orders:
| id | first_name | orders_amount_total |
|---|---|---|
| 1 | Вася | 5634200 |
| 2 | Петя | 3982830 |
| id | user_id | order_amount |
|---|---|---|
| 1 | 1 | 200 |
| 2 | 1 | 150 |
| 3 | 2 | 70 |
| 4 | 1 | 320 |
| 5 | 2 | 20 |
| 6 | 2 | 10 |
| 7 | 2 | 85 |
| 8 | 1 | 25 |
Таблицы связаны по user id. Задача заключается в том, чтобы для каждого пользователя показывать сумму всех его заказов, их (заказов) может быть тысячи, может быть десятки тысяч, при этом и пользователей одновременно делающих запрос могут быть сотни и тысячи. Есть два варианта:
- При каждом новом заказе помимо записи в таблицу orders увеличивать счетчик orders_amount_total , а потом просто его показывать пользователю.
- Убрать поле orders_amount_total вовсе, а чтобы показывать сумму всех заказов JOIN-нить таблицы и использовать оператор SUM чтобы посчитать суммы всех заказов конкретного пользователя.
Какой вариант лучше использовать? Почему? Почему плох другой вариант?
P.S. я считаю что второй вариант лаконичный и правильный, учитывая что БД реляционная, но есть сильные сомнения насчет нагрузки на сервер, ведь выборка при подсчете суммы большая даже для одного пользователя, а их много.