Опубликован: 02.08.2007 | Доступ: свободный | Студентов: 3891 / 753 | Оценка: 4.55 / 4.39 | Длительность: 27:09:00
ISBN: 978-5-9556-0111-3
Лекция 9:

Создание объектов для хранения данных. Работа с ограничениями

Создание первоначальной внешней схемы

Однако, если руководителем ИТ-проекта принято решение о разработке внешней схемы, проектировщик должен создать первоначальный вариант внешней схемы.

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

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

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

Создавать внешнюю схему наиболее удобно параллельно с внутренней, по мере того как создаются базовые таблицы. Решение о том, как проектировщик базы данных будет создавать первоначальную внешнюю схему, является его прерогативой.

Пример. Для нашей учебной базы данных первоначальная внешняя схема может выглядеть следующим образом:

CREATE VIEW DEPARTAMENT_V
AS SELECT 
	DEPNO, 
	DNAME,
	LOC,
	MANAGER,
	PHONE
FROM DEPARTAMENT;

CREATE VIEW EMPLOYEE_V
AS SELECT
	EMPNO,
	ENAME,
	LNAME,
	DEPNO,
	SSECNO,
	JOB,
	AGE,
	HIREDATE,
	SAL,
	COMM,
	FINE
FROM EMPLOYEE;

CREATE VIEW PROJECT_V 
AS SELECT
	PROJNO,
	PNAME,
	BUDGET
FROM PROJECT;

CREATE VIEW PERSPROJ
AS SELECT 
	ENAME, 
	JOB, 
	PNAME
FROM EMPLOYEE, PROJECT, EMPL_PROJ
	WHERE EMPLOYEE.EMPNO= EMPL_PROJ.EMPNO
		AND EMPL_PROJ.PROJNO=PROJECT.PROJNO;

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

Кроме этого, он добавил представление, позволяющее получать информацию о служащих и выполняемых ими проектах, которая включает связывающую таблицу для этого отношения со степенью связи "многие-ко-многим".

В этом разделе мы рассмотрели механизм представлений реляционной базы данных. Представления как объекты базы данных занимают немного физического пространства в словаре базы данных, но обеспечивают функциональность базы данных на уровне таблиц. Помимо прочего они позволяют скрывать от пользователей информацию о физической структуре таблиц базы данных, что повышает безопасность эксплуатации базы данных в целом. Представления являются в реляционных базах данных основным механизмом для построения внешней схемы базы данных.

Ниже приведены рекомендации проектировщикам баз данных по созданию представлений в типичной реляционной базе данных.

  • Создавайте по одному представлению для каждой базовой таблицы, в точности совпадающему с таблицей, но имеющему другое имя.
  • Создавайте по одному представлению для каждого взаимоотношения "первичный ключ-внешний ключ", через которое часто устанавливается соединение.
  • Создавайте по одному представлению для часто используемого сложного запроса.
  • Создавайте представления, ограничивающие доступ пользователей к конкретным колонкам и строкам таблицы.

Литература: [14], [15], [20], [45].

Александра Каева
Александра Каева
Михаил Забелкин
Михаил Забелкин