Помогите пожалуйста ответить на вопросы...

Ryskulya

В таблице Граф представлен график сетевого планирования: CREATE TABLE Граф(номер INT PRIMARY KEY, --номер работы нач_соб INT, --начальное событие кон_соб INT, --конечное событие длит INT) --длительность работыВ таблице, моделирующей сетевой график, каждая запись соответствует некоторой работе, связывающей два события: начальное и конечное. Реализуем в виде триггеров ряд правил для обеспечения целостности данных в подобной сетевой структуре. Начальное событие графика (исток) обозначено цифрой "1".1. Разработать триггер для вставки новой записи, причем необходимо отменить ввод, если номер начального события оказался меньше номера хотя бы одного конечного события, введенного ранее. CREATE TRIGGER trig_insON Граф FOR INSERT ASВыберите операторы для продолжения текста триггера. а) DECLARE @e INT SELECT @e=нач_соб FROM inserted IF EXISTS(SELECT * FROM Граф WHERE кон_соб>@e) ROLLBACK TRAN б) IF EXISTS(SELECT * FROM Граф WHERE кон_соб>ANY(SELECT @e=нач_соб FROM inserted) ROLLBACK TRAN в) IF EXISTS(SELECT * FROM Граф WHERE кон_соб>(SELECT @e=нач_соб FROM inserted) ROLLBACK TRAN г) DECLARE @e INT SELECT @e=нач_соб FROM inserted IF NOT EXISTS(SELECT * FROM Граф WHERE кон_соб<@e ROLLBACK TRAN2. Разработать триггер для удаления работы, причем при попытке удаления единственной работы, выходящей из данного начального события, отменить удаление, заменив в удаляемой работе конечное событие на сток (т.е. на конечное событие с максимальным номером). CREATE TRIGGER trig_delON Граф INSTEAD OF DELETEASВыберите операторы для продолжения текста триггера. а) DECLARE @e INT,@n INT, @m INTSELECT @n=номер, @e=нач_соб FROM deletedSELECT @m=MAX(кон_соб) FROM Граф WHERE номер<>@nIF NOT EXISTS(SELECT * FROM Граф WHERE номер<>@n AND нач_соб=@e ) UPDATE Граф SET кон_соб=@m WHERE номер=@nELSE DELETE FROM Граф WHERE номер=@nб) DECLARE @e INT,@n INT, @m INTSELECT @n=номер, @e=нач_соб FROM deletedSELECT @m=MAX(кон_соб) FROM Граф WHERE номер<>@nIF NOT EXISTS(SELECT * FROM Граф WHERE нач_соб=@e ) UPDATE Граф SET кон_соб=@m WHERE номер=@nELSE DELETE FROM Граф WHERE номер=@nв) DECLARE @e INT,@n INT, @m INTSELECT @n=номер, @e=нач_соб FROM deletedSELECT @m=MAX(кон_соб) FROM Граф IF NOT EXISTS(SELECT * FROM Граф WHERE номер<>@n AND нач_соб=@e ) UPDATE Граф SET кон_соб=@m WHERE номер=@nELSE DELETE FROM Граф WHERE номер=@nг) DECLARE @e INT,@n INT, @m INTSELECT @n=номер, @e=нач_соб FROM deletedSELECT @m=MAX(кон_соб) FROM Граф WHERE номер<>@nIF NOT EXISTS(SELECT * FROM Граф WHERE номер<>@n AND нач_соб=@e ) UPDATE Граф SET кон_соб=@m WHERE нач_соб=@eELSE DELETE FROM Граф WHERE нач_соб=@e3. Запретить одновременное изменение только номеров начального и конечного событий. CREATE TRIGGER trig_updON Граф FOR UPDATE ASВыберите операторы для продолжения текста триггера. а) IF (COLUMNS_UPDATED() & 6)=6 ROLLBACK TRAN б) IF UPDATE(нач_соб) AND UPDATE(кон_соб) ROLLBACK TRAN в) IF UPDATE(нач_соб,кон_соб) ROLLBACK TRAN г) IF (COLUMNS_UPDATED() & 2)=2 ROLLBACK TRAN
3 ответа

Ryskulya

Это в другой форум, по Microsot SQL Server


Ryskulya

А есть какие нибудь готовые решения по подсчету суммарно времени проекта на базе сетевого графика?Четвертый день бьюсь. Не могу решить эту задачу. В общем задача: расчет времени проекта, как в диаграмме Ганта (в Projecte), но только средствани MySQL и PHP. Без отображения графических результатов.Если кто знает алгоритм, подскажите.


Ryskulya

Неужели никто не сталкивался с подобной проблемой. Я просто не силен в матиматике. Но по первому курсу института, а это было лет 12 назад, помню что есть какой-то алгоритм для расчета оптимального пути в графе. Или транспортная задача, что ли. Помогите, если кто вспомнит как там все это расчитывается, а если можно с запросом в БД.