[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Хранение данных
md5
Вопрос: как лучше хранить данные и в каком случае будет быстрее производиться обработка данных.


Сл. 1

Имеется таблица 1: id, name, price, .. вобщем сюда записываются объекты и сразу их характеристики.

Сл. 2

Имеется таблица 1: id - только ИД объекта
Имеется таблица 2: object_id, name, price, ... все характеристики. Связка - object_id = id из таблицы 1.

Сл. 3

Имеется таблица 1: id - только ИД объекта
Имеется таблица 2: object_id, type, value ... характеристики по одному. Связка - object_id = id из таблицы 1. type это тип характеристики (name, price, ... )

Сл. 4

Имеется таблица 1: id - только ИД объекта
Имеется таблица 2: type, value ... характеристики по одному. type это тип характеристики (name, price, ... )
Имеется таблица 3: object_id, character_id - таблица связок объект - характеристика

Обработка данных - вытаскивание объектов из БД, обновление, удаление и т.д.

с одной стороны - если всё в одной таблице - то проще запрос будет, но с другой - из-за большого объёма таблицы не будет тормозить система при обращении к ней???



Спустя 4 минуты, 4 секунды (15.09.2006 - 14:50) vasa_c написал(а):
не будет.
Таблица с одним только id это вообще что-то выше моего разумения.

Обычно наиболее оптимально хранить в одной таблице основные параметры объектов, которые будут заполнены у всех.
Дополнительные параметры (которые есть не у всех, либо их список не ограничен), хранить отдельно в таблице, как в Сл.3.

Спустя 18 минут, 35 секунд (15.09.2006 - 15:09) md5 написал(а):
насчёт таблице с одним id.. есть реализации на сайтах с бльшой нагрузкой.. сам видел
есть таблица с категориями, таблица с объектами, таблица с характеристиками, и две таблицы со связками категория-объект и объект-характеристика =)

Спустя 16 минут, 15 секунд (15.09.2006 - 15:25) vasa_c написал(а):
md5, расскажи свою ситуацию лучше. В каждом случае разный подход будет оптимальным.

Спустя 2 часа, 15 минут, 33 секунды (15.09.2006 - 17:40) md5 написал(а):
Есть каталог, структура хранится в одной таблицы. категории связываются по полю parent_id.

Есть таблица с объектами, в которой я сделал связку с категориями - поле category_id.

в этой же таблице сделал полями все характеристики.

Будет очень много запросов на вытаскивание большого количества объектов из какой-либо категории.
так вот я и спрашиваю, быстрее будет работать вариант, который я реализовал или вариант с хранением характеристик объекта в отдельной таблице?

Спустя 46 минут, 5 секунд (15.09.2006 - 18:26) vasa_c написал(а):
какие характеристики у объекта и все ли эти характеристики будут иметь значения для всех объектов во всех категориях?

Спустя 2 дня, 14 часов, 36 минут, 20 секунд (18.09.2006 - 09:03) md5 написал(а):
практически все!
это значит, что у одной категории объектов будет 95% характеристик и у другой 95%, но немного другие...

Спустя 2 часа, 9 минут, 57 секунд (18.09.2006 - 11:13) vasa_c написал(а):
Я обычно делаю так:
Основная таблица содержит id объекта и небольшой набор параметров, которые железно будут у него. По всякому там будет ссылка на категорию. Так же может быть название, цена и т.п.
Если дополнительных параметров не слишком много и они будут заполнены у всех объектов, то их тоже можно хранить в этой таблицы и со связанными не заморачиваться.
Если же этих параметров 100 штук, то их все же желательно вынести в отдельную таблицу со структурой:
id-объекта
параметр
значение параметра

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

Насчет быстродействия, я думаю, что если объекты не исчисляются миллионами, то любая структура из первого поста при грамотном построении индексов+запросов большого влияния на скорость оказывать не будет.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.