Главная страница

Лекции и практики (1). Курс лекций и материалы для практических занятий


Скачать 1.01 Mb.
НазваниеКурс лекций и материалы для практических занятий
Дата17.03.2023
Размер1.01 Mb.
Формат файлаdocx
Имя файлаЛекции и практики (1).docx
ТипКурс лекций
#996812
страница59 из 75
1   ...   55   56   57   58   59   60   61   62   ...   75

Создание представлений (готовых запросов)


Приведём примеры нескольких готовых запросов (представлений):

    1. Список всех текущих проектов (sysdate – функция, возвращающая теку- щую дату, определена в СУБД Oracle; в других системах аналогичная функция может называться по-другому, например, getdate() в Transact- SQL, now() в MS Access, currdate() в MySQL и т.д.):

create view curr_projects as select *

from projects

where p_begin<=sysdate and sysdate<=p_end;

    1. Определение суммы по текущим проектам, полученной на текущую дату:

create or replace view summ (title, cost, total) as select p_title, p_cost, sum(s_sum)

from curr_projects, stages where p_abbr=s_pro

group by p_title, p_cost;

    1. Список сотрудников, участвующих в текущих проектах:

create view participants (project, name, role) as select p_abbr, e_fname||' '||e_lname, 'руководитель'

from curr_projects, employees where p_chief=e_id

union all

select p_abbr, e_fname||' '||e_lname, j_role from curr_projects, employees, job

where p_abbr=j_pro and e_id=j_emp order by 1, 3 desc;

    1. Список рабочих телефонов сотрудников:

create or replace view worktel (name, room, phone) as select e_fname||' '||e_lname, e_room, e_phone

from employees order by 1;

    1. Форма отчётности и сроки выполнения этапов по текущим проектам:

create or replace view reports as

select s_pro, s_num, s_title, s_begin, s_end, s_form from stages

order by 1, 2;

    1. Данные о проектах для руководителя проектов:

create or replace view my_projects as select *

from projects p

where exists (select * from employees e

where e.e_id=p.p_chief and e.e_login=user); Функция user возвращает имя пользователя, выполняющего текущий запрос. Таким образом, каждый пользователь получит данные только о тех проектах, руководителем которых является. Используя аналогичный способ, можно ограничить участника проекта данными только о сотрудниках тех проектов, в которых он сам участвует.

    1. Данные об этапах проектов для руководителя проектов:

create or replace view my_stages as select s.*

from stages s

where exists (select *

from employees e, projects p

where e.e_id=p.p_chief and e.e_login=user and s.s_pro=p.p_abbr);

    1. Данные об участниках проектов для руководителя проектов:

create or replace view my_staff as select j.*

from job j

where exists (select *

from employees e, projects p

where e.e_id=p.p_chief and e.e_login=user and j.j_pro=p.p_abbr);

    1. Данные о других участниках проекта:

create or replace view my_emps as

select je.j_pro, e.e_fname||' '||e.e_lname e_name, e_depart, e_post, e_phone, e_room

from employees e, job je

where e.e_id=je.j_emp and exists (select * from job jm, employees m

where m.e_id=jm.j_emp and m.e_login=user and je.j_pro=jm.j_pro);

Для того чтобы можно было работать с этими представлениями, соответствующим пользователям нужно назначить права доступа к представлениям. Эти права перечислены в табл. 9.25.

Таблица 9.25. Права доступа к представлениям

Представления

Группы пользователей (роли)

Руководители организации

Руководители проектов

Участники проектов

Текущие проекты (curr_projects)

S

S




Сумма по текущим проектам (summ)

S

S




Рабочие телефоны (worktel)

S

S

S




Участники проектов (participants)

S

S

S

Отчетность (reports)

S

S

S

Проекты для руководителя (my_projects)




SIUD




Стадии проектов (my_stages)




SIUD




Участники проектов для руководителей (my_staff)




SIUD




Участники проектов (my_emps)







S

Представления "Проекты для руководителя" (my_projects), "Стадии про- ектов" (my_stages) и "Участники проектов для руководителей" (my_staff) явля- ются обновляемыми, т.е. руководители смогут изменять данные в таблицах че- рез эти представления.
        1. 1   ...   55   56   57   58   59   60   61   62   ...   75


написать администратору сайта