Приложению microsoft access не удается создать отношение с обеспечением целостности данных
Целостность данных означает систему правил, используемых в Microsoft Access для поддержания связей между записями в связанных таблицах, а также обеспечивает защиту от случайного удаления или изменения связанных данных. Установить целостность данных можно, если выполнены следующие условия.
Связанное поле главной таблицы является ключевым полем или имеет уникальный индекс.
Связанные поля имеют один тип данных. Здесь существует два исключения. Поле счетчика может быть связано с числовым полем, если в последнем в свойстве Размер поля (FieldSize) указано значение "Длинное целое". А также поле счетчика можно связать с числовым полем, если и в обеих ячейках свойства Размер поля (FieldSize) задано значение "Код репликации".
Обе таблицы принадлежат одной базе данных Microsoft Access. Если таблицы являются связанными, то они должны быть таблицами Microsoft Access. Для установки целостности данных база данных, в которой находятся таблицы, должна быть открыта. Для связанных таблиц из баз данных других форматов установить целостность данных невозможно.
Установив целостность данных, необходимо следовать следующим правилам.
Невозможно ввести в поле внешнего ключа связанной таблицы значение, не содержащееся в ключевом поле главной таблицы. Однако в поле внешнего ключа возможен ввод пустых значений, показывающих, что записи не являются связанными. Например, нельзя сохранить запись, регистрирующую заказ, сделанный несуществующим клиентом, но можно создать запись для заказа, который пока не отнесен ни к одному из клиентов, если ввести пустое значение в поле "КодКлиента".
Не допускается удаление записи из главной таблицы, если существуют связанные с ней записи в подчиненной таблице. Например, невозможно удалить запись из таблицы "Сотрудники", если в таблице "Заказы" имеются заказы, относящиеся к данному сотруднику.
Невозможно изменить значение ключевого поля в главной таблице, если существуют записи, связанные с данной. Например, невозможно изменить код сотрудника в таблице "Сотрудники", если в таблице "Заказы" имеются заказы, относящиеся к этому сотруднику.
Чтобы наложить эти правила на конкретную связь, при ее создании следует установить флажок Обеспечение целостности данных. Если данный флажок установлен, то любая попытка выполнить действие, нарушающее одно из перечисленных выше правил, приведет к выводу на экран предупреждения, а само действие выполнено не будет. Вы можете также наложить условия целостности на уже созданную связь или удалить связь. Для этого кликните правой клавишей мышки на линии связи, Вы сможете выбрать команду Удалить или Изменить связь в появившемся контекстном меню.
Чтобы преодолеть ограничения на удаление или изменение связанных записей, сохраняя при этом целостность данных, следует установить флажки Каскадное обновление связанных полей и Каскадное удаление связанных полей. Если установлен флажок Каскадное обновление связанных полей, то при изменении ключевого поля главной таблицы автоматически изменяются и соответствующие значения связанных записей. Если установлен флажок Каскадное удаление связанных полей, то при удалении записи в главной таблице удаляются и все связанные записи в подчиненной таблице.
В Microsoft Access обеспечивается возможность автоматической проверки целостности данных в связанных полях. Целостность даных означает систему правил, используемых для поддержания связей между записями в связанных таблицах, а также для обеспечения защиты от случайного удаления или изменения связанных данных. Установить проверку целостности данных можно, если выполнены следующие условия:
- связанное поле главной таблицы является ключевым полем или имеет уникальный индекс;
- связанные поля имеют один тип данных. Здесь существует два исключения. Поле счетчика может быть связано с числовым полем, если в последнем поле в свойстве Размер поля (FieldSize) указано значение Длинное целое (Long Integer), или в обоих полях свойство Размер поля (FieldSize) имеет значение Код репликации (Replication ID);
- обе таблицы принадлежат одной базе данных Microsoft Access.
Таблицы одного приложения могут содержаться и в нескольких файлах базы данных (см. также гл. 3).
Чтобы обеспечить целостность, работа с данными должна производиться с учетом нижеперечисленных правил.
- Невозможно ввести в связанное поле подчиненной таблицы значение, отсутствующее в связанном поле главной таблицы. Однако можно ввести пустое значение, показывающее, что для данной записи связь отсутствует.
- Не допускается удаление записи из главной таблицы, если существуют связанные с ней записи в подчиненной таблице.
- Невозможно изменить значение ключевого поля в главной таблице, если существуют записи, связанные с данной таблицей.
Чтобы эти правила контролировались для конкретной связи, при ее создании следует установить флажок Обеспечение целостности данных (Enforce Referential Integrity). Тогда любая попытка выполнить действие, нарушающее одно из перечисленных выше правил, приведет к выводу на экран предупреждения, а само действие выполнено не будет.
Чтобы преодолеть ограничения на удаление или изменение связанных записей, сохраняя при этом целостность данных, следует установить флажки каскадное обновление связанных полей (Cascade Update Related Fields) и каскадное удаление связанных записей (Cascade Delete Related Records). Если установлен флажок каскадное обновление связанных полей (Cascade Update Related Fields), то при изменении ключевого поля главной таблицы автоматически будут изменены и соответствующие значения поля связанных записей. Если установлен флажок каскадное удаление связанных записей (Cascade Delete Related Records), то при удалении записи в главной таблице удаляются и все связанные записи в подчиненной таблице.
Темы: схема данных в Access, модификация структуры базы данных.
Структура реляционной базы данных в Access задается схемой данных, которая имеет иерархическую структуру и называется канонической реляционной моделью предметной области.
Схема данных графически отображается в отдельном окне, где таблицы представлены списками полей, а связи — линиями между полями разных таблиц.
При построении схемы данных Access автоматически определяет по выбранному полю тип связи между таблицами. Если поле, по которому нужно установить связь, является уникальным ключом как в главной таблице, так и в подчиненной, Access устанавливает связь «один к одному». Если поле связи является уникальным ключом в главной таблице, а в подчиненной таблице является не ключевым или входит в составной ключ, Access устанавливает связь «один ко многим» от главной таблицы к подчиненной.
Кроме указанных типов связей в Access существуют связи-объединения, обеспечивающие объединение записей таблиц не по ключевому полю, а в следующих случаях:
• связываемые записи в обеих таблицах совпадают (связи устанавливаются по умолчанию);
• для всех записей первой таблицы, для которых отсутствуют связи со второй, устанавливают связи с пустой записью второй таблицы;
• для всех записей второй таблицы, для которых отсутствуют связи с первой, устанавливают связи с пустой записью первой таблицы.
При создании схемы данных пользователь включает в нее таблицы и устанавливает связи между таблицами. Причем для связей типа «один к одному» и «один ко многим» можно задать параметр обеспечение целостности данных, а также автоматическое каскадное обновление и удаление связанных записей. Обеспечение целостности данных означает выполнение для взаимосвязанных таблиц следующих условий корректировки базы данных:
• в подчиненную таблицу не может быть добавлена запись, для которой не существует в главной таблице ключа связи;
• в главной таблице нельзя удалить запись, если не удалены связанные с ней записи в подчиненной таблице,
• значения ключа связи главной таблицы должно приводить к изменению соответствующих значений в записях подчиненной таблицы,
Отметим, что установление между двумя таблицами связи типа «один к одному» или «один ко многим» и задание параметров целостности данных возможно только при следующих условиях:
• связываемые поля имеют одинаковый тип данных, причем имена полей могут быть различными;
• обе таблицы сохраняются в одной базе данных Access;
• главная таблица связывается с подчиненной по первичному простому или составному ключу (уникальному индексу) глав ной таблицы.
Если для выбранной связи обеспечивается поддержание целостности, то можно задать режим каскадного обновления и удаления связанных записей. В режиме каскадного обновления связанных записей при изменении значения в поле связи главной таблицы Access автоматически изменит значения в соответствующем поле в подчиненных записях.
В режиме каскадного удаления связанных записей при удалении записи из главной таблицы Access выполняет каскадное удаление подчиненных записей на всех уровнях.
В данном разделе вы узнаете, как создать и удалить связи между таблицами, как включить режим обеспечения целостности данных и как просмотреть дочерние записи при редактировании родительской таблицы.
Прежде чем приступить к настройке связей, следует отметить, что для установки связи между таблицами используются общие поля этих таблиц. Вторичный ключ дочерней таблицы содержит значения первичного ключа родительской таблицы, и таким образом запись дочерней таблицы ссылается на одну из записей родительской таблицы.
Просмотр, создание, редактирование и удаление связей осуществляются на схеме данных (рис. 2.21). Чтобы открыть схему данных, нажмите кнопку Схема данных на вкладке Работа с базами данных .
Рис. 2.21. Схема данных
Итак, начнем с рассмотрения процедуры создания связи.
Если вы хотите создать связь между двумя таблицами, выполните следующие действия.
1. Перед созданием связи обе связываемые таблицы должны отображаться на схеме данных. Если таблица отсутствует на схеме данных, ее требуется вначале добавить. Для этого нажмите кнопку Отобразить таблицу на вкладке Конструктор . Затем в появившемся окне Добавление таблицы щелкните кнопкой мыши на названии таблицы и нажмите кнопку Добавить . После добавления всех нужных таблиц нажмите кнопку Закрыть .
2. Щелкните кнопкой мыши на названии поля, которое является первичным ключом в родительской таблице. Удерживая нажатой кнопку мыши, перетащите поле первичного ключа, наведите указатель на название того поля дочерней таблицы, которое должно стать вторичным ключом (при этом в изображении указателя появится знак +), и отпустите кнопку мыши.
3. На экране появится окно Изменение связей (рис. 2.22). В этом окне указаны названия связываемых полей. Убедитесь, что поля для создания связи выбраны верно. В случае обнаружения ошибки выберите другие поля.
Рис. 2.22. Окно Изменение связей
4. Выберите режим обеспечения целостности данных (об этом режиме подробно будет рассказано в следующем подразделе). Рекомендуется установить флажок Обеспечение целостности данных . Затем нажмите кнопку Создать .
5. Сохраните изменения схемы данных, нажав комбинацию клавиш Ctrl+S .
Далее будет описано, как включить режим обеспечения целостности данных при создании или изменении связи.
Обеспечение целостности данных
Целостностью данных в Microsoft Access называется ссылочная целостность – состояние отдельной связи или всей базы данных, при котором отсутствуют некорректные ссылки. Иными словами, целостность данных означает, что в дочерней таблице нет записей, ссылающихся «в никуда», вторичный ключ каждой записи содержит значение, существующее в столбце первичного ключа родительской таблицы.
Целостность данных может нарушиться в следующих ситуациях:
• в дочернюю таблицу добавляется новая запись, содержащая некорректное (отсутствующее в первичном ключе родительской таблицы) значение вторичного ключа, или в существующей записи дочерней таблицы значение вторичного ключа изменяется на некорректное;
• из родительской таблицы удаляется запись, в результате чего ссылки на эту запись становятся некорректными;
• в родительской записи изменяется значение первичного ключа, следовательно, ссылки на эту запись также становятся некорректными.
Исключить все эти ситуации позволяет режим автоматического обеспечения целостности данных. Этот режим включается отдельно для каждой связи в окне Изменение связи (см. рис. 2.22). Если установить флажок Обеспечение целостности данных , программа Access не допустит выполнения операций, ведущих к нарушению ссылочной целостности. Так, запрещается:
• сохранение записи с некорректным значением вторичного ключа;
• удаление родительской записи, если для связи не установлен флажок каскадное удаление связанных записей ; либо вместе с родительской записью автоматически удаляются дочерние записи, если флажок каскадное удаление связанных записей установлен;
• изменение значения первичного ключа родительской записи, если для связи не установлен флажок каскадное обновление связанных полей ; либо при изменении значения первичного ключа в родительской записи автоматически меняются значения вторичного ключа в дочерних записях, если флажок каскадное обновление связанных полей установлен.
Если вторичный ключ дочерней таблицы содержит некорректные значения, то включить режим обеспечения целостности невозможно: необходимо вначале удалить или изменить значения, нарушающие целостность данных.
После того как режим обеспечения целостности данных включен, над линией связи в схеме данных появляется символ 1 возле родительской таблицы и символ ? возле дочерней таблицы (см. рис. 2.21). Благодаря этим подписям вы сразу увидите, что для данной записи поддерживается целостность данных.
Продолжим изучение операций, выполняемых со связями, и перейдем теперь к редактированию существующих связей.
Если вам необходимо изменить свойства связи, например режим обеспечения целостности данных для связи, дважды щелкните кнопкой мыши на линии связи в схеме данных.
На экране появится окно Изменение связей (см. рис. 2.22). В этом окне выполните необходимые изменения и нажмите кнопку ОК .
В следующем подразделе рассказывается, как удалить ненужную или ошибочно созданную связь между таблицами.
Чтобы удалить связь, щелкните кнопкой мыши на линии связи в схеме данных (линия при этом станет жирной) и нажмите клавишу Delete . На появившейся панели подтвердите необходимость удаления связи, нажав кнопку Да .
На этом заканчивается рассмотрение операций со связями. Последний подраздел этого раздела посвящен просмотру дочерних записей при работе с родительской таблицей.
Отображение дочерних записей
Итак, если между таблицами создана связь, то, открыв родительскую таблицу в режиме таблицы, вы сможете просматривать и записи дочерней таблицы.
Чтобы увидеть записи, ссылающиеся на данную родительскую запись, нажмите знак + слева от записи. Откроется подтаблица, содержащая дочерние записи (рис. 2.23).
Если таблица имеет несколько дочерних таблиц, то вы можете выбрать ту из них, которая будет отображаться в виде подтаблицы.
• Если подтаблица уже была выбрана, но вы хотите выбрать другую дочернюю таблицу в качестве подтаблицы, выполните следующие действия.
1) Перейдите в режим конструктора (кнопка Режим вкладки Главная ).
Рис. 2.23. Просмотр дочерних записей
3) В появившемся окне свойств (рис. 2.24) щелкните кнопкой мыши на значении свойства Имя подтаблицы . Справа от значения свойства появится кнопка
4) Нажмите эту кнопку и выберите из списка название дочерней таблицы, записи которой будут отображаться в подтаблице.
5) Сохраните изменения, нажав сочетание клавиш Ctrl+S .
6) Вернитесь в режим таблицы (нажмите кнопку Режим на вкладке Главная или Конструктор ).
Теперь при нажатии знака + будут отображаться записи выбранной вами подтаблицы.
Настроив связи между таблицами, вы завершили создание структуры базы данных. Последним аспектом работы с таблицами, о котором будет рассказано, станет просмотр данных в режиме таблицы.
Рис. 2.24. Выбор подтаблицы
Данный текст является ознакомительным фрагментом.
Продолжение на ЛитРес
Стереотипы связей
Стереотипы связей Связь может иметь некоторые стереотипы, которые записываются рядом с одним из ее концов и указывают на особенность реализации данной связи. В языке UML для этой цели могут использоваться следующие стереотипы: • «association» – ассоциация (предполагается по
5.4. Настройка связей типов файлов с приложениями
5.4. Настройка связей типов файлов с приложениями Настройка программ по умолчаниюДля смены программ, устанавливаемых для определенных типов файлов по умолчанию, в Windows Vista используется специальное окно Программы по умолчанию (рис. 5.11), которое можно открыть с помощью меню
6.1.4. Работа с таблицами
6.1.4. Работа с таблицами Думаю, не нужно говорить о важности таблиц в современных документах. Ведь таблица считается одним из самых эффективных способов представления данных. Для работы с таблицами используются команды меню Таблица. Изучите это меню: оно содержит все
Работа с таблицами
Работа с таблицами Хотя в большинстве случаев при изучении верстки и макетирования мы делаем акцент в сторону «высокохудожественной» верстки, некоторые чисто технические знания вам все же понадобятся. Как бы ни хотелось вам заниматься исключительно разработкой
2.3. Работа с таблицами
2.3. Работа с таблицами В этом разделе вы узнаете, как создать, изменить и удалить таблицу, как просмотреть информацию о ней и список всех таблиц в текущей базе данных. Начнем с наиболее сложной команды – создания таблицы.Создание таблицыЧтобы создать таблицу, выполните
15.4. Работа с таблицами
15.4. Работа с таблицами Для работы с таблицами предназначено меню Таблица, содержащее все необходимые команды: добавление и удаление строк и столбцов таблицы, объединение, разъединение ячеек и т. д.Начнем с самого начала — создадим небольшую таблицу. Для этого выполните
Организация связей между таблицами
Организация связей между таблицами Исходные таблицы в Access представляют собой обычные плоские таблицы Конечно, они не позволяют формировать иерархические информационные структуры; для данной цели используется аппарат связей между таблицами. Access 2002 дает возможность
12.7. Многотабличные базы данных. Отношения между таблицами
12.7. Многотабличные базы данных. Отношения между таблицами Реляционные базы данных состоят из нескольких таблиц, связь между которыми устанавливается с помощью совпадающих полей. Каждая запись в таблицах идентифицирует один объект. Отношение между объектами определяет
3.3. Работа с таблицами
3.3. Работа с таблицами Для работы с таблицами предназначено меню Таблица, содержащее все необходимые команды: добавление и удаление строк и столбцов таблицы, объединение, разъединение ячеек и т. д.Начнем с самого начала — создадим небольшую таблицу. Для этого выполните
Урок 7.4. Проектирование базы данных. Создание связей между таблицами
Урок 7.4. Проектирование базы данных. Создание связей между таблицами Связи между таблицами Современные базы данных обычно состоят из многих таблиц, связанных между собой. В реляционной теории баз данных выделяют несколько типов связей между таблицами, однако чаще всего
Связи между таблицами
Связи между таблицами Современные базы данных обычно состоят из многих таблиц, связанных между собой. В реляционной теории баз данных выделяют несколько типов связей между таблицами, однако чаще всего используется тип связи «один-ко-многим». Например, в базе данных
Порядок создания связей
Порядок создания связей В подавляющем большинстве случаев в базах данных используются связи типа «один-ко-многим». Для создания такой связи в Access можно использовать следующий алгоритм.1. Сначала создайте таблицу, которая участвует в связи на стороне «один».2. В процессе
Практическая работа 56. Создание связей между таблицами
Практическая работа 56. Создание связей между таблицами Задание. Создать в среде Access 2007 базу данных из трех связанных таблиц согласно разработанному в этом уроке проекту.Эта работа будет объемной, поэтому ее выполнение будет разделено на несколько
Настройка параметров связей
Настройка параметров связей 1. Закройте все ранее открытые вкладки таблиц.2. На ленте откройте вкладку Работа с базами данных и нажмите кнопку Схема данных в группе Показать или скрыть. В появившемся окне вы должны увидеть таблицы базы данных и линии связи между ними. Если
Прежде чем узнать зачем используется свойство целостности данных, давайте выясним, что понимается под этим определением.
Целостность данных — это термин, который часто используется в информатике. Он означает, что имеющиеся данные полны и условия по обеспечению их безопасности полностью соблюдены. А это значит, что с информацией никаких изменений ни под каким предлогом не производилось. Другими словами, целостность данных — это специальное их свойство, которое своим выполнением обеспечивает данным определенный вид и надлежащее качество.
Зачем используется свойство обеспечения целостности данных
Свойства обеспечения целостности данных, допустим в Microsoft Access — это свод определенных правил, которые используются для поддержки постоянных связей между записями в связанных таблицах базы данных. Также этот свод правил гарантирует отсутствие случайного удаления данных или неправомерное изменение их связей.
Если применять свойство обеспечения целостности данных на практике, то это будет означать:
- Отсутствие возможности корректировки значения связанного поля в подчиненной таблице, если данное значение отсутствует в связанном поле главной таблицы. Например, нет возможности создать запись для регистрации книги, которую написал несуществующий автор — такую запись можно создать только в том случае, если в поле «автор» ввести значение «NULL», означающее, что книга пока не принадлежит никому из авторов.
- Нет возможности удалить какую-либо запись из главной таблицы, если с этой записью существует хоть какая-то связь с записями подчиненной таблицы. Например, нет возможности уничтожить запись из таблицы «Издательский дом», если в другой таблице «Книги» есть книги, которые выпустило именно это издательство.
- Нет возможности поменять значение ключевого поля главенствующей таблицы, пока в ней есть записи, имеющие связь с подчиненной таблицей. Например, нет возможности откорректировать ID писателя в таблице «Авторы», пока в другой таблице «Книги» есть записи о трудах этого писателя.
На практике это означает, что любая попытка нарушить описанные выше правила не будет выполнена, но обязательно выведется предупреждение о том, что нарушено определенное правило.
Обеспечение целостности данных, если рассматривать на примере Access - это достаточно мощный инструмент, обеспечивающий корректное сохранение информации в таблицах баз данных.
Заключение
Зачем используется свойство целостности данных в Microsoft Access? Это помогает сохранить данные с корректными связями между разными таблицами. В первую очередь это свойство помогает вам, чтобы вы случайно не удалили что-то лишнее и не спровоцировали дополнительные проблемы и хлопоты.
Разберем ситуацию на практике. К примеру, вы занимаетесь координацией грузоперевозок. Для этого вы создали несколько таблиц в базе данных, например «Грузоперевозчики» и «Заказы на перевозку». То есть большая вероятность, что один ваш грузоперевозчик своими несколькими машинами может обслуживать сразу несколько заказов из таблицы «Заказы на перевозку», то есть задействовано правило «один на несколько». Прошло какое-то время, вы хотите перестать сотрудничать с грузоперевозчиком и вам, соответственно, нужно удалить его из таблицы «Грузоперевозчики». Но если у этого грузоперевозчика есть активные заказы из таблицы «Заказы на перевозку», то они, в случае его удаления, станут «потерянными» записями, так как ID грузоперевозчика станет недействительным, потому что записи с этим ID больше не существует. А если таких записей много? А если таких грузоперевозчиков много? Тогда в ваших таблицах будет полнейший бардак. Но ситуацию выручает обеспечение целостности данных в Access. Данное свойство просто не даст вам удалить грузоперевозчика, пока у него есть активные заказы в другой таблице.
Читайте также: