Администратор и два независимых отдела

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

Сотрудники каждого отдела имеют привилегию чтения из таблиц своего отдела.

Для каждого отдела создается роль, которой назначается привилегия Select только на таблицы, с которыми необходимо работать в данном отделе.

	CREATE ROLE Select_Sect1;
	GRANT SELECT ON Table1_Sect1 TO Select_Sect1;
	GRANT SELECT ON Table2_Sect1 TO Select_Sect1;
	GRANT SELECT ON Table3_Sect1 TO Select_Sect1;
	CREATE ROLE Select_Sect2;
	GRANT SELECT ON Table1_Sect2 TO Select_Sect2;
	GRANT SELECT ON Table2_Sect2 TO Select_Sect2;
	GRANT SELECT ON Table3_Sect2 TO Select_Sect2;
		

Затем эти роли назначается пользователям.

Если пользователь User_Name принят в первый отдел, то нужно выполнить запрос

GRANT ROLE Select_Sect1 TO User_Name;

Если во второй, то запрос

GRANT ROLE Select_Sect2 TO User_Name;

В этом примере модификацию таблиц БД, изменение их структуры, создание индексов, создание новых таблиц может производить только администратор БД, являющийся владельцем всех таблиц.