Диго С.М. Базы данных проектирование и использование (1084447), страница 29
Текст из файла (страница 29)
Рис. 3.4. Отображение связи 1:1: а - фрагмент ER-модели;
б - реляционные таблицы
Если для каждого такого объекта создаются отдельные отношения, то информацию о связях между ними можно отразить, включив в одно из отношений идентификатор связанного объекта из другого отношения. Причем если класс принадлежности обеих сущностей является обязательным, то (если руководствоваться только типом связи) это можно сделать в любом из отношений (рис. 3.4, б - варианты 1 и 2).
Если класс членства одного из объектов является необязательным, то идентификатор сущности, для которой класс принадлежности является необязательным, добавляется в отношение, соответствующее тому объекту, для которого класс принадлежности - обязательный.
Если степень связи между объектами равна 1:1 и класс принадлежности каждого из них является необязательным, то, чтобы избежать наличия пустых полей, следует использовать три отношения: по одному для каждой сущности и одно - для отображения связи между ними (рис. 3.4, б - вариант 4). В приведенном решении в качестве ключа связующей таблицы обозначен ИО1. С таким же успехом мог быть выбран ИО2.
Отображение альтернативной связи. Альтернативная связь обычно используется при изображении агрегированного объекта и означает, что в действии участвует либо один объект, либо другой, но не оба вместе. Альтернативная связь трудна для ее «автоматического» преобразования в даталогическую модель. Может быть, поэтому она отсутствует в большинстве CASE-средств.
Естественным кажется путь, когда в таблице базы данных, соответствующей объекту, к которому идут альтернативные связи, всем этим связям будет соответствовать одно поле и в нем будет зафиксирован идентификатор связанного объекта. В экземпляре записи в этом поле будет записано значение идентификатора того объекта, который участвует в отображаемой связи в каждой конкретной ситуации. Но это решение имеет множество недостатков, связанных с последующей обработкой таким образом спроектированных таблиц, и его в большинстве случаев не рекомендуется использовать.
Другой вариант решения: для отражения связи с каждым из альтернативных классов объектов использовать отдельную таблицу.
Часто объекты, объединенные альтернативной связью, по сути, являются подклассами обобщенного класса. Иногда имеет смысл по-иному изобразить ER-модель, чтобы увидеть другие варианты проектных решений.
Отображение сложных объектов
Выше были рассмотрены варианты проектных решений, связанные с простыми объектами. Но в ER-модели отражаются и сложные объекты.
Отображение агрегированных объектов. Каждому агрегированному объекту, имеющему место в предметной области, в реляционной модели будет соответствовать отдельное отношение. Атрибутами этого отношения будут являться идентификаторы всех объектов, задействованных в данном агрегированном объекте, а также реквизиты, соответствующие свойствам этого агрегированного объекта.
Для отношений, соответствующих агрегированным объектам, ключ будет составной. В большинстве случаев им будет являться конкатенация (соединение) идентификаторов объектов, участвующих в этом агрегированном объекте (рис. 3.5).
Объединить информацию о нескольких агрегированных объектах в одно реляционное отношение можно только в случае, если те объекты, с которыми связан каждый из них, полностью совпадают (рис. 3.6). Это является необходимым, но не достаточным условием для такого объединения. В каждом конкретном случае возможность и необходимость такого объединения нужно определять особо.
Отображение обобщенных объектов. При этом могут быть приняты разные решения.
Во-первых, всему обобщенному объекту может быть поставлена в соответствие одна таблица базы данных (рис.3.7, б - вариант 1). В этом случае атрибутами таблицы будут идентификаторы обобщенного объекта и все единичные свойства, присущие объектам хотя бы одной категории, включая свойство, по которому проводится разбиение на подклассы. Ключом таблицы будет один из идентификаторов этого объекта.
Рис. 3.5. Отображение агрегированного объекта:
а - фрагмент ER-модели; б - реляционная таблица
Рис. 3.6. Отображение нескольких агрегированных объектов, имеющих
одинаковые связи: а - фрагмент ER-модели; б - реляционные таблицы
Другим «крайним» вариантом является решение, при котором каждой категории объектов нижнего уровня ставится в соответствие отдельное отношение (рис.3.7, б - вариант 2). В этом случае каждое отношение будет включать в себя идентификатор объекта (если идентификаторов несколько, то в каждое из отношений будут включены все они; это не приведет к дублированию информации на уровне значений), свойства, присущие родовым объектам, а также свойства, присущие данному подвиду объектов. Свойство, по которому проводится разбиение класса на подклассы, в этом случае в качестве поля не включается ни в одно из отношений.
Кроме этих двух крайних решений возможны и комбинированные варианты. Например, можно выделить общую таблицу для отображения родовых свойств объектов (включающую еще и все идентификаторы объекта) и отдельные таблицы для отображения видовых свойств (такой алгоритм используется в системе Design/IDEF). Кроме свойств, присущих видовому объекту, в каждом из этих отношений будет повторен ключевой атрибут основного отношения (рис. 3.7, б - вариант 3).
Другим вариантом проектного решения для отображения обобщенного объекта является использование так называемого кодированного формата файла, при котором, так же как и в варианте 1, используется одна таблица, но для всех видовых свойств каждого подкласса выделяется одно поле. Его содержимое распознается по значению свойства, по которому проводится разбиение класса на подклассы.
Рис. 3.7. Отображение обобщенного объекта:
а - фрагмент ER-модели; б - реляционные таблицы
Перечень вариантов можно продолжить. Выбор конкретного решения будет зависеть от многих факторов, в том числе от того, насколько часто информация о разных категориях объектов обрабатывается совместно, как велико различие в видовых свойствах и др.
Приведенный выше алгоритм излагался из предположения, что классификация объектов не являлась фасетной. Если в обобщенном объекте наблюдается разбиение на подклассы по разным несоподчиненным признакам, то варианты 1 и 3 останутся верны, а вариант 2 должен быть уточнен.
Кроме того, алгоритм не учитывает, что классы могут быть пересекающимися.
Кроме того, при выборе проектного решения необходимо учитывать, является класс полным или нет. Если класс неполный, то при выборе варианта, когда для каждого подкласса строится отдельная таблица, информация об объектах, не вошедших ни в один подкласс, может просто пропасть.
Отображение составных объектов. В базовой ER-модели, как и в большинстве других нотаций, нет специальных обозначений для отображения связи «целое-часть» или составного объекта (см. главу 2).
Наличие такой связи может быть отображено как в инфологической, так и в даталогической модели по-разному. Следует отметить, что само отношение «целое-часть» может качественно различаться для разных ситуаций. Так, если речь идет о составе изделий, то между ИЗДЕЛИЕМ и ДЕТАЛЬЮ имеется связь типа М:М, так как одна и та же деталь может входить в разные изделия и, наоборот, в изделие входят разные детали. Состав изделия обычно является сложным, и отражать его в явном виде в структуре базы данных нежелательно, а часто и просто невозможно. Кроме того, рассматриваемая связь реализована на однородном множестве объектов. В этом случае для отображения связи «целое-часть» можно воспользоваться двумя файлами базы данных. Первый из них будет хранить информацию о самих объектах, а второй - информацию о связи между ними, а также дополнительную информацию, характеризующую эту связь. Для состава изделия это могут быть поля «что входит», «куда входит» и «количество» (рис. 3.8).
Рис. 3.8. Отображение состава изделия:
а - фрагмент ER-модели; б - реляционная таблица
Отношение «целое-часть» может отражать, например, структуру какой-то организации. В этом случае ему, скорее всего, будет соответствовать связь типа 1:М, и для его отображения в даталогической модели можно использовать рекомендации, данные выше для соответствующего случая. В рассматриваемой ситуации также можно воспользоваться неявным выделением уровней, но такой прием используется при отображении организационной структуры редко.
Использование дополнительных характеристик
концептуальной модели
Характеристики свойств динамические (Д) и статические (С) могут быть использованы при задании ограничений целостности (например, можно задать запрет на обновление для статических полей). Кроме того, эта информация может быть полезна при выборе ключа отношения, а также способов физической организации данных.
Характеристики «число объектов», «рост числа объектов», «летучесть» могут быть использованы для управления размещением данных на носителе, выбора методов организации данных и доступа к ним, определения объемных характеристик БД (что относится к стадии физического проектирования БД). Эти характеристики также могут быть приняты во внимание при решении вопросов о целесообразности разбиения файла на несколько самостоятельных файлов.
«Класс членства» объектов в связи оказывает влияние не только на выбор варианта построения логической структуры, но и на задание ограничений целостности. (Более подробно об этом см. в главе 4.)
Информация о степени пересечения классов объектов (граф пересечений) может учитываться при выборе варианта отображения обобщенного объекта, а также при контроле целостности базы данных.
Дополнительные рекомендации
по проектированию БД
Реляционная база данных, полученная в результате использования предложенного выше алгоритма проектирования, является нормализованной и автоматически находится в четвертой нормальной форме (4 НФ).
Как известно, в принципе вся предметная область может быть представлена в виде одного универсального отношения. Недостатки такого способа хранения известны, и нормализация отношений служит устранению этих недостатков. Нормализация выполняется путем вертикального разбиения (проекции) исходного отношения.
Однако хранение нормализованных файлов, в свою очередь, может привести к отрицательным последствиям, например к замедлению выполнения некоторых операций. Поэтому иногда сознательно идут на денормализацию отношений.
Нормализованные отношения, в свою очередь, могут быть подвергнуты вертикальному разбиению, например в случае, если информация, хранящаяся в одном отношении, редко обрабатывается совместно или если ограничения СУБД не позволяют хранить все атрибуты в одном отношении. Вопросы вертикального разбиения нормализованных отношений выходят за рамки теории нормализации, но их часто приходится рассматривать в реальной практике проектирования ИС. Также за рамками теории нормализации остаются вопросы горизонтального разбиения отношений.
На решение вопросов о необходимости и степени вертикального и горизонтального разбиения отношений оказывает влияние много факторов, напрямую связанных не только с оценкой структуры данных (объем занимаемой памяти, степень дублирования данных), но и с затратами времени на выполнение операций разного типа, а также с корректностью получаемого при этом результата.
Горизонтальное разбиение в принципе может давать как непересекающиеся, так и пересекающиеся множества. При получении непересекающихся множеств степень дублирования данных не изменится, и объем памяти, занимаемый под данные, останется таким же, как и до расщепления. Однако общий объем памяти, требуемый для хранения БД, возрастет. Это произойдет за счет большего объема служебной информации (каждое отношение должно быть самостоятельно описано), а также за счет неиспользованного свободного места в конце каждого физического блока (сектора). Кроме того, возрастет сложность базы данных (одним из показателей которой является число информационных единиц в структуре БД) и сложность обработки. При пересекающихся множествах, кроме того, возрастет степень дублирования данных и возникнут проблемы с поддержанием целостности данных.
Несмотря на очевидные недостатки горизонтального разбиения, к такому приему довольно часто прибегают в практике проектирования. Чем это бывает вызвано? Во-первых, горизонтальное разбиение может обеспечить сокращение времени обработки данных, в том числе и за счет распараллеливания выполнения операций. Так, выполнение операций селекции и проекции над горизонтальными сечениями эквивалентно выполнению этих операций над всем отношением, и они могут осуществляться параллельно. При этом общее требуемое время выполнения запроса будет меньше, чем t / p, где t - время выполнения запроса над всем отношением; р - число доступных процессоров, так как время еще может сократиться и за счет работы с более короткими файлами.
Однако не все операции можно непосредственно выполнить над горизонтальными сечениями отношений. Рассмотрим следующий пример. Пусть в БД учебного института хранится информация о студентах. Основными потребителями этой информации являются деканаты соответствующих факультетов. Информация чаще всего обрабатывается и анализируется в пределах факультетов. В этом случае целесообразно сделать горизонтальные сечения и хранить данные в разрезе каждого факультета отдельно. Однако если,
например, потребуется получить средний балл успеваемости всех студентов в последнюю сессию, то придется либо объединить соответствующие файлы, либо использовать достаточно сложный алгоритм вычисления требуемого показателя.