Проект представляет собой базу данных для сайта объявлений по аренде и продаже объектов недвижимости. База данных предназначена для хранения и обработки информации о пользователях, объектах недвижимости, объявлениях, адресах, типах сделок, тарифах размещения, оплатах, фотографиях, просмотрах, избранном, отзывах, чатах и сообщениях.
Система ориентирована на работу онлайн-платформы недвижимости, где пользователи могут размещать объявления, просматривать объекты, добавлять объявления в избранное, общаться с другими пользователями и оплачивать тарифы размещения.
Цель проекта — разработать базу данных сайта объявлений по аренде и продаже объектов недвижимости, которая позволит:
- хранить данные о пользователях и их ролях;
- хранить сведения об объектах недвижимости и их характеристиках;
- учитывать адреса объектов, города, районы, страны и станции метро;
- размещать объявления о продаже и аренде недвижимости;
- хранить фотографии объектов недвижимости;
- учитывать тарифы размещения объявлений и оплаты;
- фиксировать просмотры объявлений;
- сохранять историю изменения цен;
- поддерживать избранное, отзывы, чаты и сообщения пользователей;
- автоматизировать отдельные операции с помощью триггеров и хранимых процедур.
- Oracle SQL Developer Data Modeler — для проектирования концептуальной и даталогической реляционной модели базы данных.
- MySQL Workbench — для создания базы данных, выполнения SQL-скриптов, заполнения таблиц, создания запросов, триггеров и хранимых процедур.
- MySQL — система управления базами данных.
База данных называется: real_estate
В проекте используются следующие таблицы:
| Таблица | Назначение |
|---|---|
role_of_user |
Хранит роли пользователей системы |
user |
Хранит данные зарегистрированных пользователей |
subscription |
Хранит поисковые подписки пользователей |
favorite |
Хранит объявления, добавленные пользователями в избранное |
view_listing |
Хранит информацию о просмотрах объявлений |
review |
Хранит отзывы пользователей друг о друге |
country |
Хранит страны |
city |
Хранит города |
district |
Хранит районы |
metro |
Хранит станции метро |
address |
Хранит адреса объектов недвижимости |
type_real_estate |
Хранит типы недвижимости |
object_real_estate |
Хранит объекты недвижимости и их характеристики |
developer |
Хранит данные о застройщиках |
residential_complex |
Хранит данные о жилых комплексах |
infrastructure |
Хранит объекты инфраструктуры |
amenity |
Хранит удобства объектов недвижимости |
deal_type |
Хранит типы сделок |
tariff |
Хранит тарифы размещения объявлений |
listing |
Хранит объявления о продаже и аренде недвижимости |
photo |
Хранит фотографии объявлений |
price_history |
Хранит историю изменения цен объявлений |
payment |
Хранит данные об оплатах тарифов |
chat |
Хранит чаты между пользователями |
message |
Хранит сообщения пользователей |
m2m_address_metro |
Связывает адреса со станциями метро |
m2m_object_amenity |
Связывает объекты недвижимости с удобствами |
m2m_object_infrastructure |
Связывает объекты недвижимости с инфраструктурой |
Скрипт создания базы данных: create_db.sql
Скрипт наполнения базы данных тестовыми данными: inserts.sql
Скрипт: selects.sql
В проекте реализованы запросы:
- Запрос на извлечение данных из нескольких связанных таблиц с использованием соединения через
WHERE. - Запрос с использованием
INNER JOIN. - Запрос с использованием
CASE. - Запрос с использованием группировки, агрегатных функций и
HAVING. - Запрос с использованием
LEFT JOIN. - Запрос с использованием вложенного подзапроса.
- Запрос на создание представления
VIEW.
Создано представление: active_listing_view. Представление выводит информацию об активных объявлениях: заголовок, цену, имя владельца и город расположения объекта недвижимости.
Скрипт: triggers.sql
В базе данных реализованы два триггера.
Триггер add_views срабатывает после добавления новой записи в таблицу view_listing.
Он автоматически увеличивает значение поля views_count в таблице listing, когда пользователь просматривает объявление.
Тип триггера:
AFTER INSERT
Триггер save_price_history срабатывает после изменения записи в таблице listing.
Он проверяет изменение поля price и автоматически добавляет старую и новую цену в таблицу price_history.
Тип триггера:
AFTER UPDATE
Скрипт: procedures.sql
В проекте реализованы две хранимые процедуры.
Процедура предназначена для получения активных объявлений конкретного пользователя.
Она выводит:
- идентификатор объявления;
- название объявления;
- тип сделки;
- цену;
- дату публикации.
Пример вызова:
CALL show_user_active_listings(1);Процедура предназначена для поиска недвижимости по городу и типу сделки.
Она принимает:
- название города;
- название типа сделки.
Процедура выводит:
- название объявления;
- цену;
- город;
- тип сделки;
- владельца объекта.
Пример вызова:
CALL search_listing_by_city_and_deal('Москва', 'Продажа');- Открыть MySQL Workbench.
- Создать базу данных
real_estate. - Выполнить DDL-скрипт создания таблиц.
- Выполнить SQL-скрипт заполнения таблиц тестовыми данными.
- Выполнить SQL-запросы для проверки работы базы данных.
- Создать триггеры.
- Создать хранимые процедуры.
- Проверить работу триггеров и процедур с помощью тестовых команд.
База данных позволяет:
- хранить пользователей и распределять их по ролям;
- хранить объекты недвижимости и их параметры;
- учитывать адреса, города, районы, страны и станции метро;
- размещать объявления о продаже и аренде недвижимости;
- хранить фотографии объектов;
- учитывать тарифы размещения и оплаты;
- фиксировать просмотры объявлений;
- автоматически увеличивать счетчик просмотров;
- сохранять историю изменения цен;
- добавлять объявления в избранное;
- хранить отзывы пользователей;
- поддерживать чаты и сообщения между пользователями;
- выполнять поиск недвижимости по городу и типу сделки;
- просматривать активные объявления конкретного пользователя.

