Введение в язык SQL запросов к базам данных. Баканов В.М. - 44 стр.

UptoLike

Составители: 

- 44 -
В будущем, если работник будет присоединен ко второму или третьему
проекту, достаточно ввести дополнительную строку для этого работника в
таблицу РЕ.
Поскольку теперь используется таблица РЕ для соотношения работни-
ков с проектами, больше не нужна информация, хранимая в колонке PROJNO
таблицы ЕМР. Можно удалить эти данные путем установки значений этой
колонки в
пустые:
UPDATE EMP
SET PROJNO = NULL;
Вспомним, что отсутствие клаузы WHERE приказывает обновить
все строки в таблице.
Поскольку все PROJNO установлены в NULL, больше невозможно
использовать вид PERSONNEL, который использует колонку PROJNO для
связи таблиц ЕМР и PROJ. Для генерации этой информации снова нужно со-
единить таблицу ЕМР с новой таблицей РЕ и соединить таблицу РЕ с нашей
таблицей PROJ. Но
возможно спрятать это изменение от пользователей, ис-
пользующих вид PERSONNEL, просто изменив определение вида. Пер-
вый шаг в изменении вида PERSONNEL - уничтожить старый вид:
DROP VIEW PERSONNEL;
Теперь создадим новый вид PERSONNEL, объединяющий таблицу ЕМР
и таблицу PROJ через таблицу РЕ :
CREATE VIEW PERSONNEL AS
SELECT ENAME,JOB,PNAME
FROM EMP,PROJ,PE
WHERE EMP.EMPNO = PE.EMPNO
AND PE.PROJNO = PROJ.PROJNO;
Теперь программы, использующие старый вид PERSONNEL, могут
продолжать работу без модификации и пользователи могут работать со ста-
рыми данными в общем случае, не боясь изменений в базе данных.
Запрашивая новый вид PERSONNEL, увидим такую же информацию,
как для старого вида PERSONNEL плюс второй проект для работника
SMITH:
SELECT *
FROM PERSONNEL
ORDER BY ENAME;
ENAME JOB PNAME
                                   - 44 -


     В будущем, если работник будет присоединен ко второму или третьему
проекту, достаточно ввести дополнительную строку для этого работника в
таблицу РЕ.
     Поскольку теперь используется таблица РЕ для соотношения работни-
ков с проектами, больше не нужна информация, хранимая в колонке PROJNO
таблицы ЕМР. Можно удалить эти данные путем установки значений этой
колонки в пустые:

  UPDATE EMP
  SET PROJNO = NULL;

     Вспомним, что отсутствие клаузы WHERE приказывает обновить
все строки в таблице.
     Поскольку все PROJNO установлены в NULL, больше       невозможно
использовать вид PERSONNEL, который использует колонку PROJNO для
связи таблиц ЕМР и PROJ. Для генерации этой информации снова нужно со-
единить таблицу ЕМР с новой таблицей РЕ и соединить таблицу РЕ с нашей
таблицей PROJ. Но возможно спрятать это изменение от пользователей, ис-
пользующих вид PERSONNEL, просто изменив определение вида. Пер-
вый шаг в изменении вида PERSONNEL - уничтожить старый вид:

  DROP VIEW PERSONNEL;

     Теперь создадим новый вид PERSONNEL, объединяющий таблицу ЕМР
и таблицу PROJ через таблицу РЕ :

  CREATE VIEW PERSONNEL AS
  SELECT ENAME,JOB,PNAME
  FROM EMP,PROJ,PE
  WHERE EMP.EMPNO = PE.EMPNO
     AND PE.PROJNO = PROJ.PROJNO;

    Теперь программы, использующие старый вид PERSONNEL, могут
продолжать работу без модификации и пользователи могут работать со ста-
рыми данными в общем случае, не боясь изменений в базе данных.
    Запрашивая новый вид PERSONNEL, увидим такую же информацию,
как для старого вида PERSONNEL плюс второй проект для работника
SMITH:

  SELECT *
  FROM PERSONNEL
  ORDER BY ENAME;

   ENAME               JOB         PNAME