Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Связи, роли, структурные ограничения



В большинстве баз данных много типов объектов. Кроме атрибутов, которые принадлежат соответствующим типам объектов, нас интересуют связи между объектами.

ТИП СВЯЗИ (relationships type) между n типами объектов это множество совокупностей элементов объектов этих типов. Математически, - множество экземпляров связей (relationship instances) , где каждый - совокупность n элементов объектов и каждое в - экземпляр типа объекта .

Иными словами, тип связи - математическое отношение на или, иначе, можно определить как подмножество декартова произведения . Каждое из типов объектов называется участником (participate) типа связи. Тип связи и соответственно каждый из элементов объектов называется участником кортежа .

Неформально, каждый кортеж в R есть совокупность экземпляров объектов, где совокупность включает строго по одному объекту от каждого типа объекта. Каждый кортеж отражает объективно существующую в природе связь между экземплярами объектов.

Например, рассмотрим тип связи РАБОТАЕТ_В между двумя типами объектов СЛУЖАЩИЙ и ОТДЕЛ, который связывает каждого служащего с отделом, в котором он работает. Каждый кортеж в РАБОТАЕТ_В связывает одного конкретного служащего с одним конкретным отделом

На рисунке сотрудники работают в отделе d1, а - в отделе d2.

Степень (degree) типа связи - число входящих типов объектов. Следовательно, РАБОТАЕТ В имеет степень 2. Для типа связи степени 2 используют термин БИНАРНЫЙ, а степени 3 - ТЕРНАРНЫЙ. Примером тернарного типа связи может служить СНАБЖЕНИЕ (см.рис.1), связывающего трех участников процесса снабжения: кто снабжает (поставщики), чем снабжает (детали) и что снабжает (проекты). Таким образом, каждый кортеж связывает три объекта - s (поставщик), р (деталь) и j (проект) (рис.8).

Тип связи иногда действительно удобно воспринимать в терминах атрибутов. Рассмотрим связь РАБОТАЕТ_В на рис. 7. Можно считать, что значения отдела, в котором работает служащий, указаны как значение атрибута. Следовательно, множеством значений для атрибута Отдел является множество всех отделов как объектов. Можно и наоборот представить служащих как многозначный атрибут в объекте Отдел. Любой из этих двух атрибутов может представлять тип связи РАБОТАЕТ_В. Если представлены оба отношения, то существует ограничение в том, что они обязаны быть инверсными друг другу, т.е. откуда бы мы ни выбирали значение этой связи, результат должен быть одним и тем же.

Каждый тип отношения, принимающий участие в связи играет в ней некоторую РОЛЬ (role). Название ее означает ту роль, которую играет каждый конкретный экземпляр объекта любого кортежа этого отношения. Например, в связи РАБОТАЕТ_В, СЛУЖАЩИЙ играет роль служащего или работающего, а ОТДЕЛ играет роль отдела или работодателя. Выбор имени роли не всегда прост. Достаточно трудно назвать роли объектов в связи на рис.8.

Именовать роли в типах связей, где все участвующие типы объектов различны не обязательно, так как они естественны. Однако в некоторых случаях одни и те же типы объектов участвуют более одного раза в связи в различных ролях. В таких случаях имена ролей существенны для того, чтобы выделить смысл каждого участника. Такие типы связей называются рекурсивными (recursive). Например, в связи КУРИРУЕТ (рис. 9) связываются курируемый и курирующий, в котором оба объекта элементы одного и того же типа объекта СЛУЖАЩИЙ. Следовательно, тип объекта СЛУЖАЩИЙ участвует дважды в отношении КУРИРУЕТ: в одном случае в роли куратора, в другом в роли курируемого. Каждый кортеж 1:N связи КУРИРУЕТ связывает двоих служащих и , один из которых выступает в роли куратора (1), а другой - курируемого (2). Таким образом, е1 курирует е2 и е4: е3 курирует е1 и т.д.

Типы отношений обычно имеют некоторые ограничения, которые ограничивают возможные комбинации объектов в кортежах. Эти ограничения вытекают из описания микромира, отражаемого в отношениях. Например, если в компании принято, что служащий работает только в одном отделе, то мы должны отметить это ограничение на схеме. Мы выделим два основных типа ограничений, которые случаются достаточно часто: кардинальная пропорция (cardinality ration) и степень участия (participation).

Кардинальная пропорция отмечает количество кортежей связи, в которых может принимать участие конкретный объект. Бинарный тип связи РАБОТАЕТ_В, связывающий объекты ОТДЕЛ и СЛУЖАЩИЙ, имеет кардинальную пропорцию 1:N, что означает, что каждый отдел может быть связан с несколькими служащими, но каждый служащий может быть связан только с одним отделом. Вообще, для бинарных отношений допустимы кардинальные пропорции типа 1:1, 1:N, M:N.

Примером 1:1 бинарного отношения является связь РУКОВОДИТ между типами объектов ОТДЕЛ и СЛУЖАЩИЙ, которая связывает служащего, с руководимым им отделом. Тип связи РАБОТАЕТ_НАД между СЛУЖАЩИЙ и ПРОЕКТ имеет кардинальную пропорцию M:N, если мы знаем, что несколько служащих работают над одним проектом, и каждый служащий может работать над несколькими проектами.

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

Ограничение степени участия специфирует всякий ли экземпляр типа объекта участвует в связи. Имеется два типа степени участия: общее (total) и частичное (partial). Рассмотрим пример. Если в компании каждый служащий должен работать в одном из отделов, то участие СЛУЖАЩИЙ в связи РАБОТАЕТ_В является полным. Полное участие иногда называют зависимостью существования (existence dependency).

Напротив, мы не ожидаем, что каждый служащий является руководителем отдела, и, следовательно, участие СЛУЖАЩИЙ в связи РУКОВОДИТ является частичным.

Оба эти ограничения относятся к структурным ограничениям (structural constraints) типа связи. Имеется более простой способ специфицирования структурных ограничений, хотя это возможно не настолько интуитивно ясно, как разделение их на кардинальную пропорцию и степень участия. Мы можем привязать пару целых чисел (min, max) с каждым типом объекта Е, участвующим в какой-либо связи R, где 0 min max и 1 max. Числа означают, что каждый объект типа объекта E в любое время должен входить, по крайней мере, в min, но не более чем в max кортежей отношения связи. Заметим, что min=0 влечет частичное участие, в то время как min>0 означает полное участие. Этот подход более точный и с его помощью можно легко специфицировать структурные ограничения для типов ограничений любой степени, а не только бинарных.

Как и типы объектов, типы связей могут иметь атрибуты. Например, может потребоваться хранить число часов, которое служащий работает над проектом в течение недели. Это значение может храниться в каждом кортеже связи РАБОТАЕТ_НАД, так что мы вынуждены включить атрибут Время именно в тип связи. Также следует включить дату начала руководства отделом как атрибут НачалоРуководства в типе связи РУКОВОДИТ.

Заметим, что атрибуты типов связи с кардинальной пропорцией 1:1 или 1:N могут быть включены как атрибуты одного из участвующих типов объектов. Например, НачалоРуководства связи РУКОВОДИТ может быть атрибутом либо типа объекта СЛУЖАЩИЙ, либо ОТДЕЛ, хотя концептуально он относится к связи между ними. Это вытекает из того, что РУКОВОДИТ является 1:1 отношением, так что каждый отдел или служащий участвует не более чем в одном кортеже. Следовательно, значение НачалоРуководства может быть определено отдельно либо участием в объекте ОТДЕЛ, либо участием в объекте СЛУЖАЩИЙ.

Для 1:N типа связи атрибут связи может быть включен только как атрибут типа объекта на стороне N связи. Например, если РАБОТАЕТ_В также имеет атрибут ДатаНачала, который указывает, когда служащий начал работать в отделе, этот атрибут может быть включен только как атрибут СЛУЖАЩЕГО. Это так, потому что эта связь имеет кардинальную пропорцию типа 1:N, т.е. каждый служащий участвует не более чем в одном кортеже связи РАБОТАЕТ_В. Следовательно, каждый служащий может иметь значение ДатаНачала. В обоих случаях 1:1 и 1:N типов отношений решение, где разместить атрибут связи - как атрибут типа связи или атрибут типа объекта - определяется субъективно проектировщиком схемы.

Если значение атрибута определено комбинацией объектов, находящихся в некоторой связи, и вхождение каждого экземпляра объекта не обязательно единственное, то атрибут должен быть специфицирован как атрибут связи. Это условие применимо к атрибутам M:N отношения, потому что объекты любого из участвующих типов могут присутствовать в нескольких кортежах. Например, атрибут Время многозначного атрибута РаботаНад, означает количество часов, которое служащий работает над проектом, и определяется комбинацией значений типов объектов СЛУЖАЩИЙ - ПРОЕКТ, а не каким-либо одним из них.





Дата публикования: 2015-09-17; Прочитано: 302 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.01 с)...