Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > СУБД, общие вопросы > Организация БД


Автор: knighter 10.4.2006, 06:06
Ситуация:
БД на 10000 пользователей, для кадого пользователя есть некоторый объем информации, которую можно хранить как в
отдельной таблице, там и в виде строки (приходится парсить).

Вопрос такой:
Каким образом лучше организовать структуру БД, с точки зрения быстродействия?
- 10000 таблиц (1 таблица для каждого пользователя);
- 1 таблица для всех пользователей.

Автор: boevik 10.4.2006, 08:20
Если данные однородные, то конечно одна таблица.
10000 записей это и не нагрузка, при нормальных индексах.

Автор: Vit 10.4.2006, 14:07
одна таблица

Автор: knighter 11.4.2006, 11:24
Допустим таблица одна.
Для каждого пользователя нобходимо хранить переменное во времени количество объектов (не одного формата).

Если для каждого объекта создавать запись, то с индексацией будут понты.

Есть вариант для каждого пользователя использовать только одну запись, содер. строку, описывающую объекты пользователя. При добавлении/удалении объекта строка парситься, переформировывается и сохранияется.

Хочу услышать ваше мнение по этому поводу.

Автор: Vit 11.4.2006, 15:17
Очень трудно понять что именно вы имеете ввиду, но таблица по своей сути должна хранить однородные данные, если предполагается в таблице хранить разнородные данные, значит Вы что-то неправильно спроектировали, а данные должны быть разбиты не по критерию пользователей, а по критерию зависимостей друг от друга и однородности (см. умные книжки по базам данных, раздел "нормализация данных"). Сам по себе критерий "Пользователь" не лучше и не хуже любого другого критерия - рост, цена, имя, объект, свойство или что-то ещё.

Автор: nostromo 14.4.2006, 17:18
10000 пользователей, насколько я понимаю,
следует понимать как данные, которые сравнительно часто меняются (пользователи добавляются и удаляются).
В случае заведения на каждого пользователя по таблице это приведет к регулярному изменению метаданных (структуры базы данных), а реляционные СУБД этого очень не любят (вспомните, почему нельзя сделать переменную TableName и делать в праметризованные по имени таблицы запросы?).
Этот путь однозначно плохой.

Если не хочется заморачиваться с нормализацией и нужно упростить парсинг, то можно попробовать хранить часть данных в XML формате. Это особенно удобно, когда вы со временем захотите добавлять/удалять/усложнять какие-то поля.
Минус такого подхода -- сложность индексации по инкапсулированным в XML полям.

Автор: THenry 3.5.2006, 14:26
1 Таблица + Нормализация до 3НФ  

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)