powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Недвижимость сплошные join join join
4 сообщений из 4, страница 1 из 1
Недвижимость сплошные join join join
    #35550720
semen-demon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток!

Сабж на этом форуме, так как тут самые квалифицированные специалисты БД в зоне Ru, если не найдется ответ сдесь, проект по недвижимости без посредников умер =(

Структура нужной части базы в приложенном файле realmeters_db_part.PNG
База MySQL

Есть некая локация на карте в ней сгруппированы все возможные параметры физического месторасположения объекта
(для нормализации join-нятся названия улиц городов и дт, это опускаем так как на данном этапе аксиома).
В результате по таблице location можем получать уникальные идентификаторы местности, возможно точные когда заполнены все поля, возможно не явно указанные
(например указан город район и не имеют значения улицы)

Изначально было все просто, есть объявление оно привязано к одной локации, может быть несколько объявлений к локации например в разное время и с разной ценой
(по логике актуально только одно поэтому предыдущие отправляются в таблицу obj_arh с таким же набором полей)

вроде все просто объект - место

выборка не сложная
Реализация Active Record (PHP)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
			
//search model
// не ругаем за '*' когда определится точно какие поля требуются будет их список , спасибо =)
			$this->db->select('*');
			$this->db->from('obj');
			$this->db->join('Location','Location.id = obj.location');
			$this->db->join('Street','Street.id = Location.street');
			$this->db->join('metro','Location.metro = metro.id');
			$this->db->join('raion','raion.id = Location.raion and raion.city_id = Location.city');

//room model extend search model
// Кроме room возможны любые таблицы квартиры, дома и дт
			$this->db->where('obj.obj_type',  2 );
			$this->db->join('Rooms','Rooms.id = obj.id','left');

//Далее по коду накладываем необходимые фильтры 
//например 
		function _where_Price(){

			$price_from = intval(str_replace(' ','',$this->input->request('price_from')));
			$price_to = intval(str_replace(' ','',$this->input->request('price_to')));

			if(!empty($price_from)){
				$this->db->where('obj.price >', $price_from);
				$this->filters_val['price_from']=$price_from;
			}
			if(!empty($price_to)){
				$this->db->where('obj.price <', $price_to);
				$this->filters_val['price_to']= $price_to;
			}
			
		}

Мысли_вслухЗачем нужна таблица obj? Да далее планируется денормализировать в некую таблицу Room_obj
Но в первую очередь она необходима для возможности реализовать нечто вроде www.RealMeters.ru/id1234 соответственно не указывая тип можно выводить объявление любого типа

Собственно сложность
Появилась потребность размещения объявлений "сниму"
Но человек не дом и к одному месту не привязан, к сожалению или к счастью ))

В примере информация о арендаторах в таблице People_info
А связи с локациями в таблице People

Как можно реализовать выборку что бы :
При входных параметрах таких как city, raion, people_count, price, f, m возвращалось
People_info.* и список районов и метро в которых он хотел бы снять недвижимость

пока в голову пришло два варианта, в обоих очень очень сильно сомневаюсь:

1.Называется надежный DoS MySQL
Код: plaintext
1.
2.
3.
4.
5.
select id_people, people_count, links, kids, f, m, rooms, price from fb.People_info  
where id_people in(
			select id_people from fb.People where id_location in (
				select id where city, street, raion, home, metro, adress, x, y from fb.Location 
			) group by id_people
		   ) limit  0 ,  20000 

2. Второй вариант концепт основан на денормализации и хранении списка возможных вариантов метро и районов в одном из полей People_info

Какие Вы видите варианты оптимальной выборки или стоит менять структуру базы?

P.S.
Дмитрий
+ 7 911 918 70 05
semen-demon@mail.ru
Хобби - www.RealMeters.ru недвижимость без посредников
Инвесторы говорят нет модели монетизации проекта, капиталисты, зато было бы удобно без посредников жилье снимать и не платить 100% комиссии, многие наверно тоже сталкивались...
...
Рейтинг: 0 / 0
Недвижимость сплошные join join join
    #35550752
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Структура нужной части базы в приложенном файле

Боюсь, придется все радикально переделывать.

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

> Зачем нужна таблица obj?

В таком виде - действительно не нужна.

> Появилась потребность размещения объявлений "сниму"

Очень хорошо. Набор атрибутов оферты типа "сдача в аренду" будет отличаться от набора атрибутов оферты типа "съем".

> Инвесторы говорят нет модели монетизации проекта

Не слушайте дебилов. Масса вариантов: от собственного печатного издания до рекламы сопутствующих сервисов, аналитики и рейтингов. Важны две вещи: грамотная структура данных, позволяющая это делать, и уникальные фишки. Недвижимость - это непаханное поле, несмотря на кучу работающих сервисов.
...
Рейтинг: 0 / 0
Недвижимость сплошные join join join
    #35560816
semen-demon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за ответ, тока никак не могу сообразить на деле, можно добавить немного конкретики не могу разобраться
...
Рейтинг: 0 / 0
Недвижимость сплошные join join join
    #35560974
Konstantin~
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"я могу сделать все но за неограниченное время" (с) "не мое"

схема какая-то непонятная ... id улицы (???)

по идее у вас есть 4 основных понятия:

users
----------
логин,
пароль,
...
прочие атр


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

offer_ads
--------------------
proprety_id references id (properties), -- объявления о продаже/сдаче привязаны к объекту недвижимости
user_id references id (users), -- кто дал объявление
цена,
прочие атрб. oб

seek_ads
--------------
user_id references id (users), -- кто дал объявление
прочие атрибуты объявления типа "ищу", "сниму"

из такой или подобной схемы легко получитъ все остальное. Допустим в seek_ads пользователь заполняет данные на колько он знает , поиск среди offer_ads просто поиск совпадений по атрибутам. Для некоторых атрибутов полезно завести одленьную(ные) таблицу(ы) 1:М где мозно указывать атрибуты с "весом", то есть для seek_ads атрибут район будет являтся списком.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Недвижимость сплошные join join join
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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