USE pubs
EXEC sp_addrole 'AccessDBUser', 'guest'
Удаление пользовательской роли осуществляется с помощью хранимой процедуры sp_droprole, имеющей следующий синтаксис:
sp_droprole [rolename =] 'role'
С помощью единственного параметра процедуры указывается имя пользовательской роли, которую необходимо удалить из текущей базы данных. Однако перед подобной операцией нужно удалить из нее всех членов, для чего можно использовать хранимую процедур sp_droprolemember. Если роль владеет одним или более объектами базы данных, то уничтожить такую роль будет невозможно. Прежде чем приступить к удалению, необходимо либо передать права владения соответствующими объектами с помощью хранимой процедуры sp_changeobjectowner, либо удалить эти объекты. С помощью приведенного ниже примера можно удалить пользовательскую роль
USE pubs
EXEC sp_droprole 'AccessDBUser'
Для просмотра списка явных прав доступа возможен запуск системной хранимой процедуры sp_helprotect, имеющей синтаксис:
sp_helprotect [[@name =] 'object_statement'] [, [@username
=] 'security_account'] [, [@grantorname =] 'grantor'] [, [@permissionarea =] 'type']
Например:
sp_helprotect Clients(для объекта Clients)
sp_helprotect @username = 'RFE\Joe' (дляпользователя RFE\Joe)
Данная процедура эффективна лишь для просмотра явных привилегий, назначенных с помощью оператора GRANT. Для просмотра всех привилегий, включая неявные, следует использовать следующий SQL запрос:
WHERE principal_type_desc <> 'DATABASE_ROLE' UNION
--role members
SELECT rm.member_principal_name, rm.principal_type_desc, p.class_desc, p.object_name, p.permission_name, p.permission_state_desc,rm.role_name
FROM perms_cte p right outer JOIN (
select role_principal_id, dp.type_desc as principal_type_desc, member_principal_id, user_name(member_principal_id) as member_principal_name, user_name(role_principal_id) as role_name--,*
from sys.database_role_members rm INNER JOIN sys.database_principals dp
ON rm.member_principal_id = dp.principal_id
) rm
ON rm.role_principal_id = p.principal_id order by 1
3. Реализация базы данных
3.1 Инструментарий разработки БД
Реализация БД велась в Microsoft SQL Server 2017. Microsoft SQL Server -- это семейство продуктов, разработанных для хранения данных в больших системах, осуществляющих обработку информации, и обслуживания коммерческих Web-узлов. Основной используемый язык запросов - Transact-SQL, создан совместно Microsoft и Sybase. Transact-SQL является реализацией стандарта ANSI/ISO по структурированному языку запросов (SQL) с расширениями. Используется для работы с БД размером от персональных до крупных баз данных масштаба предприятия; конкурирует с другими СУБД в этом сегменте рынка. SQL Server прост и удобен в использовании, он широко применяется как в сложных системах, с которыми работают сотни пользователей, так и в малом бизнесе. Он популярен также у отдельных пользователей, которым нужен надежный и удобный сервер БД. В состав SQL Server входят две основные службы, предназначенные для новой платформы Microsoft.NET и систем с традиционной двухуровневой клиент-серверной архитектурой. Первая служба, SQL Server -- это высокопроизводительное реляционное ядро БД, обеспечивающее прекрасную масштабируемость систем, созданных на его основе. Вторая -- SQL Server Analysis Services -- предоставляет множество средств анализа данных, которые размещаются в специальных хранилищах и киосках данных и используются системами принятия решений.
Microsoft SQL Server - это реляционная система управления базой данных. В реляционных базах данных данные хранятся в таблицах. Взаимосвязанные данные могут группироваться в таблицы, кроме того, могут быть установлены также и взаимоотношения между таблицами. Пользователи получают доступ к данным на сервере через приложения, а администраторы, выполняя задачи конфигурирования, администрирования и поддержки базы данных, производят непосредственный доступ к серверу. SQL Server является масштабируемой базой данных, это значит, что она может хранить значительные объемы данных и поддерживать работу многих пользователей, осуществляющих одновременный доступ к базе данных.
3.2 Создание базы данных
3.2.1 Описание предметной области
В настоящее время эффективное функционирование современного предприятия невозможно без применения информационных систем. Эта проблема актуальна как для крупных предприятий, так и для предприятий среднего и даже малого бизнеса. Информационные системы имеют ряд существенных отличий от стандартных прикладных программ. В зависимости от предметной области информационные системы могут сильно различаться по своей архитектуре и функциям.
При разработке базы данных «Банк. Область ИБ» было проведено обследование предметной области. В результате в БД «Банк. Область ИБ» используются следующие входные данные:
информация о сотрудниках;
информация об области работы сотрудников;
информация о помещениях.
Выходными данными являются выходные формы, запросы. Как же в выпускной квалификационной работе использовано ограничение на ввод данных, например, пользователю сообщается об ошибке, если он введет отрицательный номер кабинета.
3.2.2 Проектирование реляционной базы данных
Перечень атрибутов:
Таблица «Сотрудники» содержит:
· id_сотрудника - уникальный идентификатор сотрудника
· Фамилия - фамилия сотрудника
· Имя - имя сотрудника
· Отчество - отчество сотрудника
· Пол - пол сотрудника
· Должность - должность сотрудника
«Область работы» содержит:
· Название области работы - название области работы
· Детали - детали области работы
«Сотрудники и область их работы» содержит:
· id_сотдруника - уникальный номер сотрудника
· Название области работы - название области работы сотрудника
«Помещения» включает в себя:
· Номер помещения - уникальный номер помещения
· Название помещения - название помещения
«Помещения и сотрудники» содержит:
· Номер помещения - уникальный номер помещения
· id_сотрудника - уникальный норме сотрудника
3.2.3 Инфологическая модель базы данных
Цель инфологического моделирования - обеспечение наиболее естественных для человека способов сбора и представления той информации, которую предполагается хранить в создаваемой базе данных. Поэтому инфологическую модель данных пытаются строить по аналогии c естественным языком, который не может быть использован в чистом виде из-за сложности компьютерной обработки текстов и неоднозначности любого естественного языка. Основными конструктивными элементами инфологических моделей являются сущности, связи между ними и их свойства (атрибуты).
Сущность - любой различимый, информацию о котором необходимо хранить в базе данных. Сущностями могут быть люди, места, самолёты, рейсы, вкус, цвет и т.д. Необходимо различать такие понятия, как тип сущности и экземпляр сущности. Понятие тип сущности относится к набору однородных личностей, предметов, событий или идей, выступающих как целое. Экземпляр сущности относится к конкретной вещи в наборе.
Атрибут - поименованная характеристика сущности. Его наименование должно быть уникальным для конкретного типа сущности. Например, атрибуты используются для определения того, какая информация должна быть собрана о сущности. Абсолютное различие между типами сущностей и атрибутами отсутствует. Атрибут является таковым только в связи c типом сущности. В другом контексте атрибут может выступать как самостоятельная сущность.
Ключ - минимальный набор атрибутов, по значениям которых можно однозначно найти требуемый экземпляр сущности. Минимальность означает, что исключение из набора любого атрибута не позволяет идентифицировать сущность по оставшимся атрибутам.
Связь - ассоциирование двух или более сущностей. Если бы назначением базы данных было только хранение отдельных, не связанных между собой данных, то ее структура могла бы быть очень простой. Однако одно из основных требований к организации базы данных - это обеспечение возможности отыскания одних сущностей по значениям других, для чего необходимо установить между ними определенные связи. A так как в реальных базах данных нередко содержатся сотни или даже тысячи сущностей, то теоретически между ними может быть установлено более миллиона связей. Наличие такого множества связей и определяет сложность инфологических моделей.
3.2.4 Описание связей
В базе данных определены отношения между таблицами которые указаны в таблице 4.
Таблица 4. Отношения между таблицами
|
Таблица «Сотрудники» |
Таблица «Сотрудники и область их работы» |
|
|
id |
id |
|
|
Тип отношений: |
Один ко многим |
|
|
Таблица «Помещения и сотрудники» |
Таблица «Сотрудники» |
|
|
id |
id_cотрудника |
|
|
Тип отношений: |
Один ко многим |
|
|
Таблица «Область работы» |
Таблица «Сотрудники и область их работы» |
|
|
Название области работы |
Название области работы |
|
|
Тип отношений: |
Один ко многим |
|
|
Таблица «Помещения» |
Таблица «Помещения и сотрудники» |
|
|
Номер помещения |
Номер помещения |
|
|
Тип отношений: |
Один к одному |
3.2.5 Даталогичеcкое проектирование БД
В этом разделе приводится состав таблиц БД. Для каждого поля таблицы указывается размер поля (количество символов), тип. Для первичных ключей необходимо ввести запрет неопределенных значений. Для остальных полей возможность запрета неопределенных значений определяется семантикой предметной области. Даталогичеcкая модель представлена в рисунке 2.
Рисунок 2. Даталогичеcкая модель базы данных.
Таблица 5. Помещения
|
Наименование атрибутов |
Тип полей |
Размер полей |
Допустимость неопределенных значений |
|
|
Номер помещения |
tinyint |
Not Null |
||
|
Фамилия |
Nvchar |
50 |
Таблица 6. Помещения и сотрудники
|
Наименование атрибутов |
Tип полей |
Размер полей |
Допустимость неопределенных значений |
|
|
Номер помещения |
tinyint |
14 |
Not null |
|
|
Id сотрудника |
bigint |
25 |
Таблица 7. Область работы
|
Наименование атрибутов |
Тип полей |
Размер полей |
Допустимость неопределенных значений |
|
|
Название области работы |
Nvchar |
100 |
Not null |
|
|
Детали |
Nvchar |
MAX |
|
Наименование атрибутов |
Тип полей |
Размер полей |
Допустимость неопределенных значений |
|
|
Id |
bigint |
Not Null |
||
|
Фамилия |
Nvchar |
20 |
||
|
Имя |
Nvchar |
20 |
||
|
Oтчеcтво |
Nvchar |
20 |
||
|
Пол |
Nvchar |
3 |
||
|
Должность |
Nvchar |
50 |
||
|
Наименование атрибутов |
Тип полей |
Размер полей |
Допустимость неопределенных значений |
|
|
Название области работы |
Nvchar |
100 |
Not null |
|
|
Детали |
Nvchar |
MAX |
· Запрос на количество женщин в коллективе
Use Bank Select пол, count(пол) as [женщин в коллективе] From Сотрудники where пол = 'жен' group by Пол order by пол
· Запрос на добавление и выделение
USE Bank Insert into Помещения (Помещение, [Название помещения]) Values 025, 'Столовая') SELECT TOP (1000) [Помещение], [Название помещения] FROM [Bank].[dbo].[Помещения]
· Запрос на просмотр сотрудника и его области работы
Use Bank select * from Сотрудники join [Сотрудники и область их работы] on Сотрудники.id = [Сотрудники и область их работы].[Id сотрудника]