2. Переход от e/r-диаграмм к реляционным проектам
E/R-модели в значительной степени ориентированы на создание реляционных проектов, поэтому для выполнения перехода требуется меньше усилий, а полученные отношения содержат меньше избыточности, чем в случае перехода от ODL-моделей. Можно отметить особенности E/R-моделей, оказывающие влияние на разработку реляционного проекта:
Связи в E/R-модели являются самостоятельным объектом, возможно имеющим собственные атрибуты, это позволяет учитывать связи как самостоятельные объекты и тем самым избежать избыточности реляционного проекта.
Атрибуты сущностей в E/R-модели относятся к простым типам данных, и не имеют тип множества, что позволяет выполнить переход к реляционному проекту быстрее.
Для представления множества сущностей в реляционном проекте для каждого множества сущностей следует создать отношение с тем же количеством атрибутов. Например, для множества сущностей актеров получаем отношение Actors(name,ampoule,city,street):
name |
аmpoule |
city |
street |
Helen Obrazcova |
singer |
S-Petersburg |
Nevsky 148 |
Igor Colb |
dancer |
Moscow |
Forest st. 55 |
При переходе к реляционному проекту от E/R-модели связь следует представлять в виде отдельного отношения и включать в качестве атрибутов атрибуты связи и ключевые атрибуты каждого связанного множества сущностей. Например, для представления уникальной связи между театром и его художественным руководителем создаем отношение Manage(leaderName,theatresName) c ключевыми атрибутами множества сущностей руководителей (leaderName) и театров (theatresName).
Множественные связи представляются отношением с множеством кортежей и с атрибутами, включающими ключевые атрибуты связываемых объектов. Множество кортежей, включает повторяемые кортежи, число которых равно числу множественных связей. Например, связь между спектаклем и занятыми в нем актерами представляется отношением ActorOf(title,year, actorName)с ключевыми атрибутами множества сущностей спектакля (title,year) и актера (actorName). Число кортежей для каждого спектакля соответствует числу актеров, занятых в спектакле.
ActorName |
title |
year |
Mlada Khudoley |
Aida |
1998 |
Marianna Tarasova |
Aida |
1998 |
Edem Umerov |
Aida |
1998 |
Ulyana Lopatkina |
Swan Lake |
1991 |
Таким образом, переход к реляционному проекту от E/R-модели имеет те преимущества, что полученные отношения содержат меньше избыточной информации, и двусторонние связи представлены одним отношением.
Рассмотрим теперь представление в реляционной модели слабого множества сущностей, которое не может самостоятельно образовывать ключи. В этом случае ключи поставляются из связанного с ним сильного множества сущностей. Следовательно, представляя слабое множество сущностей, мы уже косвенно учитываем его связь с сильным множеством сущностей. Поэтому связь для слабого множества сущностей не требует отдельного представления в виде отношения. Например, для слабого множества сущностей Troupe (рис.1) создаем отношение Troupe(type,theatresName) с собственным атрибутом type и атрибутом theatresName, поставляемым из множества сущностей Theatres. Тогда создание специального отношения для связи Unit(type,theatresName) становится избыточным и от него следует отказаться.
Рис.1. Слабое множества сущностей
Для представления подклассов E/R-диаграммы в реляционном пректе следует создать отношение и включить в него атрибуты базового класса и собственные атрибуты подкласса. Например, для подкласса балет и опера нужно создать отдельные отношения и включить в них все атрибуты спектакля (title,year,runningTime,type) и атрибуты балета (choreographer) или оперы (choirmaster), (рис.2).
Рис.2 Подклассы в E/R-модели
В результате получим отношения для базового класса Performances(title,year,runningTime,type), производного класса спектаклей - балетов Ballets(title, year, runningTime, type, composer, choreographer) и производного класса оперных спектаклей Operas(title,year, runningTime, type, composer, choirmaster).
При переходе от E/R-моделей получаем большее число отношений, поскольку каждое множество сущностей и каждая связь представляются отдельным отношением. Однако в отношениях меньшее число атрибутов, а для представления связей приводятся только ключи для сущностей. В такой базе легче исключается избыточность, но поиск данных становится более длительным.