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

UptoLike

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

- 43 -
пользовать виды и для хранения пользовательских запросов, программ и так
далее, предохраняя их от устаревания при изменениях базы данных.
Текущая структура БД позволяет связать несколько работников с
проектом, однако каждый должен работать только по одному проекту - это
известное соотношение 'многие к одному'. Предположим, что процедуры по
персоналу изменились и сейчас есть
необходимость связать работников с не-
сколькими проектам. Чтобы это выполнить, необходимо пересмотреть струк-
туру базы данных, преследуя две цели.
Первая цель - предохранить старые виды БД, чтобы можно было про-
должать работы со всеми прикладными системами, отчетами и программами,
зависящими от исходной структуры базы данных. Вторая цель заключается в
том, чтобы
иметь возможность использовать новые данные (дополнительные
проекты) для построения новых прикладных систем. Ниже приведены этапы
достижения поставленной цели.
Сначала создадим новую таблицу, соотносящую работников с проек-
тами и содержащую информацию об участии конкретных работников в кон-
кретном проекте (например, введем новый столбец - часы работы
WORKHPS. Новая структура базы данных будет поддерживать
соотношения
типа 'многие-к-многим'):
CREATE TABLE PE (EMPNO NUMBER (4),
PROJNO NUMBER (3),
WORKHPS NUMBER (4));
Далее присоединим работников к проектам путем введения строк в таб-
лицу РЕ. Отметим, что работник под номером 7369 имеет две строки в этой
таблице: одна для проекта 101 и другая - для 102. Присоединение работников
к проектам выполняется многократным использованием INSERT:
INSERT INTO PE VALUES (7369, 101, 0);
INSERT INTO PE VALUES (7369, 102, 0);
INSERT INTO PE VALUES (7399, 101, 0);
INSERT INTO PE VALUES (7521, 101, 0);
INSERT INTO PE VALUES (7366, 101, 0);
INSERT INTO PE VALUES (7554, 101, 0);
INSERT INTO PE VALUES (7698, 102, 0);
INSERT INTO PE VALUES (7782, 102, 0);
INSERT INTO PE VALUES (7788, 101, 0);
INSERT INTO PE VALUES (7839, 102, 0);
INSERT INTO PE VALUES (7844, 101, 0);
INSERT INTO PE VALUES (7876, 101, 0);
INSERT INTO PE VALUES (7900, 102, 0);
INSERT INTO PE VALUES (7902, 101, 0);
INSERT INTO PE VALUES (7934, 102, 0);
                                     - 43 -


пользовать виды и для хранения пользовательских запросов, программ и так
далее, предохраняя их от устаревания при изменениях базы данных.
     Текущая структура БД позволяет связать несколько работников с
проектом, однако каждый должен работать только по одному проекту - это
известное соотношение 'многие к одному'. Предположим, что процедуры по
персоналу изменились и сейчас есть необходимость связать работников с не-
сколькими проектам. Чтобы это выполнить, необходимо пересмотреть струк-
туру базы данных, преследуя две цели.
     Первая цель - предохранить старые виды БД, чтобы можно было про-
должать работы со всеми прикладными системами, отчетами и программами,
зависящими от исходной структуры базы данных. Вторая цель заключается в
том, чтобы иметь возможность использовать новые данные (дополнительные
проекты) для построения новых прикладных систем. Ниже приведены этапы
достижения поставленной цели.
     Сначала создадим новую таблицу, соотносящую работников с проек-
тами и содержащую информацию об участии конкретных работников в кон-
кретном проекте (например, введем новый столбец - часы работы
WORKHPS. Новая структура базы данных будет поддерживать соотношения
типа 'многие-к-многим'):

     CREATE TABLE PE (EMPNO               NUMBER (4),
                      PROJNO              NUMBER (3),
                      WORKHPS             NUMBER (4));

     Далее присоединим работников к проектам путем введения строк в таб-
лицу РЕ. Отметим, что работник под номером 7369 имеет две строки в этой
таблице: одна для проекта 101 и другая - для 102. Присоединение работников
к проектам выполняется многократным использованием INSERT:

  INSERT INTO PE VALUES (7369, 101, 0);
  INSERT INTO PE VALUES (7369, 102, 0);
  INSERT INTO PE VALUES (7399, 101, 0);
  INSERT INTO PE VALUES (7521, 101, 0);
  INSERT INTO PE VALUES (7366, 101, 0);
  INSERT INTO PE VALUES (7554, 101, 0);
  INSERT INTO PE VALUES (7698, 102, 0);
  INSERT INTO PE VALUES (7782, 102, 0);
  INSERT INTO PE VALUES (7788, 101, 0);
  INSERT INTO PE VALUES (7839, 102, 0);
  INSERT INTO PE VALUES (7844, 101, 0);
  INSERT INTO PE VALUES (7876, 101, 0);
  INSERT INTO PE VALUES (7900, 102, 0);
  INSERT INTO PE VALUES (7902, 101, 0);
  INSERT INTO PE VALUES (7934, 102, 0);