Top-office11.ru

IT и мир ПК
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Как связать 2 таблицы в access

Установка связей между таблицами БД Access 2007

Учебная дисциплина
Информатика и компьютерная техника
Модуль 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

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

Руководство по межтабличным связям

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

В этой статье

Введение

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

1. Эта форма содержит данные из таблицы клиентов,

4. и сведений о заказах.

Имя клиента в поле Плательщик получено из таблицы «Клиенты», значения кода заказа и даты заказа — из таблицы «Заказы», наименование товара — из таблицы «Товары», а цена и количество — из таблицы «Заказано». Чтобы можно было передать данные в форму, эти таблицы связаны друг с другом несколькими способами.

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

1. Поле «Код сотрудника» отображается в двух таблицах: как первичный ключ.

2. и как внешний ключ.

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

В Access есть три типа связей между таблицами.

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

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

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

Читать еще:  Проектирование базы данных в среде access

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

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

Зачем создавать связи между таблицами?

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

Связи между таблицами предоставляют сведения для структурирования запросов

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

Связи между таблицами предоставляют сведения для структурирования форм и отчетов

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

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

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

Понятие о целостности данных

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

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

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

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

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

Читать еще:  Анимационный фон для презентации powerpoint

Просмотр связей между таблицами

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

Вызов окна «Схема данных»

На вкладке Файл выберите команду Открыть.

Выбор и открытые базы данных.

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

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

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

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

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

Когда открыто окно «Схема данных», на ленте доступны указанные ниже команды.

На вкладке Конструктор в группе Сервис

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

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

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

На вкладке Конструктор в группе Отношения

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

Скрыть таблицу . Скрывает выбранную таблицу в окне «Схема данных».

Прямые связи . Отображает все связи и связанные таблицы для выбранной таблицы в окне «Схема данных», если они еще не отображены.

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

Закрыть . Закрывает окно «Схема данных». Если в макет окна «Схема данных» были внесены какие-либо изменения, будет предложено сохранить их.

Добавление подтаблицы

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

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

В этой статье

Общие сведения о подтаблицах

Подтаблица полезна, если вы хотите просмотреть информацию из нескольких источников данных в одном режиме таблицы. Например, в образце базы данных «Борей» в таблице «заказы» есть отношение «один-ко-многим» с таблицей «сведения о заказах».

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

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

Microsoft Access автоматически создает подтаблицу при создании таблицы, которая соответствует одному из указанных ниже условий.

Таблица находится в отношение «один-к-одному».

Таблица — это сторона «один» отношения «один-ко-многим», в которой свойство «SubdatasheetName» таблицы имеет значение «Авто».

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

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

Открытие и закрытие подтаблицы

Чтобы определить, есть ли в таблице, запросе или форме подтаблица, откройте объект в режиме таблицы. Если индикатор развертывания (+ знак) присутствует, таблица, запрос или форма содержат подтаблицу. Когда подтаблица открыта, индикатор превращается в символ «a». Подтаблицы могут быть вложены в основную подтаблицу на 8 уровнях.

Читать еще:  Создание запроса на выборку в access

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

Чтобы закрыть подтаблицу, щелкните знак «минус».

Совет: Чтобы развернуть или свернуть все подтаблицы в таблице, на вкладке Главная в группе записи нажмите кнопку Дополнительно. Затем выберите подтаблицуи выберите нужный параметр.

Кроме того, можно удалить или скрыть подтаблицу. Сведения об удалении подтаблицы можно найти в статье Удаление подтаблицы.

Совет: Чтобы скрыть подтаблицу, откройте таблицу в режиме конструктора, а затем на вкладке конструктор в группе Показать или скрыть выберите пункт Страница свойств. Найдите в окне страницы свойств строку Имя подтаблицы , измените ее на [нет], а затем сохраните изменения.

Добавление подтаблицы

В режиме таблицы откройте таблицу или запрос, в который вы хотите добавить подтаблицу.

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

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

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

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

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

Примечание: Значения в полях » ссылка ДочернИй элемент » и » Образец ссылки » создают объединение для указанных полей.

Нажмите кнопку OK, чтобы сохранить изменения.

Чтобы отобразить подтаблицу, добавленную в таблицу, запрос или форму, щелкните знак +.

Примечание: Дочернее поле (внешний ключ) не отображается в качестве столбца в подтаблице. При добавлении новой записи в подтаблицу Access автоматически вставляет значение первичного ключа выбранной базовой таблицы.

Как связать две таблицы в access: «Люди» и «Телефоны»?

Объясните саму суть.

В свое время слегка учил РБД, SQL в теории. Сейчас не пойму, ваяя реально в аксесе.

Допустим две таблицы — на одной список людей, на второй номера их телефонов.
— Людей множество, у каждого свой id.
— Одному человеку может принадлежать несколько телефонов.

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

Я не пойму структуру таблицы БД.
— Таблица — это как абстрактный класс в ООП, ключ — как метод (конструктор?), а прочее — как аргументы методов либо поля?
— И соответственно новая итоговая таблица — это комбинированный класс от множественного наследования предыдущих?

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

01.03.2019, 15:47

Message «Write conflict» with «Save record», «Copy to clipboard», «Drop changes» buttons
Здравствуйте. Получив это сообщение нажимаю на «Save record» и продолжаю работать. Скажите.

Как перейти из «Заголовок формы» в «Область данных» по нажатию «Tab» или другой комбинации клавиш?
Как перейти из «Заголовок формы» в «Область данных» по нажатию «Tab» или другой комбинации клавиш?

01.03.2019, 16:01

Меню пользователя @ evgenii3000
01.03.2019, 16:03301.03.2019, 16:29402.03.2019, 20:06 [ТС]5

В терминах ООП и типа данных структур-рекордов понять нам друг друга не удалось.
Ок.
По порядку.
База хранит сведения в некотором порядке.
Данные заносить можно с помощью запросов, форм и редактирования таблиц.
Но так можно и в Экселе поместить все данные в одну большую таблицу и придать им упорядоченность. Эксель может просчитать нечто и т.д.
Но БД даёт более удобный интерфейс (оболочку) редактирования и считывания сведений, поддержка SQL запросов. Информацию может обрабатывать (из сводных таблиц) и фильтровать перед выводом в форму или отчёт.
Как происходят последние манипуляции?
Первичный ключ это указатель на что? На строки.
Вторичный ключ — на столбцы.
В С++ структурой можно считать строку, а ещё столбцы — полями. Соответственно для обмена данными нужны ссылочные типы, но вот тип их разный — ссылаемся либо на структуру вообще, либо на ещё поле, которое есть уже стандартный тип данных — int, string, bool и т.д.
Что это даёт при обработке (сведению и фильтрации данных) использование ключей? Само по себе храниние данных мало интересно. Потому как это происходит при обработке сведений.
Например, в вывод формы как проявляются первичный и вторичный ключ, при изменении данных и т.п.

Добавлено через 40 минут
Ну и существует ли межтабличная иерархия с которой начинается инициализация?
Например в ЯП это main() или begin.
Допустим, 2 таблицы. 1-я содержит id пользователей и их ФИО. 2-я таблица — до 3 номеров телефона на пользователя.
Думаю, польза от такой БД будет, если она сможет синтезировать сведения из той и другой в виде сводной таблице. А в действии это можно увидеть в форме или в отчете.
Т.к. в БД не должно быть избыточных сведений, то в табл 2 нет нужды в ФИО — достаточно их id.
Итак, где какие ключи первичные и вторичные и нужна ли 3-я сводная таблица либо можно все напрямую транслировать в форму/отчёт?

Ссылка на основную публикацию
Adblock
detector