Модераторы: LSD
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Доска объявлений. БД. 
:(
    Опции темы
EugenyPavlenko
  Дата 28.12.2007, 23:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 60
Регистрация: 13.7.2006

Репутация: нет
Всего: нет



Добрый день.

Мне нужно сделать доску объявлений.
Как мне быть с таблицами для хранения товаров?

Например если раздел "машины" то там будут колонки: объем двигателя, расход и т.д
если например "телефизоры", то: размер диагонали, частота и т.д

Это получается для каждого раздела мне создавать отдельную таблицу?
А если раздело 50, то получится 50 таблиц? Или есть другой выход?
Это нормально если будет 50 таблиц? Или это сильно нагрузить сервер?

Заранее спасибо.

Это сообщение отредактировал(а) Dzuchara - 28.12.2007, 23:12
PM WWW   Вверх
thomas
Дата 28.12.2007, 23:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доцент... почти
***


Профиль
Группа: Завсегдатай
Сообщений: 1385
Регистрация: 3.10.2006
Где: " Сказочное королевство"

Репутация: нет
Всего: 65



Приветствую.
Все зависит от того какие данные на товар должны храниться. Потом есть такое понятие как нормализация. Она выполняется при проектировании БД.
Если данные которые надо хранить для описания товара одинаковы для нескольких товаров, то можно создать общую таблицу и добавить в нее поле характеризующее тип товара.
Например: имеем поставщиков и клиентов. Те и другие имеют одинаковые характеристики: название, адрес, счет в банке и т.д. Но одни поставщики, а другие клиенты. Добавляем к полям название, адрес, ...  и так далее еще поле тип, в котрое заносим одну букву п или к. А саму таблицу назовем Контакты.
Логика понятна.
А насчет сервера не волнуйся, бывают БД и поболее. Сервер справиться. 

Это сообщение отредактировал(а) thomas - 28.12.2007, 23:20


--------------------
Крепко жму горло, искренне ваш Thomas. (С)vingrad
Некоторые сорта флоры буквально за одно мгновение превращают нас в фауну!
Проблемы негров шерифа не волнуют.
PM MAIL   Вверх
Wolf1994
Дата 28.12.2007, 23:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1701
Регистрация: 5.10.2004

Репутация: нет
Всего: 29



Сделайте одну таблицу и храните всю информацию о товаре в одной ячейке.

Добавлено через 2 минуты и 5 секунд
Согласен с thomas. В качестве селекторов используйте общие для всех товаров поля.

PM MAIL WWW   Вверх
skyboy
Дата 28.12.2007, 23:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 5
Всего: 260



все свойства можно разбить на несколько категорий:
по типу данных:
  • числовые данные(вес, объем, количество комнат)
  • строковые данные(название района, марка, модель)
  • ссылочные данных(ссылка на файл-фотографию, ссылка на сайт изготовителя)
по разбросу значений:
  • данные, вводимые вручную(площадь квартиры, объем двигателя)
  • данные, выбираемые из фиксированного списка(количество комнат - от 1 до 5 + вариант "больше 5", тип кузова автомобиля и т.д.) -- точнее будет сказать, что список фиксированный для конечного пользователя; администратор в любом случае должен иметь возможность добавить к, скажем "CD" и "DVD" вариант "BlueRay"
  • данные, выбираемые из фиксированного списка, но который может быть расширен конечным пользователем(к примеру, названия районов города не обязательно все вбивать администратору - можно положиться и на честность пользователей)
при таком подходе ещё необходимо отдельно определить список названий полей для объявления каждой категории(чтоб потом в объявлении о продаже автомобиля не было поля "количество комнат") и типов этих полей(перечислимое/произвольное значение; строковое/числовое).
разные типы полей хранить отдельно(7 вариантов максимум - для ссылочного типа не надо предусматривать возможность выбора из фиксированного списка), чтоб можно было реализовать разные индексы(для текстового поля, вводимого вручную - полнотекстовый поиск; для значения, выбираемых из списка - индекс по числовому полю).
запросы будут сложным набором join-ов, но в общем случае сортировка и небольшая фильтрация(по значениям одного/двух полей) должна, как мне кажется идти быстрее. ну, и структура гибка, как черт - почти любой вариант данных о самом разном товаре можно в эту структуру "уложить"(допускаю исключения, но в голову не приходят как-то).
первой разделение по типу пригодится не только для разделения числовых/строковых индексов, но и для того, чтоб предусмотреть или уьрать возможность сортировки по тому или иному полю - например, сортировка по ссылкее на сайт изготовителя не нужна.
PM MAIL   Вверх
Akina
Дата 28.12.2007, 23:49 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 13
Всего: 454



Цитата(Dzuchara @  29.12.2007,  00:10 Найти цитируемый пост)
Или есть другой выход?

конечно...

Таблица характеристик товара в объявлении:
ID записи (pri key)
ID объявления (ext key в таблицу объявлений)
ID характеристики (ext key в таблицу характеристик)
значение 

Возможно, что такая таблица будет хранить не данные по каждому объявлению, а данные по категории объявлений

Таблица характеристик категории объявлении:
ID записи (pri key)
Наименование категории 
Номер колонки
Наименование характеристики

есть еще варианты



--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
EugenyPavlenko
Дата 2.1.2008, 23:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 60
Регистрация: 13.7.2006

Репутация: нет
Всего: нет



thomas, 

вся проблема в том, что полей очень много, не хотелось бы их всех в одну таблицу....

Wolf1994, 

в этом случае затрудняется обработка и поиск.




Всем огромное спасибо! Я проанализирую и выберу лучший вариант.
PM WWW   Вверх
thomas
Дата 5.1.2008, 00:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доцент... почти
***


Профиль
Группа: Завсегдатай
Сообщений: 1385
Регистрация: 3.10.2006
Где: " Сказочное королевство"

Репутация: нет
Всего: 65



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

Даже при большом количестве таблиц при разумном их проектировании можно создать компактную и быструю базу. Главное в таком случае подобрать правильные типы для хранения данных и их размер. Посмотреть возможность индексации полей.


--------------------
Крепко жму горло, искренне ваш Thomas. (С)vingrad
Некоторые сорта флоры буквально за одно мгновение превращают нас в фауну!
Проблемы негров шерифа не волнуют.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Общие вопросы по базам данных"
LSD
Zloxa

Данный форум предназначен для обсуждения вопросов о базах данных не попадающих под тематику других форумов:

  • вопросам по СУБД для которых нет отдельных подфорумов
  • вопросам которые затрагивают несколько разных СУБД (например проблема выбора)
  • инструменты для работы с СУБД
  • вопросы проектирования БД
  • теоретически вопросы о СУБД

Данный форум не предназначен для:

  • вопросов о поиске разлиных БД (если не понимаете чем БД отличается от СУБД то: а) вам не сюда; б) Google в помощь)
  • обсуждения проблем с доступом к СУБД из различных ЯП (для этого есть соответсвующие форумы по каждому ЯП)
  • обсуждения проблем с написание SQL запросов, для этого есть форум Составление SQL-запросов
  • просьб о написании курсовой, реферата и т.п., для этого есть Центр помощи или фриланс биржа
  • объявлений о найме специалистов, для этого есть раздел Объявления о найме специалистов

Если вы не соблюдаете эти правила, не удивляйтесь потом не найдя свою тему/сообщение. ;)


Полезные советы:

При написании сообщения постарайтесь дать теме максимально понятное название. В теме максимально подробно опишите проблему. Если применимо укажите: название базы данных и версии (MySQL 4.1, MS SQL Server 2000 и т.п.); используемых язык программирования; способа доступа (ADO, BDE и т.д.); сообщения об ошибках.

Для вставки кода используйте теги [code=sql] [/code].

Литературу по базам данных можно поискать здесь.

Действия модераторов можно обсудить здесь.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, LSD, Zloxa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | СУБД, общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0515 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.