lab2
.pdf
САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ АЭРОКОСМИЧЕСКОГО ПРИБОРОСТРОЕНИЯ
КАФЕДРА ПРИКЛАДНОЙ ИНФОРМАТИКИ
ОТЧЕТ ЗАЩИЩЕН С ОЦЕНКОЙ
ПРЕПОДАВАТЕЛЬ
Канд. техн. наук |
|
Турнецкая Е. Л. |
должность, уч. степень, звание |
подпись, дата |
инициалы, фамилия |
ОТЧЕТ О ЛАБОРАТОРНОЙ РАБОТЕ №2
Управление данными в графической базе данных Neo4J
по курсу: Программная инженерия
РАБОТУ ВЫПОЛНИЛ
СТУДЕНТ гр. № |
4111з |
|
Тюттерин Я. Н. |
||
|
|
|
|
|
|
|
|
|
подпись, дата |
|
инициалы, фамилия |
Санкт-Петербург 2026
Цель работы: получение практических навыков работы с графической базой данных Neo4j. Neo4j — это самая распространенная графовая база данных, в которой данные хранятся и обрабатываются в виде вершин (узлов) и рёбер (отношений) между ними. В отличие от реляционных баз данных, где данные организованы в таблицы, Neo4j использует графовую структуру для представления и хранения данных, что делает её особенно эффективной для задач, связанных с взаимосвязями между объектами
Результат установки и запуска Neo4j представлен на рисунках 1-2.
Рисунок 1 - Результат установки и запуска через терминал
Рисунок 2 - Результат установки и запуска в Docker Desktop
На рисунке 3 представлено подключение к графическому клиенту Neo4J.
Рисунок 3 - Подключение к графическому клиенту Neo4J
Создание БД продаж магазина представлено на рисунках 4-5.
Рисунок 4 - Создание БД
Рисунок 5 - Переключение на созданную БД Результат заполнения БД данными представлен на рисунке 6.
Рисунок 6 - Результат заполнения БД Результат вывода данных представлен на рисунках 7-12.
Рисунок 7 - Получение всех узлов из БД
Рисунок 8 - Результат получения связей
Рисунок 9 - Получение списка всех продуктов, которые были куплены более одного раза
Рисунок 10 - Получение суммы всех заказов, сделанных в июне 2024 года
Рисунок 11 - Вывод средней цены всех заказов
Рисунок 12 - Вывод количества заказов, сделанных каждым пользователем
Вариант 10. Автосалон
Существует фирма, торгующая автомобилями. Автомобиль выступает в качестве товара, и, как товар имеет определенные характеристики: код товара, страна-изготовитель,
марка автомобиля, модель, наличие на складе (да, нет, когда будет), цена. Кроме того, на каждый автомобиль имеются технические данные: фирма-производитель, тип кузова,
количество дверей, количество мест, тип двигателя, расположение двигателя, рабочий объем двигателя, мощность двигателя, наличие опций, количество ведущих колес, расход топлива,
время разгона до 100км\ч. Фирма имеет своих клиентов — покупателей автомобилей,
сведения о которых хранят в течение определенного времени. Информация о клиенте: код клиента, паспортные данные (серия, номер), домашний адрес, номер телефона. В заказе указывается информация об автомобиле, клиенте, продавце, способе оплаты, дате продажи.
Информация о продавце-консультанте: паспортные данные, номер телефона, заработная плата.
Узлы:
1.Автомобиль
1.Код товара (ID)
2.Страна-изготовитель
3.Марка
4.Модель
5.Наличие на складе («Да», «Нет», «Когда будет»)
6.Цена
7.Технические данные
1.Тип кузова
2.Количество дверей
3.Количество мест
4.Тип двигателя
5.Расположение двигателя
6.Рабочий объём двигателя
7.Мощность двигателя
8.Опции
9.Ведущие колеса
10.Расход топлива
11.Время разгона до 100 км/ч
2.Клиент
1.Код клиента (ID)
2.Паспортные данные (Серия, Номер паспорта)
3.Домашний адрес
4.Телефон
3.Продавец
1.Код продавца (ID)
2.Паспортные данные
3.Телефон
4.Заработная плата
4.Заказ
1.Дата заказа
2.Способ оплаты
3.ID автомобиля
4.ID покупателя
5.ID продавца
Создание БД данных автосалона CREATE DATABASE dealership представлено на рисунке 13.
Рисунок 13 - Результат создания БД автосалона
Создание узлов автомобилей, результат представлен на рисунке 14, а заполнение в
листинге 1. |
|
Листинг 1. Создание узлов автомобилей |
|
// Создаем узлы-автомобили |
brand: 'Audi', |
CREATE (:Car { |
model: 'A4', |
id: 'CAR001', |
country: 'Germany', |
brand: 'Toyota', |
availability: 'Да', |
model: 'Corolla', |
price: 25000, |
country: 'Japan', |
body_type: 'седан', |
availability: 'Да', |
doors_count: 4, |
price: 15000, |
seats_count: 5, |
body_type: 'седан', |
engine_type: 'гибрид', |
doors_count: 4, |
engine_position: 'спереди', |
seats_count: 5, |
engine_volume: 2.0, |
engine_type: 'бензиновый', |
power_hp: 245, |
engine_position: 'спереди', |
options: ['полный привод', 'автопилот'], |
engine_volume: 1.6, |
drive_wheels: 4, |
power_hp: 120, |
fuel_consumption_l100km: 5.5, |
options: ['кондиционер', 'подушки |
acceleration_to_100kph: 6.5 |
безопасности'], |
}) |
drive_wheels: 2, |
|
fuel_consumption_l100km: 7.5, |
CREATE (:Car { |
acceleration_to_100kph: 10.5 |
id: 'CAR004', |
}) |
brand: 'Honda', |
|
model: 'Accord', |
CREATE (:Car { |
country: 'Japan', |
id: 'CAR002', |
availability: 'Да', |
brand: 'Ford', |
price: 20000, |
model: 'Focus', |
body_type: 'седан', |
country: 'USA', |
doors_count: 4, |
availability: 'Нет', |
seats_count: 5, |
price: 18000, |
engine_type: 'бензиновый', |
body_type: 'хэтчбек', |
engine_position: 'спереди', |
doors_count: 5, |
engine_volume: 2.4, |
seats_count: 5, |
power_hp: 180, |
engine_type: 'дизельный', |
options: ['спортивный пакет', 'датчики |
engine_position: 'спереди', |
парковки'], |
engine_volume: 2.0, |
drive_wheels: 2, |
power_hp: 150, |
fuel_consumption_l100km: 8.0, |
options: ['ABS', 'ESP'], |
acceleration_to_100kph: 8.5 |
drive_wheels: 2, |
}) |
fuel_consumption_l100km: 6.8, |
|
acceleration_to_100kph: 9.0 |
CREATE (:Car { |
}) |
id: 'CAR005', |
|
brand: 'Volkswagen', |
CREATE (:Car { |
model: 'Passat', |
id: 'CAR003', |
country: 'Germany', |
availability: 'Нет', |
engine_position: 'спереди', |
price: 22000, |
engine_volume: 1.6, |
body_type: 'седан', |
power_hp: 120, |
doors_count: 4, |
options: ['регулировка руля', 'подогрев |
seats_count: 5, |
сидений'], |
engine_type: 'дизель', |
drive_wheels: 2, |
engine_position: 'спереди', |
fuel_consumption_l100km: 6.5, |
engine_volume: 2.0, |
acceleration_to_100kph: 10.0 |
power_hp: 140, |
}) |
options: ['камера заднего вида', |
'климат |
контроль'], |
CREATE (:Car { |
drive_wheels: 2, |
id: 'CAR008', |
fuel_consumption_l100km: 6.5, |
brand: 'Nissan', |
acceleration_to_100kph: 9.5 |
model: 'Qashqai', |
}) |
country: 'Japan', |
|
availability: 'Да', |
CREATE (:Car { |
price: 21000, |
id: 'CAR006', |
body_type: 'кроссовер', |
brand: 'Kia', |
doors_count: 5, |
model: 'Rio', |
seats_count: 5, |
country: 'South Korea', |
engine_type: 'бензиновый', |
availability: 'Да', |
engine_position: 'спереди', |
price: 12000, |
engine_volume: 2.0, |
body_type: 'хэтчбек', |
power_hp: 140, |
doors_count: 5, |
options: ['панорамная крыша', 'сенсорный |
seats_count: 5, |
экран'], |
engine_type: 'бензиновый', |
drive_wheels: 4, |
engine_position: 'спереди', |
fuel_consumption_l100km: 7.5, |
engine_volume: 1.4, |
acceleration_to_100kph: 9.0 |
power_hp: 100, |
}) |
o p t i o n s : [ 'э л е к т р о н н ы й з а м о к' , |
|
'парктроники'], |
CREATE (:Car { |
drive_wheels: 2, |
id: 'CAR009', |
fuel_consumption_l100km: 6.0, |
brand: 'Mercedes-Benz', |
acceleration_to_100kph: 11.5 |
model: 'E-class', |
}) |
country: 'Germany', |
|
availability: 'Да', |
CREATE (:Car { |
price: 35000, |
id: 'CAR007', |
body_type: 'седан', |
brand: 'Hyundai', |
doors_count: 4, |
model: 'Solaris', |
seats_count: 5, |
country: 'South Korea', |
engine_type: 'гибрид', |
availability: 'Да', |
engine_position: 'спереди', |
price: 13000, |
engine_volume: 2.0, |
body_type: 'седан', |
power_hp: 250, |
doors_count: 4, |
options: ['автопилот', 'комфортный салон'], |
seats_count: 5, |
drive_wheels: 4, |
engine_type: 'бензиновый', |
fuel_consumption_l100km: 5.0, |
acceleration_to_100kph: 6.0 |
doors_count: 4, |
}) |
seats_count: 5, |
|
engine_type: 'электрический', |
CREATE (:Car { |
engine_position: 'задний', |
id: 'CAR010', |
engine_volume: null, |
brand: 'Tesla', |
power_hp: 270, |
model: 'Model 3', |
options: ['автопилот', 'быстрая зарядка'], |
country: 'USA', |
drive_wheels: 4, |
availability: 'Да', |
fuel_consumption_l100km: null, |
price: 40000, |
acceleration_to_100kph: 5.5 |
body_type: 'седан', |
}) |
Рисунок 14 - Результат создания узлов автомобилей
Создание узлов покупателей, результат представлен на рисунке 15, а заполнение в
листинге 2.
Листинг 2. Создание узлов покупателей // Создаем узлы-покупатели
CREATE (:Customer { id: 'CLIENT001',
full_name: 'Иванов Петр Сергеевич', passport_series_number: 'AA-123456',
home_address: 'г. Москва, Красная площадь, д. 1',
phone: '+79211234567' })
CREATE (:Customer { id: 'CLIENT002',
full_name: 'Петрова Анна Викторовна', passport_series_number: 'BB-789012',
home_address: 'г. Петербург, Невский проспект, д. 20',
phone: '+79212345678' })
CREATE (:Customer { id: 'CLIENT003',
full_name: 'Фролова Елена Дмитриевна', passport_series_number: 'CC-345678', home_address: 'г. Екатеринбург, Ленинский
район, ул. Победы, д. 10', phone: '+79213456789'
})
CREATE (:Customer { id: 'CLIENT004',
full_name: 'Попов Максим Юрьевич', passport_series_number: 'DD-987654',
home_address: 'г. Новосибирск, Красный проспект, д. 50',
phone: '+79214567890' })
CREATE (:Customer { id: 'CLIENT005',
f u l l _ n a m e : ' Гр и г о р ь е в Е в г е Владимирович',
passport_series_number: 'EE-654321', home_address: 'г. Владивосток, Светланская
улица, д. 25',
phone: '+79215678901' })
CREATE (:Customer { id: 'CLIENT006',
full_name: 'Васильева Ольга Сергеевна', passport_series_number: 'FF-123456',
