Министерство науки и образования РФ Новосибирский государственный технический университет Кафедра программных систем и баз данных Лабораторная работа №3 Тема: ” Полномочия на использование схемы базы данных. Работа с внешними схемами базы данных” Факультет: ПМИ Группа: ПМ-72 Вариант: 3 Студенты: Голубева В.В. Хван Г.О. Преподаватели: Быханов К.В. Кобылянский В.Г. Новосибирск, 2010 Цель работы Ознакомиться со средствами предоставления полномочий на использование схем и баз данных и таблиц и основами работы с внешними базами данных. Последовательность выполнения лабораторной работы: 1. Используя программу phpPgAdmin занести в таблицу поставщиков S строки с фамилиями членов бригады. Занесли необходимые данные: 2. Занести произвольным образом в таблицу поставок SPJ несколько строк (3-5 строк) о поставках, связанных с занесенными фамилиями. 3. Выполнить два запроса к базе данных согласно номеру Вашего варианта. При выполнении запроса данные должны выбираться из таблиц Вашей собственной схемы базы данных. Задание Запрос Результат select distinct x.name from j x where exists ( Выдать названия изделий, select y.n_izd from spj y для которых поставляются where y.n_izd = x.n_izd and детали поставщиком S6 n_post = 'S6' ); Получить номера и названия изделий, для которых поставщик S6 поставляет несколько деталей каждого из поставляемых им типов select distinct x.n_izd, j.name from spj x, j where j.n_izd = x.n_izd and not exists ( ( select count(h.n_det) from spj h where h.n_det = y.n_det and h.n_izd = x.n_izd and h.n_post = 'S6' ) <= 1 ) ); Данных не найдено. 4. Повторить задание п. 3 с той разницей, что сведения о номенклатуре деталей и изделий (таблицы P и J) должна браться из собственной схемы базы данных, а сведения о поставщиках и поставках (таблицы S и SPJ) должны браться из схемы базы данных соседней бригады. Предварительно необходимо узнать имя этой схемы базы данных. Убедитесь в невозможности выполнения задания. Сделаем замену в наших запросах: spj := students.pm7202.spj; s := students.pm7202.s и попробуем выполнить видоизмененные запросы. Результат: permission denied for relation spj 5. Обеспечьте, чтобы владелец используемой Вами внешней схемы базы данных предоставил Вам полномочия на просмотр используемых Вами таблиц в его схеме базы данных, дав соответственно ему такие же полномочия для выполнения аналогичных действий. Grant select on spj to pm7203 6. Повторите задание п. 4. Сравните результаты с результатами, полученными в п. 3. select distinct x.name from j x where exists ( select y.n_izd from students.pm7202.spj y where y.n_izd = x.n_izd and n_post = 'S6' ); select distinct x.n_izd, j.name from pm7202.spj x, j where j.n_izd = x.n_izd and not exists ( select distinct y.n_det from pm7202.spj y where y.n_post = 'S6' and ( Данных не найдено. ( select count(h.n_det) from pm7202.spj h where h.n_det = y.n_det and h.n_izd = x.n_izd and h.n_post = 'S6' ) <= 1 ) ); 7. Сделайте попытку изменить информацию о поставщиках-владельцах схемы базы данных (город, рейтинг и т.д.) в таблице S внешней схемы базы данных. Убедитесь в невозможности выполнения задания. update pm7202.s set reiting = reiting*10 where name = 'Безбородов' or name = 'Нюхалов' Результат: permission denied for relation s 8. Обеспечьте, чтобы владелец внешней используемой Вами схемы базы данных предоставил Вам полномочия на модификацию данных из используемых Вами таблиц в его схеме базы данных, дав соответственно ему такие же полномочия для выполнения аналогичных действий. Grant select, update on s to pm7203 9. Повторите задание п. 7. Проверьте успешность выполнения действий. Результат: 2 записи обработаны => 10. Дождавшись, когда владелец внешней схемы базы данных закончит выполнение п. 9, сделайте попытку удалить из таблицы S используемой Вами внешней схемы базы данных поставщиков с именами, принадлежащими владельцам схемы базы данных, и связанные с ними поставки из таблицы SPJ. Убедитесь в невозможности выполнения задания. delete from pm7202.s where n_post = 'S6' or n_post = 'S7'; delete from pm7202.spj where n_post = 'S6' or n_post = 'S7'; Ошибка. 11. Обеспечьте, чтобы владелец используемой Вами внешней схемы базы данных предоставил Вам полномочия на удаление из используемых Вами таблиц в его схеме базы данных, дав соответственно ему такие же полномочия для выполнения аналогичных действий. Grant delete on s to pm7203; Grant delete on spj to pm7203; 12. Повторите задание п. 10. Проверьте успешность выполнения действий. Данные были удалены. 13. Отнимите предоставленные Вами права на пользование Вашей схемы базы данных. Revoke delete,select on spj from pm7203; Revoke delete,select, update on spj from pm7203; Таблицы pm7202: