Как исправить отношение один к многим

Отношение в Access позволяет объединить данные из двух разных таблиц. Каждое отношение состоит из двух полей (по одному в каждой таблице) со связанными данными. Например, таблицы «Товары» и «Сведения о заказах» могут содержать поле «КодТовара». Каждая запись в таблице «Сведения о заказах» содержит значение поля «КодТовара», которому соответствует запись в таблице «Товары» с тем же значением в данном поле.

При помощи отношений между связанными таблицами приложение Access определяет, какие записи из каждой таблицы поместить в набор результатов запроса. Отношение также позволяет избежать потери данных, препятствуя исключению удаленных данных из синхронизации. Это называется целостностью данных.

Перед началом работы с отношениями изучите основные понятия. Дополнительные сведения о см. в статьях Руководство по связям между таблицами и Начало работы со связями между таблицами.

В этой статье

  • Обзор

  • Создание отношения между таблицами с помощью окна отношений

  • Создание отношения между таблицами с помощью панели списка полей

  • Изменение отношения

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

  • Удаление отношения между таблицами

  • Создание, изменение и удаление отношения в веб-приложении

  • Создание или изменение отношения в веб-базе данных Access 2010

Обзор

Чтобы создать отношение в базе данных Access, можно воспользоваться одним из указанных ниже методов.

  • В окне «Схема данных» добавьте таблицы, которые требуется связать, а затем перетащите нужное поле из одной таблицы в другую.

  • Перетащите поле в таблицу из области Список полей.

При создании отношения между таблицами общие поля могут называться по-разному, однако часто требуется, чтобы эти имена совпадали. Очевидно, что общие поля должны иметь одинаковый тип данных. Однако если поле первичного ключа имеет тип «Счетчик», поле внешнего ключа также может быть числовым, если свойство Размер поля (FieldSize) обоих полей совпадает. Например, можно сопоставить поля с типами «Счетчик» и «Числовой», если свойство Размер поля обоих полей имеет значение «Длинное целое». Если оба общих поля являются числовыми, у них должно совпадать значение свойства Размер поля.

К началу страницы

Создание отношения между таблицами с помощью окна отношений

  1. На вкладке Работа с базами данных в группе Отношения выберите элемент Схема данных.

  2. На вкладке Конструктор в группе Связи нажмите наДобавление таблиц (илиДобавление таблицы в Access 2013).

  3. Выберите одну или несколько таблиц или запросов и нажмите кнопку Добавить. После добавления таблиц и запросов на вкладку «Схема данных» нажмите кнопку Закрыть.

  4. Перетащите поле (как правило, поле первичного ключа) из одной таблицы на общее поле (поле внешнего ключа) в другой таблице. Чтобы перетащить сразу несколько полей, нажмите и удерживайте клавишу CTRL, нажмите каждое поле и перетащите выделенные поля.

    Откроется диалоговое окно Изменение связей.
    Диалоговое окно "Изменение связей"

  5. Убедитесь, что имена общих полей отношения отображаются правильно. Если имя поля неправильное, щелкните его и выберите нужное поле из списка.

    Чтобы обеспечить целостность данных для этой связи, установите флажок Обеспечение целостности данных. Дополнительные сведения о целостности данных см. в разделе Обеспечение целостности данных.

  6. Нажмите кнопку Создать.

    Будет нарисована линия связи между двумя таблицами. Если установлен флажок Обеспечение целостности данных, концы линии выглядят утолщенными. Кроме того, если установлен флажок Обеспечение целостности данных, над утолщенной частью на одном конце линии связи будет отображаться цифра 1, а на другом — символ бесконечности (), как показано на рисунке ниже.

    Перетаскивание поля из одной таблицы на соответствующее поле другой таблицы

    Примечания: 

    • Создание связи «один-к-одному»    Оба общих поля (как правило, поля первичного ключа и внешнего ключа) должны иметь уникальный индекс. Это означает, что свойство Индексированное этих полей должно иметь значение Да (Совпадения не допускаются). Если оба поля имеют уникальный индекс, в Access будет создано отношение «один-к-одному».

    • Создание отношения «один-ко-многим».    Поле на стороне «один» (как правило, первичный ключ) отношения должно иметь уникальный индекс. Это значит, что свойство Индексированное поле должно иметь значение Да (Совпадения не допускаются). Поле на стороне «многие» не должно иметь уникального индекса. Это поле может быть индексированным, но для него должны допускаться повторы. Это означает, что свойство Индексированное поле должно иметь значение Нет или Да (Допускаются совпадения). Когда у одного поля однозначный индекс, а у другого — нет, в приложении Access создается отношение «один-ко-многим».

К началу страницы

Создание отношения между таблицами с помощью панели списка полей

Добавить поле в существующую таблицу, открытую в режиме таблицы, можно путем перетаскивания этого поля из области Список полей. В области Список полей отображаются доступные поля из связанных таблиц, а также из других таблиц базы данных.

При перетаскивании поля из «другой» (несвязанной) таблицы и выполнении инструкций мастера подстановок между таблицей из области Список полей и таблицей, в которую перетаскивается поле, автоматически создается новое отношение «один-ко-многим». Это отношение, созданное Access, не обеспечивает целостность данных по умолчанию. Чтобы обеспечить целостность данных, нужно изменить отношение. Дополнительные сведения см. в разделе Изменение отношения.

Открытие таблицы в режиме таблицы

  • Дважды щелкните таблицу в области навигации.

Открытие области «Список полей»

  • Нажмите клавиши ALT+F8. Будет отображена область Список полей.

    Область ''Список полей''

В области Список полей отображены все другие таблицы базы данных, сгруппированные по категориям. При работе с таблицей в режиме таблицы в области Список полей отображаются поля в одной из двух категорий: Доступные поля в связанной таблице и Доступные поля в другой таблице. К первой категории относятся все таблицы, связанные отношением с текущей таблицей. Во второй категории перечислены все таблицы, с которыми данная таблица не связана отношением.

Чтобы просмотреть список всех полей таблицы, щелкните знак плюс (+) рядом с именем таблицы в области Список полей. Чтобы добавить поле в таблицу, перетащите его из области Список полей в таблицу в режиме таблицы.

Добавление поля и создание связи из области «Список полей»

  1. Открыв таблицу в режиме таблицы, нажмите клавиши ALT+F8. Будет отображена область Список полей.

  2. Чтобы отобразить список полей в таблице, в группе Доступные поля в другой таблице щелкните знак плюс (+) рядом с именем таблицы.

  3. Перетащите нужное поле из области Список полей в таблицу, открытую в режиме таблицы.

  4. Когда появится линия вставки, поместите поле в выбранное место.

    Появится окно мастера подстановок.

  5. Следуйте инструкциям мастера подстановок.

    Поле будет отображено в таблице в режиме таблицы.

При перетаскивании поля из «другой» (несвязанной) таблицы и выполнении инструкций мастера подстановок между таблицей из области Список полей и таблицей, в которую было перетаскивается поле, автоматически создается новое отношение «один-ко-многим». Это отношение, созданное Access, не обеспечивает целостность данных по умолчанию. Чтобы обеспечить целостность данных, нужно изменить отношение. Дополнительные сведения см. в разделе Изменение отношения.

К началу страницы

Изменение отношения

Чтобы изменить отношение, выберите его в окне «Схема данных» и внесите нужные изменения.

  1. Установите указатель на линию связи и щелкните линию, чтобы выделить ее.

    При выделении линия связи становится толще.

  2. Дважды щелкните выделенную линию связи

    ИЛИ

    на вкладке Конструктор в группе Сервис выберите команду Изменить связи.

Откроется диалоговое окно Изменение связей.

Открытие диалогового окна «Изменение связей»

  1. На вкладке Работа с базами данных в группе Отношения выберите элемент Схема данных.

  2. На вкладке Конструктор в группе Связи нажмите кнопку Все связи.

    Будут отображены все таблицы с отношениями, а также соответствующие линии связи. Обратите внимание на то, что скрытые таблицы (таблицы, для которых установлен флажок скрытый в диалоговом окне Свойства) и их отношения не отображаются, если в диалоговом окне Параметры переходов не выбран параметр «Показывать скрытые объекты».

  3. Щелкните линию отношения, которое вы хотите изменить. При выделении линия связи становится толще.

  4. Дважды щелкните линию связи.

    ИЛИ

    На вкладке Конструктор в группе Сервис выберите команду Изменить связи.

    Откроется диалоговое окно Изменение связей.

    Диалоговое окно "Изменение связей"

  5. Внесите изменения и нажмите кнопку ОК.

    В диалоговом окне Изменение связей можно изменить связи между таблицами (например, таблицы, запросы или поля на любой стороне связи). Можно также задать тип соединения или включить обеспечение целостности данных и выбрать каскадный параметр. Дополнительные сведения о типе соединения и его просмотре см. в разделе Указание типа соединения. Дополнительные сведения об обеспечении целостности данных и выборе каскадного параметра см. в разделе Обеспечение целостности данных.

Указание типа соединения

При определении отношения между таблицами сведения о нем влияют на структуру запросов. Например, при определении отношения между двумя таблицами и создании запроса, работающего с этими двумя таблицами, в Access автоматически выбираются сопоставляемые поля по умолчанию на основе полей, указанных в отношении. Эти исходные значения в запросе можно переопределить, но часто значения, определенные отношением между таблицами, являются верными. Поскольку сопоставление и объединение данных из двух таблиц являются часто воспроизводимыми действиями во всех базах данных, кроме самых простых, параметры по умолчанию, определенные отношениями между таблицами, могут быть полезны и экономить время.

С помощью запроса к нескольким таблицам можно комбинировать данные из них путем сопоставления значений в общих полях. Операция сопоставления и комбинирования называется объединением. Например, требуется отобразить заказы клиентов. Для этого создается запрос, объединяющий таблицы «Клиенты» и «Заказы» по полю «Код клиента». Результаты запроса содержат сведения о клиенте, а также другие сведения только для строк с найденным соответствующим значением.

Одно из значений, которое можно задать для каждого отношения, — это тип объединения. Тип объединения определяет, какие записи будут включены в результаты запроса. Обратимся к описанному примеру с объединением таблиц «Клиенты» и «Заказы» по общим полям, представляющим код клиента. При использовании типа объединения по умолчанию (внутреннего соединения) запрос возвращает только строки таблиц «Клиенты» и «Заказы», для которых общие поля (также называемые связанными полями) совпадают.

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

Примечание: В этом случае термины «слева» и «справа» относятся к положению таблиц в диалоговом окне Изменение связей, а не в окне «Схема данных».

Следует определить, какие результаты наиболее часто требуются от запроса, соединяющего таблицы в конкретной связи, и в соответствии с этим выбрать тип соединения.

Указание типа соединения

  1. В диалоговом окне Изменение связей нажмите кнопку Тип соединения.

    Откроется диалоговое окно Параметры соединения.

  2. Выберите нужные параметры и нажмите кнопку ОК.

В таблице ниже, составленной на основании таблиц «Клиенты» и «Заказы», приведены три варианта, отображаемые в окне Параметры объединения, указан используемый в них тип объединения, а также то, какие именно строки (все или только сопоставленные) возвращаются для каждой из таблиц.

Выбор

Родственное объединение

Левая таблица

Правая таблица

1. Объединение только тех записей, в которых связанные поля обеих таблиц совпадают.

Внутреннее соединение

Сопоставленные строки

Сопоставленные строки

2. Объединение ВСЕХ записей из таблицы «Клиенты» и только тех записей из таблицы «Заказы», в которых связанные поля совпадают.

Левое внешнее соединение

Все строки

Сопоставленные строки

3. Объединение ВСЕХ записей из таблицы «Заказы» и только тех записей из таблицы «Клиенты», в которых связанные поля совпадают.

Правое внешнее соединение

Сопоставленные строки

Все строки

При выборе варианта 2 или 3 на линии связи будет отображена стрелка, указывающая на ту сторону связи, в которой отображаются только сопоставленные строки.

Внесение изменений в окне «Параметры объединения»

  1. На вкладке Работа с базами данных в группе Отношения нажмите кнопку Схема данных.

  2. На вкладке Конструктор в группе Связи нажмите кнопку Все связи.

    Будут отображены все таблицы со связями, а также соответствующие линии связи. Обратите внимание на то, что скрытые таблицы (таблицы, для которых установлен флажок скрытый в диалоговом окне Свойства) и их отношения не отображаются, если в диалоговом окне Параметры переходов не выбран параметр «Показывать скрытые объекты».

  3. Щелкните линию отношения, которое вы хотите изменить. При выделении линия связи становится толще.

  4. Дважды щелкните линию связи. Откроется диалоговое окно Изменение связей.

  5. Нажмите кнопку Тип объединения.

  6. В диалоговом окне Параметры объединения выберите нужный параметр и нажмите кнопку ОК.
    Диалоговое окно "Параметры объединения"

  7. Внесите в связь необходимые изменения и нажмите кнопку ОК.

К началу страницы

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

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

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

  1. На вкладке Работа с базами данных в группе Отношения нажмите кнопку Схема данных.

  2. На вкладке Конструктор в группе Связи нажмите кнопку Все связи.

    Будут отображены все таблицы со связями, а также соответствующие линии связи. Обратите внимание на то, что скрытые таблицы (таблицы, для которых установлен флажок скрытый в диалоговом окне Свойства) и их отношения не отображаются, если в диалоговом окне Параметры переходов не выбран параметр «Показывать скрытые объекты».

  3. Щелкните линию отношения, которое вы хотите изменить. При выделении линия связи становится толще.

  4. Дважды щелкните линию связи. Откроется диалоговое окно Изменение связей.

  5. Выберите или отмените параметр Обеспечение целостности данных.

  6. Внесите в отношение необходимые изменения и нажмите кнопку ОК.

В режиме обеспечения целостности данных действуют перечисленные ниже правила.

  • Не допускается ввод в поле внешнего ключа связанной таблицы значений, отсутствующих в поле первичного ключа главной таблицы, поскольку это приводит к появлению потерянных записей.

  • Не допускается удаление записи из главной таблицы, если в связанной таблице существуют связанные с ней записи. Например, невозможно удалить запись из таблицы «Сотрудники», если в таблице «Заказы» имеются заказы, относящиеся к данному сотруднику. Однако можно удалить главную запись и все связанные записи одним действием, установив флажок Каскадное удаление связанных записей.

  • Не допускается изменение значения первичного ключа в главной таблице, если это приведет к появлению потерянных записей. Например, нельзя изменить номер заказа в таблице «Заказы», если в таблице «Сведения о заказах» имеются строки, относящиеся к этому заказу. Однако можно обновить главную запись и все связанные записи одним действием, установив флажок «Каскадное обновление связанных полей».

    Примечания: Если при включении обеспечения целостности данных возникли трудности, обратите внимание на то, что должны выполняться условия, перечисленные ниже.

    • Общее поле главной таблицы должно быть первичным ключом или иметь уникальный индекс.

    • Общие поля должны иметь одинаковый тип данных. Единственное исключение — поле типа «Счетчик» можно связать с полем типа «Числовой», если его свойство Размер поля имеет значение Длинное целое.

    • Обе таблицы существуют в одной базе данных Access. Обеспечение целостности данных нельзя включить для присоединенных таблиц. Однако если исходные таблицы имеют формат Access, можно открыть базу данных, в которой они хранятся, и включить обеспечение целостности данных в этой базе.

Задание каскадных параметров

Иногда возникает ситуация, в которой требуется изменить значение только на стороне «один» отношения. В этом случае необходимо, чтобы Access автоматически обновил все затронутые строки в ходе выполнения одной операции. Тогда обновление будет полностью завершено, а база данных не будет находиться в несогласованном состоянии, когда некоторые строки обновлены, а другие — нет. Этой проблемы можно избежать с помощью параметра Access «Каскадное обновление связанных полей». Если при включении обеспечения целостности данных был включен параметр «Каскадное обновление связанных полей», то при последующем обновлении первичного ключа автоматически будут обновлены все связанные с ним поля.

Также может потребоваться удаление строки и всех связанных с ней записей — например, записи в таблице «Поставщики» и всех связанных с этим поставщиком заказов. Для этого в Access предназначен параметр «Каскадное удаление связанных записей». Если включить обеспечение целостности данных и установить флажок Каскадное удаление связанных записей, при удалении записи, содержащей первичный ключ, будут автоматически удалены все записи, связанные с этим первичным ключом.

Включение и отключение каскадного обновления и каскадного удаления

  1. На вкладке Работа с базами данных в группе Отношения нажмите кнопку Схема данных.

  2. На вкладке Конструктор в группе Связи нажмите кнопку Все связи.

    Будут отображены все таблицы со связями, а также соответствующие линии связи. Обратите внимание на то, что скрытые таблицы (таблицы, для которых установлен флажок скрытый в диалоговом окне Свойства) и их отношения не отображаются, если в диалоговом окне Параметры переходов не выбран параметр «Показывать скрытые объекты».

  3. Щелкните линию отношения, которое вы хотите изменить. При выделении линия связи становится толще.

  4. Дважды щелкните линию связи.

    Откроется диалоговое окно Изменение связей.

  5. Установите флажок Обеспечение целостности данных.

  6. Установите флажок Каскадное обновление связанных полей, Каскадное удаление связанных записей или оба эти флажка.

  7. Внесите в отношение необходимые изменения и нажмите кнопку ОК.

Примечание: Если первичным ключом является поле «Счетчик», установка флажка Каскадное обновление связанных полей не произведет никакого эффекта, поскольку изменить значение поля «Счетчик» нельзя.

К началу страницы

Удаление отношения между таблицами

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

Чтобы удалить отношение между таблицами, нужно удалить линию связи в окне «Схема данных». Установите указатель мыши на линию связи и щелкните ее. При выделении линия связи становится толще. Выделив линию связи, нажмите клавишу DEL.

  1. На вкладке Работа с базами данных в группе Отношения нажмите кнопку Схема данных.

  2. На вкладке Конструктор в группе Связи нажмите кнопку Все связи.

    Будут отображены все таблицы со связями, а также соответствующие линии связи. Обратите внимание на то, что скрытые таблицы (таблицы, для которых установлен флажок скрытый в диалоговом окне Свойства) и их отношения не отображаются, если в диалоговом окне Параметры переходов не выбран параметр «Показывать скрытые объекты».

  3. Щелкните линию связи, которую требуется удалить. При выделении линия связи становится толще.

  4. Нажмите клавишу DEL

  5. При этом может появиться сообщение Подтвердите удаление выделенной связи из базы данных. В этом случае нажмите кнопку Да.

Примечание: Если одна из таблиц, участвующих в отношении, в данный момент используется (возможно, третьим лицом, процессом либо в открытом объекте базы данных, например в форме), удалить отношение между таблицами будет невозможно. Перед попыткой удаления отношения между таблицами закройте все открытые объекты, использующие эти таблицы.

К началу страницы

Существуют важные отличия при работе со связями в веб-приложении Access.

В веб-приложении Access отсутствует окно «Схема данных». Вместо связи необходимо создать поле подстановки, которое получает значения из связанного поля в другой таблице. Например, предположим, что у вас есть таблица «Сотрудники» и вы хотите добавить подстановку на таблицу «Регионы», чтобы показывать регионы, в которых работают сотрудники.

Примечание: Поле, используемое в качестве источника для подстановки, должно существовать перед созданием поля подстановки.

Вот как можно создать поле подстановки в веб-приложении Access:

  1. Откройте таблицу, в которой вы хотите создать поле подстановки, дважды щелкнув ее в области навигации. (Совет: вам может понадобиться выбрать Главная > Область навигации для просмотра доступных таблиц.)

    Как указано в примере выше, щелкните таблицу Сотрудники.

  2. Щелкните столбец Имя поля под последним полем в таблице и введите имя для нового поля подстановки.

    В этом примере введите имя Регион.

  3. В столбце Тип данных щелкните стрелку и выберите значение Подстановка.

    Настройка типа данных подстановки для поля подстановки

    Появится окно мастера подстановок.

  4. На первой странице мастера подстановок выберите Получать значения из другой таблицы или запроса для поля подстановки. В диалоговом окне появятся дополнительные параметры.

  5. Выберите имя таблицы или запроса, которые будут предоставлять значения для подстановки.

    В этом примере выберите Таблица: Регионы.

    Параметры, доступные в мастере подстановок

    (Имена таблиц на изображении соответствуют используемому примеру.)

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

    В этом примере в качестве отображаемого значения следует оставить выбранное поле (Название).

  7. При необходимости настройте сортировку с помощью списка Отсортировать элементы в поле подстановки?.

  8. В разделе Какое действие должно выполняться при удалении записи из таблицы «Регионы»? выберите тип связи между двумя таблицами и укажите, нужно ли обеспечивать целостность данных. (Имя таблицы в этом вопросе меняется в зависимости от того, какая таблица была выбрана на этапе 5.)

    По умолчанию мастер подстановок использует значение Запретить удаление, если существуют соответствующие записи в таблице «Сотрудники», так как в большинстве случаев это самый безопасный вариант. В этом примере данный параметр означает, что из таблицы «Регионы» невозможно удалить значение, если оно используется в записях таблицы «Сотрудники». Таким образом, если в записях сотрудников указан регион «Запад» и вы пытаетесь удалить его из таблицы «Регионы», Access предотвратит это. В таком случае вам потребуется заменить значение «Запад» во всех записях сотрудников на что-то еще, прежде чем удалять его из таблицы «Регионы». В данном примере может подойти последний вариант, позволяющий удалить значение «Запад» из таблицы «Регионы». При этом значение «Запад» будет автоматически удалено из записей сотрудников, а вместо него останутся пустые значения. При выборе второго варианта будут удалены все записи сотрудников с регионом «Запад» из таблицы «Сотрудники». Это так называемое каскадное удаление приведет к удалению намного большего объема данных, чем требуется в примере. Будьте внимательны при выборе этого параметра.

В веб-приложении Access отсутствует окно «Схема данных». Поле в одной таблице служит источником (полем подстановки) значений для связанного поля в другой таблице.

  1. Откройте таблицу, содержащую подстановку, которое нужно изменить, выбрав команду Изменить таблицу.

    Изменение таблицы

  2. Выберите поле, в которое подставляются значения из другой таблицы.

  3. На вкладке Конструктор в группе Работа с таблицами нажмите кнопку Изменить подстановки.

  4. Внесите нужные изменения в соответствии с инструкциями мастера. Можно изменить следующие элементы.

    • Поле-источник значений

    • Порядок сортировки значений

    • Ширину поля и отображение ключевого столбца

    • Подпись поля подстановки

    • Включение проверки целостности данных

    • Каскадное или ограниченное удаление в случае, если включена проверка целостности данных

В веб-приложении Access отсутствует окно «Схема данных». Поле в одной таблице служит источником (полем подстановки) значений для связанного поля в другой таблице. Чтобы удалить связь между двумя таблицами в веб-приложении Access, необходимо удалить поле подстановки и связанные с ним данные.

  1. Откройте таблицу, содержащую поле подстановки, которое нужно удалить, выбрав команду Изменить таблицу.

    Изменение таблицы

  2. Выберите поле подстановки, в которое подставляются значения из другой таблицы веб-приложения.

  3. На вкладке Конструктор в разделе Работа с таблицами нажмите кнопку Удалить поля.

  4. В Access отображается сообщение Удалить выделенные поля и все содержащиеся в них данные? Нажмите кнопку Да, чтобы подтвердить удаление поля подстановки и его данных.

    Примечание: При удалении поля подстановки приложение Access также может предложить вам удалить один или несколько индексов. Если такое сообщение появляется, нажмите кнопку Да.

  5. Нажмите кнопку Сохранить, чтобы сохранить изменения в структуре таблиц.

К началу страницы

Чтобы создать отношение в веб-базе данных Access 2010, необходимо использовать мастер подстановок. Окно «Схема данных» отсутствует в веб-базе данных. Поле в одной таблице используется в качестве источника для значения в связанном поле другой таблицы.

Примечание: Воспользоваться мастером подстановок можно только при наличии поля, используемого в качестве источника значений.

  1. Откройте таблицу, в которую будут переноситься значения из другой таблицы.

  2. Справа от последнего поля нажмите кнопку Щелкните для добавления, а затем выберите пункт Подстановка и отношение.

    Примечание:  Для отображения кнопки Щелкните для добавления, может понадобиться прокрутить страницу по горизонтали.

  3. На первом экране мастера подстановок выберите элемент Получать значения из другой таблицы для поля подстановки и нажмите кнопку Далее.

  4. Выберите таблицу-источник и нажмите кнопку Далее.

  5. В окне Доступные поля двойным щелчком выберите поле, содержащее нужные значения, и нажмите кнопку Далее.

  6. Если нужно, определите порядок сортировки для поля подстановки. Нажмите кнопку Далее.

  7. При необходимости отрегулируйте ширину окна подстановки — это удобно, если значения имеют большую длину. Нажмите кнопку Далее.

  8. Введите имя для нового поля. Чтобы иметь полную уверенность в том, что данные в двух таблицах всегда совпадают, установите флажок Включить проверку целостности данных, а затем выберите одну из перечисленных ниже функций.

    • Каскадное удаление позволяет при удалении записи в одной таблице удалять соответствующую запись в другой.

    • Ограниченное удаление не разрешает удалить запись из таблицы, если она связана с записью в другой таблице.

      Примечание:  Не выбирайте элемент Разрешить несколько значений в мастере подстановок, если он используется для создания отношения.

  1. Откройте таблицу, в которую подставляются значения из другой таблицы.

  2. Выберите поле, в которое подставляются значения из другой таблицы.

  3. На вкладке Поля в группе Свойства нажмите кнопку Изменить подстановки.

  4. Внесите нужные изменения в соответствии с инструкциями мастера. Можно изменить следующие элементы.

    • Поле-источник значений

    • Порядок сортировки значений

    • Ширину поля и отображение ключевого столбца

    • Подпись поля подстановки

    • Включение проверки целостности данных

    • Каскадное или ограниченное удаление в случае, если включена проверка целостности данных

К началу страницы

См. также

Добавление поля подстановки в таблицу

Общие сведения об окне схемы данных

Сравнение двух таблиц в Access с целью выявления только совпадающих данных

1 / 1 / 0

Регистрация: 19.12.2010

Сообщений: 27

1

Поменять связь с «один к одному » в «один ко многим» межу таблицам

19.05.2012, 21:48. Показов 29356. Ответов 9


Студворк — интернет-сервис помощи студентам

У меня такой глупый вопрос. Не могу разобраться.

Мне нужно поменять связь с «один к одному » в «один ко многим». Межу таблицам «Замовники» и «Замовлення».

Как мне это сделать ?

Миниатюры

Поменять связь с "один к одному " в "один ко многим" межу таблицам
 



1



Programming

Эксперт

94731 / 64177 / 26122

Регистрация: 12.04.2006

Сообщений: 116,782

19.05.2012, 21:48

9

Перпетум модуле

147 / 119 / 8

Регистрация: 24.07.2009

Сообщений: 263

19.05.2012, 21:57

2

выложите бд в архиве!



0



1 / 1 / 0

Регистрация: 19.12.2010

Сообщений: 27

19.05.2012, 22:08

 [ТС]

3

Хорошо.



0



Перпетум модуле

147 / 119 / 8

Регистрация: 24.07.2009

Сообщений: 263

19.05.2012, 22:29

4

Eragon, у вас было индексировано поле, поэтому связь была один-к-одному.
Я немного вам изменил структуры таблиц. См. во вложении.



1



1179 / 630 / 39

Регистрация: 30.05.2010

Сообщений: 715

19.05.2012, 22:35

5

Здравствуйте Eragon.
Выполнить Вашу задачу — «..поменять связь с «один к одному » в «один ко многим». Межу таблицам «Замовники» и «Замовлення». …»
можно только удалив индекс у поля КЗ таблицы Замовлення (Индексированное поле — Нет)
или, если индекс необходим, убрать его уникальность (Индексированное поле — Да (Допускаются совпадения))

мнение: необходимости в таблице Готовність и её связях нет,
добавив в таблицу Зміст_замовлень поле Дата_выполнения, данные для отчёта всегда можно получить запросом.

Евгений.



1



1 / 1 / 0

Регистрация: 19.12.2010

Сообщений: 27

19.05.2012, 23:09

 [ТС]

6

Спасибо за ответы. Будем пробовать.



0



1 / 1 / 0

Регистрация: 19.12.2010

Сообщений: 27

19.05.2012, 23:20

 [ТС]

7

Еще один вопрос.

А как мне сделать так, что бы при выборе заказчика(КЗ) в таблице «Замволення» мне выбирало не только код но и название ?

Миниатюры

Поменять связь с "один к одному " в "один ко многим" межу таблицам
 



0



Перпетум модуле

147 / 119 / 8

Регистрация: 24.07.2009

Сообщений: 263

20.05.2012, 00:07

8

в таблицах лучше не использовать такие задачи!



0



Эксперт MS Access

7330 / 4471 / 288

Регистрация: 12.08.2011

Сообщений: 13,535

20.05.2012, 14:41

9

___________________________

Миниатюры

Поменять связь с "один к одному " в "один ко многим" межу таблицам
 



0



1 / 1 / 0

Регистрация: 19.12.2010

Сообщений: 27

20.05.2012, 15:17

 [ТС]

10

Цитата
Сообщение от Teslenko_EA
Посмотреть сообщение

Здравствуйте Eragon.

мнение: необходимости в таблице Готовність и её связях нет,
добавив в таблицу Зміст_замовлень поле Дата_выполнения, данные для отчёта всегда можно получить запросом.

Евгений.

А как осуществить такой запрос ? Я не очень силен в этом.



0



I currently have a user’s table which contains a one-to-one relationship for Youtube OAuth tokens. However, I now want to support multiple video sites and want to break this into a one-to-many relationship.

I have setup the new tables:

tokens — cols: id, site, username (the user’s username on Youtube), oauth_token, oauth_secret

user_tokens — cols: id, user_id, token_id

Is there a way I can SELECT from my current user’s table INTO these tables to import the username, oauth_token and oauth_secret columns while also setting up the user_tokens table with the appropriate id’s?

In the past I have written short PHP scripts to do this, but have always been curious about whether I can do it directly in MySQL.

Community's user avatar

asked Feb 27, 2010 at 20:10

Matt McCormick's user avatar

Matt McCormickMatt McCormick

13k22 gold badges75 silver badges83 bronze badges

You don’t need a relation table for a one-to-many relationship, you just need a user_id field in the tokens table. That also makes it easier to poultate the table:

insert into tokens (site, user_id, username, oauth_token, oauth_secret)
select site, user_id, username, oauth_token, oauth_secret
from users

(As I don’t know exactly what’s in your user table and what the field names are, it might need some adjusting.)

answered Feb 27, 2010 at 20:37

Guffa's user avatar

1

Checkout MySQL documentation. I think that should help you.

answered Feb 27, 2010 at 20:33

radious's user avatar

radiousradious

8126 silver badges21 bronze badges

Учебная дисциплина
Информатика и компьютерная техника
Модуль 2. Офисные прикладные программы Microsoft Office 2007

2.4. Microsoft Access 2007

2.4.3. Установка логических связей в БД Access 2007

Логические связи устанавливаются между одноименными полями таблиц базы данных Access 2007. Связь данных в одной таблице с данными в других таблицах осуществляется через уникальные идентификаторы (ключи) или ключевые поля. В нашем случае мы должны установить логические связи между таблицами: Группы студентов, Студенты, Дисциплины и Успеваемость.

Для установления связей используем ключевые поля: КодГруппы, КодСтудентов и КодДисциплины. Например, между первичным ключом (КодГруппы) tables Группы студентов и вторичным ключом (КодГруппы) tables Студенты устанавливаем связь один — ко — многим.

Прежде чем приступить к созданию логических связей надо в Окне редактирования закрыть все tables и перейти на вкладку Работа с базами данных. Затем щелкнуть на пиктограмме Схема данных, в окне редактирования появится активное диалоговое окно «Добавление таблицы» на фоне неактивного окна Схема данных (рис. 1).

В окне Добавление таблиц необходимо выделить имена таблиц и нажать кнопку Добавить, при этом в окне «Схема данных» появятся все tables (рис. 2). После этого необходимо закрыть окно диалога.

Далее необходимо установить связи между табл. в окне Схема данных. Для этого в окне Схема данных необходимо отбуксировать (переместить) поле КодГруппы из таблицы Группы студентов на соответствующее поле tables Студенты, в результате этой операции появится окно «Изменение связей» (рис. 3) .

В появившемся окне диалога «Изменение связей» (рис. 3) необходимо установить флажки: «Обеспечить целостность данных», «каскадное обновление связанных полей» и «каскадное удаление связанных записей», убедиться в том, что установлен тип отношений один-ко-многим и нажать кнопку Создать.

В окне Схема данных появится связь один-ко-многим между таблицами Группы студентов и Студенты. Аналогичным образом надо связать поля КодСтудента в таблицах Студенты и Успеваемость, а затем поля КодДисциплины в таблицах Успеваемость и Дисциплины. В итоге получим Схему данных, представленную на рисунке 4.

После установки связей между таблицами, окно Схема данных необходимо закрыть. Далее необходимо осуществить заполнение всех таблиц. Заполнение целесообразно начинать с табл. Группы студентов, так как поле КодГруппы табл. Студенты используется в качестве столбца подстановки для заполнения соответствующего поля табл. Студенты.

Затем установить связи между табл. «Студенты» и «Успеваемость», «Дисциплины» и «Успеваемость», так как поля КодСтуденты и КодДисциплины табл. Успеваемость используется в качестве столбца подстановки для заполнения соответствующих полей таблицы Успеваемость.

Copyright

© Обучение в интернет, .
Обратная связь

3.1. Определение связей между таблицами

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

После того как в БД созданы основные таблицы, следует указать, как они связаны друг с другом. Эти связи Access будет использовать в запросах, формах и отчетах при отборе информации из нескольких таблиц. Задание связей между таблицами позволяет также обеспечить защиту целостности данных в БД. Окно связей вызывается командой Схема данныхменюРабота с базой данных(см. рис. 3.1)

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

. Поля связи могут иметь разные имена, но они должны иметь один тип данных и иметь однотипное содержимое.

Исключение из этого правила: поле типа Счетчик можно связывать с числовым полем, имеющим в свойстве Размер поля значение «Длинное целое». Кроме того, связываемые поля числового типа должны иметь одинаковые значения свойства Размер поля. Например, для получения информации о студентах и полученных ими оценках следует определить связь по полям Код Студента в таблицах Студенты и Сессия. Главной в этой связи будет таблица Студенты, а подчиненной — таблица Сессия. Каждой записи в главной таблице — данным о студенте — соответствует несколько (или ни одной) записей из подчиненной таблицы — информация об его оценках. Поле Код Студента в таблице Сессия является внешним ключом.

3.2. Типы связей между таблицами

1. Связь типа «один-ко-многим»

Описанная выше связь между таблицами Студенты и Сессия — пример связи типа «один-ко-многим». Это наиболее распространенный тип связи. При таком типе связи каждой записи в главной таблице могут соответствовать одна, несколько или ни одной записи в подчиненной таблице (например, сотрудники одного отдела: отдел один, а сотрудников в нем много), а каждая запись в подчиненной таблице не может иметь более одной соответствующей ей записи в главной таблице.

2. Связь типа «один-к-одному»

При связи типа «один-к-одному» каждой записи в главной таблице может соответствовать не более одной записи в подчиненной таблице, и наоборот, каждая запись в подчиненной таблице не может иметь более одной соответствующей ей записи в главной таблице (например, у гражданина страны есть только один паспорт, а не много).

Этот тип связи применяется реже, так как такие данные могут быть помещены в одну таблицу. Связь типа «один-к-одному» обычно используют для разделения таблиц, имеющих много полей, а также для сохранения сведений, относящихся к подмножеству записей в главной таблице. Например, такой тип связи использован при установлении связей между таблицами Студенты и Общежитие (см. рис.3.2).

Рис. 3.2. Связи между таблицами в БД Деканат

Работа с базами данных — процесс, требующий определённых навыков и понимания некоторых нюансов. Разработанная компанией Microsoft программа Access даёт пользователям возможность быстро создавать и редактировать БД. Один из важнейших моментов, с которым обязательно нужно разобраться, при создании БД — связывание её элементов. В этой статье разберёмся с тем, как создать или удалить связи между таблицами в Access. Давайте же начнём. Поехали!

Прежде чем мы перейдём к связыванию, необходимо создать так называемые ключевые поля. Что это такое? Ключевое поле — это поле, определяющее каждую запись. Теперь перейдём непосредственно к его созданию. Открыв нужную таблицу, щёлкните правой кнопкой мыши по вкладке и выберите пункт «Конструктор». Затем добавьте новое поле. Например, если у вас есть список сотрудников, то ключевым стоит сделать «код сотрудника», указав тип данных «счётчик» либо «числовой». Чтобы сделать его ключевым, нажмите кнопку «Ключевое поле», расположенную на панели инструментов Microsoft Access. Далее, необходимо проделать то же самое для всех остальных таблиц.

Теперь уже можно связывать наши таблицы. Чтобы сделать это, откройте вкладку «Работа с базами данных» и в разделе «Отношения» ленты инструментов выберите пункт «Схема данных». Перед вами откроется окно, в котором понадобится выбрать все таблицы. Поочерёдно кликните по каждой из них. Закончив, выйдите из этого окна. Теперь нужно определиться с тем, как именно связывать. Например, есть две таблицы: «Бренд» и «Одежда», между которыми необходимо связать между собой. Поле «Код бренда» должно быть и там, и там. Если оно отсутствует — создайте его. При этом для записей категории «Бренд» оно будет ключевым (так называемый первичный ключ), а для «Одежда» — обычным (внешний ключ). Первичный ключ «Код бренда» перетащите на внешний ключ «Код бренда». После этого появится диалоговое окно, в котором нужно отметить галочками пункты: «Обеспечение целостности…», «Каскадное обновление связанных полей» и «Каскадное удаление связанных записей». Отметив все пункты, нажмите кнопку «Создать». Появится чёрная линия, соединяющая указанные строки. Созданная связь имеет название «один ко многим». То есть в приведённом примере это будет означать, что один бренд может выпускать много разной одежды.

Далее, аналогичным образом свяжите все остальные, не забывая добавлять поля. Имея минимум три таблицы (среди которых две основных и одна промежуточная), вы можете создать тип связи «многие ко многим». Для заполнения полей, являющихся внешними ключами, можно использовать «Мастер подстановок». Чтобы сделать это, перейдите в режим конструктора и в разделе «Тип данных» выберите пункт «Мастер подстановок». В открывшемся окне выберите откуда будет взята информация для заполнения. Затем укажите нужные поля и нажмите кнопку «Далее». Следующие два окна можно пропустить. В конце кликните по кнопку «Готово». Прежде чем начать заполнение, программа предложит вам сохраниться, щёлкните «Да». Обратите внимание, что заполнение таким способом возможно только в случае, если связь ещё не установлена. Если у вас так не получилось, то вы можете удалить её и заполнить ячейки. После этого она автоматически появится, однако, вам понадобится кликнуть по ней два раза и отметить галочками пункты: «Обеспечение целостности…», «Каскадное обновление связанных полей» и «Каскадное удаление связанных записей».

Чтобы удалить связь, кликните по кнопке «Схема данных» на панели инструментов, затем щёлкните по линии, показывающей её, и нажмите на клавиатуре клавишу delete.

Теперь вы знаете как добавляются и удаляются связи при работе с БД в программе Microsoft Access. Обладая этими навыками, вы уже сможете создавать полноценные, функционирующие БД, однако, продолжайте развивать свои знания программы 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 можно задать три вида связей между таблицами:

  • · Один-ко-многим,
  • · Мно-гие-ко-многим
  • · Один-к-одному.

Связь Один-ко-многим — наиболее часто используемый тип связи между таблицами. В такой связи каждой записи в таблице А может соответствовать несколько записей в таблице В (поля с этими записями называют внешними ключами), а запись в таблице В не может иметь более одной соответствующей ей записи в таблице А.

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

При связи Один-к-одному запись в таблице А может иметь не более одной связанной записи в таблице В и наоборот.

Этот тип связи используют не очень часто, поскольку такие такие могут быть помещены в одну таблицу.

Связь с отношением Один-к-одному пример для разделения очень широких таблиц, для отделения части таблицы в целях ее защиты, также для сохранения сведений, относящихся к подмножеству записей в главной таблице.

Тип создаваемой связи зависит от полей, для которых определяется связь:

ь связь Один-ко-многим создается в том случае, когда только одно из полей является ключевым или имеет уникальный индекс, т.е. значения в нем не повторяются; связь Один-к-одному создается в том случае, когда оба связываемых поля являются ключевыми или имеют уникальные индексы;

ь связь Многие-ко-многим фактически представляет две связи типа один-ко-многим через третью таблицу, ключ которой состоит по крайней мере из двух полей, общих для двух других таблиц.

СУБД Microsoft Access (MS Access) относится к системам, ориентированным на пользователя.

Среда MS ACCESS 2000

Рис.1. Среда MS ACCESS 2000.

Будем рассматривать СУБД Access как специализированного исполнителя, назначение которого — работа с реляционными базами данных. Среда MS Access представлена на рис.1.

Среда Access имеет интерфейс, характерный для Windows-приложений, и включает в себя следующие составляющие (сверху вниз): титульную строку с кнопками управления окном, главное меню, панель инструментов, рабочее поле и строку состояния.

На рабочем поле открывается окно, соответствующее выбранному режиму работы. На рис. 1 открыто окно, соответствующее основному режиму — режиму работы с базой данных.

Основные объекты MS Access: таблицы, запросы, формы, отчеты, макросы и модули.

Таблица — это главный тип объекта. Все остальные разновидности объектов являются производными от таблицы. Объекты, составляющие таблицу, — это записи и поля. Свойства элементов таблицы определяются типами полей, форматами полей и некоторыми другими параметрами.

Форма — это вспомогательный объект, без которого, в принципе, можно обойтись. Формы создаются для дополнительного удобства пользователя при просмотре, вводе и редактировании данных.

Запрос — результат обращения пользователя к СУБД для поиска данных, добавления, удаления и обновления записей. Результат поиска (выборки) данных представляется в табличном виде. Термином «запрос» называют также сами команды обращения к СУБД.

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

Макросы и модули являются объектами повышенной сложности и при начальном знакомстве с MS Access могут не использоваться.

Еще одним объектом является схема — описание структуры связей в многотабличной базе данных.

Режимы работы СУБД Access многообразны. Есть режимы общего характера: работа с файлами (меню Файл); работа с буфером обмена (меню Правка); режим настройки среды (меню Вид); справочный режим (меню Справка).

Основным режимом можно назвать режим работы с базой данных. Он устанавливается командой Файл > Создать базу данных или Файл > Открыть базу данных.

Поскольку база данных хранится в файле, в первом случае система потребует задать имя и место хранения файла, а во втором случае — указать на существующий файл с базой данных.

После раскрытия на экране окна базы данных (рис. 1.2) становятся доступными режимы работы с основными объектами Access: таблицами, запросами, формами и отчетами. В каждом из этих режимов можно выбрать одну из трех командных кнопок: Открыть, Конструктор, Создать.

Если соответствующий объект еще не создан, то активной является только команда Создать. Если в окне выделен какой-то из существующих объектов, то активными будут также команды Открыть и Конструктор. Команда Открыть позволяет просмотреть объект, а команда Конструктор — просмотреть или изменить структуру объекта.

В столбец «имя поля» мы будем заносить имена столбцов нашей будущей таблицы (при этом нельзя использовать некоторые символы, в том числе точки и запятые). В столбце «тип данных» будем выбирать (используя кнопку вызова списка) тип данных. А то, что заносится в столбец «описание» затем появляется, в виде комментариев, в строке состояния (для проверки в одной из строк этого столбца напишите фразу: моя первая база данных).

Как видно, из ниже перечисленных данных, нам необходимо создать следующие поля:

Целостность данных. Ограничения, возникающие при задании целостности данных

Включение флажка «Обеспечение целостности данных «позволяет защититься от случаев удаления записей из одной таблицы, при которых связанные с ними данные других таблиц останутся без связи.

Целостность данных – система правил, используемых в MS Access для поддержания связей между записями в связанных таблицах, а также обеспечивает защиту от случайного удаления или изменения связанных данных.

Установить целостность данных можно, если выполнены следующие условия:

1. Связанное поле главной таблицы является ключевым полем или имеет уникальный индекс.

2. Связанные поля имеют один тип данных. Здесь существует два исключения. Поле счетчика может быть связано с числовым полем, если в последнем в свойстве «Размер поля «(FieldSize) указано значение «Длинное целое». А также поле счетчика можно связать с числовым полем, если и в обеих ячейках свойства «Размер поля» (FieldSize) задано значение «Код репликации».

3. Обе таблицы принадлежат одной базе данных MS Access. Если таблицы являются связанными, то они должны быть таблицами MS Access. Для установки целостности данных база данных, в которой находятся таблицы, должна быть открыта. Для связанных таблиц из баз данных других форматов установить целостность данных стандартными средствами MS Access невозможно.

Установив целостность данных, необходимо следовать следующим правилам:

1. Невозможно ввести в поле внешнего ключа связанной таблицы значение, не содержащееся в ключевом поле главной таблицы. Однако в поле внешнего ключа возможен ввод пустых значений, показывающих, что записи не являются связанными. Например, нельзя сохранить запись, регистрирующую заказ, сделанный несуществующим клиентом, но можно создать запись для заказа, который пока не отнесен ни к одному из клиентов, если ввести пустое значение в поле «Код Клиента».

2. Не допускается удаление записи из главной таблицы, если существуют связанные с ней записи в подчиненной таблице. Например, невозможно удалить запись из таблицы «Сотрудники», если в таблице «Заказы» имеются заказы, относящиеся к данному сотруднику.

3. Невозможно изменить значение ключевого поля в главной таблице, если существуют записи, связанные с данной. Например, невозможно изменить код сотрудника в таблице «Сотрудники», если в таблице «Заказы» имеются заказы, относящиеся к этому сотруднику.

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

Параметры объединения таблиц

При добавлении таблицы в запрос в MicrosoftOfficeAccess 2007 создаются объединения, которые базируются на связях между таблицами. Объединения в запросах можно создавать вручную, даже если они не отражают заранее определенные связи. При использовании других запросов (независимо от таблиц или вместе с ними) в качестве источника данных для запросов можно создавать объединения между исходными запросами, а также между запросами и таблицами, которые используются в качестве источников данных.

Существует четыре основных типа объединений:

Внутренние объединения представляют собой запросы, в которых строки одной из объединяемых таблиц соответствуют строкам другой таблицы по значениям в связанных полях. При выполнении запроса с внутренним объединением в операцию включаются только строки, имеющие одинаковые значения в обеих связанных таблицах. Внутреннее объединение используется в том случае, когда запрос должен возвращать только те строки обеих таблиц объединения, значения связанных полей которых совпадают. В большинстве случаев для использования внутреннего объединения не нужно предпринимать каких-либо действий. Если ранее в окне схемы данных были созданы связи между таблицами, то при добавлении связанных таблиц в режиме конструктора запроса линии объединения создаются автоматически. Если накладываются условия целостности данных, то над линией объединения автоматически отображается цифра «1», означающая, что таблица находится на стороне «один» в отношении «один-ко-многим», а также знак бесконечности ∞ для указания таблиц, находящихся на стороне «многие». Даже если связи не были созданы, внутренние объединения будут созданы автоматически.

Внешние объединения представляют собой запросы, в которые включаются все строки одной таблицы, а также строки другой таблицы, значения которых в первой и второй таблице совпадают, несмотря на то, что некоторые из строк с обеих сторон полностью совпадают. Внешние объединения являются направленными, они могут быть левыми или правыми. При левом объединении в запрос включаются все строки таблицы из первой таблицы в предложении FROM инструкции SQL, и только те строки из другой таблицы, в которых значения связанных полей совпадают. При правом объединении в запрос включаются все строки из второй таблицы в предложении FROM инструкции SQL, и только те строки из другой таблицы, в которых значения связанных полей совпадают. Внешнее объединение используется, когда возникнет необходимость, чтобы в результаты объединения были включены все строки одной из таблиц и только те строки другой таблицы, значения связанных полей в которых соответствуют значениям связанных полей в первой таблице. Внешние объединения создаются путем изменения внутренних объединений.

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

Объединение по несовпадению. Объединения не всегда базируются на соотношении равенства связываемых полей. Объединение может базироваться на любом операторе сравнения, например, «больше» (>), «меньше» (<) или «не равно» (<>). Объединения, базирующиеся на неравенстве, называются объединениями по несовпадению.

Если требуется скомбинировать строки из двух источников данных на основе значений полей, которые не равны, используется объединение по несовпадению. Обычно объединения по несовпадению базируются на операторах сравнения «больше» (>), «меньше» (<), «больше или равно» (>=) или «меньше или равно» (<=). Объединения по несовпадению, базирующиеся на операторе «не равно» (<>), могут вернуть почти столько же строк, как перекрестное объединение, и их результаты будет трудно интерпретировать.

Дата добавления: 2018-02-28 ; просмотров: 564 ; Мы поможем в написании вашей работы!

Понравилась статья? Поделить с друзьями:
  • Как найти свой телефон когда он разряжен
  • Найти как стать менеджером
  • Лазаревское как найти недорогое жилье
  • Как найти смешанную производную двух переменных
  • Как составить список поисковых запросов