Что такое связь многие ко многим

Система управления базами данных SQLite. Изучаем язык запросов SQL и реляционные базы данных на примере библиотекой SQLite3. Курс для начинающих.

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

Здравствуйте, уважаемые посетители сайта ZametkiNaPolyah.ru. Продолжаем изучать базы данных и наше знакомство с библиотекой SQLite3. Продолжаем изучать теорию реляционных баз данных и в этой части мы познакомимся с видами и типами связей между таблицами в реляционных базах данных. Так же мы познакомимся с такими термина, как: кортеж, атрибут и отношения. Данная тема является базовой и ее понимание необходимо для работы с базами данных и для их проектирования.

Что такое связь многие ко многим. Смотреть фото Что такое связь многие ко многим. Смотреть картинку Что такое связь многие ко многим. Картинка про Что такое связь многие ко многим. Фото Что такое связь многие ко многим

Виды связей между таблицами в базе данных. Связи в реляционных базах данных. Отношения, кортежи, атрибуты.

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

Термины кортеж, атрибут и отношение в реляционных базах данных

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

Что такое связь многие ко многим. Смотреть фото Что такое связь многие ко многим. Смотреть картинку Что такое связь многие ко многим. Картинка про Что такое связь многие ко многим. Фото Что такое связь многие ко многим

Таблица с данными из базы данных World

У нас есть простая таблица City из базы данных World, в которой есть строки и столбцы. Но термины: таблица, строка, столбец – это термины стандарта SQL.
Кстати: ни одна из существующих в мире СУБД не имеет полной поддержки того или иного стандарта SQL, но и ни один стандарт SQL полностью не реализует математику реляционных баз данных.
В терминологии реляционных баз данных: таблица – это отношение (принимается такое допущение), строка – это кортеж, а столбец – атрибут. Иногда вы можете услышать, как некоторые разработчики называют строки записями. Чтобы не было путаницы в дальнейшем предлагаю использовать термины SQL.
Если рассматривать таблицу, как объект (например книга), то столбец – это характеристики объекта, а строки содержат информацию об объекте.

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

Давайте теперь рассмотрим то, как могут быть связаны таблицы в реляционных базах данных. Сразу скажу, что всего существует три вида связей между таблицами баз данных:
• связь один к одному;
• связь один ко многим;
• связь многие ко многим.
Рассмотрим, как такие связи между таблицами могут быть реализованы в реляционных базах данных.

Реализация связи один ко многим в теории баз данных

Связь один ко многим в реляционных базах данных реализуется тогда, когда объекту А может принадлежать или же соответствовать несколько объектов Б, но объекту Б может соответствовать только один объект А. Не совсем понятно, поэтому смотрим пример ниже.

Что такое связь многие ко многим. Смотреть фото Что такое связь многие ко многим. Смотреть картинку Что такое связь многие ко многим. Картинка про Что такое связь многие ко многим. Фото Что такое связь многие ко многим

Реализация связи один ко многим в реляционных базах данных

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

Связь многие ко многим

Связь многие ко многим реализуется в том случае, когда нескольким объектам из таблицы А может соответствовать несколько объектов из таблицы Б, и в тоже время нескольким объектам из таблицы Б соответствует несколько объектов из таблицы А. Рассмотрим простой пример.

Что такое связь многие ко многим. Смотреть фото Что такое связь многие ко многим. Смотреть картинку Что такое связь многие ко многим. Картинка про Что такое связь многие ко многим. Фото Что такое связь многие ко многим

Пример связи многие ко многим

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

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

Связь один к одному – самая редко встречаемая связь между таблицами. В 97 случаях из 100, если вы видите такую связь, вам необходимо объединить две таблицы в одну.

Что такое связь многие ко многим. Смотреть фото Что такое связь многие ко многим. Смотреть картинку Что такое связь многие ко многим. Картинка про Что такое связь многие ко многим. Фото Что такое связь многие ко многим

Пример связи один к одному

Таблицы будут связаны один к одному тогда, когда одному объекту таблицы А соответствует один объект таблицы Б, и одному объекту таблицы Б соответствует один объект таблицы А. Как я уже говорил: если вы видите, что связь один к одному – смело объединяйте таблицы в одну, за исключением тех случаев, когда происходит модернизация базы данных.
Например, у нас была таблица, в которой хранились данные о сотрудниках компании. Но произошли какие-то изменения в бизнес-процессе и появилась необходимость создать таблицы с теми же самыми сотрудниками, но не для всей компании, а разбив их по отделам. Таблицы отделов будут дочерними по отношению к таблице, в которой хранятся данные обо всех сотрудниках компании, и связаны такие таблицы будут связью один к одному.

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

Источник

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

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

В этой статье

Введение

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

Что такое связь многие ко многим. Смотреть фото Что такое связь многие ко многим. Смотреть картинку Что такое связь многие ко многим. Картинка про Что такое связь многие ко многим. Фото Что такое связь многие ко многим

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

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

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

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

Что такое связь многие ко многим. Смотреть фото Что такое связь многие ко многим. Смотреть картинку Что такое связь многие ко многим. Картинка про Что такое связь многие ко многим. Фото Что такое связь многие ко многим

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Щелкните «Файл», выберите«Открыть», а затем выберите и откройте базу данных.

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

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

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

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

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

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

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

Добавление таблиц (добавление таблицы в Access 2013 Позволяет показывать в окне «Отношения» выбор таблиц.

Источник

Аксесс связь многие ко многим

Во всех СУБД (системах управления базами данных) имеется несколько типов отношений между таблицами. Среди них связь один-к-одному, один-к-многим, многие-к-одному (некоторые склонны отождествлять эти два типа в один) и связь многие-ко-многим. Пример последней, ее объяснение и применение в различных СУБД, таких как Access или SQL, будет рассмотрено в этой статье.

Определение

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

Представленная схема наглядно отображает суть данного отношения.

Что такое связь многие ко многим. Смотреть фото Что такое связь многие ко многим. Смотреть картинку Что такое связь многие ко многим. Картинка про Что такое связь многие ко многим. Фото Что такое связь многие ко многим

Когда может быть использована связь многие-ко-многим?

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

Что такое связь многие ко многим. Смотреть фото Что такое связь многие ко многим. Смотреть картинку Что такое связь многие ко многим. Картинка про Что такое связь многие ко многим. Фото Что такое связь многие ко многим

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

Как сделать связь многие-ко-многим?

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

Microsoft Access

Офисный программный продукт от «Майкрософт» известен на рынке ПО уже довольно продолжительное время. Он поставляется вместе с текстовым редактором Worfd, табличным процессором Excel и прочими, входящими в линейку «офиса». Можно Access (читается как «аксес», дословный перевод – «доступ») приобрести и отдельно от его «коллег». Рекомендуется купить, разумеется, лицензионный софт, но ни для кого не секрет, сколько пиратских репаков можно найти на просторах Сети, в виде обычных файлов или раздач торрентов. «Майкрософт Аксес» доступен даже в портативной сборке. Она, не требующая инсталляции и особых навыков работы с ПК, лучше всего подходит для выбора, если ПО не будет использоваться продолжительно и часто.

Что такое связь многие ко многим. Смотреть фото Что такое связь многие ко многим. Смотреть картинку Что такое связь многие ко многим. Картинка про Что такое связь многие ко многим. Фото Что такое связь многие ко многим

Из контекста ясно, что «Майкрософт Аксес» – это система управления базами данных. Причем одна из популярнейших. Она является реляционной, что значит, она основана на логической модели данных, которая в ходе своей работы обращается к теории множеств и логике первого порядка. Связь многие-ко-многим в Access (примеры будут даны в ходе объяснения) реализуется очень и очень просто. Рассмотрим ее.

Есть две таблицы..

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

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

Схема данных

Связи между таблицами в СУБД «Майкрософт Аксес» реализуются при помощи вкладки «Схема данных». На появившуюся панель добавляются все необходимые сущности (в нашем случае все три таблицы). Создание связи многие-ко-многим будет происходить при помощи двух отношений один-к-многих между главными («Студенты» и «Преподаватели») и промежуточной таблицы. Для этого необходимо соединить между собой соответствующие первичные ключи.

Что такое связь многие ко многим. Смотреть фото Что такое связь многие ко многим. Смотреть картинку Что такое связь многие ко многим. Картинка про Что такое связь многие ко многим. Фото Что такое связь многие ко многим

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

Проектирование баз данных на SQL – задача сложнее, чем на «Аксес». Если майкрософтовский продукт полностью адаптирован под офисную среду, имеет огромный и, с каждым выпуском и обновлением все расширяемый, функционал, но в то же время и удобный для простого пользователя интерфейс, то SQL – это отдельный непроцедурный язык программирования, при помощи которого на разных платформах можно работать с базами данных. Известное ПО для данной задачи: Oracle MySQL и DB2 (популярное, но не единственное в своем роде). Несмотря на то, что у каждого из них есть свои тонкости и нюансы, язык SQL их «объединяет». Научившись работать хотя бы с одним из них, разобраться с другим будет гораздо проще.

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

Принцип создания связи многие-ко-многим

Длительное вступление могло несколько смутить и «напустить туману», но на самом деле принцип реализации связи остается прежним. Для того чтобы тип связи многие-ко-многим был воплощен на практике, не только в «Аксес», но и SQL, требуется изначально создать две базовые таблицы и одну – промежуточную. Аналогично дело обстоит и с ключами: основные сущности имеют главные поля, каждый из которых записывается в связующую таблицу. Что значит, что SQL-связь многие-ко-многим принципиально не отличается от «Аксеса».

Что такое связь многие ко многим. Смотреть фото Что такое связь многие ко многим. Смотреть картинку Что такое связь многие ко многим. Картинка про Что такое связь многие ко многим. Фото Что такое связь многие ко многим

Реализация связи

Для реализации связи многие-ко-многим в скриптах SQL используются внешние ключи (FOREIGN KEY) аналогичные исходным ключам в основных таблицах. Они записываются вместе со всеми полями при их создании и/или редактировании.

Роль связи многие-ко-многим

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

Что такое связь многие ко многим. Смотреть фото Что такое связь многие ко многим. Смотреть картинку Что такое связь многие ко многим. Картинка про Что такое связь многие ко многим. Фото Что такое связь многие ко многим

А это значит, что при составлении схемы данных (в «Аксесе») или написании скриптов (в «Оракл» или «ДиБиТу») будет присутствовать как минимум одна связь многие-ко-многим. Пример SQl, часто использующийся при обучении курса «Организации баз данных» – БД Кинга.

База данных Кинга

Эта учебная база данных представляет собой сведения о корпорации Кинга. Среди таблиц:

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

Что такое связь многие ко многим. Смотреть фото Что такое связь многие ко многим. Смотреть картинку Что такое связь многие ко многим. Картинка про Что такое связь многие ко многим. Фото Что такое связь многие ко многим

Масштабные же таблицы, такие как «сотрудники фирмы», «фирмы-покупатели», «договоры о продаже» и «акты продаж» связаны сразу с несколькими сущностями, причем с некоторыми – при помощи «посредников» отношением многие-ко-многим. Таблица «фирмы-покупатели» сама является посреднической, как таковая, ведь в ней есть многие поля, заимствованные из других таблиц и являющиеся внешними ключами. Кроме того, масштабность и взаимосвязь базы данных «Корпорации Кинга» такова, что все отношения неразрывно коррелируют между собой и влияют одно на другое. Разрушение хотя бы одного из них повлечет за собой деструкцию целостности всей БД.

Важные нюансы

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

В этом курсе:

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

Что такое связь многие ко многим. Смотреть фото Что такое связь многие ко многим. Смотреть картинку Что такое связь многие ко многим. Картинка про Что такое связь многие ко многим. Фото Что такое связь многие ко многим

Что такое связь «многие-ко-многим»?

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

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

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

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

Каждый продукт может входить в один заказ как в одном, так и в нескольких экземплярах.

Например, в заказ Арины Ивановой № 1012 могут входить продукты № 12 и 15, а также пять продуктов № 30.

Создание связи «многие-ко-многим»

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

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

Ниже рассмотрим пример, когда в заказ Арины Ивановой № 1012 входят продукты № 12, 15 и 30. Это значит, что записи в таблице «Сведения о заказах» выглядят следующим образом:

Арина заказала по одному продукту № 12 и 15, а также пять продуктов № 30. Создать другие строки с номером заказа 1012 и кодом продукта 30 нельзя, потому что поля «Номер заказа» и «Код продукта» вместе составляют первичный ключ, а первичные ключи должны быть уникальными. Вместо этого можно добавить в таблицу «Сведения о заказах» поле «Количество».

Создание промежуточной таблицы

Выберите Создание > Таблица.

Нажмите кнопку Сохранить Что такое связь многие ко многим. Смотреть фото Что такое связь многие ко многим. Смотреть картинку Что такое связь многие ко многим. Картинка про Что такое связь многие ко многим. Фото Что такое связь многие ко многим.

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

Создание полей в промежуточной таблице

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

В режиме таблицы выберите заголовок столбца Код и введите новое имя поля.

Выберите переименованное поле.

На вкладке Поля в списке Тип данных выберите тип, как в соответствующем поле исходной таблицы, например Числовой или Короткий текст.

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

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

Объединение полей для создания первичного ключа

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

Откройте промежуточную таблицу в режиме конструктора.

Выберите обе строки с идентификаторами. (Если вы следовали предыдущим указаниям, это будут две первые строки.)

Выберите Конструктор > Ключевое поле.
Рядом с обоими полями появится значок ключа.

Что такое связь многие ко многим. Смотреть фото Что такое связь многие ко многим. Смотреть картинку Что такое связь многие ко многим. Картинка про Что такое связь многие ко многим. Фото Что такое связь многие ко многим

Соединение трех таблиц для создания связи «многие-ко-многим»

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

После этого связи должны выглядеть следующим образом:

Что такое связь многие ко многим. Смотреть фото Что такое связь многие ко многим. Смотреть картинку Что такое связь многие ко многим. Картинка про Что такое связь многие ко многим. Фото Что такое связь многие ко многим

Вам нужны дополнительные возможности?

Отношения «многие ко многим» применяются, когда один элемент таблицы А может быть связан со множеством элементов таблицы Б и наоборот. Например, товар может входить во множество заказов, а заказ может содержать множество товаров.

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

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

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

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

Промежуточная таблица также называется связующей.

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

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

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

Теперь откроем таблицы «Товары» и «Заказы».

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

Первичный ключ для таблицы «Заказы» называется «ИД заказа». Он также имеет тип данных Счетчик.

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

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

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

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

Нажмите клавиши CTRL+S, чтобы сохранить связующую таблицу. Назовите ее «Сведения о заказе».

Теперь мы можем создать отношения. Для начала закройте все открытые таблицы. Выберите Работа с базами данных > Схема данных.

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

Разместите таблицы так, чтобы связующая таблица «Сведения о заказе» была посередине. Перетащите поле «ИД заказа» из таблицы «Заказы» в связующую таблицу.

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

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

Нажмите клавиши CONTROL+S, чтобы сохранить изменения в схеме данных.

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

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

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

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

Что такое связь многие ко многим. Смотреть фото Что такое связь многие ко многим. Смотреть картинку Что такое связь многие ко многим. Картинка про Что такое связь многие ко многим. Фото Что такое связь многие ко многимЧто такое связь многие ко многим. Смотреть фото Что такое связь многие ко многим. Смотреть картинку Что такое связь многие ко многим. Картинка про Что такое связь многие ко многим. Фото Что такое связь многие ко многим

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

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

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

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

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

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

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

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

Что такое связь многие ко многим. Смотреть фото Что такое связь многие ко многим. Смотреть картинку Что такое связь многие ко многим. Картинка про Что такое связь многие ко многим. Фото Что такое связь многие ко многим

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

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *