Связь многие-ко-многим: пример в access, в sql. как сделать связь многие-ко-многим?

Для чего нужны

Вот основ­ные зада­чи БД на при­ме­ре гардеробной:

  • Сохра­нить наши дан­ные по запро­су — что­бы вы мог­ли открыть дверь, пове­сить курт­ку, закрыть дверь и боль­ше не думать ни о курт­ке, ни о гардеробной.
  • Изме­нить наши дан­ные по запро­су — что­бы мож­но было лег­ко извлечь из гар­де­роб­ной все дыря­вые нос­ки и поло­жить на их место целые.
  • Най­ти эти дан­ные по запро­су — что­бы быст­ро най­ти при­лич­ный пиджак или пар­ный носок.
  • Не дать про­чи­тать эти дан­ные тем, кому не сле­ду­ет, а кому надо — дать. Напри­мер, млад­ший брат может смот­реть на ваши крос­сов­ки, но не может их брать. А девуш­ка (или парень) может поло­жить свои вещи, но толь­ко на опре­де­лён­ную полку.
  • Под­дер­жи­вать поря­док и не дать захла­мить­ся — если вам было лень и вы про­сто кину­ли тол­стов­ку куда попа­ло, что­бы гар­де­роб­ная либо сама нашла, куда эту тол­стов­ку пра­виль­но поло­жить, либо ска­за­ла: «Э БРАТ ЗАЧЕМ ЗАХЛАМЛЯЕШЬ ПОЛОЖИ НОРМАЛЬНО ДАВАЙ»
  • Мас­шта­би­ро­вать­ся — что­бы вы мог­ли про­сто вешать в гар­де­роб­ную вещи и не думать об объ­ё­ме полок.
  • Не поте­рять дан­ные — если квар­ти­ра будет гореть, при­лич­ная гар­де­роб­ная не долж­на даже нагреть­ся. Или, если она всё-таки горит, что­бы где-то в защи­щён­ном под­зем­ном гара­же была точ­ная копия этой гар­де­роб­ной со все­ми акту­аль­ны­ми вещами.

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

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

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

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

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

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

Один-ко-многим или многие-к-одному

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

 

Есть два способа назвать эти отношения: один-ко-многим или многие-к-одному. Зависит от того, что является исходной и целевой таблицей.

Например, приведенная ниже конфигурация означает, что от таблицы Sales до таблицы Stores есть отношение «многие-к-одному».

 

А ниже показано отношение «один-ко-многим» от таблицы Stores к таблице Sales:

Эти две таблицы заканчиваются созданием таких отношений:

 

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

В остальной части статьи мы будем использовать термины таблиц FACT и DIMENSION, которые мы объясним отдельно в другой статье. А пока вот краткое объяснение терминов:

  • Таблица фактов (FACT): таблица с числовыми значениями, которые нам нужны либо в агрегированном уровне, либо в подробном выводе. Поля из этой таблицы обычно используются в качестве раздела VALUE визуальных элементов в Power BI.
  • Таблица измерений (DIMENSION): таблица, содержащая описательную информацию, которая используется для нарезки данных таблицы фактов. Поля из этой таблицы часто используются в качестве слайсеров, фильтров или осей визуалов в Power BI.

Отношение «многие к одному»  между таблицами фактов и измерений

“Многие-к-одному” — это отношение, обычно используемое между таблицей фактов и таблицами измерений. Приведенный выше пример находится между таблицами Sales (таблица фактов) и Stores (таблица измерений). Если мы приведем еще одну таблицу в модель: Titles (на основе title_id в обеих таблицах: Sales и Titles), то вы увидите, что существует тот же шаблон отношений «многие-к-одному».

 

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

Допустим, модель отличается от того, что вы видели в этом примере: таблица Sales, таблица Product и две таблицы для информации о категории и подкатегории продукта:

 

Как вы можете видеть на приведенной выше диаграмме отношений, все отношения — “многие-к-одному”. Что хорошо. Однако, если вы хотите нарезать данные таблицы фактов (например, SalesAmount) по полю из таблицы DimProductCategory (например, по имени ProductCategory), для обработки потребуется три отношения:

 

 

Лучшей моделью было бы объединение таблиц категорий и подкатегорий с продуктом и наличие единого отношения «многие к одному» из таблицы фактов в таблицу DimProduct. Подробнее — в ссылке выше.

Много – многозначные связи (M:N)

Много – многозначные связи (M:N) – это когда, каждому экземпляру одного объекта (А) могут соответствовать несколько экземпляров второго объекта (В) и наоборот, каждому экземпляру второго объекта (В) может соответствовать тоже несколько экземпляров первого объекта (А).

Рис.3 Преобразование связи типа M:N через объект – связку

Объект – связка должен иметь идентификатор, образованный из идентификаторов исходных объектов Ка и Кб. Примером много – многозначных связей является связь поставщики – товары, если один поставщик поставляет разные наименования товаров, а товар одного наименования поставляется несколькими поставщиками.

Определение связей между информационными объектами

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

Связи между объектами ГРУППА — СТУДЕНТ характеризуются одно – многозначными отношениями (1:М), поскольку одна группа включает много студентов, а один студент входит только в одну группу. Связь между ними осуществляется по номеру группы, который является уникальным идентификатором главного объекта ГРУППА входит в составной идентификатор объекта СТУДЕНТ (см.табл.1)

Аналогично устанавливается связь между объектами КАФЕДРА ПРЕПОДАВАТЕЛЬ, которые также находятся в одно – многозначных отношениях. Связь между ними осуществляются по уникальному ключу главного объекта КАФЕДРА – коду кафедры, который в подчиненном объекте ПРЕПОДАВАТЕЛЬ является описательным.

Таблица 1. Объекты справочной информации о студентах, группах и предметах

Информационный объект Название реквизитов Обозначение реквизита Признак ключа
ГРУППА Номер группы Количество студентов Средний балл в группе НГ КОЛ ПБАЛ Уникальный простой
СТУДЕНТ Номер группы Номер студентов Фамилия И.О. Год рождения Адрес Балл при поступлении НГНС ФИО ГОДР АДРЕС ПБАЛЛ Уникальный составной
ПРЕДМЕТ Код предмета Название предмета Всего часов Часов лекций Часов практики Число семестров Программа курса (большой текст) КП НП ЧАСЫ ЛЕК ПР ЧС ПРОГ Уникальный простой

Таблица 2. Группировка реквизитов по информационным объектам документа Список преподавателей кафедры

Реквизиты объекта Признак ключа Имя информационного объекта Семантика объекта
ТАБН ККАФ ФИО СТ ЗВ П,У ПРЕПОДАВАТЕЛЬ Сведения о преподавателях кафедр
ККАФ НКАФ ТЕЛ ЗАВ П,У КАФЕДРА Сведения о кафедрах

В таблице приняты обозначения для ключа: П – простой, У – уникальный.

В каждой группе в течение семестра проводятся занятия по разным предметам (объект ИЗУЧЕНИЕ). С другой стороны, каждое занятие определенно для каждой группы. Поэтому имеет место связь типа один – ко – многим между объектами ПРЕДМЕТ — ИЗУЧЕНИЕ.

По каждому предмету проводится множество занятий в различных группах разными преподавателями. С другой стороны, каждое занятие проводится по конкретному предмету, что определяет отношения типа один – ко – многим между объектами ПРЕДМЕТ — ИЗУЧЕНИЕ. Аналогично определяются отношения типа один – ко – многим между объектами ПРЕПОДАВАТЕЛЬ – ИЗУЧЕНИЕ. Объект ИЗУЧЕНИЕ фактически играет роль объекта связки в много – многозначных отношениях объектов.

Рис.4 Много – многозначные связи информационных объектов

Рис.5 Информационно – логическая модель предметной области Учебный процесс

Объект УСПЕВАЕМОСТЬ содержит данные об успеваемости (оценку ) конкретного студента по конкретному занятию. Поэтому он является связанным с объектом СТУДЕНТ и объектом ИЗУЧЕНИЕ. Один студент имеет оценки по нескольким занятиям, но каждая оценка всегда относится к одному конкретному студенту. Это означает, объект УСПЕВАЕМОСТЬ является подчиненным и находится в одно – многозначных отношениях с объектом СТУДНТ. Объект УСПЕВАЕМОСТЬ, а также является подчиненным и находится в одно – многозначных отношениях с объектом ИЗУЧЕНИЕ. Объект УСПЕВАЕМОСТЬ выполняет роль объект – связки много – многозначных отношениях объектов СТУДЕНТ и ИЗУЧЕНИЕ. Много – многозначные отношения между этими объектами определяются тем, что одному студенту соответствует много занятий, отображаемых объектом ИЗУЧЕНИЕ, а одно занятие проводится со многими студентами.

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

Таблица 3 Связи информационных объектов

Главный объект Подчиненный объект Тип связи Ключ связи
ГРУППА КАФЕДРА ГРУППА ПРЕДМЕТ ПРЕПОДАВАТЕЛЬ СТУДЕНТ ИЗУЧЕНИЕ СТУДЕНТ ПРЕПОДАВАТЕЛЬ ИЗУЧЕНИЕ ИЗУЧЕНИЕ ИЗУЧЕНИЕ УСПЕВАЕМОСТЬ УСПЕВАЕМОСТЬ 1:М 1:М 1:М 1:М 1:М 1:М 1:М НГ К КАФ НГ КП ТАБН НГ+НС НГ+КП+ТАБН+ВИДЗ

Связь вида 1:1

Определение 2

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

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

Пример 1

Пусть существует основная О и дополнительная Д таблицы. Символом «$*$» обозначим ключевые поля, символом «$+$» обозначим поля, которые используются для связи.

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

На практике связь 1:1 используется довольно редко, т.к. информацию, которая хранится в двух таблицах, можно объединить в одну таблицу, которая будет занимать намного меньше места в памяти компьютера.

Пример 2

Например, если объединить запись (а, 10) таблицы О и запись (а, стол) таблицы Д, то получим запись (а, 10, стол) новой псевдотаблицы.

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

Информационно – логическая модель предметной области Учебный процесс

Информационно – логическая модель приведена в каноническом виде и объекты в ней размещены по уровням. Уровень остальных объектов определяется наиболее длинным путем к объекту от нулевого уровня. Такое размещение объектов дает представление об их иерархической подчиненности, делает модель более наглядной и облегчает понимание одно – многозначных отношений между объектами.

Логическая структура реляционной базы данных

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

Связи между объектами модели данных реализуются одинаковыми реквизитами – ключами связи в соответствующих таблицах. При этом ключом связи всегда является уникальный ключ главной таблицы. Ключом связи в подчиненной таблице является либо некоторая часть уникального ключа в ней, либо поле, не входящее в состав первичного ключа (например, код кафедры в таблице ПРЕПОДАВАТЕЛЬ). Ключ связи в подчиненной таблице называется внешним ключом. В Access может быть создана схема данных, наглядно отображающая логическую структуру базы данных. Определение одно – многозначных связей в этой схеме должно осуществляться в соответствии с построенной моделью данных. Внешний вид схемы данных практически совпадает с графическим представлением информационно – логической модели. Для модели данных, построенной в рассмотренном примере, логическая структура базы данных в виде схемы данных Access приведена на рис.2.7.

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

УПР. 3. Создание связей

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

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

2.На панели инструментов нажмите кнопку Схема данных или выберите пункт основ-

ного меню Сервис – > Схема данных.

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

бражены, перейдите к шагу 5.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Определение измерения «многие ко многим»Defining the Many-to-Many Dimension

  1. В обозреватель решений щелкните правой кнопкой мыши элемент измеренияи выберите пункт создать измерение.In Solution Explorer, right-click Dimensions, and then click New Dimension.

  2. На странице Вас приветствует мастер измерений нажмите кнопку Далее.On the Welcome to the Dimension Wizard page, click Next.

  3. На странице Выбор метода создания выберите параметр Использовать существующую таблицу и нажмите кнопку Далее.On the Select Creation Method page, verify that the Use an existing table option is selected, and then click Next.

  4. На странице Определение исходных сведений убедитесь, что выбрано представление источника данных Adventure WorksAdventure Works DW 2012.On the Specify Source Information page, verify that the Adventure WorksAdventure Works DW 2012 data source view is selected.

  5. В списке Основная таблица выберите таблицу SalesReason.In the Main table list, select SalesReason.

  6. Убедитесь, что в списке Ключевые столбцы присутствует столбец SalesReasonKey .In the Key columns list, verify that SalesReasonKey is listed.

  7. В списке Столбец имени выберите SalesReasonName.In the Name column list, select SalesReasonName.

  8. Щелкните Далее.Click Next.

  9. На странице Выбор атрибутов измерения атрибут Sales Reason Key автоматически выбран, поскольку он является ключевым.On the Select Dimension Attributes page, the Sales Reason Key attribute is automatically selected because it is the key attribute. Установите флажок рядом с атрибутом Sales Reason Reason Type , измените его имя на Sales Reason Typeи нажмите кнопку Далее.Select the check box beside the Sales Reason Reason Type attribute, change its name to Sales Reason Type, and then click Next.

  10. На странице Завершение работы мастера нажмите кнопку Готово , чтобы создать измерение Sales Reason.On the Completing the Wizard page, click Finish to create the Sales Reason dimension.

  11. В меню Файл выберите команду Сохранить все.On the File menu, click Save All.

  12. На панели Атрибуты конструктора измерений для измерения Sales Reason выберите Sales Reason Keyи в окне свойств задайте для свойства Name значение Sales Reason.In the Attributes pane of the Dimension Designer for the Sales Reason dimension, select Sales Reason Key, and then change the Name property in the Properties window to Sales Reason.

  13. На панели Иерархии конструктора измерений создайте пользовательскую иерархию Sales Reasons , которая будет содержать уровни Sales Reason Type и Sales Reason (в указанном порядке).In the Hierarchies pane of the Dimension Designer, create a Sales Reasons user hierarchy that contains the Sales Reason Type level and the Sales Reason level, in that order.

  14. В окне свойств задайте значение Все причины покупки для свойства AllMemberName иерархии Sales Reason.In the Properties window, define All Sales Reasons as the value for the AllMemberName property of the Sales Reasons hierarchy.

  15. Укажите значение Все причины покупки для свойства AttributeAllMemberName измерения Sales Reason.Define All Sales Reasons as the value for AttributeAllMemberName property of the Sales Reason dimension.

  16. Чтобы добавить созданное измерение в куб Службы Analysis ServicesAnalysis Services Tutorial, переключитесь в Конструктор кубов.To add the newly created dimension to the Службы Analysis ServicesAnalysis Services Tutorial cube as a cube dimension, switch to Cube Designer. На вкладке Структура куба щелкните правой кнопкой мыши панель Измерения и выберите команду Добавить измерение куба.On the Cube Structure tab, right-click in the Dimensions pane and select Add Cube Dimension.

  17. В диалоговом окне Добавление измерения куба выберите Sales Reason и нажмите кнопку ОК.In the Add Cube Dimension dialog box, select Sales Reason and then click OK.

  18. В меню Файл выберите команду Сохранить все.On the File menu, click Save All.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Примечание

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

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

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

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

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

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

    Примечание

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

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

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

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

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

      Примечание

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

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

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

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

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

SQL

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

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

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

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

Adblock
detector