Создать учебную базу данных «Предприятие по аренде недвижимо-
Для выполнения лабораторной работы предлагается учебная БД малого
предприятия по аренде недвижимости, спроектированная по образцу, приве- денному в [1].
БД содержит шесть таблиц: отделения (Branch), сотрудники (Staff), объ- екты недвижимости (Property_for_rent), арендаторы (Renter), собственники (Owner), осмотры (Viewing).
Таблица Branch предназначена для сохранения информации об отделени- ях (офисах) предприятия и имеет атрибуты, представленные на рис. 2.
bno
street
city
tel_no
Рис. 2. Таблица Branch
Здесь bno является первичным ключом и в соответствии с правилом це- лостности сущности не может принимать неопределенные значения; поле street – строковое, хранит наименование улицы и номера дома; поле city – это название города, где расположен офис, может быть ограничено перечнем допустимых городов; поле tel_no – номер телефона офиса, который должен быть уни- кальным.
Таблица Staff предназначена для хранения информации о сотрудниках и включает атрибуты, представленные на рис. 3.
sno
fname
lname
address
tel_no
position
sex
dob
salary
bno
Рис. 3. Таблица Staff
В данной таблице sno – первичный ключ, предназначенный для уникаль- ной идентификации записей о сотрудниках; fname, lname – фамилия и имя со- трудника; address, tel_no – место жительства (включает город, улицу, дом) и те- лефон (уникальный); position – строковый атрибут, который определяет зани- маемую должность; sex – пол сотрудника, который может принимать только два значения «male» или «female»; dob – атрибут типа даты с данными о днях рождения сотрудников; salary – числовой атрибут, содержащий зарплату со- трудников; bno – внешний ключ для связи с таблицей Branch.
Таблица Property_for_rent с информацией об объектах недвижимости, предлагаемых в аренду, имеет атрибуты, представленные на рис. 4.
pno
street
city
type
rooms
rent
ono
sno
bno
Рис. 4. Таблица Property_for_rent
Здесь pno – первичный ключ; street – адрес; city– город; type – строковый атрибут с информацией о типе предлагаемого объекта недвижимости, может принимать либо значение «h» (house), либо «f» (flat); поле rooms – количество комнат; rent – числовой атрибут, который имеет смысл рентной стоимости объ- екта; поля оno, sno, bno – внешние ключи таблицы для связи с таблицами Owner, Staff, Branch соответственно.
Таблица Renter содержит информацию о потенциальных арендаторах и включает атрибуты, представленные на рис. 5.
rno
fname
lname
address
tel_no
pref_type
max_rent
bno
Рис. 5. Таблица Renter
Здесь rno – первичный ключ; fname, lname, address, tel_no – соответствен- но фамилия, имя, адрес и телефон арендатора; pref_type – строковый атрибут, определяющий предпочтительный для клиента тип объекта аренды и ограни- ченный значениями «h» и «f»; max_rent – числовой атрибут, имеющий смысл максимальной рентной стоимости объекта с точки зрения арендатора; bno – внешний ключ для связи с таблицей Branch.
Таблица Owner определяет владельцев объектов недвижимости, которые сдаются в аренду, и включает атрибуты, представленные на рис. 6.
ono
fname
lname
address
tel_no
Рис. 6. Таблица Owner
В данной таблице ono является первичным ключом таблицы; fname, lname, address, tel_no – соответственно фамилия, имя, адрес и телефон владельца.
Таблица Viewing содержит результат осмотра арендаторами предполага- емых объектов аренды и включает атрибуты, представленные на рис. 7.
rno
pno
date_o
comment_o
Рис. 7. Таблица Viewing
Особенность данной таблицы – наличие составного первичного ключа, состоящего из атрибутов rno и pno, каждый из которых в отдельности является внешним ключом для связи с таблицами Renter (кто из потенциальных аренда- торов производил осмотр) и Property_for_rent (какой из объектов осматривался). Атрибут date_o имеет тип даты и определяет дату осмотра, а comment_о – не- обязательный и самый «длинный» строковый атрибут, предназначенный для хранения сделанных потенциальным арендатором комментариев.
Заполнить таблицы произвольными данными, при этом выполнить сле- дующие действия:
для заполнения объектов недвижимости создать и использовать сино- ним – objects;
создать для таблицы сотрудников последовательность Staff_seq, кото- рая будет начинаться с 10 и увеличиваться на 5;