Для этого периода оценки мой учитель CS оставил нам проект открытого выбора с участием SQL и Delphi/VB.Помогите мне с моим проектом SQL (пожалуйста)
Я закончил с назначением проектирования и создания программы, которая позволила пользователям через GUI в Delphi/VB вставить и прочитать данные ураганов, извлеченные из базы данных (кстати, последний SQL Server). Однако есть несколько уловов.
три таблицы необходимы: Ураганы, Hurricane_History и Категория
КАТЕГОРИЯ таблица не претендует быть изменен, и она содержит Min столбцы. Speed ',' Max. «Скорость» и «Категория». Идея заключается в том, что ураган с частотой вращения X относится к категории Y, если X находится в пределах минимальной и максимальной скорости категории Y.
Таблица ураганов предназначена для модификации конечным пользователем через Delphi/VB gui. Он содержит следующие столбцы: «Имя», «День», «Время», «Вращение», «Движение», «Широта», «Долгота» и «Фотография».
После этого есть таблица Hurricane_History, которая содержит «Имя», «Категория», «Начальное_значение», «Конечное_дальное время», «Начальная широта», «Начальная долгота», «Конечная широта», «Конечная долгота». Эта таблица не предназначена для непосредственного изменения, а автоматически заполняется через SQL (я использую триггеры SQL и хранимые процедуры).
Что должна сделать программа, так это следующее: пользователь открывает визуальное приложение и вводит информацию для определенного урагана. Поскольку только таблица Hurricanes предназначена для модификации, пользователь будет вставлять имя, день, время, текущую скорость вращения, текущую скорость движения, текущую широту, текущую долготу и, факультативно, изображение.
Если пользователь вводит ураган, который еще не существует, он создаст новый ураган с соответствующими данными в таблице Hurricane_History. Если он вводит данные для урагана, который уже существует, данные для этого урагана должны обновляться и сохраняться в соответствующей строке Hurricane_History. Кроме того, текущая категория урагана должна автоматически заполняться SQL, используя данные, которые были сохранены в таблице Category.
До сих пор, у меня есть три таблицы, столбцы, в Delphi GUI, соединения (между Delphi и SQL Server) и т.д.
Что я имею реальное трудное время, так это с SQL Триггеры и Хранимые процедуры, необходимые для генерации данных в таблице Hurricane_History. Вот мой алгоритм, первый для заполнения категории, а второй один для заполнения данных о Hurricane_History таблице:
create trigger determine_category on Hurricanes for insert, update as
*when a value is inserted into Hurricanes.Rotational_Speed, match it with the corresponding row in the Categories table, and insert the corresponding category into the Category column of the hurricane's Hurricane_History row.*
create trigger populate_data on Hurricanes for insert, update as
*if Hurricane.name exists, perform an update instead of an insert for using Hurricanes.Day as Hurricanes_History.Ending_Day, Hurricanes.Latitude and Hurricane.Longitude as Hurricanes_History.Ending_Latitude and Hurricanes_History.Ending_Longitude, and the Category using the determine_category trigger.*
*if Hurricane.name does not exist, create a record in Hurricanes_History using the data from the newly inserted Hurricane record, and populating the Category using the determine_category trigger*
Что мне нужна помощь в переводе мои мысли и идеи в код SQL, так что я был интересно, может ли кто-нибудь захотеть мне помочь в этом.
Спасибо!
EDIT:
Я просто взбитый простую хранимую процедуру для определения категории. То, что я не знаю, как это сделать, - использовать результат/вывод хранимой процедуры как значение вставки. Кто-нибудь знает, как это сделать?
CREATE PROCEDURE determine_category
@speed int(5)
AS
SELECT Category FROM Categories
WHERE Max_Speed >= @speed AND Min_Speed >= @speed
По крайней мере, вы честны в том, что это классная работа. – Anton
Все, что я ищу, - это руководство, а не полные ответы. –