powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Проектирование БД для объектов недвижимости
10 сообщений из 10, страница 1 из 1
Проектирование БД для объектов недвижимости
    #36996827
Paco
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте уважаемые коллеги.
Я обращаюсь к вам за советом. Прошло 3 года с тех пор, как я спроектировал БД для агентства недвижимости. По ряду причин, 3 года спустя, я понимаю, что совершил много архитектурных ошибок и БД тормозит. Особенно запросы где много JOIN'ов и преобразований из XML-полей в плоские данные. На данный момент в базе более 9 000 контрагентов и около 11 000 объектов недвижимости.
Настала пора рефакторинга.
Ниже я расскажу о структуре БД на сегодня и опишу проблемы с которыми столкнулся.

Конфигурация: SQL Server 2005 Standart.

1. Для работы с адресами использую КЛАДР. Экспортировал в базу as is (те же названия таблиц, та же структура).
2. Таблица объектов недвижимости.
На сегодня у нас 6 типов объектов недвижимости на продажу (квартиры, дома, участки, дачи, коммерция, гаражи) + аренда (представлена как отдельный тип объекта недвижимости). Все типы объектов хранятся в одной таблице. С периодичностью раз в месяц риэлторы просят добавить какое-нибудь поле к объекту или удалить.
Сейчас в таблице 136 полей.
Все бы ничего, но больше всего усложняют жизнь поля типа XML. в них я храню множественный выбор. Например агент отмечает чекбоксами куда в квартире выходят окна.
В поле таблицы этот выбор сохраняется в таком виде
Код: plaintext
1.
2.
3.
4.
<Items>
   <Item id="16">на улицу</Item>
   <Item id="17">во двор</Item>
</Items>

у меня есть плоский справочник вида
Код: plaintext
1.
2.
id_guide
id_item
name

id - выше в XML это как раз id_item из плоского справочника.
И все бы ничего, но когда приходится фильтровать данные по значениям этих XML-полей (например: выбрать все квартиры с окнами во двор) - база начинает жутко тормозит.

Вторая головная боль это КЛАДР. То как у нас построена иерархия краев, городов и улиц и как это реализовано в КЛАДР просто взрывает мой мозг. Но может быть на тот момент это был наилучший вариант. Разработчикам КЛАДР виднее. НО - в таблице объектов недвижимости мне приходится хранить все 5 уровней адреса из справочника КЛАДР

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
AddressLevel1
AddressLevel1Code
AddressLevel2
AddressLevel2Code
AddressLevel3
AddressLevel3Code
AddressLevel4
AddressLevel4Code
AddressLevel5
AddressLevel5Code

Это на тот случай, если в КЛАДР отсутсвует Н/П или улица, то риэлтор вводит ее название руками и я сохраняю это название в нужном уровне (например если он ввел руками улицу, то сохраняю в поле AddressLevel5)

Сейчас я понимаю, что очень жестко ошибся при проектировании БД и все нужно было сделать по другому. Но как это сделать правильнее и оптимальнее я не знаю и прошу помощи у вас.
...
Рейтинг: 0 / 0
Проектирование БД для объектов недвижимости
    #36996941
Злой Бобр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Paco Сейчас я понимаю, что очень жестко ошибся при проектировании БД и все нужно было сделать по другому. Но как это сделать правильнее и оптимальнее я не знаю и прошу помощи у вас.
Сделай по другому и перенеси туда данные.
...
Рейтинг: 0 / 0
Проектирование БД для объектов недвижимости
    #36996968
Paco
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Злой БобрPaco Сейчас я понимаю, что очень жестко ошибся при проектировании БД и все нужно было сделать по другому. Но как это сделать правильнее и оптимальнее я не знаю и прошу помощи у вас.
Сделай по другому и перенеси туда данные.

Именно так и хочу поступить. Осталось выяснить как сделать по другому :)
...
Рейтинг: 0 / 0
Проектирование БД для объектов недвижимости
    #36997094
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PacoИменно так и хочу поступить. Осталось выяснить как сделать по другому :)Так вы сами сказали: "больше всего усложняют жизнь поля типа XML. в них я храню множественный выбор"

Сделайте обычные связи 1-много или много-много и будет счастье.

Для объектов недвижимости используйте структуру с наследованием объектов или ЕАВ.
ЕАВ только если действительно очень часто меняются атрибуты.

Но в общем главное откажитесь от XML - он тут совсем никаким боком.
...
Рейтинг: 0 / 0
Проектирование БД для объектов недвижимости
    #36997285
Paco
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alexeyvgДля объектов недвижимости используйте структуру с наследованием объектов или ЕАВ.
ЕАВ только если действительно очень часто меняются атрибуты.


Что такое структура с наследованием объектов или EAB? Ниразу не слышал.
Где почитать?
...
Рейтинг: 0 / 0
Проектирование БД для объектов недвижимости
    #36997572
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PacoЧто такое структура с наследованием объектов?Таблица объект с полем тип и ИД
6 таблиц: квартиры, дома, участки, дачи, коммерция, гаражи, аренда
в каждой ИД, ссылается на таблицу объект
В таблице объект общие атрибуты, в остальных специфические.
при создании записи создаётся запись в объект и запись в вдной из дочерних таблиц

PacoЧто такое EAB? EAV - модель Entity-Value-Atribute. Таблицы тип параметра и значение параметрата с привязкой к объекту, владеющему этими значениями параметров.

Это всё очень кратко.

PacoНиразу не слышал. Где почитать?На этом форуме поищите ну и в инете, по обоим темам.

Только аккуратно на этот раз проектируйте, чтобы опять не понять через 3 года, что... :-)
...
Рейтинг: 0 / 0
Проектирование БД для объектов недвижимости
    #36997629
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Для работы с адресами использую КЛАДР

Можно поинтересоваться зачем?

> 6 типов объектов недвижимости на продажу (квартиры, дома, участки, дачи, коммерция, гаражи) + аренда
> (представлена как отдельный тип объекта недвижимости)

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

> Все типы объектов хранятся в одной таблице

Т. е. вы полагаете, что квартира и дачный участок - одна и та же сущность? ;)

> поля типа XML

В реляционной БД? ;)

> Разработчикам КЛАДР виднее

Ну то есть даже собственный результат использования не заставляет вас задуматься о рациональности структуры? ;)

> как это сделать правильнее и оптимальнее

Судя по вашему описанию, правильнее было бы спроектировать базу данных с нуля. Но будет ли это дешевле и быстрее - вопрос, на который у меня нет ответа.

Вообще с недвижимостью сложно. Можно, например, выделять типовую недвижимость, - это правильно, но громоздко. Вопрос в данном случае не о правильности структуры, а о вашей квалификации - хватит ли ее для того, чтобы построить структуру данных приемлемого качества.
...
Рейтинг: 0 / 0
Проектирование БД для объектов недвижимости
    #36998046
Paco
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alexeyvgТолько аккуратно на этот раз проектируйте, чтобы опять не понять через 3 года, что... :-)

Спасибо, на этот раз выложу новую схему БД сначала сюда :)
...
Рейтинг: 0 / 0
Проектирование БД для объектов недвижимости
    #36998059
Paco
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
guest_20040621> Для работы с адресами использую КЛАДР

Можно поинтересоваться зачем?


Наверно Вы никогда не работали в подобных организациях :)
До ведения объектов в БД они вели все в Экселевском файле. Там только "ул. Ленина" была написана в 5 разных вариантах. Не говоря уже о написании городов и районов.
КЛАДР для порядка. Опять же для удобного поиска.

> 6 типов объектов недвижимости на продажу (квартиры, дома, участки, дачи, коммерция, гаражи) + аренда
> (представлена как отдельный тип объекта недвижимости)

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

Да, все верно. Жилая, не жилая. Также 1 тип может переходить в другой. Например на участке могут построить дом :)

> Все типы объектов хранятся в одной таблице

Т. е. вы полагаете, что квартира и дачный участок - одна и та же сущность? ;)


и то и то недвижимость - они обладают как общими атрибутами: адрес, коммуникации. Так и специфичными для конкретного вида недвижимости.

> Разработчикам КЛАДР виднее

Ну то есть даже собственный результат использования не заставляет вас задуматься о рациональности структуры? ;)

Есть альтернатива КЛАДР? Есть другой свободный источник адресов, в котором постоянно поддерживается актуальность информации?

> как это сделать правильнее и оптимальнее

Судя по вашему описанию, правильнее было бы спроектировать базу данных с нуля. Но будет ли это дешевле и быстрее - вопрос, на который у меня нет ответа.

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

Если бы было достаточно кваллификации, думаю Вы не увидели бы этого поста здесь :)
Но с правильной подсказкой я найду выход :)
...
Рейтинг: 0 / 0
Проектирование БД для объектов недвижимости
    #36998106
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> КЛАДР для порядка. Опять же для удобного поиска.

Ну то есть имеющийся порядок вас устраивает?

> Жилая, не жилая. Также 1 тип может переходить в другой. Например на участке могут построить дом

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

> и то и то недвижимость

Если бомж спит в коробке из-под холодильника - это тоже недвижимость?

> они обладают как общими атрибутами: адрес, коммуникации

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

> Есть альтернатива КЛАДР?

Это неправильный вопрос. Вопрос должен формулироваться так: что нужно сделать, чтобы иметь данные об изменениях адресов. Ответ: дополнительно - ничего. Нет необходимости. Есть нормальная структура для хранения адресных данных. И есть КЛАДР. Хотите вносить изменения в свою структуру - на здоровье. Но это отдельная структура и она должна существовать автономно.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Проектирование БД для объектов недвижимости
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]