2.9 Трансформация ограничений
А) Трансформация ограничений целостности — важный этап перехода от одной модели данных к другой.
Б) Для достижения полной эквивалентности наряду с эквивалентным преобразованием графа модели необходимо выполнить соответствующее эквивалентное преобразование дополнительных ограничений. В процессе перехода от модели «сложная таблица» к ER-модели появляются новые сущности, в которые переносятся некоторые атрибуты исходной сущности. Это, естественно, требует соответствующей корректировки дополнительных ограничений целостности
В) Перенос ограничений из исходной сущности в новые вместе с переносом атрибутов характерен для ограничений, относящихся к отдельным атрибутам или агрегатам: ограничений доменов или кортежей. Когда группа атрибутов, участвующих в ограничении, целиком переносится из исходной сущности в новую, то вместе с ними в новую сущность переносится и самоограничение.
Модификация ограничений необходима в тех случаях, когда группа атрибутов, участвующих в ограничении, распределяется по нескольким сущностям. В результате модификации получается ограничение нового вида, охватывающее несколько сущностей, — межсущностное ограничение. Межсущностные ограничения могут возникать при трансформации ограничений кортежа, баланса, виртуальных атрибутов.
Новые ограничения уникальности появляются у новых сущностей, появившихся в результате преобразования модели. При вычленении «скрытой» сущности в ней идентификатором (первичным ключом) становится соответствующий a при вычленении многозначного агрегата — соответствующий компонент иерархического ключа .
Ограничения обязательности для агрегата в исходной сущности переходят в ограничения обязательности для связи между исходной и новой вычлененной сущностью. Если вычлененный агрегат был необязательным в исходной сущности, то его связь с исходной сущностью, очевидно, должна быть необязательной со стороны новой сущности связь, строго говоря, должна быть обязательной, поскольку в исходной модели агрегат не мог существовать сам по себе, без соответствующей исходной сущности.
Ослабление обязательности вычлененной сущности, т. е. перевод ее из обязательной в необязательную, довольно соблазнительно, если вычлененная сущность является «родителем» по отношению к исходной .«Родитель», для которого допустимо быть «бездетным», удобнее «родителя», который должен иметь по крайней мере одного «ребенка». В последнем случае невозможно вставить нового «родителя», пока у него нет хотя бы одного «ребенка», и придется удалять «родителя» в случае удаления его единственного «ребенка», т.е. имеют место аномалии вставки и удаления, .Поэтому часто в процессе нормализации ER-модели позволительно ослабить исходное ограничение обязательности и допустить возможность «бездетных родителей».
Правила активного поведения, как и другие ограничения целостности, должны быть переформулированы в соответствии с новой структурой модели.
Новые правила активности могут возникнуть в результате вычленения многозначных агрегатов и «скрытых» сущностей в самостоятельные сущности. Эти правила определяют, как должна вести себя активная база данных в ответ на попытку удаления экземпляра родительской сущности: как поступать в этом случае с экземплярами дочерней сущности, удалять ли их вместе с родительской? Подобные правила относятся к классу правил ссылочной целостности3.
Строгое правило удаления (RDR — Restrict Delete Rule) «родителя» заключается в том, что запрещается удалять те экземпляры родительской сущности, у которых имеются соответствующие экземпляры дочерней сущности. В этом случае удалить «родителя» можно лишь после того, как будут удалены все его «дети». Очевидно, это правило применимо, если связь необязательная со стороны «родителя», т. е. если «родитель» может не иметь «детей».
Каскадное правило удаления (CDR — Cascade Delete Rule) «родителя» состоит в том, что вместе с экземпляром родительской сущности автоматически удаляются соответствующие ему экземпляры дочерней сущности (вместе с «родителем» удаляются все его «дети»). Это правило — наиболее естественное для рассматриваемого случая, когда родительская или дочерняя сущность получаются в результате вычленения из исходной сущности. Действительно, в исходной «сложной таблице» при удалении экземпляра сущности удаляются все вычлененные значения: как экземпляры многозначного агрегата, содержащегося в сущности, так и экземпляры атрибутов, составляющих «скрытую» сущность.
Правило удаления с образованием «сирот» состоит в том, что при удалении экземпляра родительской сущности, связанные с ним экземпляры дочерней сущности теряют экземпляры связей, т.е. становятся «сиротами». Очевидно, это правило применимо, если связь является необязательной со стороны дочерней сущности.
Специальные правила удаления «родителя» могут предусматривать иные стратегии активного поведения в этой ситуации. Например, может быть предусмотрено «удочерение детей, потерявших родителя», т.е. прикрепление экземпляров дочерней сущности к специально выделенному экземпляру родительской сущности.
Удаление «детей» обычно не вызывает проблем, если связь необязательная со стороны «родителя». Именно так чаще всего и бывает на практике. В противном случае, т. е. если «родитель» обязательно должен иметь «детей», необходимо либо установить правило активности, предписывающее автоматически удалять «родителя» вместе с удалением его единственного « ребенка», либо запретить удалять родителя, имеющего одного «ребенка».
Смена «родителя» у «ребенка», когда экземпляр дочерней сущности отсоединяется от одного экземпляра родительской сущности и присоединяется к другому, может в некоторых случаях привести к нарушению целостности ,что требует проведения соответствующего анализа и введения соответствующих ограничений и правил активного поведения.
Г)