Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Целостность на уровне ссылокСодержание книги
Поиск на нашем сайте
Теперь, когда вы собрались определять связи, самое время узнать, какие преимущества вы приобретаете. Как и в реальном мире, отношения налагают некоторые ограничения. В мире БД эти правила называются целостностью данных на уровне ссылок. Все вместе они гарантируют постоянную непротиворечивость связанных данных.
Примечание Целостность на уровне ссылок вступает в действие, только если у вашей связи установлен флажок Обеспечение целостности данных (см. рис. 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; просмотров: 235; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.142.198.108 (0.01 с.) |