- •Кафедра экономической информатики
- •Базы данных
- •Содержание
- •Введение
- •Лабораторная работа №1. Логические и физические модели данных
- •Методические указания
- •Задание к работе
- •Раздел I. Создание сущностей в eRwin
- •Раздел II. Создание связей между сущностями, подмножеств модели и хранимых отображений. Переход к физической модели данных
- •Раздел III. Выполнение операции прямого проектирования
- •Раздел IV. Выполнение операции обратного проектирования
- •Лабораторная работа №2. Усложненные диаграммы «сущность-связь»
- •Методические указания
- •Задание к работе
- •Раздел I. Создание сущностей логической модели
- •Раздел II. Создание связей между сущностями и иерархии наследования
- •Раздел III. Выполнение вариантов трансформы категориальной связи
- •Раздел IV. Выполнение методов синхронизации системного каталога базы данных и текущей модели
- •Лабораторная работа №3. Работа в среде субд «ms sql Server 2005»
- •Методические указания
- •Задание к работе
- •Раздел I. Создание базы данных и ее объектов
- •Раздел II. Управление пользователями и правами доступа к данным
- •Лабораторная работа №4. Создание базы данных и ее объектов с помощью команд языка Transact-sql
- •Методические указания и задания к выполнению
- •Раздел I. Создание базы данных и ее объектов
- •Раздел II. Ввод данных в таблицы базы данных
- •Insert into Заказ (КодКлиента, КодТовара, Количество)
- •Inner join Поставщик
- •Inner join Товар
- •Раздел III. Управление пользователями и правами доступа к данным.
- •Раздел IV. Анализ полученных результатов
- •Лабораторная работа №5. Манипулирование данными с помощью команд языка Transact-sql
- •Методические указания
- •Раздел I. Выборка данных из таблиц и представлений.
- •Раздел II. Обновление данных в таблицах и представлениях.
- •Раздел III. Удаление данных из таблиц и представлений.
- •Раздел IV. Изменение структуры таблицы.
- •Раздел V. Удаление таблицы из базы данных.
- •Задание к работе
- •Лабораторная работа №6. Программирование на языке Transact-sql
- •Методические указания
- •Раздел I. Основы программирования на языке Transact-sql.
- •Раздел II. Создание и работа с хранимыми (на сервере) процедурами.
- •If @Страна is not null
- •If @Город is not null
- •If @Город is not null
- •Insert into Валюта
- •Values(@Код, @Имя, @Шаг, @Курс)
- •If @Страна is not null
- •If @Город is not null
- •Into ##Регион
- •Раздел III. Создание и работа с определяемыми пользователем функциями.
- •Insert @rowset (КодРегиона, Страна, Область, Город)
- •Задание к работе
- •Лабораторная работа №7. Курсоры и триггеры в языке Transact-sql
- •Методические указания
- •Раздел I. Использование курсоров в языке Transact-sql
- •If @НачалоИнтервала is null
- •If @КонецИнтервала is null
- •Раздел II. Создание триггеров в языке Transact-sql.
- •If update(ДатаЗаказа)
- •If update(Цена)
- •If update(Цена)
- •Inserted.Цена * Валюта.КурсВалюты
- •Задание к работе
- •Литература Основная
- •Базы данных
- •220013, Минск, п. Бровки, 6.
Insert into Заказ (КодКлиента, КодТовара, Количество)
VALUES (1, 555, 25)
GO
2. Создание представления базы данных. Синтаксис команды (см. [1], стр. 996):
CREATE VIEW [ < database_name > . ] [ < owner > . ] view_name [ ( column [ ,...n ] ) ] [ WITH < view_attribute > [ ,...n ] ] AS select_statement [ WITH CHECK OPTION ] < view_attribute > ::= { ENCRYPTION | SCHEMABINDING | VIEW_METADATA }
CREATE VIEW Запрос1 AS
SELECT TOP 100 PERCENT Товар.Наименование, Заказ.Количество,
Товар.ЕдиницаИзм, Поставщик.ИмяПоставщика
FROM Заказ
Inner join Поставщик
ON Заказ.КодПоставщика = Поставщик.КодПоставщика
Inner join Товар
ON Заказ.КодТовара = Товар.КодТовара
ORDER BY Товар.Наименование, Заказ.Количество DESC GO
Раздел III. Управление пользователями и правами доступа к данным.
На панели Object Explorer откройте папку Security и выберите в ней строку Logins. При этом справа на панели Summary будет представлен список регистрационных записей SQL Server. Если среди них присутствуют регистрационные записи ИмяДомена\sql1, ИмяДомена\sql2, ИмяДомена\sql3, ИмяДомена\sql4, то поочередно выделите их и удалите, выбирая в контекстном меню команду Удалить.
1. Предоставление доступа к серверу учетной записи Windows NT. Синтаксис системной хранимой процедуры (см. [1], стр. 212):
sp_grantlogin [@loginame =] 'login'
-- ИмяДомена замените конкретным именем (домена или локального компьютера)
EXEC sp_grantlogin 'ИмяДомена\sql1'
EXEC sp_grantlogin 'ИмяДомена\sql2'
EXEC sp_grantlogin 'ИмяДомена\sql3'
EXEC sp_grantlogin 'ИмяДомена\sql4'
GO
Отмена доступа к серверу учетной записи выполняется с помощью хранимой процедуры sp_droplogin, имеющей синтаксис:
sp_droplogin [ @loginame = ] 'login'
2. Добавление учетной записи в фиксированную роль сервера. Синтаксис системной хранимой процедуры (см. [1], стр. 223):
sp_addsrvrolemember [ @loginame = ] 'login' , [ @rolename = ] 'role'
EXEC sp_addsrvrolemember 'ИмяДомена\sql1', 'dbcreator'
GO
Удаление учетной записи из фиксированной роли сервера выполняется с помощью хранимой процедуры sp_dropsrvrolemember, имеющей синтаксис (см. [1], стр. 224):
sp_dropsrvrolemember [ @loginame = ] 'login' , [ @rolename = ] 'role'
3. Создание нового пользователя и связывание его с учетной записью. Синтаксис системной хранимой процедуры (см. [1], стр. 231):
sp_grantdbaccess [@loginame =] 'login' [,[@name_in_db =] 'name_in_db' [OUTPUT]]
EXEC sp_grantdbaccess 'ИмяДомена\sql1', 'sql1'
EXEC sp_grantdbaccess 'ИмяДомена\sql2', 'sql2'
EXEC sp_grantdbaccess 'ИмяДомена\sql3', 'sql3'
EXEC sp_grantdbaccess 'ИмяДомена\sql4', 'sql4'
GO
Удаление пользователя выполняется с помощью системной хранимой процедуры, имеющей синтаксис (см. [1], стр. 232):
sp_revokedbaccess [ @name_in_db = ] 'name'
4. Создание пользовательской роли. Синтаксис системной хранимой процедуры (см. [1], стр. 240; [2]):
sp_addrole [ @rolename = ] 'role' [ , [ @ownername = ] 'owner' ]
EXEC sp_addrole 'Гл.бухгалтер', 'sql1'
EXEC sp_addrole 'Бухгалтера', 'sql1'
EXEC sp_addrole 'Экономисты', 'sql1'
GO
Удаление пользовательской роли выполняется с помощью системной хранимой процедуры, имеющей синтаксис (см. [1], стр. 242):
sp_droprole [ @rolename = ] 'role'
5. Добавление нового члена в роль (как фиксированную, так и пользовательскую) базы данных. Синтаксис системной хранимой процедуры (см. [1], стр. 236):
sp_addrolemember [ @rolename = ] 'role' , [ @membername = ] 'security_account'
EXEC sp_addrolemember 'db_accessadmin', 'sql1'
EXEC sp_addrolemember 'Гл.бухгалтер', 'sql1'
EXEC sp_addrolemember 'Бухгалтера', 'sql2'
EXEC sp_addrolemember 'Бухгалтера', 'sql3'
EXEC sp_addrolemember 'Бухгалтера', 'Гл.бухгалтер'
EXEC sp_addrolemember 'Экономисты', 'sql4'
EXEC sp_addrolemember 'Экономисты', 'Гл.бухгалтер'
GO
Исключение члена из роли выполняется с помощью системной хранимой процедуры, имеющей синтаксис (см. [1], стр. 237):
sp_droprolemember [ @rolename = ] 'role' , [ @membername = ] 'security_account'
6. Предоставление привилегий доступа к объектам базы данных. Синтаксис системной хранимой процедуры (см. [1], стр. 254):
GRANT { ALL [ PRIVILEGES ] | permission [ ,...n ] } { [ ( column [ ,...n ] ) ] ON { table | view } | ON { table | view } [ ( column [ ,...n ] ) ] | ON { stored_procedure | extended_procedure } | ON { user_defined_function } } TO security_account [ ,...n ] [ WITH GRANT OPTION ] [ AS { group | role } ]
GRANT SELECT, INSERT, UPDATE, DELETE
ON Валюта TO [Гл.бухгалтер] WITH GRANT OPTION
GRANT UPDATE
ON Заказ TO [Гл.бухгалтер] WITH GRANT OPTION
GRANT SELECT
ON Запрос1 TO [Гл.бухгалтер] WITH GRANT OPTION
GRANT UPDATE, DELETE
ON Клиент TO [Гл.бухгалтер] WITH GRANT OPTION
GRANT UPDATE, DELETE
ON Поставщик TO [Гл.бухгалтер] WITH GRANT OPTION
GRANT UPDATE, DELETE
ON Товар TO [Гл.бухгалтер] WITH GRANT OPTION
GRANT SELECT, INSERT
ON Заказ TO Бухгалтера
GRANT SELECT, INSERT
ON Клиент TO Бухгалтера
GRANT SELECT, INSERT
ON Поставщик TO Экономисты
GRANT SELECT, INSERT
ON Товар TO Экономисты
GRANT SELECT, INSERT, UPDATE, DELETE
ON Регион TO public GO
Примечание. С помощью ключевых слов WITH GRANT OPTION пользователям, указанным с помощью строки TO security_account [ ,...n ] будет предоставлено право выдавать другим пользователям разрешения доступа, аналогичные выданным им самим.
7. Запрещение доступа к объектам базы данных. Синтаксис системной хранимой процедуры (см. [1], стр. 258):
DENY { ALL [ PRIVILEGES ] | permission [ ,...n ] } { [ ( column [ ,...n ] ) ] ON { table | view } | ON { table | view } [ ( column [ ,...n ] ) ] | ON { stored_procedure | extended_procedure } | ON { user_defined_function } } TO security_account [ ,...n ] [ CASCADE ]
DENY UPDATE
ON Заказ (ДатаЗаказа, СрокПоставки) TO [Гл.бухгалтер] CASCADE
GO
Примечание. Кроме предоставления и запрещения прав доступа существует еще и третье состояние – неявное отклонение доступа. Его можно рассматривать как отмену ранее выданных полномочий как по предоставлению, так и запрету доступа. Если ранее пользователю не было выдано никаких полномочий к объекту, то выполнять неявное отклонение доступа бессмысленно, т.к. оно установлено по умолчанию. Неявное отклонение доступа не мешает получить доступ к объекту на другом уровне, например, через членство в некоторой роли. Для неявного отклонения доступа используется команда REVOKE, имеющая следующий синтаксис (см. [1], стр. 259):
REVOKE [ GRANT OPTION FOR ] { ALL [ PRIVILEGES ] | permission [ ,...n ] } { [ ( column [ ,...n ] ) ] ON { table | view } | ON { table | view } [ ( column [ ,...n ] ) ] | ON { stored_procedure | extended_procedure } | ON { user_defined_function } } { TO | FROM } security_account [ ,...n ] [ CASCADE ] [ AS { group | role } ]