Сохранение целостности данных в схемах модели базы данных
Важно: Данная статья переведена с помощью машинного перевода, см. Отказ от ответственности. Используйте английский вариант этой статьи, который находится здесь, в качестве справочного материала.
Предполагаемое действие:
- Понимание правил целостности данных
- Действия с наборами для обеспечения целостности данных
- Задание значения по умолчанию для столбца
- Отображение целостности данных с использованием нотации
Правила целостности ссылочных данных
Использование правил целостности данных предотвращает случайное нарушение соответствия между связанными столбцами.
Предположим, в базе данных «Книги» имеются две таблицы — «Названия» и «Авторы». У каждой книги есть только один автор, но каждый автор может иметь несколько книг — это называется связью «один-ко-многим». Таблица на стороне «один» называется родительская таблица. Таблица на стороне «многие» — дочерняя таблица.
Чтобы собрать сведения о каждой книге и ее авторе, в запросах используются ключи для связи каждой книги в таблице «Названия» с ее автором в таблице «Авторы». В родительской таблице («Авторы») должен быть первичный ключ, однозначно определяющий каждую строку. В таблице «Названия» должен быть столбец, содержащий значение «КодАвтора» для каждой книги. Этот столбец называется внешний ключ. Первичный ключ определяет каждого автора, а внешний ключ — книги, написанные этим автором.
Если значение «КодАвтора» в родительской таблице будет изменено, а его обновление в таблице «Названия» выполнено не будет, книги в таблице «Названия» будут отображены с неверным автором.
Вместо изменения значения «КодАвтора» в обеих таблицах можно установить правила целостности данных по выполнению нужных действий. Можно выбрать вариант, при котором в модели базы данных будут выполнены определенные действия в случае изменения или удаления ключа в родительской таблице.
Примечание: Термины родительской и дочерней используются для означает, что-то совсем в категории, которые создаются с фигурами родительской категориям, категории и категории к дочернему. Дополнительные сведения о категории отображается Определение категорий в схеме модели базы данных.
Установка действий для обеспечения целостности данных
- Дважды щелкните связь, для которой требуется установить действие.
- В окне «Свойства базы данных» в группе Категории выберите вариант Действие ссылочной целостности.
- Выберите действие, которое база данных должна выполнить с соответствующим значением в дочерней таблице:
- Без действия При изменении или удалении значения в первичном ключе родительской таблицы соответствующее значение во внешнем ключе дочерней таблицы остается без изменений.
- Каскад При изменении или удалении значения в первичном ключе родительской таблицы соответствующее значение во внешнем ключе дочерней таблицы изменяется или удаляется, чтобы совпадать с первичным ключом.
- Присвоить пустое значение При изменении или удалении значения в первичном ключе родительской таблицы соответствующее значение во внешнем ключе дочерней таблицы будет NULL.
- По умолчанию При изменении или удалении значения в первичном ключе родительской таблицы соответствующему значению во внешнем ключе дочерней таблицы будет задано значение по умолчанию.
- Не обеспечивать Это действие отключает правила целостности данных для этой связи.
Примечание: Если параметры Присвоить пустое значение и По умолчанию недоступны, вероятно, для связи выбран параметр «Необязательный» на вкладке Прочее окна «Свойства базы данных».
Задание значения по умолчанию для столбца
Чтобы воспользоваться действием По умолчанию, для столбца необходимо задать значение по умолчанию.
- Дважды щелкните таблицу в схеме, чтобы открыть окно «Свойства базы данных».
- В группе Категории выберите вариант Столбцы, выделите столбец, для которого требуется создать значение по умолчанию, а затем нажмите кнопку Изменить.
- На вкладке Определение диалогового окна Свойства столбца введите значение по умолчанию.
Отображение целостности данных с помощью нотации
Можно выбрать параметры документа, отображающие или скрывающие нотацию целостности данных рядом с линиями связи в модели.
Что означают буквы в нотации целостности данных
В нотации целостности данных связи отображаются двумя буквами, разделенными двоеточием, в виде: [выполненное действие в родительской таблице]:[результат в дочерней таблице]. Например, «d:C» означает удаление какого-либо элемента в родительской таблице, что приведет к каскадным изменениям в дочерней таблице.
Действия в родительской таблице обозначаются строчными буквами.
- u Данные в родительской таблице обновлены.
- Данные в родительской таблице d будут удалены.
Результаты в дочерней таблице обозначаются прописными буквами.
- R (без действия) Изменение дочерней таблицы не требуется.
- C (каскад) Повторение изменения в дочерней таблице.
- D (по умолчанию) Вставка значения по умолчанию, заданного ранее для этого столбца в дочерней таблице.
- N (присвоить пустое значение) Задание дочерней таблице значения NULL.
- (Пусто) Не следить за целостностью данных этой связи.
Примечание: Эти параметры оказывают влияние на действия в фактической базе данных, а не в модели. В модели, реконструированной из существующей базы данных, можно видеть, каким образом база данных разработана с учетом целостности данных. В модели, созданной с нуля, эти параметры можно использовать для описания функционирования моделируемой базы данных.
Отображение целостности данных
- В меню База данных выберите пункт Параметры, а затем — команду Документ.
- На вкладке Отношение в группе Показывать установите флажок Действия ссылочной целостности.
Примечание: Отказ от ответственности относительно машинного перевода. Данная статья была переведена с помощью компьютерной системы без участия человека. Microsoft предлагает эти машинные переводы, чтобы помочь пользователям, которые не знают английского языка, ознакомиться с материалами о продуктах, услугах и технологиях Microsoft. Поскольку статья была переведена с использованием машинного перевода, она может содержать лексические,синтаксические и грамматические ошибки.
Обеспечение целостности данных
В 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), то при удалении записи в главной таблице удаляются и все связанные записи в подчиненной таблице.
Как можно исправить обеспечение целостности данных?
У меня есть несколько таблиц и вот такая схема. Я внёс данные во все таблицы, кроме штатного расписания. При добавлении данных в штатное расписание, выдаёт ошибку о нарушение целостности данных и необходимости наличия связанной записи в таблицы «Отделы». Не могу понять чего не хватает. Ниже данные из табл. отделы(все данные вымысел). А это то, что пытаюсь внести в штатное расписание.
Отслеживать
задан 1 мая 2023 в 14:02
197 6 6 бронзовых знаков
1. Проверьте, что типы данных совпадают. Т.е., например, код отдела в обеих таблицах = целое. А то может случиться, что в одной таблице — целое, в другой — длинное целое. 2. Я бы рекомендовал первичный ключ сделать на поле [ID] типа counter , а связку [код отдела] + [название отдела] оформил как constraint . Это как минимум позволит избежать дублирования данных в двух таблицах. А лучше, КМК, и везде сделать так. Структура может измениться, а [ID] останется неизменным.
1 мая 2023 в 18:48
Не лишняя ли связь Отделы.НазваниеОтдела->ШтатноеРасписание.НазваниеОтдела? Да и само поле ШтатноеРасписание.НазваниеОтдела выглядит излишним. Если оно нужно «для истории» — связь не нужна.
Ошибка: Нарушение условий целостности
Нарушение условий целостности — MS Access
Не могу связать таблицы. Выходит ошибка:Нарушение условий целостности — MS Access. в таблице.
Связи между таблицами, нарушение целостности
Привет всем! Бьюсь уже который час.. Надо соединить Срок годности.Вид продукции с Продажи.Вид.
Нарушение целостности данных при установке связей между таблицами
не могу связать таблицы: — Выдаётся ошибка о нарушении целостности данных. Не пойму в чём причина.
26806 / 14485 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
Катюша22, в сообщении об ошибке прямо сказано о причине ошибки: в связанной таблице есть записи, отсутствующие в главной.
Видимо, вы хотите на схеме данных создать связь между таблицами с обеспечением целостности данных. Предположим, что главная таблица это Группа, а подчиненная Студенты, в которой есть поле номера группы. И вот в этом поле номера группы таблицы Студенты, есть такие номера групп, которых нет в таблице Группы. В этом случае акцесс будет активно сопротивляться обеспечению полноценной связи между таблицами. С его точки зрения условия целостности нарушены. И он прав. Надо поискать в связанной таблице значения поля связи, которых нет в главной и исправить их на имеющиеся. Или в главной таблице добавить недостающие значения.