Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
КУРСОВАЯ РАБОТА по СУБД MS SQL 9 вариант.doc
Скачиваний:
429
Добавлен:
01.03.2016
Размер:
2.96 Mб
Скачать

3.8. Создание ограничений

Создадим ограничение для таблицы "следователь" на ввод данных в таблицу. Ограничение на возраст следователя (нельзя ввести следователя, возраст которого меньше 18 лет и больше 80 лет). Для того чтобы создать ограничение на ввод возраста следователя, нужно создавать через триггер. (рис.3.8.1).

Рис. 3.8.1. Окно структуры триггера

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

В окне нового триггера набераю код как показано на рис. 3.8.2.

Рис. 3.8.2. Окно создания триггера в SQL запросе

Проверим работает ли данный триггер-ограничение. рис. 3.8.3.

Рис. 3.8.3. Данные в таблице "следователь"

И в после поля 9 вбиваем данные о следователе (рис. 3.8.4).

Рис. 3.8.4. Ошибка при вводе данных 

После ввода данных в таблицу следователя Никифорчина С.Р.., где столбец "дата_рождения" вбито год рождение – 1900, и в данном случае следователю получается 112 лет, тем самым доказываю, что возраст следователь не подходит (рис. 3.8.5).

Рис. 3.8.5. Вывод об ошибке заполнения "возраст сотрудника не подходит" 

В режиме скрипта SQL запрос выглядит так как показано на рис. 3.8.6

Рис. 3.8.6. Окно ограничения-триггера "TR_дата_рождения" через скрипт

CREATE TRIGGER [dbo].[TR_дата_рождения]

ON [dbo].[следователь]

for INSERT

AS

BEGIN

SET NOCOUNT ON;

If (select datediff(yy,дата_рождения,GETDATE()) from inserted)<18 or

(select datediff(yy,дата_рождения,GETDATE()) from inserted)>80

begin

print 'возраст сотрудника не подходит'

rollback

end

GO

3.9. Создание пользователей и ролей

Основные разрешения для таблиц:

• SELECT, INSERT, UPDATE, DELETE – выборка, добавление, корректировка, удаление строк;

• ALTER – изменение свойств, в том числе структуры);

• CONTROL – управление, аналогичное владению;

• REFERENCES – ссылка из внешнего ключа;

• TAKE OWNERSHIP – передача права владения;

• VIEW DEFINITION – доступ к метаданным.

Для хранимых процедур и функций есть также разрешение на выполнение EXECUTE.

Стандартные роли базы данных.

Public − автоматически назначается всем пользователям базы. Удалить нельзя. В основном позволяет выполнять просмотр.

Db_owner − все действия с базой данных.

Db_accessadmin − добавление пользователей и управление их доступом.

Db_securityadmin − управление ролями сервера и правилами доступа к объектам базы данных.

Db_ddladmin − добавление, изменение, удаление объектов базы данных.

Db_backupoperator − резервирование базы данных.

Db_datareader − просмотр любой информации из любой таблицы базы данных.

Db_datawriter − добавление, изменение, удаление информации из любой таблицы базы данных.

Db_denydatareader − модификация структуры базы данных без права чтения информации.

Db_denydatawriterr − запрет модификаций в базе данных.

В табл.1 представлены роли для каждого из которых созданы свои права (привилегии).

Роли

Таблицы

Начальник_ОВД

Следователь

Судья

ОВД

S, I, U, D.

-

звание

-

S, U

-

должность

-

S, U

следователь

-

S, I, U, D.

-

Уг_дело

S

S

S, I, U, D.

решение

S

S

S, I, U, D.

Табл. 1 Роли и права

Примечание: S – select, I – insert, U – update, D – delete.

Создания роли " Начальник_ОВД (рис. 3.9.2)

Рис. 3.9.2. Создание ролей

Ввод имя роли (рис. 3.9.3).

Рис. 3.9.3. Ввод имя роли

Затем переходим в раздел «Securables» (рис. 3.9.4)

Рис. 3.9.4. Окно раздела «Securables»

Открываем окно создания «Search» (рис. 3.9.5).

Рис. 3.9.5. Окно создания «Search»

Открывается окно «Specific objects» и в ней открываем поде «Object Types» и появляется окно со списками объектов как показано на рис. 3.9.6

Рис. 3.9.6. Окно со списками объектов

Ставим галочку на объекте «Tables» (рис. 3.9.7)

Рис. 3.9.7. Окно с выбранными списками объектов

После нажатия кнопки «ОК», появиться диалоговое окно, которое уже у нас встречалось и в этой окне выбираем поле «Browse»(рис. 3.9.8). В появившемся диалоговом окне он нам выдает список объектов таблиц (рис. 3.9.9), которые существует в базе данных «уголовное_дело».

Рис. 3.9.8. Окно объектов

Рис. 3.9.9. Окно списка объектов таблиц

В данном окне (рис. 3.9.9) ставим галочки, как было указано в табл. 1 Появиться окно уже с заполненными данными (рис. 3.9.10) и дальше жмем «ОК».

Рис. 3.9.10. Окно объектов с таблицами

Рис. 3.9.11. Окно раздела «Securables» с таблицами

В диалоговом окне во вкладке Explictприсваиваем права по табл.1

Рис. 3.9.11

Рис. 3.9.12. Список созданных ролей

Теперь перейдем к созданию пользователей, в данной табл.2 представлены пользователи и их роли в БД «уголовное_дело».

Пользователь

Скоробогатов

Ерёмин

Шагиров

Роль

Начальник_ОВД

Следователь

Судья

Табл. 2

Создадим пользователя "Скоробогатов" с ролью"Начальник_ОВД(рис. 3.9.13)

Рис. 3.9.13. Раздел Securityдля работы с пользователями и создание нового пользователя

Рис. 3.9.14.Окно раздела «General»

Рис. 3.9.15. Настройка роли базы данных для нового пользователя (весь список ролей баз данных с их привилегиями ниже)

Рис. 3.9.16. Разблокирование создаваемой учетной записи

В режиме скрипта SQL-запрос выглядит так:

USE [master]

GO

CREATE LOGIN [Скоробогатов] WITH PASSWORD=N'\³_NÎ5ÇAVa“JõÐaÀ>ú_µÓBiÒä(iÏkX_', DEFAULT_DATABASE=[уголовное_дело], DEFAULT_LANGUAGE=[us_english], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF

GO

ALTER LOGIN [Скоробогатов] DISABLE

GO

Также создаем остальные пользователи и присваиваем им свои роли, как показано в табл. 2.

Для полнофункциональной работы ролей в SQLServereзайдем в раздел«Службы» - рис. 3.9.17. и перезапустим «SQL Server (SQLEXPRESS)»,

Рис. 3.9.17. Окно службы

Проверяю работоспособность ролей (рис. 3.9.18)

Рис. 3.9.18. Окно "ObjectExplorer"

Рис. 3.9.19. Окно "Connecttoserver"

Рис. 3.9.20. Окно об запрете на изменение

Добавляя новые данные в табл.уг_дело выходит сообщение об ошибке, т.к. для данного пользователя мы устанавливали SELECT, следовательно приоритеты мы создали правильно.