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

Государственный Университет Молдовы

Факультет Математики и Информатики

Департамент Информатики

Лабораторная работа №1
Тема: Тип объекта. Создание. Инициализация.

Выполнил: Циуляну Андрей I2002


Преподаватель: Вишневский Борис.

Кишинев, 2021
Условия:
1. Создать тип, описывающий квартиры в Кишинёве: адрес, собственник,
тип квартиры, этаж, количество комнат, изображение плана квартиры,
цена и др. (Дополните ещё тремя атрибутами описания квартиры, на свой
выбор).

 Атрибут «Адрес» («Address») является объектом со следующими


атрибутам: город, улица, номер дома, номер квартиры. Метод
отображения будет выводить информацию об адресе.

 Атрибут «Собственник» («Owner») представляет собой объект со


следующими атрибутами: фамилия, имя, дата рождения и номер телефона.
Метод «Возраст» («Age») является функцией, которая возвращает возраст
по дате рождения.

 Атрибут «Тип квартиры» («Apartment_type») принимает значения:


многоквартирный дом, дом, вилла, общежитие и другие.

Код создания типа:


Тип – Адрес:
CREATE TYPE add_typ AS OBJECT
(city VARCHAR2(30),
street VARCHAR2(30),
housenr NUMBER(3),
apnr NUMBER(3),
MEMBER PROCEDURE display_details ( SELF IN OUT NOCOPY add_typ ));
CREATE TYPE BODY add_typ AS
MEMBER PROCEDURE display_details ( SELF IN OUT NOCOPY add_typ ) IS
BEGIN
DBMS_OUTPUT.PUT_LINE(city || ' ' || street );
DBMS_OUTPUT.PUT_LINE(TO_CHAR(housenr)|| ' ' || TO_CHAR(apnr));
END;
END;
Тип – Собственник:
CREATE OR REPLACE TYPE own_typ AS OBJECT
( fname VARCHAR2(30),
sname VARCHAR2(30),
birthdate DATE,
phonenumber NUMBER(9),
MEMBER FUNCTION Age RETURN NUMBER
);
CREATE TYPE BODY owner_type AS
MEMBER FUNCTION Age RETURN NUMBER
IS
BEGIN
DECLARE @AGE SMALLINT
SET @AGE = FLOOR(DATEDIFF(YY,birthdate,SYSDATETIME)
(CASE
WHEN SYSDATETIME >= DATEADD(YY, DATEDIFF(YY, birthdate,
SYSDATETIME), birthdate) THEN 0
ELSE 1
END))
RETURN AGE;
END;
END;

Тип - Квартира
CREATE TYPE apartment AS OBJECT
(
address add_typ,
owner own_typ,
ap_typ VARCHAR2(30),
rooms NUMBER(1),
price NUMBER(5),
image VARCHAR2(30),
area NUMBER(3),
windows NUMBER(1),
balcony NUMBER(1)
);// Доп атрибуты: Кол-во балконов, Площадь, Количество окон.
2. Создать объектную таблицу (используя CREATE TABLE…OF…)
«СОБСТВЕННИК» («OWNER»), «КВАРТИРЫ» («APARTMENTS»).

Объектная таблица:

«OWNER»
CREATE TABLE own_obj_table OF own_typ;
«APARTMENTS»
CREATE TABLE aps_obj_table OF apartment;

3. Заполнить таблицы данными


Заполнение таблицы “Owner”:
INSERT INTO own_obj_table (fname, sname, birthdate, phonenumber)
VALUES
('Andrew', 'Tiuleanu',TO_DATE('2001/10/27',
'yyyy/mm/dd'),78642496);
INSERT INTO own_obj_table (fname, sname, birthdate, phonenumber)
VALUES
('Pavel', 'Tiuleanu',TO_DATE('1998/06/04',
'yyyy/mm/dd'),68727588);
INSERT INTO own_obj_table (fname, sname, birthdate, phonenumber)
VALUES
('Viorel', 'Smith',TO_DATE('1967/03/14',
'yyyy/mm/dd'),60557788);
INSERT INTO own_obj_table (fname, sname, birthdate, phonenumber)
VALUES
('Maria', 'Sobol',TO_DATE('2002/11/25',
'yyyy/mm/dd'),60529469);
INSERT INTO own_obj_table (fname, sname, birthdate, phonenumber)
VALUES
('John', 'Cena',TO_DATE('1977/04/23', 'yyyy/mm/dd'),79674232);
INSERT INTO own_obj_table (fname, sname, birthdate, phonenumber)
VALUES
('Alexandr', 'Pushkin',TO_DATE('1799/05/26',
'yyyy/mm/dd'),60765395);
INSERT INTO own_obj_table (fname, sname, birthdate, phonenumber)
VALUES
('William', 'Shakespeare',TO_DATE('1564/04/16',
'yyyy/mm/dd'),62333666);
INSERT INTO own_obj_table (fname, sname, birthdate, phonenumber)
VALUES
('Felix', 'Lenguel',TO_DATE('1995/11/12',
'yyyy/mm/dd'),22624203);

Заполнение таблицы “APARTMENTS”:


INSERT INTO aps_obj_table VALUES (
add_typ('Chisinau','Alexei Mateevici',20,120),
own_typ ('Jora','Andreev',TO_DATE('1999-05-01',
'yyyy/mm/dd'),62344777),
'Klopovnik',3,50000,'scheme143series',89,3,2
);
INSERT INTO aps_obj_table VALUES (
add_typ('New York','Manhattan',10,69),
own_typ ('Donald','Trump',TO_DATE('1946-06-13',
'yyyy/mm/dd'),65666433),
'Mnogokvartirnyi dom',6,99999,'Newyorkplanapp2',600,9,5
);

INSERT INTO aps_obj_table VALUES (


add_typ('Odessa','Zavodskaya',2,53),
own_typ ('Mikola','Kopaev',TO_DATE('1977-12-26',
'yyyy/mm/dd'),54925700),
'Camin',2,34400,'scheme162series',63,2,1
);
INSERT INTO aps_obj_table VALUES (
add_typ('Kiev','Mirnaia',10,150),
own_typ ('Mihail','Ivanov',TO_DATE('2003-04-12',
'yyyy/mm/dd'),31962684),
'Villa',5,76000,'villascheme32',300,6,3
);
INSERT INTO aps_obj_table VALUES (
add_typ('Kiev','Mirnaia',11,151),
own_typ ('Anatolii','Mihalkov',TO_DATE('1987-10-22',
'yyyy/mm/dd'),55557755),
'Dom',3,33333,'domscheme32',200,4,2
);
INSERT INTO aps_obj_table VALUES (
add_typ('Kiev','Mirnaia',11,151),
own_typ ('Vasilii','Vasiliev',TO_DATE('1999-11-03',
'yyyy/mm/dd'),34323536),
'Supermegadom',9,77353,'supermegadomscheme32',467,7,4
);
INSERT INTO aps_obj_table VALUES (
add_typ('Minsk','Lenina',10,66),
own_typ ('Ivan','Rubin',TO_DATE('1945-02-16',
'yyyy/mm/dd'),23552355),
'Camin',2,55323,'scheme162series',87,2,1
);
INSERT INTO aps_obj_table VALUES (
add_typ('Maiami','Little Havanna',132,30),
own_typ ('Donald','Trump',TO_DATE('1946-06-13',
'yyyy/mm/dd'),65666433),
'Penthaus',7,99999,'maiamiplanapp2',800,9,9
);

4. Создать запросы к таблице:


1) Списка квартир.
2) Списка квартир на улице X (В моем случае улица мирная)
3) Списка квартир собственника Y (В моем случа Donald Trump)
4) количество квартир по типам квартир.
1)

2)
3)

4)

Вывод:
В данной лабораторной работе мы познакомились с объектами, их
синтаксическими и структурными особенностями в Oracle SQL при
разработке и проектировке баз данных.

Вам также может понравиться