Добавил:
Рад, если кому-то помог Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
0
Добавлен:
05.02.2026
Размер:
6.41 Mб
Скачать

Заполним таблицу «Технические заявки». Список вставленных элементов в таблицу изображен на рисунке 36:

INSERT INTO `Технические заявки` (`idЗаявки`,`idДоговора`,`idМенеджера`,

`Дата заявки`,`Описание проблемы`,`Статус`) VALUES

(1,1,3,'2024-02-20','Протечка крана на кухне','В

работе'), (2,2,6,'2024-01-15','Не работает замок входной

двери','Выполнено'), (3,3,2,'2024-03-10','Проблемы с

электричеством','Открыта'), (4,4,8,'2024-04-18','Шум вентиляции','В работе'),

(5,5,9,'2023-12-15','Замена уплотнителей окон','Выполнено'),

(6,6,11,'2024-04-20','Неисправность плиты','Открыта'),

(7,7,4,'2022-06-20','Замена лампы в коридоре','Выполнено'),

(8,8,5,'2021-05-18','Проблема с отоплением','Выполнено'),

(9,9,14,'2020-09-10','Плесень в ванной','Открыта'), (10,10,7,'2023-06-05','Замена краски в

прихожей','Выполнено');

61

Рис. 36 – Вставленные элементы в таблицу «Технические заявки»

Заполним таблицу «Платежи». Список вставленных элементов в таблицу изображен на рисунке 37:

INSERT INTO `Платежи`

(`idПлатежа`,`idДоговора`,`Дата платежа`,`Тип платежа`,

`Сумма`,`Способ оплаты`,`Статус`) VALUES

(1,1,'2024-02-01','Аренда',45000,'Карта','Проведён'), (2,1,'2024-03-01','Аренда',45000,'Карта','Проведён'), (3,2,'2024-01-

01','Аренда',60000,'Наличные','Проведён'), (4,2,'2024-02-

01','Аренда',60000,'Перевод','Проведён'), (5,3,'2024-03-01','Аренда',75000,'Карта','Проведён'), (6,4,'2024-04-

15','Аренда',52000,'Перевод','Проведён'), (7,5,'2024-01-01','Аренда',68000,'Карта','Проведён'), (8,6,'2024-05-10','Аренда',59000,'Карта','Проведён'),

62

(9,7,'2022-06-

10','Аренда',42000,'Наличные','Завершён'), (10,8,'2021-06-

10','Аренда',55000,'Перевод','Завершён'), (11,9,'2020-09-

01','Аренда',60000,'Карта','Завершён'), (12,10,'2023-06-

01','Аренда',50000,'Карта','Завершён'), (13,3,'2024-04-

01','Залог',35000,'Перевод','Проведён'), (14,1,'2024-02-01','Залог',20000,'Карта','Проведён'), (15,5,'2023-12-

01','Залог',30000,'Перевод','Проведён');

Рис. 37 – Вставленные элементы в таблицу «Платежи»

Заполним таблицу «Штрафы». Список вставленных элементов в таблицу изображен на рисунке 38:

INSERT INTO `Штрафы`

63

(`idШтрафа`,`idДоговора`,`Тип нарушения`,`Описание`, `Сумма штрафа`,`Дата начисления`,`Статус`) VALUES (1,1,'Просрочка платежа','Опоздание на 5

дней',3000,'2024-02-06','Оплачен'), (2,2,'Повреждение имущества','Царапины на

дверях',5000,'2024-01-12','Не оплачен'), (3,3,'Нарушение тишины','Шум после 23:00',2000,'2024-

03-12','Оплачен'), (4,4,'Просрочка платежа','Опоздание на 10

дней',4500,'2024-04-20','Не оплачен'), (5,5,'Несогласованная перепланировка','Перенос

мебели',6000,'2023-12-20','Оплачен'), (6,6,'Курение в квартире','Нарушение

правил',3500,'2024-04-22','Не оплачен'), (7,7,'Порча мебели','Сломана ручка шкафа',1500,'2022-

06-21','Оплачен'), (8,8,'Просрочка платежа','Опоздание на 3

дня',2000,'2021-05-19','Оплачен'), (9,9,'Ущерб отделке','Повреждение плитки',8000,'2020-

09-11','Не оплачен'), (10,10,'Шум','Жалобы соседей',2500,'2023-06-

06','Оплачен');

64

Рис. 38 – Вставленные элементы в таблицу «Штрафы»

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

65

5 Запросы к БД

1) Получение сведений о договоре аренды: ФИО арендатора, адрес квартиры и дата заключения договора (рис. 39)

SELECT

`Арендаторы`.`ФИО / название организации`, `Квартиры`.`Адрес`, `Договоры аренды`.`Дата заключения`

FROM `Договоры аренды`

INNER JOIN `Арендаторы`

ON `Договоры аренды`.`idАрендатора` = `Арендаторы`.`idАрендатора`

INNER JOIN `Квартиры`

ON `Договоры аренды`.`idКвартиры` = `Квартиры`.`idКвартиры`;

Рис. 39 – Внутреннее соединение по одному полю — INNER JOIN

Запрос использует INNER JOIN по одному полю и позволяет получить самые важные сведения — кто арендует квартиру, где она находится и когда был заключён договор. Полезно сотрудникам агентства.

2)Получение списка квартир, осматриваемых владельцами напрямую (рис. 40)

SELECT

66

`Владельцы`.`ФИО / название организации`, `Квартиры`.`Адрес`, `Осмотры квартиры`.`Дата осмотра`,

`Осмотры квартиры`.`Состояние` FROM `Владельцы`

INNER JOIN `Квартиры`

ON `Владельцы`.`idВладельца` = `Квартиры`.`idВладельца`

INNER JOIN `Осмотры квартиры`

ON `Квартиры`.`idКвартиры` = `Осмотры квартиры`.`idКвартиры`;

Рис. 40 – Косвенно связанные таблицы: Владельцы → Квартиры → Осмотры квартиры

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

3) Получение информации о платежах с указанием арендатора и адреса квартиры

(рис. 41)

SELECT

`Платежи`.`idПлатежа`, `Платежи`.`Тип платежа`,

67

`Платежи`.`Сумма`, `Арендаторы`.`ФИО / название организации`, `Квартиры`.`Адрес`

FROM `Платежи`

INNER JOIN `Договоры аренды`

ON `Платежи`.`idДоговора` = `Договоры аренды`.`idДоговора`

INNER JOIN `Арендаторы`

ON `Договоры аренды`.`idАрендатора` = `Арендаторы`.`idАрендатора`

INNER JOIN `Квартиры`

ON `Договоры аренды`.`idКвартиры` = `Квартиры`.`idКвартиры`;

Рис. 41 – Соединение более чем по одному полю

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

4) Вывод всех квартир, включая свободные и без договоров аренды (рис. 42)

68

SELECT

`Квартиры`.`Адрес`, `Квартиры`.`Статус`, `Договоры аренды`.`Статус договора`

FROM `Квартиры`

LEFT JOIN `Договоры аренды`

ON `Квартиры`.`idКвартиры` = `Договоры аренды`.`idКвартиры`;

Рис. 42 – Внешнее соединение LEFT JOIN

LEFTJOINгарантирует,чтобудутотображеныдажеквартиры,покоторымещё нет заключённых договоров. Полезно для анализа свободного фонда.

5)Разбор адреса филиала на уровни с использованием псевдорекурсивного соединения (рис. 43)

SELECT

69

`idФилиала` AS `ID филиала`,

`Адрес регистрации` AS `Полный адрес`, TRIM(SUBSTRING_INDEX(`Адрес регистрации`, ',', 1)) AS

`Часть адреса`, 1 AS `Уровень`

FROM `Филиалы агентства`

UNION ALL SELECT

`idФилиала`,

`Адрес регистрации`,

TRIM(SUBSTRING_INDEX(SUBSTRING_INDEX(`Адрес регистрации`, ',', 2), ',', -1)) AS `Часть адреса`,

2 AS `Уровень`

FROM `Филиалы агентства`

WHERE TRIM(SUBSTRING_INDEX(SUBSTRING_INDEX(`Адрес регистрации`, ',', 2), ',', -1)) <> ''

UNION ALL SELECT

`idФилиала`,

`Адрес регистрации`,

TRIM(SUBSTRING_INDEX(SUBSTRING_INDEX(`Адрес регистрации`, ',', 3), ',', -1)) AS `Часть адреса`,

3 AS `Уровень`

FROM `Филиалы агентства`

WHERE TRIM(SUBSTRING_INDEX(SUBSTRING_INDEX(`Адрес регистрации`, ',', 3), ',', -1)) <> ''

ORDER BY `ID филиала`, `Уровень`;

70