Пользуйтесь каскадным удалением с осторожностью

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

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

Каскадные обновления

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

В БД кукол-болванчиков каскадное обновление позволяет изменить ID одного из изгото­вителей. Как только вы изменили ID, Access автоматически включает новое значение в поле ManufacturerIDвсех связанных записей таблицы Dolls.Без каскадного обновления вы не сможете изменить ID изготовителя, если есть связанные с этим значением записи о куклах.

Каскадные обновления безопаснее каскадных удалений, но они редко нужны. Поскольку, если вы следуете правилам хорошего проектирования БД, выустанавливаете связь, используя

столбец ID с типом данных Счетчик (см. разд. "Счетчик" главы 2). Программа Access не разрешает корректировать значение типа Счетчик, и каскадное обновление вам никогда не понадобится. (Счетчик однозначно идентифицирует запись и не связан ни с каким реаль­ным объектом.)

С другой стороны, каскадные обновления очень пригодятся, если вы работаете с табли­цей, в которой не предусмотрено применение для связи значений Счетчик. Если таблицы Dolls и Manufacturers связаны именем изготовителя, вам нужны каскадные обновления — они гарантируют согласование значений дочерних записей при изменении имени изготови­теля. Каскадные обновления также полезны, если записи связываются с помощью номера социального обеспечения, шифра компонента, серийного номера или других кодов, которые не генерируются автоматически и могут быть объектами корректировок.

Переходы в отношении

 
  Пользуйтесь каскадным удалением с осторожностью - student2.ru

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

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

Рис. 5.7. Хотите узнать, какие у вас есть куклы от MagicPlastic? Просто щелкните кнопкой мыши квадратик со знаком "плюс" (обведенный)

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

 
  Пользуйтесь каскадным удалением с осторожностью - student2.ru

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

Примечание

Вы можете открыть одновременно столько подтаблиц, сколько захотите. Единственное огра­ничение — записи подтаблицы не выводятся при печати листа данных (см. разд. "Печать листа данных" главы 3).

 
  Пользуйтесь каскадным удалением с осторожностью - student2.ru

Рис. 5.9. Когда программа Access не знает, какую таблицу использовать как подтаблицу, она разрешает вам выбрать ее из списка всех ваших таблиц. В данном случае только два варианта имеют смысл. Выберите Ordersдля того, чтобы увидеть заказы клиентов, или Invoicesдля того, чтобы вывести счета клиентов. Когда в списке выбрана нужная таблица, Access автоматически заполняет связанными полями области в нижней части окна. Теперь для продолжения можно щелкнуть мышью кнопку ОК

Таблица-родитель может быть связана с несколькими таблицами-потомками. В этом случае программа Access предоставляет возможность выбора таблицы, которую вы хотите использовать, щелкнув кнопкой мыши квадратик со знаком "плюс". Допустим, вы создали таблицу Customers,которая связана с таблицей-потомком с заказами клиентов (Orders)и с таблицей, содержащей сведения о счетах (Invoices).Когда вы щелкаете кнопкой мыши квадратик со знаком "плюс", программа Access не знает, какую таблицу выбрать, поэтому ' она спрашивает вас (рис. 5.9).

Примечание

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

 
  Пользуйтесь каскадным удалением с осторожностью - student2.ru

Когда вы создадите более детально проработанные БД, то обнаружите, что ваши таблицы связаны друг с другом цепочкой связей. Одна таблица-родитель может быть связана с таб­лицей-потомком, которая сама служит родителем для другой таблицы, и т. д. Это сложность не тревожит программу Access — она разрешает вам перемещаться по всей цепочке отноше­ний (рис. 5.10).

Рис. 5.10. Здесь показаны две действующие связи. Таблица Customers — родитель для таблицы Orders (в которой перечислены все заказы, сделанные клиентом). Таблица Orders — родитель для таблицы OrderDetails (в которой приведены конкретные компоненты каждого заказа). Переходя от уровня к уровню, можно увидеть, что именно купил каждый клиент

Наши рекомендации