Вы находитесь на странице: 1из 14

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ

ОДЕССКОГО НАЦИОНАЛЬНОГО УНИВЕРСИТЕТА ИМ. И.И. МЕЧНИКОВА

Отчёт
по лабораторной работе №1

студентки 3 курса

специальности Компьютерная инженерия

Андреевой Аниты

Преподаватель: Петрушина Т. И.,


Розновец О.И.

Одеса, 2020
Пользовательская история:

Я как инспектор хочу:


 зарегистрировать владельца квартиры, все его объекты недвижимости, чтобы организовать
его обслуживание;
 закрепить объекты недвижимости за своими ассистентами, чтобы они вели эти объекты;
 собрать все сведения об объектах своего отделения, чтобы передать отчет менеджеру;
 подготовить отчеты о количестве зарегистрированных в моем отделении объектов и их
характеристики за определенный период (например, месяц);
 сформировать отчет об осмотре недвижимости моими ассистентами за определенный
период, чтобы контролировать их работу;
 классифицировать собранную информацию, для того чтобы потом представить ее перед
клиентом;
 заключить договор с арендодателем и клиентом, для того чтоб официально оформить данную
операцию;
 сформировать отчет о количестве договоров, осмотров, свободной и занятой недвижимости
заключенных ассистентами, для того чтоб впоследствии передать данные менеджеру;
 организовать осмотр клиентом недвижимости, назначив при это ассистента, чтобы
контролировать этот процесс;
 докладывать о качестве работы ассистентов мененджеру, с целью назначения в будущем
лучшим сотрудникам премии;
 руководить ассистентами, инструктировать ассистентов о работе в филиале, чтоб они
качественно выполняли свои обязанности;
 предоставлять руководству(менеджеру) информацию за месяц, чтобы вести учет количества
заключенных договоров.
Диаграмма создана при помощи dBeaver:
CREATE SCHEMA "Dream Home"

Создание типов:
create type "Dream Home".Payment_Method as enum
('cash',
'VISA',
'bank');
comment on type "Dream Home".Payment_Method is 'Данный тип обозначает каким способом клиент
совершает оплату - cash(наличкой) или VISA(безналичным рассчётом), или bank(через банк)';

create type "Dream Home"."position" as enum


('director',
'assistant',
'manager',
'inspector');
comment on type "Dream Home".Position is 'Данный тип "Posiiton" обозначает какую должность
занимает данный сотрудник.';

create type "Dream Home"."type" as enum


('flat',
'privatehouse',
'bungalow',
'cottage');
comment on type "Dream Home".Type is 'Данный тип "Type" указывает на вид недвижимости -
квартира, дом, дача - который хочет клиент или может предложить владелец.';
create type "Dream Home". sex as enum
('male',
'female');
comment on type "Dream Home".Sex is 'Данный тип "Sex" указывает какого пола данный сотрудник.';
Создание таблиц:
create table "Dream Home".branch
(
branch_no serial not null primary key,
city varchar(20) not null,
street varchar(40) not null,
post_code char(5) not null check (post_code similar to '[0-9]{5}'),
manager integer not null,
unique(manager)
);

comment on table "Dream Home".branch is ' Таблица, содержащая информацию о филиалах.';


comment on column "Dream Home".branch.branch_no is 'Уникальний номер, который присваивается
каждому филиалу.';
comment on column "Dream Home".branch.city is 'Название города, в котором находится филиал.';
comment on column "Dream Home".branch.street is 'Название улицы, где находится филиал.';
comment on column "Dream Home".branch.post_code is 'Почтовый индекс отделения.';
comment on column "Dream Home".branch.manager is 'Управляющий филиалом.';

create table "Dream Home".staff(


staff_no serial not null primary key,
f_name varchar(20) not null,
l_name varchar(20) not null,
"position" "Dream Home"."position" not null,
sex "Dream Home".sex not null,
date_of_birth date not null,
salary decimal(7,2) not null check (salary>0),
staff_branch_no integer not null,
superviser integer,
foreign key (staff_branch_no) references "Dream Home".branch (branch_no) on update cascade on delete
restrict,
foreign key (superviser) references "Dream Home".staff (staff_no) on update cascade on delete
restrict
);
comment on table "Dream Home".staff is 'Таблица, содержащая информацию о каждом сотруднике,
работающем в филиале.';
comment on column "Dream Home".staff . staff_no is 'Номер сотрудника, работающего в филиале.';
comment on column "Dream Home".staff . f_name is 'Имя сотрудника филиала.';
comment on column "Dream Home".staff . l_name is 'Фамилия сотрудника, работающего в филиале.';
comment on column "Dream Home".staff . "position" is 'Должность, которую занимает сотрудник.';
comment on column "Dream Home".staff . sex is 'Колонка, содержащая пол человека.';
comment on column "Dream Home".staff . date_Of_Birth is 'Дата рождения сотрудника филиала.';
comment on column "Dream Home".staff . salary is 'Зарплата сотрудника, работающего в филиале.';
comment on column "Dream Home".staff . staff_branch_no is 'Уникальный номер отделения филиала,
где работает сотрудник.';
comment on column "Dream Home".staff . superviser is 'Уникальный номер инспектора, работающего
в филиале.';

create table "Dream Home".client(


client_no serial not null primary key,
f_name varchar(20) not null,
l_name varchar(20) not null,
tel_no varchar(13) not null check(tel_no similar to ('\+[0-9]{12}')),
"type" "Dream Home"."type" not null,
max_rent decimal(7,2) not null check(max_rent>0),
unique(tel_no)
);
comment on table "Dream Home".client is 'Человек, который обращается в Dream Home с целью
поиска жилья';
comment on column "Dream Home".client.client_No is 'Уникальный номер клиента.';
comment on column "Dream Home".client.f_name is 'Имя клиента.';
comment on column "Dream Home".client.l_name is 'Фамилия клиента.';
comment on column "Dream Home".client.tel_no is 'Номер телефона клиента.';
comment on column "Dream Home".client.max_rent is 'Максимальная цена, которую может заплатить
клиент за aренду имущества.';
comment on column "Dream Home".client."type" is 'Тип объекта недвижимости, который хотел бы
арендовать клиент.';

create table "Dream Home".private_owner(


owner_no serial not null primary key,
f_name varchar(20) not null,
l_name varchar(20) not null,
address varchar(40) not null,
tel_no varchar(13) not null check(tel_no similar to ('\+[0-9]{12}')),
unique(tel_no)
);
comment on table "Dream Home".private_owner is 'Владелец объекта недвижимости.';
comment on column "Dream Home".private_owner.owner_No is 'Уникальный номер объекта
недвижимости.';
comment on column "Dream Home".private_owner.f_name is 'Имя владельца объекта недвижимости.';
comment on column "Dream Home".private_owner.l_name is 'Фамилия владельца объекта
недвижимости.';
comment on column "Dream Home".private_owner.address is 'Адрес проживания владельца объекта
недвижимости.';
comment on column "Dream Home".private_owner.Tel_No is 'Номер телефона владельца объекта
недвижимости.';

create table "Dream Home".property_for_rent(


property_no serial not null primary key,
city varchar(20) not null,
street varchar(40) not null,
post_code char(5) not null check (post_code similar to '[0-9]{5}'),
"type" "Dream Home"."type" not null,
rooms smallint not null check(rooms>0),
rent decimal(7,2) not null check(rent>0),
property_owner_no integer not null,
oversees_by integer not null,
property_branch_no integer not null,
foreign key (property_owner_no) references "Dream Home".private_owner (owner_no) on delete restrict
on update cascade,
foreign key (oversees_by) references "Dream Home".staff (staff_no) on delete restrict on update
cascade,
foreign key (property_branch_no) references "Dream Home".branch (branch_no) on delete restrict
on update cascade
);
comment on table "Dream Home".property_for_rent is 'Таблица объекта недвижимости.';
comment on column "Dream Home".property_for_rent.property_no is 'Уникальный номер объекта
недвижимости.';
comment on column "Dream Home".property_for_rent.city is 'Город, в котором находится объект
недвижимости.';
comment on column "Dream Home".property_for_rent.street is 'Улица, где находится объект
недвижимости.';
comment on column "Dream Home".property_for_rent.post_code is 'Почтовый индекс филиала.';
comment on column "Dream Home".property_for_rent."type" is 'Тип объекта недвижимости.';
comment on column "Dream Home".property_for_rent.rooms is 'Количество комнат в доме, сдающемся
в аренду.';
comment on column "Dream Home".property_for_rent.rent is 'Стоимость аренды дома.';
comment on column "Dream Home".property_for_rent.property_owner_no is 'Уникальный номер
владельца объекта недвижимости.';
comment on column "Dream Home".property_for_rent.oversees_by is 'Уникальный номер сотрудника,
который закреплен за данным объектом недвижимости.';
comment on column "Dream Home".property_for_rent.property_branch_no is 'Уникальный номер
филиала, за которым закреплен данный объект недвижимости.';

create table "Dream Home".viewing(


view_property_no integer not null,
view_client_no integer not null,
view_date date not null,
"comment" varchar(100),
primary key(view_property_no, view_client_no),
foreign key (view_client_no) references "Dream Home".client (client_no) on delete restrict on update
cascade,
foreign key (view_property_no) references "Dream Home".property_for_rent (property_no) on delete
restrict on update cascade
);
comment on table "Dream Home".viewing is 'Таблица, содержащая информацию об осмотре объектов
недвижимости клиентами.';
comment on column "Dream Home".viewing.view_client_no is 'Уникальный номер клиента, который
осматривает данную недвижимость.';
comment on column "Dream Home".viewing.view_property_no is 'Уникальный номер объекта
недвижимости, которую осматривает данный клиент.';
comment on column "Dream Home".viewing.view_date is 'Дата осмотра объекта недвижимости.';
comment on column "Dream Home".viewing.comment is 'Комментарий насчет осмотра объекта
недвижимости.';

create table "Dream Home".lease(


lease_no serial not null primary key,
lease_property_no integer not null,
lease_client_no integer not null,
rent decimal(7,2) not null check(rent>0),
payment_method "Dream Home".payment_method not null,
deposit decimal(7,2) not null check(deposit>0),
paid bool not null,
rent_start date not null,
rent_finish date check(rent_finish>rent_start),
duration smallint not null check(duration>0),

foreign key (lease_property_no) references "Dream Home".property_for_rent (property_no) on


delete restrict on update cascade,
foreign key (lease_client_no) references "Dream Home".client (client_no) on delete restrict on
update cascade
);
comment on table "Dream Home".lease is 'Договор.';
comment on column "Dream Home".lease.lease_no is 'Уникальный номер договора по объекту
недвижимости.';
comment on column "Dream Home".lease.lease_property_no is 'Номер имущества, сдающегося в
аренду.';
comment on column "Dream Home".lease.lease_client_no is 'Номер клиента, который заключает
договор аренды объекта';
comment on column "Dream Home".lease.rent is 'Цена оплаты за аренду ';
comment on column "Dream Home".lease.payment_method is 'Способ оплаты за аренду объекта';
comment on column "Dream Home".lease.deposit is 'Залог за аренду .';
comment on column "Dream Home".lease.paid is 'Отметка оплачено или нет за аренду объекта.';
comment on column "Dream Home".lease.rent_start is 'Дата начала аренды имущества.';
comment on column "Dream Home".lease.rent_finish is 'Конец аренды объекта.';
comment on column "Dream Home".lease.duration is 'Длительность аренды по времени.';
Заполнение таблиц данными:
insert into "Dream Home".private_owner (f_name, l_name, address, tel_no) values
('Vasya', 'Suhodrishchev', 'Izmail, Gagarina, 4, 6', '+380957767218'),
('Igor', 'Kondratiuk', 'Bolgrad, Sadovaya, 60', '+380662897378'),
('Nikita', 'Loza', 'Lviv, Shevchenko, 12', '+380634446756'),
('Nikolaev', 'Alexander', 'Lviv, Pastera, 1', '+380973332121'),
( 'Stanislav', 'Bondarenko', 'Odessa, Elisavetinskaya, 2', '+380964085777'),
( 'Vlad', 'Benbik', 'Odessa, Kotovskogo, 2', '+380961212999'),
('Anna', 'Andreeva', 'Odessa, Torgovaya, 27', '+380894983912'),
( 'Elena', 'Butnyk', 'Lviv, Shkilna, 1', '+380900632112');

insert into "Dream Home".client (f_name, l_name, tel_no, "type", max_rent)


values ('Lubov', 'Ryabova', '+380957672182','flat', '5500'),
('Denis', 'Kozak', '+380957672186','flat', '5000'),
('Alina', 'Grosu', '+380967366766','privatehouse', '20000'),
('Valentina', 'Kulyas', '+380685167448','flat', '6000'),
('Oleg', 'Ron', '+380665358602','bungalow', '30000'),
('Michael', 'Terecko', '+380985246648','privatehouse', '18000'),
('Victor', 'Volodko', '+380665384823','cottage', '20000'),
('Gennadiy', 'Murich', '+380668531258','flat', '9000'),
('Oleg', 'Vinnik', '+380665195938','privatehouse', '15000'),
('Sophia', 'Don', '+380985369648','flat', '4000'),
('Fedor', 'Volodko', '+380665539580','cottage', '30000'),
('Alexsandr', 'Murich', '+380679653253','flat', '5000');
insert into "Dream Home".branch (city, street, post_code, manager)
values ('Kiev', 'Ulitsa Geroyev Stalingrada', '65160', 2),
('Odessa', 'Vysotskogo', '65011', 11),
('Odessa', 'Dvoryanskaya', '65108',17),
('Odessa', 'Glushko', '65113',22),
('Odessa', 'Pastera', '65017',27);

insert into "Dream Home".staff ( f_name, l_name, "position", sex, date_of_birth, salary,
staff_branch_no,superviser) values
( 'Tatiana', 'Petrushina', 'director', 'female', '1976-05-12', 30000, 1,null),
('Olga', 'Roznovets', 'manager', 'female','1980-05-12', 25000, 1, null),
('Anita', 'Andreeva', 'inspector', 'female', '1999-10-08', 14567, 1,null),
('Stanislav', 'Cure', 'inspector', 'male', '17-03-1978', 14000, 1,null),
('Alex', 'Moga', 'assistant', 'male', '1999-05-03',' 9000', 1, 3),
('Evgenia', 'Radchenko', 'assistant', 'female', '2001-07-09', '9800',1, 3),
( 'Elena', 'Shykhova', 'assistant', 'female', '2001-04-09', '8000 ', 1,3),
( 'Elena', 'Kravchenko', 'assistant', 'female', '2000-02-08', '10000 ', 1,3),
('Rostyslav', 'Loza', 'assistant', 'male', '2002-05-26', '8700', 1, 3),
( 'Ivan', 'Daki', 'assistant', 'male', '2001-08-10', '9300', 1, 3),
('Don', 'Stanislav', 'manager', 'male', '1978-08-09', 18000, 2,null),
('Oleg', 'Koval', 'inspector', 'male', '1976-03-17', 14256,2, null),
('Olga', 'Tor', 'inspector', 'female','1983-05-12', 14000, 2, null),
( 'Maksym', 'Bourosh', 'assistant', 'female', '1998-02-01', '15000', 2, 13),
( 'Marianna', 'Mazurok', 'assistant', 'female', '2000-10-02', '9000', 2, 12),
( 'Radj','Emanuil', 'assistant', 'male', '2001-11-04', '10000', 2, 12),
('Olena', 'Pyshko', 'manager', 'female', '1975-07-06', 14657, 3,null),
('Artem', 'Halimov', 'inspector', 'male', '17/04/1995', 13567, 3,null),
( 'Valentina', 'Pogo', 'assistant', 'female', '2001-09-30', '9000', 3, 18),
( 'Ekaterina', 'Adamova', 'assistant', 'female', '1998-06-12', '10000 ', 3, 18),
('Vladislav', 'Bebik', 'assistant', 'male', '2000-12-06', '9500', 3, 18),
('Oleg', 'Klimenko', 'manager', 'male', '1976-03-09', 16256,4, null),
('Olena', 'Penko', 'inspector', 'female', '1975-05-25', 12657, 4,null),
( 'Misha', 'Bar', 'assistant', 'male', '1988-06-19', '9000', 4, 23),
( 'Alina', 'Guk', 'assistant', 'female', '1999-07-12', '7500 ', 4, 23),
( 'Yana', 'Rosa', 'assistant', 'female', '1995-06-30', '7000', 4, 23),
('Artem', 'Maximov', 'manager', 'male', '1995-03-17', 16567, 5, null),
('Oleg', 'Popov', 'inspector', 'male', '1976-03-17', 12256,5, null),
( 'Galina', 'Kiru', 'assistant', 'female', '1996-04-01', '7500', 5, 28),
( 'Larysa', 'Karakach', 'assistant', 'female', '1999-06-13', '6987', 5, 28),
( 'Nikita', 'Shpilevskii', 'assistant', 'male', '1987-03-30', '10000 ', 5, 28);

Добавление ключа
alter table "Dream Home".Branch add constraint Manages foreign key (manager) references "Dream
Home".Staff (staff_no) on update cascade on delete restrict;

insert into "Dream Home".property_for_rent (city, street, post_code, "type", rooms, rent,
property_owner_no, oversees_by, property_branch_no) values
( 'Lviv', 'Kulisha, 2', '75089', 'flat', 2, '5000', 1, 3, 1),
('Kharkiv', 'Torgovaya, 50', '65082', 'flat', 3, '8000', 2, 3, 1),
('Kharkiv', 'Sadovaya, 10', '61000', 'privatehouse', 4, '13000',3, 3,1),
( 'Mykolaiv', 'Naberezhna, 61', '54001', 'cottage',5, '20000', 4, 3, 1),
('Kyiv', 'Khreschatyk, 1001, 45', '65070', 'flat', 1, '4000 ', 5, 3, 1),
( 'Donetsk', 'Shkolnaya, 7, 3', '83072', 'bungalow', 6, '20000 ',6, 4, 1),
('Radekhiv','Shkilnaya, 2', '80201', 'flat', 2, '10000 ', 7, 21, 3),
('Kamianka', 'Shevchenka, 80', '80400', 'privatehouse', 3, '8200 ', 8, 25, 4),
('Lopathyn', 'Tsentralnaya, 6', '80261', 'privatehouse', 2, '14000 ', 8, 30, 5),
( 'Babychi', 'Shkilna, 4', '89000', 'privatehouse', 3, '15000', 7, 18, 3),
( 'Pavliv','Lisova, 16', '80250', 'privatehouse', 3, '11000 ', 3, 8, 1),
( 'Lopathyn', 'Tsentralnaya, 6', '80261', 'privatehouse', 2, '19000 ', 5, 26, 4),
( 'Babychi', 'Shkilna, 4', '89600', 'privatehouse', 3, '15600', 7, 20, 3),
( 'Pavliv','Lisova, 45', '80650', 'privatehouse', 3, '18100 ', 3, 9, 1);
insert into "Dream Home".viewing (view_property_no, view_client_no, view_date, "comment")
values (1, 5, '25/05/2020', 'We like it!'),
(2, 6, '25/05/2020',' Wow'),
(3, 7, '25/05/2020', 'Lets watch something else'),
(4, 8, '25/05/2020', 'I need to think'),
(5, 9, '25/05/2020',null),
(6, 10, '25/05/2020', 'I need to think'),
(7, 11, '25/05/2020', 'It does not fit us'),
(8, 12, '25/05/2020',null),
(9, 11, '25/05/2020',null),
(10, 12, '25/05/2020', 'We like it!'),
(11, 11, '25/05/2020', 'I need to think'),
(12, 4, '25/05/2020', ' '),
(13, 5, '25/05/2020', 'I need to think'),
(14, 6, '25/05/2020',null),
(13, 7, '25/05/2020', 'We like it!'),
(12, 8, '25/05/2020', 'I need to think'),
(11, 9, '25/05/2020', null),
(10, 10, '25/05/2020', 'It does not fit us'),
(9, 7, '25/05/2020', 'I need to think'),
(8, 8, '25/05/2020', 'Lets watch something else'),
(7, 1, '25/05/2020', 'It does not fit us'),
(6, 4, '25/05/2020', null),
(5, 5, '25/05/2020', 'We like it!'),
(4, 5, '25/05/2020', 'We like it!');

insert into "Dream Home".lease (lease_property_no, lease_client_no, rent, deposit,paid, rent_start,


rent_finish, duration, payment_method) values
(1, 1, '19000 ', '8000', true, '2020-12-12', null, 7, 'cash'),
(2, 2, '20000', '3500 ', true, '2018-03-10', '2018-06-06', 8, 'bank'),
(3, 3, '20000 ', '1000 ', false, '2020-02-10', '2020-10-02', 8, 'VISA'),
( 4, 3, '9500 ', '5000 ', false, '2019-11-11', '2019-12-10', 1, 'cash'),
( 5, 3, '12000 ', '1800 ', false, '2020-05-05', '2020-10-10',5, 'cash'),
( 6, 6, '9000 ', '800 ', true, '2020-04-04', '2020-12-12', 8, 'cash'),
(8, 7, '50000 ', '10000 ', false, '2020-05-05', null, 7, 'cash'),
( 8, 8, '21000', '1000 ', false, '2020-06-06', null, 5, 'VISA'),
( 8,8, '13000 ', '2600 ', false, '2020-10-10', null, 2, 'cash');