Целостность на уровне ссылок 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Целостность на уровне ссылок



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


БД эти правила называются целостностью данных на уровне ссылок. Все вместе они гаран­тируют постоянную непротиворечивость связанных данных.

 

 

Примечание

Целостность на уровне ссылок вступает в действие, только если у вашей связи установлен флажок Обеспечение целостности данных (см. рис. 5.4). Без этой детали вы можете безум­ствовать и вводить противоречивые данные.

 

 

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

Для усиления влияния этого правила программа Access запрещает следующие три дей­ствия:

■ добавление куклы-болванчика, ссылающейся на несуществующего изготовителя;

■ удаление изготовителя, на которого ссылаются одна или несколько записей о куклах-болванчиках (если такую запись удалить, вы останетесь с куклой, ссылающейся на несуществующего изготовителя);

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

 

 

Примечание

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

 

 

Наряду с этими ограничениями программа Access также не разрешит удалить таблицу, участвующую в связи. Нужно сначала удалить связь (используя окно Работа со связями), а

затем — таблицу.

 

 

Пропущенные значения в несвязанных записях

Важно понимать, что есть одна операция, которую вы можете выполнить, не нарушая цело­стности данных: создание записи о кукле, не ссылающейся ни на какого изготовителя. Это произойдет, если поле ManufacturerlD останется пустым (педанты БД называют такое зна­чение неопределенным (null value)). Единственная причина, по которой это поле может ос­таться пустым, — отсутствие записи об изготовителе в БД или отсутствие приемлемой ин­формации. Может быть, кукла-болванчик была создана не каким-то изготовителем, а высокоразвитой инопланетной цивилизацией и оставлена на этой планете для изучения вами.

Если эта лазейка из пропущенных значений вас нервирует, ее можно устранить. Просто задайте в таблице Dolls свойство поля Обязательное для ноля ManufacturerlD. Эта установка


обеспечит каждую куклу-болванчика в вашей таблице Dolls законным изготовителем. Подобный прием важен, если связанная информация обязательна. Торгующая компания не сможет поместить заказ или создать счет без ссылки на клиента, сделавшего заказ.

 

 

Часто задаваемый вопрос.

Отключение обеспечения целостности данных

Бывают ли такие ситуации, когда не следует требовать целостности на уровне ссылок?

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

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

Рассмотрим очень успешную компанию, торгующую выпечкой на шести площадках. Когда клиент делает заказ на площадке в центре города, вы добавляете запись в таблицу Orders и заполняете поле CustomerlD (код клиента) (которое ссылается на полную запись в таблице Customers). Вот тут-то и возникает проблема. Полной записи о клиен­те может не быть в вашей копии БД — вместо этого она может храниться в одной из БД на другой площадке или в главном управлении компании. Несмотря на то, что связь в таблице Orders правильная, программа Access считает, что вы допустили ошибку, по­скольку она не может найти соответствующую запись о клиенте.

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

 

 

Каскадное удаление

 

Правила целостности решительно останавливают вас при попытке удалить родительскую запись (такую как сведения об изготовителе), на которую ссылаются дочерние записи. Но есть и другой вариант — гораздо более радикальный. Вы можете выбрать удаление всех свя­занных дочерних записей при удалении записи-родителя. Например, это позволит вам уда­лить изготовителя и ликвидировать всех кукол, произведенных им.

 

Предупреждение

Каскадные удаления рискованны. Слишком легко удалить больше записей, чем было намече­но, а если это сделать — пути назад нет. Еще хуже то, что команда Отменить (Undo) не смо­жет вам помочь отменить это изменение. Поэтому действуйте с осторожностью.

 

Для включения этого варианта при создании связи вы должны установить флажок каскадное удаление связанных записей (Cascade Delete Related Records) (см. рис. 5.4). Обно­вить связь можно и позже, установив данный флажок.


После установки этого флажка режим можно опробовать, удалив изготовителя, как по­казано на рис. 5.6.

 

 
 

Рис. 5.6. В данном примере отношение Dolls—Manufacturers использует установленный флажок каскадное удаление связанных записей. Когда удаляется изготовитель, программа Access предупреждает о том, что в действительности вы удалите девять записей

 

 

Для тех, кто понимает.



Поделиться:


Последнее изменение этой страницы: 2016-08-14; просмотров: 194; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.131.110.169 (0.009 с.)