Материал: Базы данных. учебное пособие. Бокарев Д.И

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Для выражения множественности связей в E/R-диаграммах можно применять стрелки. Если между множествами Е и F есть связь типа "многие-к-одному", используется стрелка, указывающая на F. Она означает, что каждая сущность из множества Е связана только с одной сущностью из множества F. Однако сущность из F может быть связана с многими сущностями в Е. Связь типа "один-к-одному" между множествами Е и F выражается стрелками, указывающими и на Е, и на F.

Зачастую E/R-связи удобно изображать таблицей, каждая строка которой представляет пару сущностей, вовлеченных в данную связь. Конкретного способа, которым должны реализовываться связи, не существует ни в E/R-моделях, ни в ODL. Такая таблица иногда называется множеством отношений для конкретной связи. Элементы этого множества – строки таблицы. Их можно представить в виде кортежей с компонентами для каждого множества сущностей.

В E/R-моделях, в отличие от ODL, удобно определять связи между несколькими множествами. Однако на практике тернарные (трехсторонние) связи или связи еще более высокого порядка встречаются довольно редко. Многосторонние связи в E/R-моделях изображаются линиями, соединяющими ромб (связь) с каждым из участвующих в данной связи множеств.

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

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

В ODL допустимы только бинарные связи, в отличие от E/R-модели. Однако любую сложную связь, включающую в себя более двух компонентов, нетрудно конвертировать в множество бинарных связей типа "многие-к-одному" без потери какой-либо информации. В E/R-модели можно ввести новое множество сущностей, элементами которого являются кортежи множества отношений для многосторонней связи. Такое множество называется множеством связующих сущностей. Затем вводится связь типа "многие-к-одному" этого множества связующих сущностей с каждым множеством сущностей, предоставляющим элемент кортежей исходной многосторонней связи. Если какое-то множество сущностей играет несколько ролей, оно является целевым пунктом одной связи для каждой из ролей.

Существует значительное отличие между наследованием в ODL или других объектно-ориентированных моделях и наследованием в E/R-модели. В ODL объект должен быть членом только одного класса. В E/R-модели считается, что сущность имеет компоненты, принадлежащие нескольким множествам сущностей, которые являются частью ISA -иерархии. Эти компоненты объединены в единую сущность связями ISA, и такая сущность имеет все атрибуты своих компонентов, а также участвует во всех связях, в которых они участвуют. Отношение между объектом и множеством, обозначающим, что объект принадлежит этому множеству, называется отношением классификации (ISA). Говорят, что множество (класс) классифицирует свои экземпляры (пример: «Шарик является собакой» = Шарик является объектом типа собака).

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

При необходимости, вместо использования множественного наследования, в E/R-модели можно ввести новое множество сущностей.

Аналогично классам ODL, множество сущностей может также иметь ключи. Если множество атрибутов формирует ключ для множества сущностей, в нем не может быть двух сущностей, чьи значения совпадают для каждого атрибута ключа. В нотации E/R-диаграммы подчеркиваются атрибуты, принадлежащие ключу для любого множества сущностей.

В модели может быть несколько ключей, при в E/R-модели отсутствуют средства для указания всех ключей. Принято выделять один ключ в качестве первичного и рассматривать множество его атрибутов как единственный ключ для множества сущностей. В E/R-модели первичный ключ выделяется подчеркиванием, а другие ключи, называемые вторичными, либо не отмечаются, либо перечисляются в комментарии на краю диаграммы.

В ряде случаев для полного определения ключа некоторого множества сущностей используются атрибуты, которые частично или полностью принадлежат другому множеству сущностей. Множество с таким ключом называется слабым множеством сущностей.

Появление слабых множеств сущностей связано с двумя основными причинами. Во-первых, часто множества сущностей выстраиваются в иерархию. Когда сущности множества Е являются составными частями сущностей множества F, возможно, что имена сущностей Е не уникальны до тех пор, пока не будет учитываться имя той сущности из F, которой подчинена сущность из Е.

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

В E/R-диаграммах можно расширить функции стрелок таким образом, чтобы они показывали, ожидается ли ссылочная целостность данной связи в одном или нескольких направлениях. Пусть Rэто связь множества сущностей Е с множеством сущностей F. Стрелка с закругленным "острием", указывающая на F, означает не только то, что Е и F находятся в связи типа "многие-к-одному" или "один-к-одному", но и то, что должно существовать множество Е. То же самое относится к случаю, когда Rсвязь между более чем двумя атрибутами.

Ключевые атрибуты для слабого множества сущностей нельзя получить произвольным образом. Если Е – слабое множество сущностей, то каждое из множеств F, поставляющих один ключевой атрибут для Е или более, должно быть соединено с Е связью R. Кроме того, необходимо выполнить следующие условия:

  1. R должно быть бинарной связью типа "многие-к-одному" между E и F.

  2. Атрибуты F, используемые в ключе для Е, должны быть ключевыми атрибутами множества F.

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

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

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

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

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

  3. Если множество сущностей поставляет атрибуты для собственного ключа, эти атрибуты подчеркиваются.

Эти соглашения суммируются в виде правила:

Множество сущностей с двойной границей является слабым. Его ключ состоит из его собственных подчеркнутых атрибутов (если таковые имеются) и ключевых атрибутов тех множеств, с которыми данное слабое множество соединено связями типа "многие-к-одному", имеющими двойную границу.

В объектно-ориентированных системах вопрос о поиске ключа никогда не возникает, всегда можно построить ключ путем описания атрибута или атрибутов, хотя это и необязательно. Объект обладает свойством "целостности объекта" и в результате имеет адрес, по которому его можно найти, a ID (идентификатор) объекта уникальным образом отличает один объект от другого даже тогда, когда их невозможно различить по значениям их атрибутов или связям. А E/R-модель "ориентирована на значение", и сущности различимы только по связанным значениям их атрибутов. Поэтому нужно всегда учитывать, что в E/R-моделях сущности любого множества можно различать только по значениям, не обращаясь ни к какой "идентичности объектов".

Переход от диаграммы "сущность-связь" к реляционной схеме БД принципиально аналогичен переходу к ней от проекта ODL. Данный переход достаточно хорошо формализуем.

  1. Все простые сущности преобразуется в таблицу. Простая сущность – сущность, не являющаяся подтипом и не имеющая подтипов. Имя сущности становится именем таблицы.

  2. Атрибуты становится возможными столбцами с тем же именем; может выбираться более точный формат. Столбцы, соответствующие необязательным атрибутам, могут содержать неопределенные значения; столбцы, соответствующие обязательным атрибутам, – не могут.

  3. Ключи ER-модели преобразуются в первичный ключ таблицы. Если имеется несколько возможных ER-ключей, выбирается наиболее используемый ключ. Если в состав ключа ER-модели входят связи, к числу столбцов первичного ключа добавляется копия уникального идентификатора сущности, находящейся на дальнем конце связи (этот процесс может продолжаться рекурсивно). Для именования этих столбцов используются имена концов связей и/или имена сущностей.

  4. Связи многие-к-одному (и один-к-одному) становятся внешними ключами. Необязательные связи соответствуют столбцам, допускающим неопределенные значения; обязательные связи – столбцам, не допускающим неопределенные значения.

  5. Индексы создаются для первичного ключа (уникальный индекс), внешних ключей и тех атрибутов, на которых предполагается в основном базировать запросы.

  6. Если в концептуальной схеме присутствовали слабые сущности, то возможны два способа:

  • все слабые сущности в одной таблице (а);

  • для каждой слабой сущности – отдельная таблица (б).

При применении способа (а) таблица создается для наиболее внешнего супертипа, а для подтипов могут создаваться представления.

При использовании метода (б) для каждого подтипа первого уровня (для более нижних используются представления) супертип воссоздается с помощью представления UNION (из всех таблиц подтипов выбираются общие столбцы – столбцы супертипа).

  1. При наличии исключающих связей (сущность может быть расщеплена на два или более взаимно исключающих подтипа, каждый из которых включает общие атрибуты и/или связи) имеется два способа работы:

- общий домен (а);

- явные внешние ключи (б).

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

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

Преимущества перехода к схеме БД от E/R-моделей по сравнению с ODL-проектом заключаются в следующем:

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

- двухсторонние связи ODL заменяются единственным отношением, представляющим связи в обоих направлениях.

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

Таким образом, ER-модель предоставляет еще две формы представления (языка описания баз данных) - графическую и табличную.

7. Базы данных в сетях

В основе построения сетевых систем управления данным лежат два подхода: централизованный и децентрализованный. При централизованном подходе систему баз данных можно рассматривать как структуру, состоящую из двух частей – сервера и набора клиентов. Под сервером в данном контексте понимается СУБД, а клиенты – это различные приложения, инициирующие запросы на услуги к серверу. Разделение системы баз данных на две части определяет возможность обработки этих частей на разных машинах. Поэтому можно говорить о распределенной обработке информации.

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

По способу доступа к БД системы управления базами данных подразделяют на файл-серверные, клиент-серверные и встраиваемые.

В файл-серверных СУБД файлы данных располагаются централизованно на файл-сервере. Компьютеры пользователей системы объединены в сеть, при этом на каждом из них (на клиентском месте) запущены копии одной и той же программы, которые обращаются за данными к серверу - специальному компьютеру, который хранит файлы, одновременно доступные всем пользователям (как правило, это базы данных). Сервер обладает повышенной надежностью, высоким быстродействием, большим объемом памяти, на нем установлена специальная серверная версия операционной системы.

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

Особенность этой архитектуры в том, что все вычисления выполняются на клиентских местах, что требует наличия на них достаточно производительных ПК (это так называемые системы с «толстым клиентом» - программой, которая выполняет всю обработку получаемой от сервера информации).

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

На данный момент файл-серверная технология считается устаревшей, а её использование в крупных информационных системах - недостатком.

Примеры: Microsoft Access, Paradox, dBase, FoxPro, Visual FoxPro.

Клиент-серверная СУБД располагается на сервере вместе с БД и осуществляет доступ к БД непосредственно, в монопольном режиме. Все клиентские запросы на обработку данных обрабатываются клиент-серверной СУБД централизованно. Клиентские узлы поддерживают пользовательские интерфейсы и функциональность приложений.

Эта архитектура похожа на предыдущую, только сервер помимо простого обеспечения одновременного доступа к данным способен еще выполнять программы (обычно выполняются СУБД - тогда сервер называется сервером баз данных), которые берут на себя определенный объем вычислений (в файл-серверной архитектуре он реализуется полностью на клиентских местах). Благодаря этому удается повысить общую надежность системы, так как сервер работает значительно более устойчиво, чем ПК, и снять лишнюю нагрузку с клиентских мест, на которых удается использовать дешевые компьютеры. Запускаемые на них приложения реально осуществляют небольшие объемы вычислений, а иногда занимаются только отображением получаемой от сервера информации, поэтому они называются «тонкими клиентами».