Схема базы данных transphoto/busphoto

Вопросы по работе сайта, не подходящие по теме в предыдущие разделы.
Ответить
Tučňák
Сообщения: 6
Зарегистрирован: 27 янв 2018, 19:50

Сообщение Tučňák » 28 мар 2019, 22:57

Моя задача - сделать какую-ту информационную систему с изпользованием базы данных (МSSQL, ORM). И у меня появилась идея сделать что-то вроде трансфото/бусфото.

Не знаю точно, как это сделать, но придумал такую схему: Изображение

Хотел бы посоветоваться, как эту задачу выполнить по прощему. Мне сейчас волнует что нужно придумать 3 процедуры, какие являются также трансакциями. У меня одня идея эсть, больше под задачой.

Что-то как образцовый проект: https://github.com/11pinguine/ORM_Example_by_Kratky

Спасибо большое наперед за все ответы.

Задача:
[*]IS должен содержать как минимум 7 таблиц (как минимум 4 не будут простыми списками) и 5 ​​нетривиальных функций. Как минимум 3 функции будут записаны как хранимые процедуры.
[*]Среди этих 5 функций может быть только 2 нетривиальных запроса, другие будут транзакциями. Нетривиальная функция не является операцией CRUD.
[*]Функции черного листа: каскадное удаление записей.
[*]Архитектура будет многоуровневой, уровень данных будет содержать объектно-реляционное отображение (ORM).
[*]Реализация будет в ASP.NET или J2EE (в случае веб-приложения) соответственно. .NET или Java (для настольных приложений).
[*]ORM будет реализован с акцентом на минимизацию количества операций, отправляемых в базу данных, и на минимизацию объема данных, передаваемых из / в базу данных
[*]ORM будет поддерживать транзакции (уровень изоляции SERIALIZABLE достаточен).
[*]ORM отправит тестовый проект, который будет включать вызовы всех методов ORM.
[*]Основные индексы будут созданы в базе данных.
[*]Из приложения будут созданы две нетривиальные формы (т.е. без CRUD-форм), которые будут выбраны преподавателем. Базовые проверки ввода будут поддерживаться на уровне представления.

Идея процедуры-трансакции:
1. Изменения номера/города и архивация старой записи в архивную таблицу

Код: Выделить всё

CREATE PROCEDURE UpdateAndArchiveVehicle(@Id Long)
AS
BEGIN
BEGIN TRANSACTION
DECLARE
@id = id
@cityid = cityid
@depotid = depotid
@citynumber = citynumber --имеется в виду номер какой дали в том городе
SELECT (@id =id,... ) FROM Vehicle
INSERT INTO Vehicle_history (/параметры/) VALUES (@/параметры)

WHEN OTHERS THEN
	ROLLBACK;
END TRANSACTION
END

Придумал --2 нетривиальных запроса--
4. Список ТОП 5 моделей по вхождению в БД

Код: Выделить всё

SELECT vehicle_model.manufacturer, vehicle_model.model, COUNT (vehicle.vehicle_model_id) AS occurance
IN vehicle_model
JOIN vehicle ON vehicle_model.id = vehicle.vehicle_model_id
GROUP BY vehicle_model.model
ORDER BY occurance DESC 
LIMIT 5
5. Список ТОП 5 самых старых подвижниых составов в БД

Код: Выделить всё

SELECT vehicle.id, vehicle.construction_year, vehicle_model.manufacturer, vehicle_model.model
IN vehicle_model
JOIN vehicle ON vehicle_model.id = vehicle.vehicle_model_id
ORDER BY vehicle.construction_year 
LIMIT 5

Михаил Исаков
Сообщения: 1515
Зарегистрирован: 28 мар 2009, 12:13
Откуда: Ростов-на-Дону
Контактная информация:

Сообщение Михаил Исаков » 06 май 2019, 22:55

Довольно сложно... а в чём конкретно вопрос?

Ответить