Меню

Связанная таблица access 2010



Как определить связи между таблицами в базе данных Access

Office 365 ProPlus переименован в Майкрософт 365 корпоративные приложения. Для получения дополнительной информации об этом изменении прочитайте этот блог.

Оригинальный номер КБ: 304466

Внимание! Материал, изложенный в этой статье, требует знания пользовательского интерфейса на компьютерах с одним пользователем. Эта статья относится только к базе данных Microsoft Access (.mdb или .accdb).

Аннотация

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

  • Что такое связи между таблицами?
  • Виды связей между таблицами
    • Связи «один ко многим»
    • Связи «многие ко многим»
    • Связи «один к одному»
  • Как определить связи между таблицами
    • Как определить связи «один ко многим» или «один к одному»
    • Как определить связь «многие ко многим»
  • Целостность данных
  • Каскадные обновления и удаления
  • Типы соединения

Что такое связи между таблицами?

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

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

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

Логические отношения в базе данных позволяют эффективно запрашивать данные и создавать отчеты.

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

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

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

Связи «один ко многим»

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

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

В окне связей в Access, сторона первичного ключа связи «один ко многим» обозначается номером 1. Сторона внешнего ключа связи обозначается символом бесконечности.

Пример для связей

Связи «многие ко многим»

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

Пример для связей

Связи «один к одному»

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

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

  • Разделите таблицу на множество столбцов.
  • Из соображений безопасности изолируйте часть таблицы.
  • Храните данные, которые недолговечны и могут быть легко удалены при удалении таблицы.
  • Храните информацию, которая относится только к подмножеству основной таблицы.

В Access сторона первичного ключа связи «один к одному» обозначается символом ключа. Сторона внешнего ключа также обозначается символом ключа.

Как определить связи между таблицами

При создании связи между таблицами связанные поля не должны иметь одни и те же имена. Однако связанные поля должны иметь один и тот же тип данных, если только поле первичного ключа не является полем AutoNumber. Вы можете сопоставить поле AutoNumber с полем Number, только если свойство FieldSize обоих совпадающих полей совпадает. Например, можно сопоставить поле AutoNumber и поле Number, если свойство theFieldSizeproperty обоих полей имеет значение Long Integer. Даже если оба совпадающих поля являются числовыми полями, они должны иметь параметр sameFieldSizeproperty.

Как определить связи «один ко многим» или «один к одному»

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

Закройте все таблицы. Нельзя создавать или изменять связи между открытыми таблицами.

В Access 2002 и Access 2003 выполните следующие действия.

  1. Нажмите F11, чтобы переключиться в окно базы данных.
  2. В меню Инструменты выберите Связи.

В Access 2007, Access 2010 или Access 2013 нажмите Связи в группе Показать/Скрыть на вкладке Инструменты базы данных.

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

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

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

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

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

При необходимости установите параметры связей. Если у вас есть информация о конкретном элементе в диалоговом окне Изменение связей, нажмите кнопку со знаком вопроса, а затем нажмите на элемент. (Эти параметры будут подробно описаны ниже в этой статье.)

Нажмите кнопку Создать, чтобы создать связь.

Повторите шаги с 4 по 7 для каждой пары таблиц, которые вы хотите связать.

При закрытии диалогового окна Изменение связей Access спрашивает, хотите ли вы сохранить макет. Сохраняете ли вы макет или не сохраняете макет, созданные вами связи сохраняются в базе данных.

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

Как определить связь «многие ко многим»

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

Создайте две таблицы, которые будут иметь связь «многие ко многим».

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

В связующей таблице установите первичный ключ, чтобы включить основные ключевые поля из двух других таблиц. Например, в связующей таблице «TitleAuthors» первичный ключ будет состоять из полей OrderID и ProductID.

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

Откройте таблицу в Конструкторе.

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

В Access 2002 или в Access 2003 нажмите на Первичный ключ на панели инструментов.

В Access 2007 нажмите на Первичный ключ в группе Инструменты на вкладке Дизайн.

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

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

Целостность данных

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

  • Совпадающие поля из основной таблицы являются первичным ключом или имеет уникальный индекс.
  • Связанные поля имеют один и тот же тип данных. Из этого правила есть два исключения: Поле AutoNumber может быть связано с полем Number, которое имеет FieldSize настройку свойства Long Integer, а поле AutoNumber, которое имеет FieldSize настройку свойства Replication ID, может быть связано с полем Number, которое имеет FieldSize настройку свойства Replication ID.
  • Обе таблицы относятся к одной и той же базе данных Access. Если таблицы являются связанными таблицами, они должны быть таблицами в формате Access, и необходимо открыть базу данных, в которой они хранятся, чтобы установить целостность данных. Референтная целостность не может быть применена для связанных таблиц из баз данных в других форматах.
Читайте также:  Размеры одежды таблица мужская коламбия

При использовании целостности данных применяются следующие правила:

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

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

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

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

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

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

Типы соединения

Существует три основных типа соединения: Вы можете увидеть их на следующем снимке экрана:

Типы соединения.

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

Вариант 2 определяет левое внешнее соединение. Левое внешнее соединение — это соединение, в котором все записи с левой стороны операции LEFT JOIN в оператора запроса SQL добавляются к результатам запроса, даже если нет соответствующих значений в объединенном поле из таблицы на правой стороне.

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

Источник

Связывание таблиц в Access

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

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

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

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

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

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

Упражнение 1.1. Создание базовых таблиц

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

1. Запустите программу Microsoft Access 2000 (Пуск > Программы >Microsoft Access).

2. В окне Microsoft Access включите переключатель Новая база данных и щелкните на кнопке ОК.

3. В окне Файл новой базы данных выберите папку \Мои документы и дайте файлу имя: Комплектующие. Убедитесь, что в качестве типа файла выбрано Базы данных Microsoft Access, и щелкните на кнопке Создать. Откроется окно новой базы — Комплектующие: база данных.

4. Откройте панель Таблицы.

5. Дважды щелкните на значке Создание таблицы в режиме конструктора — откро­ется бланк создания структуры таблицы.

6. Для первой таблицы введите следующие поля:

Рис. 1.1. Таблица Комплектующие в режиме Конструктора

Обратите внимание на то, что в данном случае поле Цена задано не денежным типом, а числовым. Данные, относящиеся к денежному типу, имеют размерность, выраженную в рублях (если работа выполняется с версией Microsoft Access, локализованной в России). Но стоимость компонентов вычислительной техники выражать в этой единице измерения не принято. Для сравнимости цен разных поставщиков обычно используют «условные единицы». В таких случаях удобно использовать поле числового типа, чтобы не перенастраивать всю СУБД.

7. Щелкните на поле Цена. В нижней части бланка задайте свойство Число деся­тичных знаков, равным 2.

8. Для связи с будущей таблицей поставщиков надо задать ключевое поле. Поскольку здесь ни одно поле явно не претендует на «уникальность», используем комби­нацию полей Компонент и Модель. Выделите оба поля в верхней части бланка (при нажатой клавише SHIFT). Щелчком правой кнопки мыши откройте кон­текстное меню и выберите в нем пункт Ключевое поле.

9. Закройте окно Конструктора. При закрытии окна дайте таблице имя Комплекту­ющие.

10. Повторив действия пунктов 5-9, создайте таблицу Поставщики, в которую входят следующие поля.

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

Ключевое поле можно не задавать — для текущей задачи оно не требуется.

11. В окне Комплектующие: база данных откройте по очереди созданные таблицы и наполните их экспериментальным содержанием (3-4 записи). Закончив работу, закройте таблицы и завершите работу с программой.

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

Упражнение 1.2. Создание межтабличных связей .

1. Запустите программу Microsoft Access 2000 (Пуск > Программы > Microsoft Access).

2. В окне Microsoft Access включите переключатель Открыть базу данных, выберите ранее созданную базу Комплектующие и щелкните на кнопке ОК.

3. В окне Комплектующие: база данных откройте панель Таблицы. Убедитесь, что на ней присутствуют значки ранее созданных таблиц Комплектующие и Поставщики.

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

Читайте также:  По каким признакам определяется появление коренных зубов

5. Щелчком на кнопке Добавить выберите таблицы Комплектующие и Поставщики— в окне Схема данных откроются списки полей этих таблиц.

6. При нажатой клавише SHIFT выделите в таблице Комплектующие два поля — Компонент и Модель.

7. Перетащите эти поля на список полей таблицы Поставщики. При отпускании кнопки мыши автоматически откроется диалоговое окно Изменение связей.

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

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

10. Закройте окно Схема данных. Закройте программу Microsoft Access.

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

Упражнение 1.3. Создание запроса на выборку

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

1. Запустите программу Microsoft Access 2000 (Пуск > Программы > Microsoft Access).

2. В окне Microsoft Access включите переключатель Открыть базу данных, выберите ранее созданную базу Комплектующие и щелкните на кнопке ОК.

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

4. В окне Добавление таблицы выберите таблицу Поставщики и щелкните на кнопке Добавить; закройте окно Добавление таблицы.

5. В списке полей таблицы Поставщики выберите поля, включаемые в результиру­ющую таблицу: Компонент, Модель, Цена оптовая, Поставщик, Телефон. Выбор производите двойными щелчками на именах полей.

6. Задайте условие отбора для поля Компонент. В соответствующую строку вве­дите: Жесткий диск. Из таблицы будут выбираться не все изделия, а только жесткие диски.

7. Задайте условие отбора для поля Цена оптовая. В соответствующую строку введите: Реклама

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

9. Двойным щелчком на поле Основной параметр в списке полей таблицы Ком­плектующие введите это поле в бланк запроса по образцу.

10. В строке Условие отбора столбца Основной параметр введите условие >8 (емкость диска более восьми гигабайт).

Рис. 1.2. Пример создания бланка запроса по образцу

11. Закройте бланк запроса по образцу. При закрытии запроса введите его имя — Выбор комплектующих.

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

13. По окончании работы закройте все открытые объекты и завершите работу

с программой Microsoft Access.

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

Упражнение 1.4. Создание запросов «с параметром»

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

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

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

1. Запустите программу Microsoft Access 2000 (Пуск > Программы > Microsoft Access).

2. В окне Microsoft Access включите переключатель Открыть базу данных, выберите ранее созданную базу Комплектующие и щелкните на кнопке ОК.

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

4. Согласно упражнению 1.3, создайте запрос на выборку, основанный на таблице Поставщики, в который войдут следующие поля:

Источник

Связанная таблица access 2010

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

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

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

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

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

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

Упражнение 1.1. Создание базовых таблиц

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

1. Запустите программу Microsoft Access 2000 (Пуск > Программы >Microsoft Access).

2. В окне Microsoft Access включите переключатель Новая база данных и щелкните на кнопке ОК.

3. В окне Файл новой базы данных выберите папку \Мои документы и дайте файлу имя: Комплектующие. Убедитесь, что в качестве типа файла выбрано Базы данных Microsoft Access, и щелкните на кнопке Создать. Откроется окно новой базы — Комплектующие: база данных.

4. Откройте панель Таблицы.

5. Дважды щелкните на значке Создание таблицы в режиме конструктора — откро­ется бланк создания структуры таблицы.

6. Для первой таблицы введите следующие поля:

Рис. 1.1. Таблица Комплектующие в режиме Конструктора

Обратите внимание на то, что в данном случае поле Цена задано не денежным типом, а числовым. Данные, относящиеся к денежному типу, имеют размерность, выраженную в рублях (если работа выполняется с версией Microsoft Access, локализованной в России). Но стоимость компонентов вычислительной техники выражать в этой единице измерения не принято. Для сравнимости цен разных поставщиков обычно используют «условные единицы». В таких случаях удобно использовать поле числового типа, чтобы не перенастраивать всю СУБД.

7. Щелкните на поле Цена. В нижней части бланка задайте свойство Число деся­тичных знаков, равным 2.

8. Для связи с будущей таблицей поставщиков надо задать ключевое поле. Поскольку здесь ни одно поле явно не претендует на «уникальность», используем комби­нацию полей Компонент и Модель. Выделите оба поля в верхней части бланка (при нажатой клавише SHIFT). Щелчком правой кнопки мыши откройте кон­текстное меню и выберите в нем пункт Ключевое поле.

9. Закройте окно Конструктора. При закрытии окна дайте таблице имя Комплекту­ющие.

10. Повторив действия пунктов 5-9, создайте таблицу Поставщики, в которую входят следующие поля.

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

Ключевое поле можно не задавать — для текущей задачи оно не требуется.

11. В окне Комплектующие: база данных откройте по очереди созданные таблицы и наполните их экспериментальным содержанием (3-4 записи). Закончив работу, закройте таблицы и завершите работу с программой.

Читайте также:  Принципы построения для сводной таблицы

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

Упражнение 1.2. Создание межтабличных связей .

1. Запустите программу Microsoft Access 2000 (Пуск > Программы > Microsoft Access).

2. В окне Microsoft Access включите переключатель Открыть базу данных, выберите ранее созданную базу Комплектующие и щелкните на кнопке ОК.

3. В окне Комплектующие: база данных откройте панель Таблицы. Убедитесь, что на ней присутствуют значки ранее созданных таблиц Комплектующие и Поставщики.

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

5. Щелчком на кнопке Добавить выберите таблицы Комплектующие и Поставщики— в окне Схема данных откроются списки полей этих таблиц.

6. При нажатой клавише SHIFT выделите в таблице Комплектующие два поля — Компонент и Модель.

7. Перетащите эти поля на список полей таблицы Поставщики. При отпускании кнопки мыши автоматически откроется диалоговое окно Изменение связей.

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

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

10. Закройте окно Схема данных. Закройте программу Microsoft Access.

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

Упражнение 1.3. Создание запроса на выборку

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

1. Запустите программу Microsoft Access 2000 (Пуск > Программы > Microsoft Access).

2. В окне Microsoft Access включите переключатель Открыть базу данных, выберите ранее созданную базу Комплектующие и щелкните на кнопке ОК.

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

4. В окне Добавление таблицы выберите таблицу Поставщики и щелкните на кнопке Добавить; закройте окно Добавление таблицы.

5. В списке полей таблицы Поставщики выберите поля, включаемые в результиру­ющую таблицу: Компонент, Модель, Цена оптовая, Поставщик, Телефон. Выбор производите двойными щелчками на именах полей.

6. Задайте условие отбора для поля Компонент. В соответствующую строку вве­дите: Жесткий диск. Из таблицы будут выбираться не все изделия, а только жесткие диски.

7. Задайте условие отбора для поля Цена оптовая. В соответствующую строку введите: Реклама

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

9. Двойным щелчком на поле Основной параметр в списке полей таблицы Ком­плектующие введите это поле в бланк запроса по образцу.

10. В строке Условие отбора столбца Основной параметр введите условие >8 (емкость диска более восьми гигабайт).

Рис. 1.2. Пример создания бланка запроса по образцу

11. Закройте бланк запроса по образцу. При закрытии запроса введите его имя — Выбор комплектующих.

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

13. По окончании работы закройте все открытые объекты и завершите работу

с программой Microsoft Access.

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

Упражнение 1.4. Создание запросов «с параметром»

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

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

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

1. Запустите программу Microsoft Access 2000 (Пуск > Программы > Microsoft Access).

2. В окне Microsoft Access включите переключатель Открыть базу данных, выберите ранее созданную базу Комплектующие и щелкните на кнопке ОК.

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

4. Согласно упражнению 1.3, создайте запрос на выборку, основанный на таблице Поставщики, в который войдут следующие поля:

Источник

Связывание таблиц и удаление связей в Microsoft Access

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

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

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

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

Пример связи один к одному между двумя базами данных

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

Связь многие ко многим через мастер подстановок Access

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

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

Источник