Skip to content

RandomToga/db_real_estate

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

База данных сайта объявлений по аренде и продаже объектов недвижимости

Описание проекта

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

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

Цель проекта

Цель проекта — разработать базу данных сайта объявлений по аренде и продаже объектов недвижимости, которая позволит:

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

Используемые технологии

  • 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 Связывает объекты недвижимости с инфраструктурой

Концептуальная модель базы данных

Logical-model

Даталогическая модель базы данных

Relational-model

Создание и наполнение базы данных

Скрипт создания базы данных: create_db.sql
Скрипт наполнения базы данных тестовыми данными: inserts.sql

SQL-запросы

Скрипт: selects.sql

В проекте реализованы запросы:

  1. Запрос на извлечение данных из нескольких связанных таблиц с использованием соединения через WHERE.
  2. Запрос с использованием INNER JOIN.
  3. Запрос с использованием CASE.
  4. Запрос с использованием группировки, агрегатных функций и HAVING.
  5. Запрос с использованием LEFT JOIN.
  6. Запрос с использованием вложенного подзапроса.
  7. Запрос на создание представления VIEW.

Создано представление: active_listing_view. Представление выводит информацию об активных объявлениях: заголовок, цену, имя владельца и город расположения объекта недвижимости.

Триггеры

Скрипт: triggers.sql

В базе данных реализованы два триггера.

1. Автоматическое увеличение количества просмотров объявления

Триггер add_views срабатывает после добавления новой записи в таблицу view_listing.

Он автоматически увеличивает значение поля views_count в таблице listing, когда пользователь просматривает объявление.

Тип триггера: AFTER INSERT

2. Автоматическое сохранение истории изменения цены

Триггер save_price_history срабатывает после изменения записи в таблице listing.

Он проверяет изменение поля price и автоматически добавляет старую и новую цену в таблицу price_history.

Тип триггера: AFTER UPDATE

Хранимые процедуры

Скрипт: procedures.sql

В проекте реализованы две хранимые процедуры.

1. show_user_active_listings

Процедура предназначена для получения активных объявлений конкретного пользователя.

Она выводит:

  • идентификатор объявления;
  • название объявления;
  • тип сделки;
  • цену;
  • дату публикации.

Пример вызова:

CALL show_user_active_listings(1);

2. search_listing_by_city_and_deal

Процедура предназначена для поиска недвижимости по городу и типу сделки.

Она принимает:

  • название города;
  • название типа сделки.

Процедура выводит:

  • название объявления;
  • цену;
  • город;
  • тип сделки;
  • владельца объекта.

Пример вызова:

CALL search_listing_by_city_and_deal('Москва', 'Продажа');

Как запустить проект

  1. Открыть MySQL Workbench.
  2. Создать базу данных real_estate.
  3. Выполнить DDL-скрипт создания таблиц.
  4. Выполнить SQL-скрипт заполнения таблиц тестовыми данными.
  5. Выполнить SQL-запросы для проверки работы базы данных.
  6. Создать триггеры.
  7. Создать хранимые процедуры.
  8. Проверить работу триггеров и процедур с помощью тестовых команд.

Основные возможности базы данных

База данных позволяет:

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

About

Проектирование и создание базы данных сайта по аренде и продаже объектов недвижимости

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Contributors