Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Правильное проектирование БД (нужна помощь)
 
 автор: Антоха   (29.07.2007 в 04:27)   письмо автору
 
 

Здраствуйте.
После длительного зубрения php, mysql и т.п. я впервые решил сделать какой-нибудь проект.
Выбор пал на объявления (для нашего маленького городка это самая тема), чтобы каждый желающий мог бесплатно его подать.
В общем сейчас у меня 4 таблицы. Проблема возникла с таблицей где хранятся объявления и с формой для добавления нового объявления.
Допустим, человек решил добавить объявление о том, что он хочет снять квартиру и идет по такому пути
[Недвижимость -> Квартиры -> форма для добавления объявления. ]
Он пишет объявление и указывает в форме тип (Продаю, сниму, сдам, меняю и т.п.) В нашем случае он выбирает тип - сниму.
Теперь если другой хочеть добавить объявление, например, о продаже машины и идет по такому пути
[Автомото -> Автомобили -> форма для добавления объявления. ]
Пишет объявление и выбирает тип. Но в разделе автомобили уже не должно быть таких типов как сдам, сниму
или, например,
[Работа -> Вакансии -> форма для добавления объявления. ]
где вообще не может быть типов которые были выше.
Вот из-за того, что все объявления разные, а таблица для объявлений одна, у меня получается такая загвоздка. Даже не знаю как правильно все спроектировать. Можно конечно в самом сообщении писать тип, но так не получится поиск, сортировка и т.п. действия. Если делать кучу таблиц, то наверное очень упадет производительность, да и самому будет сложно разобраться.
В общем, я в сметении и прошу совета у граммотных людей. Если есть ссылка, где показаны различные способы построения таких проектов, пожалуйста скиньте.
Заранее спасибо.

   
 
 автор: cheops   (29.07.2007 в 10:36)   письмо автору
 
   для: Антоха   (29.07.2007 в 04:27)
 

Можно предусмотеть в таблице объявлений поле, которое будет содержать набор всех возможных типов "сдам", "сниму", "продам", "куплю", "познакомлюсь", "отдам в хорошие руки", "требуются" и т.п. А в таблице каталогов (Квартиры, Автомобили, Вакансии) предусмотреть тип каталога в зависимости от которого выводится та или иная комбинация типов объявлений.

Типы "сдам", "сниму", "продам", "куплю", "познакомлюсь", "отдам в хорошие руки", "требуются" можно оформить также в виде отдельной таблицы Типов и составить таблицу соотвествий первичных ключей таблицы Каталог и Типы (это удобно, если типов очень много и постоянно нужно будет вводить новые).

   
 
 автор: Trianon   (29.07.2007 в 11:59)   письмо автору
 
   для: Антоха   (29.07.2007 в 04:27)
 

Не нужно бояться делать несколько таблиц - если, конечно, эти таблицы не будут копиями одной.
К примеру - делать отдельные таблицы для недвижимости, для авто и для работы - плохо. схема станет ненормализованной и работать с ней будет сущий кошмар. А для добавления новых разделов придется менять структуру БД.
А вот сделать таблицу разделов, таблицу типов объявлений, таблицу сооветствий типов - разделам - вполне приемлемо.
Не надо раньше времени думать о том, не упадет ли производительность. Как минимум, пока она не образовалась - падать нечему.
Можно обойтись без таблицы соответствий, но тогда придется соответствие описывать типом множества в таблице разделов - формально это нарушит одну из нормальных форм, а фактически - заставит вносить модификации в структуру БД при добавлении новых типов. Я бы не стал.

   
 
 автор: Антоха   (30.07.2007 в 04:12)   письмо автору
 
   для: Trianon   (29.07.2007 в 11:59)
 

Все, сделал... Как я рад. Спасибо всем за помощь

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования