Синонимы таблиц | ![]() |
![]() |
![]() |
Синонимы позволяют иметь несколько поименованных экземпляров одной и той же таблицы, причем физического копирования данных не происходит.
Для иллюстрации применения синонимов усложним пример: к названию этапа добавим название проекта, к которому относится этап. И этапы и проекты хранятся в одной физической таблице. Поэтому в реляционном графе появляется цикл (см. Рис. 2).
Рис. 2. Зацикленный реляционный граф
Для расцикливания этого графа можно ввести синоним таблицы "Проекты и этапы проектов". Тогда граф будет иметь вид приведенный на Рис. 3.
Рис. 3. Реляционный граф с устраненным циклом
Описание логической таблицы принимает вид:
create view as select KatPersons.LastName, KatPosts.Name, KatDeps.Name, Stages.Name, Projects.Name from KatPersons, KatDeps, KatPosts, PrjExecutors, Projects, synonym Projects Stages where (( root == KatPersons.LastName and (KatPersons.LastName <> 'Смирнов') and KatPersons.cDepartment == KatDeps.NRec and KatPersons.cPost == KatPosts.NRec and KatPersons.NRec == PrjExecutors.cEmployee (noIndex) and PrjExecutors.cMaster == Stages.NRec and Stages.cProject == Projects.NRec )) ;
Здесь мы обращаемся к физической таблице Projects по двум разным именам: Stages и Projects. По условиям подцепки Stages содержит данные об этапах, а Projects - о проектах.