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

Введение

бизнес-процесс на предприятии, который мог бы сконцентрироваться только на одном предмете в плане информации.

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

Только из данного краткого описания можно выделить несколько самостоятельных объектов:

  • Телефонные линии обслуживания;
  • Сотрудники отдела;
  • Должности сотрудников;
  • Группы, по которым распределены сотрудники;
  • Звонки.

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

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

Логику соединения таблиц в БД важно понять с самого начала изучения SQL, так как наверняка Вы не будете писать запросы только к одной таблице. Всего существует 3 типа связей:

Всего существует 3 типа связей:

  • Один к одному;
  • Один ко многим;
  • Многие ко многим.

Нормализация базы данных

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

В то же время не все базы данных необходимо нормализовать. В целом, базы с обработкой транзакций в реальном времени (OLTP), должны быть нормализованы.

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

Первая форма нормализации

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

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

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

Вторая форма нормализации

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

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

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

Таким образом, таблица с этими полями не будет соответствовать второй форме нормализации, поскольку атрибут «название товара» зависит от идентификатора продукта, но не от номера заказа:

  • Номер заказа (первичный ключ);
  • ID товара (первичный ключ);
  • Название товара.

Третья форма нормализации

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

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

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

Многомерные данные

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

Функции и режимы работы Access

Access обладает такими важными функциями, как:

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

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

Существует 3 режима работы базы данных Access:

  1. Режим запуска, который позволяет осуществлять сжатие и восстановление базы данных без необходимости в её открытии.
  2. Режим конструктора, где есть возможности для создания и модификации структуры таблиц и запросов, создания форм для отображения и редактирования данных и подготовки отчётов перед печатью.
  3. Режим выполнения, где в главном окне выводятся окна объектов баз данных.

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

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

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

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

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

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

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

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

Обратите внимание, что заполнение таким способом возможно только в случае, если связь ещё не установлена. Если у вас так не получилось, то вы можете удалить её и заполнить ячейки

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

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

Типы данных в Microsoft Access

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

  • Текстовый. Может быть использован для хранения стандартного текста с ограничением 255 символов в размере. Текст или числа не предназначаются для расчётов.
  • Числовой. Используют для хранения действительных чисел. Здесь есть огромное число подтипов, выбор которых определяет точность вычислений.
  • Поле Мемо – специальный тип данных, предназначенный для хранения текстов объёмом до 65 535 символов. В поле хранится именно указатель на место базы данных, где хранится непосредственно текст. Поле данного типа не может быть ключевым или проиндексированным. Предусмотрены длинный текст или комбинация текста и числовых значений.
  • Дата/время. Предназначен для хранения дат календаря и настоящего времени в специальном фиксированном формате.
  • Денежный. Необходим для хранения денежных сумм. В него включены денежные значения и числовые сведения, используемые при математических расчётах.
  • Счётчик, в форме специального типа данных для оригинальных натуральных чисел, неповторяющихся в поле и обладающих автоматическим наращиванием. Функция заключается в порядковой нумерации записей.
  • Логический. Нужен для хранения логических данные и полей, которые содержат одно из 2-х возможных значений (могут принимать только 2 значения, например: «Да» или «Нет»).
  • Гиперссылка в форме специального поля, в котором хранятся адреса URL web-данных в сети интернет. При нажатии на ссылку, в автоматическом режиме запустится браузер и будет воспроизведён объект в его окне.
  • Мастер подстановок. Не представляет собой специальный тип данных. Можно автоматизировать настройки таким образом, чтобы не вводить информацию в ручном режиме. Сведения в таком случае можно выбрать из раскрывающегося списка.
  • Поле объекта OLE предназначается для включения изображения, звукозаписи и других типов данных. Такое поле не является ключевым или проиндексированным.

Использование однонаправленной связи между таблицами

В предыдущих примерах мы рассмотрели способы создания двунаправленных связей между таблицами, т.е. когда в обоих классах модели определяется навигационное свойство. Тем не менее определение пары навигационных свойств не является обязательным при работе с Entity Framework. В нашей модели мы можем указать ссылку только в одном классе, например, в классе Customer оставить ссылку на коллекцию объектов Order, а в классе Order удалить ссылку на Customer:

В этом примере мы не стали удалять внешний ключ CustomerId, благодаря чему, Entity Framework четко определяет связь между таблицами с использованием этого ключа, используя соглашения, описанные выше. Теперь давайте сделаем еще один шаг и удалим внешний ключ из таблицы Order:

Ранее мы уже сказали, что по соглашению Code-First сгенерирует автоматически внешний ключ, если он не объявлен явно в классе модели. Это же соглашение работает, если мы используем однонаправленную связь между таблицами. Класс Customer по прежнему имеет навигационное свойство, определяющие его отношение с Order, поэтому будет генерироваться внешний ключ с именем Customer_CustomerId в таблице Orders.

Что будет если мы захотим удалить оба навигационных свойства, а использовать для связи явно заданный внешний ключ? Сама платформа Entity Framework поддерживает этот сценарий, но не подход Code-First. В Code-First требуется для создания отношений определить как минимум одно навигационное свойство, иначе свойство модели, которое мы планировали использовать как внешний ключ, будет просто преобразовано в столбец в таблице и отношения между таблицами не будут созданы.

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

Как мы описывали раньше, чтобы явно указать классу Order, что UserId является внешним ключом, можно использовать атрибут ForeignKey и передать ему имя навигационного свойства в параметре. Что делать, если мы используем одностороннюю связь и в классе Order не используем навигационное свойство?

Для решения этой проблемы мы можем использовать этот атрибут в главной таблице к навигационному свойству Orders или использовать Fluent API, как показано в примере ниже:

Обратите внимание, что при использовании Fluent API в вызове метода WithRequired() мы не передаем параметр делегата с выбором навигационного свойства из модели, т.к. используем одностороннюю связь и у нас отсутствует навигационное свойство в классе Order

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

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

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

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

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

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

Ключевое поле таблицы MS Access, его назначение, способы задания

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

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

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

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

В качестве ключевого поля в этих таблицах можно использовать поле Код типаСчётчик, автоматически формируемое Access при создании структуры таблицы, или в каждой таблице задать поле Табельный номер, по которому затем связать таблицы. Таблицы при этом будут связаны так называемым реляционным отношением. Последовательность действий пользователя при создании таблиц Сотрудник и Адрес.

Виды индексированных полей в MS Access, примеры

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

Значение данного свойства можно задать только в окне свойств в режиме конструктора таблицы. Индекс по одному полю может быть определен путем установки свойства Индексированное поле (Indexed). Кроме того, можно выбрать команду Индексы в меню Вид или нажать кнопку «Индексы» на панели инструментов. Будет открыто окно индексов.

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

Рассмотрим некоторые из этих дополнительных свойств:

Свойство «Тип элемента управления»(DisplayControl) содержит раскрывающийся список типов элементов управления, доступных для выбранного поля. Для полей с типами «Текстовый» или «Числовой» для данного свойства возможен выбор поля, списка или поля со списком. Для логических полей возможен выбор поля, поля со списком или флажка.

Свойства «Тип источника строк» (RowSourceType), «Источник строк» (RowSource) определят источник данных для списка или поля со списком. Например, для того чтобы вывести в строках списка данные из запроса «Список клиентов», следует выбрать для свойства Тип источника строк значение «Таблица/запрос» и указать в свойстве Источник строк имя запроса «Список клиентов». Если список должен содержать небольшое число значений, которые не должны изменяться, можно выбрать в свойстве Тип источника строк (RowSourceType) «Список значений» и ввести образующие список значения в ячейку свойства Источник строк (RowSource). Элементы списка отделяются друг от друга точкой с запятой.

Дата добавления: 2018-02-28 ; просмотров: 830 ; ЗАКАЗАТЬ РАБОТУ

Microsoft Office

Связь таблиц Access

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

1. Выберите команду Сервис > Схема данных. Откроется окно, схематически изображающее связи базы данных. На рис. 16.11 видно, что линия связи соединяет поля Код_Контакты таблицы Контакты и Контакт таблицы Список.

Примечание

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

Рис. 16.11. Схема данных Access

Для тренировки давайте удалим связь, а затем создадим ее заново.

2. Щелчком выделите линию связи.

3. Нажмите клавишу Delete. В ответ на появившийся запрос щелкните на кнопке Да. Связь исчезнет.

4. Поместите указатель мыши на пункт Код_Контакты таблицы Контакты.

5. Нажмите кнопку мыши и перетащите указатель на поле Контакт таблицы Список.

6. В открывшемся окне диалога щелкните на кнопке Создать. Связь появится вновь.

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

7. Дважды щелкните на линии связи. Откроется окно диалога, показанное на рис. 16.12.

Рис. 16.12. Параметры связи

Примечание

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

8. Установите флажок Обеспечение целостности данных. Этот режим не позволит Access оставлять в таблице Список записи, для которых нельзя подобрать запись таблицы Контакты с подходящим значением поля Код_Контакты.

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

Примечание

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

10. Щелкните на кнопке ОК.

11. Закройте окно Схема данных.

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

13. Щелкните на знаке «плюс» записи для Петра Петрова. Откроется вложенная таблица, содержащая те записи таблицы Список, значение поля Код_Контакты которых равно величине одноименного поля записи для Петра Петрова (рис. 16.13).

Рис. 16.13. Выборка данных из связанной таблицы Access

Примечание

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

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

Рейтинг
( Пока оценок нет )
Editor
Editor/ автор статьи

Давно интересуюсь темой. Мне нравится писать о том, в чём разбираюсь.

Понравилась статья? Поделиться с друзьями:
DS-сервис
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: