Помогите с архитектурой mysql

Темы, не касающиеся фреймворка, но относящиеся к программированию в целом.
Ответить
s-sergey1990
Сообщения: 21
Зарегистрирован: 2014.07.01, 23:11

Помогите с архитектурой mysql

Сообщение s-sergey1990 »

Добрый вечер! Помоги с архитектурой mysql. Предположим у нас есть много компаний у которых в свою очередь есть много заказов. Допустим на 1 компанию 4 тыс заказов. Как правильнее разработать бд. Все заказы пихать в 1 таблицу и по id все доставать? Если делать такой вариант не будет ли слишком долго выполняться запрос? Или же как вариант при создании новой компании генерировать новую таблицу заказов для это компании? Опять же теория. В общем подскажите как правильнее сделать архитектуру, что б потом не было проблем
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Помогите с архитектурой mysql

Сообщение ElisDN »

Нагенерируйте пару миллионов строк и попробуйте повыполнять запросы по индексам и без и вставки. Так точное время выполнения и узнаете.
s-sergey1990
Сообщения: 21
Зарегистрирован: 2014.07.01, 23:11

Re: Помогите с архитектурой mysql

Сообщение s-sergey1990 »

ElisDN писал(а): 2017.05.02, 23:56 Нагенерируйте пару миллионов строк и попробуйте повыполнять запросы по индексам и без и вставки. Так точное время выполнения и узнаете.
Спасибо за ответ!
Аватара пользователя
VLD-UKRAINE
Сообщения: 20
Зарегистрирован: 2017.04.29, 18:56
Контактная информация:

Re: Помогите с архитектурой mysql

Сообщение VLD-UKRAINE »

К чему хотите привязывать заказы - к компаниям? - к клиентам? - к товару? Вопрос многогранный. Что потом хотите выбирать? Даты? Суммы? По клиентам? По компаниям? На подобную задачу может понадобится не 10 и не 20 таблиц! А время перебора - например таблица с 10 тыс клиентов выборка с соединением 7 таблиц группировками и вычислениями занимает 0.00017сек.
s-sergey1990
Сообщения: 21
Зарегистрирован: 2014.07.01, 23:11

Re: Помогите с архитектурой mysql

Сообщение s-sergey1990 »

VLD-UKRAINE писал(а): 2017.05.03, 19:11 К чему хотите привязывать заказы - к компаниям? - к клиентам? - к товару? Вопрос многогранный. Что потом хотите выбирать? Даты? Суммы? По клиентам? По компаниям? На подобную задачу может понадобится не 10 и не 20 таблиц! А время перебора - например таблица с 10 тыс клиентов выборка с соединением 7 таблиц группировками и вычислениями занимает 0.00017сек.
Заказы будут привязаны к компаниям. Клиенты будут привязаны к компаниям и я думаю смысла нету делать привязку к клиентам, т.к. у компании может быть множество клиентов и всем им доступны заказы. Вопрос заключался именно в заказах целесообразно ли пихать такое количество заказов в 1 таблицу? Просто если компаний штук 10 и заказов у компаний будет в районе 2к то все в 1 таблицу, но а если будет 1000 компаний и у них будет по 20000 тыс заказов
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Помогите с архитектурой mysql

Сообщение ElisDN »

Сделайте партицирование по id компании и проблем с миллионами не будет.
Аватара пользователя
VLD-UKRAINE
Сообщения: 20
Зарегистрирован: 2017.04.29, 18:56
Контактная информация:

Re: Помогите с архитектурой mysql

Сообщение VLD-UKRAINE »

ElisDN писал(а): 2017.05.03, 23:09 Сделайте партицирование по id компании и проблем с миллионами не будет.
Согласен. Если компаний много - то вы можете со временем заблудиться в их названиях. Сделайте таблицу - id -> Название компании, и потом как вам удобно либо для каждого id своя таблица либо все id в одну, для Mysql обработка таблиц только с числами, а к этому надо стремится, занимает очень мало времени даже при болших количествах записей в таблице.
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Помогите с архитектурой mysql

Сообщение ElisDN »

VLD-UKRAINE писал(а): 2017.05.04, 08:01 Сделайте таблицу - id -> Название компании, и потом
Я про CREATE TABLE orders ... PARTITION BY KEY(company_id)

https://dev.mysql.com/doc/refman/5.7/en ... types.html
Аватара пользователя
vitalik1183
Сообщения: 1675
Зарегистрирован: 2014.07.01, 08:42

Re: Помогите с архитектурой mysql

Сообщение vitalik1183 »

ElisDN а как же внешние ключи?
Yii2!
Ответить