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

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

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

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

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

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

 

 

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

 

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

 

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

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

 

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


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

 

 
 

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

 

 

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



php"; ?>