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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> идеологический вопрос? 
:(
    Опции темы
leniviy
Дата 3.7.2006, 12:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Добрый день! Ситуация следующая: в СПб есть примерно 5 млн квартир, 10 млн комнат и 1 млн нежилых помещений. Я тут с пеной у рта доказываю сослуживцам, что лучше их держать в разных таблицах, чтобы 
а) поиск по квартирам был быстрее 
б) чтобы не дай бог не привязалась коммерческая аренда к квартире или человек не прописался в универсаме
в) чтобы пользователь в разных гридах мог посмотреть и людей и фирмы в конкретном доме

Они же мне говорят, что все похожие объекты надо хранить в одной таблице, чтобы 
а) таблиц было меньше 
Цитата
нечего плодить сотни таблиц
 
б) всё можно было бы привязать ко всему
в) неуч пользователь в ОДНОМ гриде мог посмотреть и людей и фирмы в конкретном доме

я устал спорить уже. мне не хватает аргументов, а может я не прав. Какие у вас мысли?
 
PM MAIL   Вверх
skyboy
Дата 3.7.2006, 13:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



а пошире условие расписать можешь? 
PM MAIL   Вверх
bas
Дата 3.7.2006, 14:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 446
Регистрация: 14.8.2002
Где: Молдова, Кишинев

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



Цитата(leniviy @  3.7.2006,  12:42 Найти цитируемый пост)
б) чтобы не дай бог не привязалась коммерческая аренда к квартире или человек не прописался в универсаме

Для этого можно и нужно ставить признак (коммерческая площадь, аренда, жилье ..... )

Цитата(leniviy @  3.7.2006,  12:42 Найти цитируемый пост)
в) чтобы пользователь в разных гридах мог посмотреть и людей и фирмы в конкретном доме

Запрос с условием из предыдущего пункта.
Цитата(leniviy @  3.7.2006,  12:42 Найти цитируемый пост)
а) таблиц было меньше 

Таблиц должно быть достаточно, но не избыточно.
Цитата(leniviy @  3.7.2006,  12:42 Найти цитируемый пост)
все похожие объекты надо хранить в одной таблице

Желательно , но не обязательно. Все зависит от задачи.
И что понимаеться под обьектом (кв.метр,комната, помещение, квартира, дом .....)?
Цитата(leniviy @  3.7.2006,  12:42 Найти цитируемый пост)
чтобы пользователь в разных гридах мог посмотреть и людей и фирмы в конкретном доме
 А если надо получить суммарную площать города + в разрезе каждого квартала, района, улицы?
  

Это сообщение отредактировал(а) bas - 3.7.2006, 14:18
PM MAIL   Вверх
leniviy
Дата 3.7.2006, 14:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



ну есть общие данные:
адрес дома, номер помещения, площадь, телефон, этаж, высота потолка
есть данные касающиеся только квартир:
жилая площадь, площадь ванной, туалета, кухни, к-во комнат, материал стен
комнат:
пл. балкона

есть привязка:
к квартирам - люди и комнаты
к нежилым - фирмы

как эта инфа должна показываться, заказчик предоставил решать нам.  
PM MAIL   Вверх
bas
Дата 3.7.2006, 14:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 446
Регистрация: 14.8.2002
Где: Молдова, Кишинев

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



На вскидку - жилые помещенния (в том числе используемые фирмами как оффисы и произодственные помещения) в одной таблице.
Нежелые (производственные ) в другой таблице.
Но возникает вопрос переоборудования первых во вторые и на оборот.

Добавлено @ 14:25 
Цитата(leniviy @  3.7.2006,  14:18 Найти цитируемый пост)
материал стен
комнат:

Это общее для всех зданий- если имееться ввиду из чего сделан дом, а не внутренняя отделка.

Добавлено @ 14:27 
Цитата(leniviy @  3.7.2006,  14:18 Найти цитируемый пост)
к нежилым - фирмы

Возможно покупка квартиры на первом этаже жилого дома и переоборудование в оффис а также и обратное действие. 
 

Это сообщение отредактировал(а) bas - 3.7.2006, 14:28
PM MAIL   Вверх
leniviy
Дата 3.7.2006, 14:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(bas @  3.7.2006,  06:16 Найти цитируемый пост)
 А если надо получить суммарную площать города + в разрезе каждого квартала, района, улицы?
разве я не должен оптимизировать базу под самые частые запросы? такие, где статистика, можно сделать и с помощью юниона. Работать будут медленно, но понадобятся не чаще раза в неделю. А поиск чела по адресу - это может быть надо каждые 10 секунд! 

Насчёт большого количества таблиц. Мне просто интересны возражения против этого. Если в каждой по 10 строк - это плохо, я понимаю. А если 100000?

Добавлено @ 14:36 
Цитата(bas @  3.7.2006,  06:23 Найти цитируемый пост)
переоборудования
можно удалить в одной таблице и добавить в другую. 
 
PM MAIL   Вверх
skyboy
Дата 3.7.2006, 14:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



leniviy, не так важно количество. Я не знаю, о какой СУБД речь, но если вдруг к жилым/нежилым помещениям добавится ещё какая-нить категория, то при использования разных таблиц срочно понадобятся динамические запросы.. А оно - зачем? А выбор человека по адресу.... Если адрес записан в BLOB-поле, то одно время на поиск, если отдельно - улица, дом, квартира, то время совершенно другое! 
да и потом: квартира как объект не зависит от того, снимает её человек для жилья, или фирма для магазина. Количество комнат не меняется. Не меняется площадь балкона и высота потолка. Потому, как на меня, не стОит дробить на отдельные таблицы. 
 
PM MAIL   Вверх
leniviy
Дата 3.7.2006, 14:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



похоже придётся делать одну таблицу: гибкость в ущерб скорости 
PM MAIL   Вверх
bas
Дата 3.7.2006, 15:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 446
Регистрация: 14.8.2002
Где: Молдова, Кишинев

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



Цитата(leniviy @  3.7.2006,  14:58 Найти цитируемый пост)
похоже придётся делать одну таблицу: гибкость в ущерб скорости  

Скорость определяеться оптимизациее (использованием индексов - естественных, сурогатных, кляйстерных, обычных .....).
Цитата(skyboy @  3.7.2006,  14:47 Найти цитируемый пост)
но если вдруг к жилым/нежилым помещениям добавится ещё какая-нить категория, то при использования разных таблиц срочно понадобятся динамические запросы

Да не обязательно динамических. Но создание таблицы и настройка связей - 100%. При наличии справочника категорий помещений - достаточно добавить новую категорию и поехали дальше без переделки кода. 
PM MAIL   Вверх
beroal
Дата 3.7.2006, 22:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата(leniviy @ 3.7.2006,  09:42)
Я тут с пеной у рта доказываю сослуживцам, что лучше их держать в разных таблицах, чтобы
<skipped>

А у вас собственно какая должность? Если младший программист, то лучше не настаивать на своём мнении...  smile Я думаю, это вопрос именно иерархический, а не идеологический. 
PM WWW   Вверх
LSD
Дата 3.7.2006, 23:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


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

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



Цитата(leniviy @  3.7.2006,  13:42 Найти цитируемый пост)
а) поиск по квартирам был быстрее

Поиск с использованием индекса, в таблице с 1 и 10 млн записей, по времени отличается весьма незначительно. Для этого индексы и создавались. Да и не такая уж это большая таблица (если СУБД не Paradox конечно).

Цитата(leniviy @  3.7.2006,  13:42 Найти цитируемый пост)
б) чтобы не дай бог не привязалась коммерческая аренда к квартире или человек не прописался в универсаме

Для этого есть триггеры.

Цитата(leniviy @  3.7.2006,  13:42 Найти цитируемый пост)
в) чтобы пользователь в разных гридах мог посмотреть и людей и фирмы в конкретном доме

Это вообще, не проблема БД, а проблема пользовательского интерфейса и влиять на архитектуру БД не должна.


Цитата(leniviy @  3.7.2006,  15:33 Найти цитируемый пост)
Насчёт большого количества таблиц. Мне просто интересны возражения против этого. Если в каждой по 10 строк - это плохо, я понимаю. А если 100000?

Структура базы усложняется, больше вероятность ошибки.
Например может потребоваться добавить столбец во все таблицы с помещениями, и одну забудут, что тогда? 


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
chief39
Дата 4.7.2006, 09:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


карманная тигра
***


Профиль
Группа: Участник Клуба
Сообщений: 1631
Регистрация: 20.5.2005
Где: Киев

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



Можно сделать вариант с базовой таблицей, в которой содержатся ОБЩИЕ данные, подходящие под ЛЮБОЙ учитываемый объект.
И таблицу под каждую категорию, связанную 1:1 с базовой. И держать в них данные специфические для каждого типа объекта.
(А-ля "наследование таблиц").

Немного сложнее, но весьма логично представляет реальный мир, поэтому легче для НЕПРОТИВОРЕЧИВОГО ЛОГИЧНО ВЫВЕРЕННОГО расширения.

Если добавится новый тип объектов - то просмотр базовых данных позволит с ним сразу работать. А специфику можно позже дописать. По крайней мере быстрее чем в случае одной универсальной таблицы и легче(в плане объёма работ), чем при отдельных таблицах.

Это путь, по которому пошёл бы я. Необязательно лучший или даже хороший smile
Один из вариантов.

А размеры таблиц вполне нормальны.



 


--------------------
Люди - это свечи. Они либо горят, либо их - в жопу!(с)

PM MAIL   Вверх
Vit
Дата 5.7.2006, 17:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

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



Пляшите не от производительности (миллион записей - это вообще-то не большое количество, нормальная база данных будет искать мгновенно) а от бизнес логики. Каждая таблица должна описывать одну и только одну сущность. В контексте вашей задачи все помещения представляют собой одну сущность или нет? Приведу пример: если для квартиры описывается количество комнат, ванн, балконов, паркет в комнатах, кафель в ванне, наличие евросантехники и т.п., а для производственных площадей описывается наличие трёхфазных розеток по 380 вольт, количество конференц-залов, наличие буфета в здании и проходной по пропускам - то имеются ввиду разные сущности, они имеют разные аттрибуты и разную логику оперирования, для них надо использовать разные запросы. Если же например любая недвижимость описывается только площадью, ценой и её типом - то сущность одна, никаких специальных операций над базой данных в зависимости от типа базы не предвидится. Есть правда одно исключение, если 99% операций одинаково, а сущности разные но похожие то можно их рассматривать как одну таблицу - будет удобнее работать. А если же сущности идентичные по свойствам, но все операции над ними абсолютно различны (т.е. несмотря на то что и жилые и нежелые помещения имеют абсолютно одинаковое описание, но практически в 99% случаев ни одна операция не оперирует сразу с разными типами) то имеет смысл иметь 2 таблицы. 


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
leniviy
Дата 6.7.2006, 09:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



в 99 случаях из ста юзеру нужны только квартиры, но иногда ( очень редко ) надо посчитать все помещения в городе 
PM MAIL   Вверх
chief39
Дата 6.7.2006, 14:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


карманная тигра
***


Профиль
Группа: Участник Клуба
Сообщений: 1631
Регистрация: 20.5.2005
Где: Киев

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



Цитата(leniviy @  6.7.2006,  09:30 Найти цитируемый пост)
в 99 случаях из ста юзеру нужны только квартиры, но иногда ( очень редко ) надо посчитать все помещения в городе  

Речь о том, одинаковые ли характеристики и атрибуты у различных помещений и нужна ли специфика для каких-либо типов... 


--------------------
Люди - это свечи. Они либо горят, либо их - в жопу!(с)

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.0626 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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