Структура базы данных mysql - данные релевантны только пользователю, таким образом, пользовательские таблицы? - PullRequest
1 голос
/ 11 июля 2011

Я хотел бы создать онлайн-журнал для водителей грузовиков. Цель состоит в том, чтобы после того, как водитель грузовика входит в систему, он / она сразу же видит снимок своей общей суммы за этот год / месяц / день, а также некоторые другие итоги за год / месяц / день. Таким образом, информация, хранящаяся в базе данных, актуальна только для пользователя (водителя грузовика) . Лично я не требую каких-либо статистических данных из базы данных в целом (только для пользователя).

Давайте предположим, что 10000 пользователей.

Мой вопрос касается дизайна базы данных mySQL.

Поскольку хранимая информация имеет отношение только к пользователю, а не по массе , имеет ли смысл хранить данные в таблице на пользователя ... до 10 000 таблиц? Приведет ли это к созданию самой эффективной / самой быстрой базы данных? ИЛИ Должен ли я сбросить все строки в одной большой таблице «Журнал» и связать ли она ее с другой таблицей «Пользователи» ... даже если анализ будет проводиться только для пользователя?

Вот некоторая информация, которая должна храниться на пользователя (заканчивается примерно до 30 столбцов): Дата - Марка / модель грузовика - Идентификатор грузовика - № маршрута - От - К - Общее время - Остановки - Расход газа - Ночное время - Экипаж (2-й водитель) - ......

Ответы [ 3 ]

1 голос
/ 11 июля 2011

Я бы предложил пойти за отдельными столами, но, возможно, в вашем случае 1 большой стол - хороший план.

Если вы пишете эффективный MySQL для доступа к данным, у вас не должно быть проблем с большим набором данных, таким как описанный вами.

Я бы взглянул на Производительность MySQL / Rails: одна таблица, много строк против многих таблиц, меньше строк? для получения дополнительной информации о том, почему переход к корню таблиц может быть хорошей идеей. Также Что является более эффективным: несколько таблиц MySQL или одна большая таблица? содержит некоторую полезную информацию по теме.

1 голос
/ 11 июля 2011

Упрощенный пример здесь

User
user_id
first_name
last_name

Truck
truck_id
truck_make
truck_model

Route
route_id
user_id
truck_id
route_from
route_to
gas_consumption

Без дальнейших подробностей, вот как я это сделаю.

0 голосов
/ 11 июля 2011

Вы описываете мультитенантную базу данных.У SO есть тег для этого;Я добавил его для вас.

В MSDN есть достойная статья, в которой вы можете обзор проблем, связанных с мультитенантными базами данных .Диапазон структур: от ничего не поделено до всё поделено .Обратите внимание, что в структуре «общего доступа ко всем» владельцу базы данных (вероятно, you ) довольно легко написать запрос, который нарушает изоляцию пользователя и предоставляет данные одного пользователя другим пользователям.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...