Проектирование информационных систем в Microsoft SQL Server 2008 и Visual Studio 2008

Диаграммы и триггеры

Разбить на страницы
Показывать лекцию целиком

Цель: научиться создавать диаграммы и триггеры

Перейдем теперь к созданию диаграмм. В БД "Microsoft SQL Server 2008" все диаграммы находятся в папке ).

(рис 14.1)

Создадим диаграмму, обеспечивающую целостность данных нашей БД ).

(рис 14.2)

В окне добавления таблиц выделите все таблицы нашей БД и нажмите кнопку ). Закройте окно "Add Table" нажатием на кнопку "Close".

Появится окно диаграммы, где будут отображены отобранные таблицы. Теперь необходимо определить связи между таблицами. Перетащите поле ).

(рис 14.3)

В окне создания связи нажмите кнопку ).

(рис 14.4)

Оставьте свойства связи без изменений и в окне свойств связи нажмите кнопку ).

Аналогичным образом создайте связь таблицы ).

Закройте окно с диаграммой, щелкнув мышью по кнопке закрытия(рис 14.5) расположенной в верхнем правом углу окна с диаграммой. Появится окно с вопросом о сохранении новой диаграммы, где необходимо нажать кнопку ).

(рис 14.6)

Появится окно определения имени новой диаграммы ).

(рис 14.7)

Появится окно ).

(рис 14.8)

Перейдем к созданию триггеров. Создадим триггеры для таблицы ).

(рис 14.9)

Для начала создадим триггер, выводящий сообщение ):

(рис 14.10)

Рассмотрим структуру триггеров:

  • Область определения имени функции ( Trigger_Name );
  • Область, показывающая для какой таблицы создается триггер ( Table_Name );
  • Область, показывающая когда выполнять триггер ( INSERT - при создании записи в таблице, DELETE - при удалении и UPDATE - при изменении) и как его выполнять ( AFTER - после выполнения операции, INSTEAD OF - вместо выполнения операции);
  • Тело триггера, содержит команды языка программирования запросов T-SQL.
  • В окне нового триггера наберите код как показано на рис 14.11.

    Из рис 14.11 видно, что создаваемый триггер (рис 14.11) на панели инструментов. В нижней части окна с кодом появится сообщение "Command(s) completed successfully.".

    Проверим, как работает новый триггер. Создайте новый пустой запрос и в нем наберите следующую команду для добавления новой записи в таблицу ):

    Выполните набранную команду, нажав кнопку(рис 14.12) на панели инструментов. В таблицу будет добавлена новая запись, и триггер выведет сообщение ).

    Теперь создадим триггер отображающий сообщение ):

    (рис 14.13)

    Из рис 14.13 видно, что новый триггер "Индикатор изменения" выполняется после изменения записи ( AFTER UPDATE ) в таблице "Студенты" ( ON dbo.Студенты ). После изменения записи триггер выведет на экран сообщение "Запись изменена" ( PRINT 'Запись изменена' ). Выполните набранный код. В нижней части окна с кодом появится сообщение "Command(s) completed successfully.".

    Проверим работоспособность созданного триггера. Создайте новый запрос и в нем наберите команду, представленную на рис 14.14.

    Выполните набранную команду, нажав кнопку(рис 14.14) на панели инструментов. В таблицу будет добавлена новая запись, и триггер выведет сообщение ).

    Для полноты картины создадим триггер, выводящий сообщение при удалении записи из таблицы .

    (рис 14.15)

    Создаваемый триггер "Индикатор удаления" выполняется после удаления записи ( AFTER DELETE ) из таблицы студенты ( ON dbo.Студенты ). После удаления записи триггер выводит сообщение "Запись удалена" ( PRINT 'Запись удалена' ).

    Выполните код, представленный рис 14.15. В нижней части окна с кодом появится сообщение "Command(s) completed successfully.".

    Проверим работу триггера ):

    (рис 14.16)

    Выполните вышеприведенную команду. После удаления записи триггер ).

    В заключение рассмотрим пример применения триггеров для обеспечения целостности данных. Создадим триггер "Удаление студента", который при удалении записи из таблицы студенты сначала удаляет все связанные с ней записи из таблицы "Оценки", а затем удаляет саму запись из таблицы "Студенты", тем самым обеспечивается целостность данных.

    Создайте новый триггер и в нем наберите следующий код (рис 14.17):

    (рис 14.17)

    Создаваемый триггер "Удаление студента" выполняется вместо удаления записи ( INSTEAD OF DELETE ) из таблицы "Студенты" ( ON dbo.Студенты ).

    Замечание: При срабатывании триггера вместо удаления записи создается временная константа Deleted, содержащая имя таблицы из которой должно было быть произведено удаление.

    После срабатывания триггера из таблицы "Оценки" удаляется запись, у которой значение поля "Код студента" равно значению такого же поля у удаляемой записи из таблицы "Студенты". Эту операцию выполняют следующие команды:

    DELETE dbo.Оценки FROM Deleted
    WHERE Deleted.[Код студента] = Оценки.[Код студента]

    Затем удаляется запись из таблицы "Студенты", которую удаляли до срабатывания триггера. Удаление выполняется следующими командами:

    DELETE dbo.Студенты
    FROM Deleted
    WHERE Deleted.[Код студента] = Студенты.[Код студента]

    Выполните код, представленный на рис 14.17. В нижней части окна с кодом появиться сообщение "Command(s) completed successfully.".

    Проверим, как работает триггер ):

    (рис 14.18)

    При срабатывании триггера сначала из таблицы "Оценки" удалятся все связанные с удаляемой записью записи, а затем удаляется сама удаляемая запись из таблицы "Студенты", при этом сохраняется целостность данных.

    Замечание: Хотелось бы заметить, что без использования триггера "Удаление студента" нам бы не удалось удалить запись из таблицы "Студенты". Команда удаления была бы заблокирована диаграммой "Диаграмма БД Студенты" во избежание нарушения целостности данных.

    На этом мы завершаем работу с диаграммами и триггерами. После выполнения всех вышеописанных действий обозреватель объектов будет иметь следующий вид (рис 14.19):

    (рис 14.19)
    Страницы:

    Цель: научиться создавать диаграммы и триггеры

    Перейдем теперь к созданию диаграмм. В БД "Microsoft SQL Server 2008" все диаграммы находятся в папке ).

    (рис 14.1)

    Создадим диаграмму, обеспечивающую целостность данных нашей БД ).

    (рис 14.2)

    В окне добавления таблиц выделите все таблицы нашей БД и нажмите кнопку ). Закройте окно "Add Table" нажатием на кнопку "Close".

    Появится окно диаграммы, где будут отображены отобранные таблицы. Теперь необходимо определить связи между таблицами. Перетащите поле ).

    (рис 14.3)

    В окне создания связи нажмите кнопку ).

    (рис 14.4)

    Оставьте свойства связи без изменений и в окне свойств связи нажмите кнопку ).

    Аналогичным образом создайте связь таблицы ).

    Закройте окно с диаграммой, щелкнув мышью по кнопке закрытия(рис 14.5) расположенной в верхнем правом углу окна с диаграммой. Появится окно с вопросом о сохранении новой диаграммы, где необходимо нажать кнопку ).

    (рис 14.6)

    Появится окно определения имени новой диаграммы ).

    (рис 14.7)

    Появится окно ).

    (рис 14.8)

    Перейдем к созданию триггеров. Создадим триггеры для таблицы ).

    (рис 14.9)

    Для начала создадим триггер, выводящий сообщение ):

    (рис 14.10)

    Рассмотрим структуру триггеров:

  • Область определения имени функции ( Trigger_Name );
  • Область, показывающая для какой таблицы создается триггер ( Table_Name );
  • Область, показывающая когда выполнять триггер ( INSERT - при создании записи в таблице, DELETE - при удалении и UPDATE - при изменении) и как его выполнять ( AFTER - после выполнения операции, INSTEAD OF - вместо выполнения операции);
  • Тело триггера, содержит команды языка программирования запросов T-SQL.
  • В окне нового триггера наберите код как показано на рис 14.11.

    Из рис 14.11 видно, что создаваемый триггер (рис 14.11) на панели инструментов. В нижней части окна с кодом появится сообщение "Command(s) completed successfully.".

    Проверим, как работает новый триггер. Создайте новый пустой запрос и в нем наберите следующую команду для добавления новой записи в таблицу ):

    Выполните набранную команду, нажав кнопку(рис 14.12) на панели инструментов. В таблицу будет добавлена новая запись, и триггер выведет сообщение ).

    Теперь создадим триггер отображающий сообщение ):

    (рис 14.13)

    Из рис 14.13 видно, что новый триггер "Индикатор изменения" выполняется после изменения записи ( AFTER UPDATE ) в таблице "Студенты" ( ON dbo.Студенты ). После изменения записи триггер выведет на экран сообщение "Запись изменена" ( PRINT 'Запись изменена' ). Выполните набранный код. В нижней части окна с кодом появится сообщение "Command(s) completed successfully.".

    Проверим работоспособность созданного триггера. Создайте новый запрос и в нем наберите команду, представленную на рис 14.14.

    Выполните набранную команду, нажав кнопку(рис 14.14) на панели инструментов. В таблицу будет добавлена новая запись, и триггер выведет сообщение ).

    Для полноты картины создадим триггер, выводящий сообщение при удалении записи из таблицы .

    (рис 14.15)

    Создаваемый триггер "Индикатор удаления" выполняется после удаления записи ( AFTER DELETE ) из таблицы студенты ( ON dbo.Студенты ). После удаления записи триггер выводит сообщение "Запись удалена" ( PRINT 'Запись удалена' ).

    Выполните код, представленный рис 14.15. В нижней части окна с кодом появится сообщение "Command(s) completed successfully.".

    Проверим работу триггера ):

    (рис 14.16)

    Выполните вышеприведенную команду. После удаления записи триггер ).

    В заключение рассмотрим пример применения триггеров для обеспечения целостности данных. Создадим триггер "Удаление студента", который при удалении записи из таблицы студенты сначала удаляет все связанные с ней записи из таблицы "Оценки", а затем удаляет саму запись из таблицы "Студенты", тем самым обеспечивается целостность данных.

    Создайте новый триггер и в нем наберите следующий код (рис 14.17):

    (рис 14.17)

    Создаваемый триггер "Удаление студента" выполняется вместо удаления записи ( INSTEAD OF DELETE ) из таблицы "Студенты" ( ON dbo.Студенты ).

    Замечание: При срабатывании триггера вместо удаления записи создается временная константа Deleted, содержащая имя таблицы из которой должно было быть произведено удаление.

    После срабатывания триггера из таблицы "Оценки" удаляется запись, у которой значение поля "Код студента" равно значению такого же поля у удаляемой записи из таблицы "Студенты". Эту операцию выполняют следующие команды:

    DELETE dbo.Оценки FROM Deleted
    WHERE Deleted.[Код студента] = Оценки.[Код студента]

    Затем удаляется запись из таблицы "Студенты", которую удаляли до срабатывания триггера. Удаление выполняется следующими командами:

    DELETE dbo.Студенты
    FROM Deleted
    WHERE Deleted.[Код студента] = Студенты.[Код студента]

    Выполните код, представленный на рис 14.17. В нижней части окна с кодом появиться сообщение "Command(s) completed successfully.".

    Проверим, как работает триггер ):

    (рис 14.18)

    При срабатывании триггера сначала из таблицы "Оценки" удалятся все связанные с удаляемой записью записи, а затем удаляется сама удаляемая запись из таблицы "Студенты", при этом сохраняется целостность данных.

    Замечание: Хотелось бы заметить, что без использования триггера "Удаление студента" нам бы не удалось удалить запись из таблицы "Студенты". Команда удаления была бы заблокирована диаграммой "Диаграмма БД Студенты" во избежание нарушения целостности данных.

    На этом мы завершаем работу с диаграммами и триггерами. После выполнения всех вышеописанных действий обозреватель объектов будет иметь следующий вид (рис 14.19):

    (рис 14.19)
    Вернуться к учебному плану