ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 05.12.2023
Просмотров: 333
Скачиваний: 2
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
Федеральное государственное образовательное бюджетное учреждениевысшего профессионального образования«Санкт-Петербургский государственный университет телекоммуникацийим. проф. М.А. Бонч-Бруевича»Кафедра Безопасности информационных системКУРСОВОЙ ПРОЕКТПо дисциплине «Управление данными»на тему:«Агентство недвижимости»Выполнил: студент группы ИСТ-113 Иешин И.А.«___» ___________ 2022 г. _________/ Иешин И.А./Принял: к.с.-х.н., преподаватель кафедры БИС Медведев С.А.«___» __________ 2022 г. _________/Медведев С.А./Санкт-Петербург2022Содержание
Введение 3
Техническое задание 4
Таблица атомарных объектов 5
Графическая нотация Чена 6
Нормализация 7
Запросы 8
Запросы к базе данных и их результаты 10
Заключение 12
У каждой недвижимости есть адрес, состоящий из города, района и улицы, номера дома и квартиры. В свою очередь дом может иметь мусоропровод, лифт. Также для удобства у дома может находиться детская площадка и автомобильная стоянка. В каждой квартире есть какое-то количество комнат, наличие балкона, ремонт и владелец.В качестве владельца может выступать человек либо же застройщик. Если владелец человек, то информация о нем состоит из ФИО, номера телефона, серии и номера паспорта. Если же в качестве владельца выступает застройщик, то информация о нем состоит из имени компании и номера телефона компании.Для связи с конкретным клиентом необходимо иметь информацию о ФИО и контактах клиента. Для совершения сделки помимо ФИО и контактов необходимо иметь паспортные данные.Для формирования отчета о доходах за какой-то период необходимо иметь информацию о сделках, в которую входят статус сделки, сумма и дата. Помимо этого, по номеру сделки возможно получить информацию о владельце, клиенте и сотруднике проводящий сделку.Также в БД должна быть возможность получить информацию о сотруднике агентства. Информация должна содержать ФИО сотрудника, должность, контакты и кол-во совершенных сделок за какой-то период.
Для принадлежности таблиц к нормальной форме Бойса-Кодда необходимо: принадлежность к 3-ей форме и ключевые атрибуты составного ключа не должны зависеть от не ключевых атрибутов. Это означает что все таблицы, в которых ключ простой автоматически принадлежат нормальной форме Бойса-Кодда. Все остальные таблицы также принадлежат данной нормальной форме. К примеру, в таблице “Квартира” Номер квартиры или ID дома никак не зависят от кол-ва комнат, ремонта и т.д.
`ID_count_floors` INT,FOREIGN KEY (`ID_street`)REFERENCES Street (`ID`),FOREIGN KEY (`ID_count_floors`)REFERENCES Count_floors (`ID`));CREATE TABLE `Owner` (`ID` INT PRIMARY KEY,`type_owner` ENUM('pp', 'dc'));CREATE TABLE `Private_person` ( `ID` INT,`passport` VARCHAR(20) PRIMARY KEY,`fio` VARCHAR(100),`phone` VARCHAR(20),FOREIGN KEY(`ID`) REFERENCES Owner(`ID`));CREATE TABLE `Developer_company` ( `ID` INT,`license` VARCHAR(50) PRIMARY KEY, `name` VARCHAR(30),`phone` VARCHAR(20),FOREIGN KEY(`ID`) REFERENCES Owner(`ID`));CREATE TABLE `Apartament` (`ID` INT PRIMARY KEY AUTO_INCREMENT,`num_apartament` INT,`ID_house` INT,`count_rooms` INT,`repair` BOOL,`balcony` BOOL,`square` FLOAT,`price` INT,`ID_owner` INT,FOREIGN KEY (`ID_house`)REFERENCES House (`ID`),FOREIGN KEY (`ID_owner`)REFERENCES Owner (`ID`));CREATE TABLE `Client` (`passport` VARCHAR(20) PRIMARY KEY,`fio` VARCHAR(100),`phone` VARCHAR(20));CREATE TABLE `Employee` (`passport` VARCHAR(20) PRIMARY KEY,`fio` VARCHAR(100),`phone` VARCHAR(20),`count_deal` INT,`job_title` VARCHAR(50));CREATE TABLE `Deal` (`number_deal` INT PRIMARY KEY auto_increment,`status` ENUM('completed', 'abort'),`ID_apartament` INT,`price` INT,`data` DATE,`passport_client` VARCHAR(20),`ID_owner` INT,`passport_employee` VARCHAR(20), FOREIGN KEY (`ID_owner`)REFERENCES Apartament (`ID_owner`), FOREIGN KEY (`passport_client`)REFERENCES Client (`passport`),FOREIGN KEY (`passport_employee`)REFERENCES Employee (`passport`), FOREIGN KEY (`ID_apartament`) REFERENCESApartament(`ID`));
Введение 3
Техническое задание 4
Таблица атомарных объектов 5
Графическая нотация Чена 6
Нормализация 7
Запросы 8
Запросы к базе данных и их результаты 10
Заключение 12
Введение
Предметной областью я выбрал агентство недвижимости. Результатом выполнения работы должна стать база данных, в которой хранятся основные сведения о домах и их адресов, квартир и их владельцев, его работниках и клиентах, а также о сделках. Также необходимо смоделировать несколько запросов к базе данных, которые имеют место для реального бизнеса и несли бы практическое значение. Разработка базы данных предусматривает несколько этапов, в процессе прохождения которых информационная система будет совершенствоваться, это: описание предметной области базы данных, составление таблицы атомарных объектов и функциональных зависимостей, создание графической интерпретации предметной области в терминах сущностей и связей с помощью графической нотации Питера Чена, выделение будущих таблиц с названиями их столбцов, доказательство нахождения этих таблиц в 1, 2, 3 и Бойса-Кодда нормальных формах, создание запросов в нотации реляционной алгебры и реализация базы данных с помощью СУБД.Техническое задание
Область применения БД является агентство недвижимости осуществляющие продажу квартир. Для агентства недвижимости необходимо иметь информацию непосредственно о недвижимости, клиенте, состоянии сделки, владельце недвижимости и сотруднике компании проводящий сделку.У каждой недвижимости есть адрес, состоящий из города, района и улицы, номера дома и квартиры. В свою очередь дом может иметь мусоропровод, лифт. Также для удобства у дома может находиться детская площадка и автомобильная стоянка. В каждой квартире есть какое-то количество комнат, наличие балкона, ремонт и владелец.В качестве владельца может выступать человек либо же застройщик. Если владелец человек, то информация о нем состоит из ФИО, номера телефона, серии и номера паспорта. Если же в качестве владельца выступает застройщик, то информация о нем состоит из имени компании и номера телефона компании.Для связи с конкретным клиентом необходимо иметь информацию о ФИО и контактах клиента. Для совершения сделки помимо ФИО и контактов необходимо иметь паспортные данные.Для формирования отчета о доходах за какой-то период необходимо иметь информацию о сделках, в которую входят статус сделки, сумма и дата. Помимо этого, по номеру сделки возможно получить информацию о владельце, клиенте и сотруднике проводящий сделку.Также в БД должна быть возможность получить информацию о сотруднике агентства. Информация должна содержать ФИО сотрудника, должность, контакты и кол-во совершенных сделок за какой-то период.
Таблица атомарных объектов
| Адрес | |
| Наименование субъекта | - |
| Населенный пункт | Наименование субъекта |
| Название улицы | Населенный пункт |
| Номер дома | Название улицы |
| Дом | |
| Номер дома | - |
| Наличие мусоропровода | Номер дома |
| Наличие лифта | Номер дома |
| Наличие детской площадки | Номер дома |
| Наличие автомобильной стоянки | Номер дома |
| Количество этажей | Номер дома |
| Квартира | |
| Номер квартиры | - |
| Количество комнат | Номер квартиры |
| Ремонт | Номер квартиры |
| Наличие балкона | Номер квартиры |
| Площадь квартиры | Номер квартиры |
| Стоимость квартиры | Номер квартиры |
| Владелец | |
| Частное лицо | |
| Паспортные данные | - |
| Номер телефона | Паспортные данные |
| ФИО владельца | Паспортные данные |
| Застройщик | |
| Лицензия компании | - |
| Название компании застройщика | Лицензия компании |
| Номер телефона компании застройщика | Лицензия компании |
| Клиент | |
| Паспортные данные | - |
| Номер телефона | Паспортные данные |
| ФИО клиента | Паспортные данные |
| Сделка | |
| Номер сделки | - |
| Сумма сделки | Номер сделки |
| Дата сделки | Номер сделки |
| Статус сделки | Номер сделки |
| Сотрудник агентства | |
| Паспортные данные | - |
| ФИО сотрудника | Паспортные данные |
| Должность сотрудника | Паспортные данные |
| Номер телефона | Паспортные данные |
| Количество совершенных сделок | Паспортные данные |
Графическая нотация Чена
Рисунок 1 – нотация Чена-
Субъект РФ (ID, название субъекта РФ) -
Населенный пункт (ID, название населенного пункта, ID субъекта РФ) -
Улица (ID, название улицы, ID населенного пункта) -
Дом (ID, номер дома, ID улицы, стоянка, детская площадка, ID кол-во этажей) -
Кол-во этажей (ID, число этажей, наличие лифта, наличие мусоропровода) -
Квартира (ID, номер квартиры, ID дома, кол-во комнат, ремонт, балкон, площадь, стоимость, ID владельца) -
Владелец (ID, тип владельца) -
Частное лицо (паспортные данные, телефон, ФИО) -
Компания застройщика (лицензия, телефон, название компании) -
Клиент (паспортные данные, ФИО, телефон) -
Сделка (номер сделки, статус, сумма, дата, паспорт клиента, ID владельца, паспорт сотрудника, ID квартиры) -
Сотрудник агентства (Паспортные данные, ФИО, должность, номер телефона, кол-во сделок)
Нормализация
Анализируя все таблицы, можно сделать вывод, что все поля являются атомарными, то есть каждое значение поля находится в единственном числе и имеет одно значение, следовательно таблицы соответствуют 1-ой нормальной форме.Для того чтобы таблицы были во 2-ой нормальной форме необходима принадлежность к 1-ой нормальной форме и полная функциональная зависимость всех не ключевых атрибутов от каждого столбца первичного ключа. Все таблицы, в которых первичный ключ простой автоматически принадлежат 2-ой нормальной форме. В таблице “Дом” ключ состоит из атрибутов Номер дома и ID улицы. Все не ключевые атрибуты находятся в полной функциональной зависимости от этого ключа, так как, к примеру наличие стоянки нельзя определить, зная только ID улицы. Также наличие стоянки невозможно определить только по Номеру дома, потому что дом обязан находится на какой-либо улице. Аналогично с таблицами “Субъект РФ”, “Населенный пункт”, “Улица”, “Квартира” и “Кол-во этажей”.Третья нормальная форма определяется следующим образом: таблица во 2-ой нормальной форме и отсутствуют транзитивные зависимости не ключевых атрибутов. Так, например, в таблице “Дом” наличие лифта и мусоропровода зависит от количества этажей (никто не станет делать лифт или мусоропровод в одноэтажном доме), поэтому они вынесены в отдельную таблицу.Для принадлежности таблиц к нормальной форме Бойса-Кодда необходимо: принадлежность к 3-ей форме и ключевые атрибуты составного ключа не должны зависеть от не ключевых атрибутов. Это означает что все таблицы, в которых ключ простой автоматически принадлежат нормальной форме Бойса-Кодда. Все остальные таблицы также принадлежат данной нормальной форме. К примеру, в таблице “Квартира” Номер квартиры или ID дома никак не зависят от кол-ва комнат, ремонта и т.д.
Запросы
-
Какой адрес дома?
-
Есть ли лифт в доме?
-
Узнать ФИО сотрудника, который проводил сделку
-
Сколько комнат в квартире?
-
Сколько у владельца квартир?
-
Узнать информацию о компании застройщика.
-
Узнать информацию о клиенте и дату совершения сделки по номеру сделки.
`ID_count_floors` INT,FOREIGN KEY (`ID_street`)REFERENCES Street (`ID`),FOREIGN KEY (`ID_count_floors`)REFERENCES Count_floors (`ID`));CREATE TABLE `Owner` (`ID` INT PRIMARY KEY,`type_owner` ENUM('pp', 'dc'));CREATE TABLE `Private_person` ( `ID` INT,`passport` VARCHAR(20) PRIMARY KEY,`fio` VARCHAR(100),`phone` VARCHAR(20),FOREIGN KEY(`ID`) REFERENCES Owner(`ID`));CREATE TABLE `Developer_company` ( `ID` INT,`license` VARCHAR(50) PRIMARY KEY, `name` VARCHAR(30),`phone` VARCHAR(20),FOREIGN KEY(`ID`) REFERENCES Owner(`ID`));CREATE TABLE `Apartament` (`ID` INT PRIMARY KEY AUTO_INCREMENT,`num_apartament` INT,`ID_house` INT,`count_rooms` INT,`repair` BOOL,`balcony` BOOL,`square` FLOAT,`price` INT,`ID_owner` INT,FOREIGN KEY (`ID_house`)REFERENCES House (`ID`),FOREIGN KEY (`ID_owner`)REFERENCES Owner (`ID`));CREATE TABLE `Client` (`passport` VARCHAR(20) PRIMARY KEY,`fio` VARCHAR(100),`phone` VARCHAR(20));CREATE TABLE `Employee` (`passport` VARCHAR(20) PRIMARY KEY,`fio` VARCHAR(100),`phone` VARCHAR(20),`count_deal` INT,`job_title` VARCHAR(50));CREATE TABLE `Deal` (`number_deal` INT PRIMARY KEY auto_increment,`status` ENUM('completed', 'abort'),`ID_apartament` INT,`price` INT,`data` DATE,`passport_client` VARCHAR(20),`ID_owner` INT,`passport_employee` VARCHAR(20), FOREIGN KEY (`ID_owner`)REFERENCES Apartament (`ID_owner`), FOREIGN KEY (`passport_client`)REFERENCES Client (`passport`),FOREIGN KEY (`passport_employee`)REFERENCES Employee (`passport`), FOREIGN KEY (`ID_apartament`) REFERENCESApartament(`ID`));