| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > СУБД, общие вопросы > Доска объявлений. БД. |
| Автор: EugenyPavlenko 28.12.2007, 23:10 |
| Добрый день. Мне нужно сделать доску объявлений. Как мне быть с таблицами для хранения товаров? Например если раздел "машины" то там будут колонки: объем двигателя, расход и т.д если например "телефизоры", то: размер диагонали, частота и т.д Это получается для каждого раздела мне создавать отдельную таблицу? А если раздело 50, то получится 50 таблиц? Или есть другой выход? Это нормально если будет 50 таблиц? Или это сильно нагрузить сервер? Заранее спасибо. |
| Автор: thomas 28.12.2007, 23:19 |
| Приветствую. Все зависит от того какие данные на товар должны храниться. Потом есть такое понятие как нормализация. Она выполняется при проектировании БД. Если данные которые надо хранить для описания товара одинаковы для нескольких товаров, то можно создать общую таблицу и добавить в нее поле характеризующее тип товара. Например: имеем поставщиков и клиентов. Те и другие имеют одинаковые характеристики: название, адрес, счет в банке и т.д. Но одни поставщики, а другие клиенты. Добавляем к полям название, адрес, ... и так далее еще поле тип, в котрое заносим одну букву п или к. А саму таблицу назовем Контакты. Логика понятна. А насчет сервера не волнуйся, бывают БД и поболее. Сервер справиться. |
| Автор: Wolf1994 28.12.2007, 23:28 |
| Сделайте одну таблицу и храните всю информацию о товаре в одной ячейке. Добавлено через 2 минуты и 5 секунд Согласен с thomas. В качестве селекторов используйте общие для всех товаров поля. |
| Автор: skyboy 28.12.2007, 23:41 |
| все свойства можно разбить на несколько категорий: по типу данных:
разные типы полей хранить отдельно(7 вариантов максимум - для ссылочного типа не надо предусматривать возможность выбора из фиксированного списка), чтоб можно было реализовать разные индексы(для текстового поля, вводимого вручную - полнотекстовый поиск; для значения, выбираемых из списка - индекс по числовому полю). запросы будут сложным набором join-ов, но в общем случае сортировка и небольшая фильтрация(по значениям одного/двух полей) должна, как мне кажется идти быстрее. ну, и структура гибка, как черт - почти любой вариант данных о самом разном товаре можно в эту структуру "уложить"(допускаю исключения, но в голову не приходят как-то). первой разделение по типу пригодится не только для разделения числовых/строковых индексов, но и для того, чтоб предусмотреть или уьрать возможность сортировки по тому или иному полю - например, сортировка по ссылкее на сайт изготовителя не нужна. |
| Автор: Akina 28.12.2007, 23:49 |
конечно... Таблица характеристик товара в объявлении: ID записи (pri key) ID объявления (ext key в таблицу объявлений) ID характеристики (ext key в таблицу характеристик) значение Возможно, что такая таблица будет хранить не данные по каждому объявлению, а данные по категории объявлений Таблица характеристик категории объявлении: ID записи (pri key) Наименование категории Номер колонки Наименование характеристики есть еще варианты |
| Автор: EugenyPavlenko 2.1.2008, 23:17 |
| thomas, вся проблема в том, что полей очень много, не хотелось бы их всех в одну таблицу.... Wolf1994, в этом случае затрудняется обработка и поиск. Всем огромное спасибо! Я проанализирую и выберу лучший вариант. |
| Автор: thomas 5.1.2008, 00:11 |
| Dzuchara, А я и не предлагал все поля в одну таблицу помещать. Если есть товары с одинаковыми характеристиками, но разных типов, то для них можно создать одну таблицу, в которую поместить поле характеризующее тип товара. А если характеристики товаров разные, то нужно делать отдельные таблицы на каждый товар. Даже при большом количестве таблиц при разумном их проектировании можно создать компактную и быструю базу. Главное в таком случае подобрать правильные типы для хранения данных и их размер. Посмотреть возможность индексации полей. |