Как сделать связь один к одному в access 2013?

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

В этом курсе:

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

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

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

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

Общие сведения о создании связи «один к одному»

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

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

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

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

Инструкции по созданию связи типа «один к одному»

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

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

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

Выберите таблицу с ключом (обычно первичным), который вы хотите добавить в первую таблицу, и нажмите кнопку Далее. В рассмотренном примере следует выбрать таблицу «Служебный транспорт».

Добавьте в список Выбранные поля поле с необходимым ключом. Нажмите кнопку Далее.

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

В последнем окне установите флажок Включить проверку целостности данных и нажмите кнопку Готово.

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

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

Хотя этот тип связей используется не так часто, как связи «один ко многим» или «многие ко многим», все же полезно знать, как он создается.

Рассмотрим процесс создания такой связи.

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

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

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

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

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

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

Для начала давайте создадим связь с помощью мастера подстановок.

Мы получаем значения из другой таблицы — «Служебные автомобили».

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

Скроем ключевой столбец, и назовем это поле «Автомобиль компании».

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

Нажмите Готово. Теперь у нас есть внешний ключ и простой способ выбрать регистрационные номера.

Выделите нужное поле. Затем выберите Поля и установите флажки Индексированное и Уникальное.

Теперь перейдите в таблицу «Служебные автомобили» и проверьте, выделен ли первичный ключ. Как видите, для него тоже установлены флажки «Индексированное» и «Уникальное», так как это поле типа Счетчик. Итак, у нас все готово.

В режиме конструктора свойство индексирования отображается в области Свойства поля.

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

Итак, вы создали в базе данных отношение «один к одному».

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

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

Отношение «один-к-одному»

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

Таблица Products (изделия) может содержать подробную информацию, описывающую изделие и его цену, и дополнительные сведения об особенностях его производства. Эти сведения интересны только сотрудникам инженерно-технических подразделений, поэтому их можно перенести в отдельную таблицу (названную, например, ProductsEngineering (технические характеристики изделия). Это та информация, которая не должна интересовать продавцов при оформлении заказов. В другой ситуации можно разбить таблицу на две, просто потому что она слишком велика. (Программа Access не разрешает таблице иметь более 255 полей.)

Рис. 5.15. Когда связываются два поля, в которых не допускаются дублирующиеся данные (и флажок Обеспечение целостности данных установлен), Access считает, что создается связь «один-к-одному». Программа помещает цифру 1 на концах линии связи для того, чтобы отличать ее от других типов связей. В этом примере столбец ID в таблице Products и столбец ID в таблице ProductsEngineering — первичные ключи соответствующих таблиц, поэтому невозможно связать несколько записей таблицы ProductsEngineering с одной и той же записью таблицы Products

Читать еще:  Как в access сделать выпадающий список в запросе?

создается так же, как отношение «один-ко-многим» — перетаскиванием с помощью мыши полей на вкладке Схема данных (рис. 5.15). Единственная

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

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

Применяйте связи «один-к-одному» с осторожностью

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

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

• Две части таблицы необходимо поместить в отдельные БД (см. разд. «Что такое разделенная БД» главы 18) для того, чтобы разные люди могли копировать их на разные компьютеры и редактировать независимо.

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

• У вас есть таблица с огромным объемом данных, таких как поля типа Вложение (см. разд. «Вложение» главы 2) с большими документами. В этом случае можно повысить производительность, если разделить таблицу. Вы даже можете решить, что лучше поместить половину таблицы в отдельную БД (см, разд. «Что такое разделенная БД» главы 18).

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

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

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

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

Создание базы данных (установка связей между таблицами)

Курс дистанционного обучения:
«Экономическая информатика»
Модуль 2 (2,5 кредита): Прикладное программное обеспечение офисного назначения

Тема 2.1. Обработка текстовой информации

Тема 2.2. Процессоры электронных таблиц

Тема 2.3. Программные средства презентаций и основы офисного программирования

Тема 2.4. Системы управления базами данных и экспертные системы

2.4.11. Учебная база данных с главной кнопочной формой «Training_students» — Скачать

2.4. Системы управления базами данных и экспертные системы

2.4.3. Создание базы данных (установка связей между таблицами и заполнение таблиц)

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

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

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

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

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

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

В окне Схема данных появится связь один-ко-многим между таблицами Группы студентов и Студенты. Аналогичным образом надо связать поля КодСтудента в таблицах Студенты и Успеваемость, а затем поля КодДисциплины в таблицах Успеваемость и Дисциплины. В итоге получим Схему данных, представленную на рисунке.

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

Далее необходимо осуществить заполнение всех таблиц. Заполнение таблиц целесообразно начинать с таблицы Группы студентов, так как поле Код группы таблицы Студенты используется в качестве столбца подстановки для заполнения соответствующего поля таблицы Студенты.

2.4.3.3. Заполнение таблиц

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

На экране появится структура таблицы БД в режиме таблицы. Новая таблица состоит из одной пустой строки.

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

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

После заполнения таблица Студенты имеет следующий вид.

Аналогичным образом заполняются остальные таблицы: Группы Студентов, Успеваемость, Дисциплины.

В приложении Access применяются различные методы перемещения по таблице. Переходить от записи к записи можно с помощью: клавиш управления курсором; кнопки из области Запись, расположенной внизу таблицы в режиме таблицы; команды Правка — Перейти.. Для перемещения от поля к полю (слева направо) применяются клавиши Tab и Enter, а в обратном направлении Shift+Tab.

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

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

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

Как сделать связь один к одному в access 2013?

  • Главная Страница
  • Поиск По Сайту
  • Контакты Обратная связь
  • Главная
  • Информатика
  • Инструкционные карты занятий
  • СУБД MS Access. Создание связей между таблицами.

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

ИНСТРУКЦИОННАЯ КАРТА № 12.3

На выполнение практического занятия по предмету «Программное обеспечение»

Для студентов специальности 5.05010201 «Обслуживание компьютерных систем и сетей»

Председатель цикловой комиссии

Тема: СУБД MS Access. Создание связей между таблицами.

1. Цель работы:

· Выделять таблицы в Схему данных для связывания;

· Связывать таблицы БД по полям;

· Сохранять макеты Схемы данных.

Читать еще:  Как сделать фильтр в отчете access?

Норма времени: 45 мин.

Оснащение рабочего места: ПК, инструкционные карты, конспект.

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

2.Запрещается учащимся производить ремонт розеток, вилок, проводов и машин.

3.Без разрешения преподавателя не производить перезагрузку ЭВМ.

4.Не держите на рабочем месте предметы, не требующиеся при выполнении задания.

5.При работе ЭВМ необходимо, чтобы экран находился на расстоянии 55-60 см от глаз.

2. Порядок выполнения.

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

1. Для начала откройте вашу БД, Вы окажетесь в Окне базы данных.

2. В ОКне базы данных нажмите кнопку Схема данных на вкладке Работа с базами данных или на вкладке Режим таблицы.

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

4. В окне диалога Добавление Таблицы установите указатель в поле Таблица/Запрос на имени таблицы, добавляемой в схему данных, и дважды нажмите кнопку мыши. Вы также можете Выбрать Таблицу и нажать кнопку Добавить, это необходимо проделать для каждой добавляемой таблицы. Добавьте для связывания все 5 таблиц (Студенты, Лабораторные_и_стипендия, Оценки, Прогулы, Адрес).

5. Закройте окно диалога Добавление Таблицы нажмите кнопки Закрыть

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

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

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

9. Обычно связывают ключевое поле одной с аналогичным полем в другой таблице (поле фамилия с полем фамилия). Поля, используемые для создания связи между таблицами, могут Иметь разные имена, но (за одним исключением) должны иметь одинаковый тип данных и содержать данные одного рода. Кроме того, связываемые поля типа Числовой должны иметь одинаковые значения свойства Размер Поля. Единственным исключением является возможность связывания поля типа Счетчик с полем типа Числовой, у которого свойство Размер Поля имеет значение Длинное Целое.

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

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

12. Подумайте и выберите отношение согласно смыслу таблиц.

13. Элементы окна диалога:

1. Таблица/запрос. В левом столбце бланка выводится имя Главной таблицы и имена Связываемых Полей (обычно, ключевое поле таблицы). Для замены связанных полей в этом столбце следует выбрать имена из списка.

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

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

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

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

6. Для создания связи нажмите кнопку Создать. В окне диалога Схема данных установленные данные отображаются графически. У нас отображена связь между таблицей Адреса и таблицей Лабораторные_и_стипендия. По аналогии постройте связи с другими таблицами.

7. Закончив создание связей, закройте окно диалога Схема данных, ответив ДА на вопрос о сохранении макета Схема Данных.

8. Изменение и удаление существующих связей. Откройте окно Схема данных. Для изменения связи установите указатель на линию связи и дважды нажмите кнопку мыши или установите указатель на линию связи и щелкните ПКМ. В меню выберите Изменить связь. Открывается окно Диалога связи. Внесите изменения в связь и нажмите ОК. Для удаления связи выберите линию связи и нажмите клавишу DEL.

9. При закрытии окна диалога Схема данных сохранить макет.

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

Контрольные вопросы:

1. Для чего нужны связи между таблицами в БД?

2. Какая последовательность действий при Создании связей?

3. Какие поля участвуют при Создании связей?

4. Могут ли участвовать при Создании связей поля с разными Именами?

5. Могут ли участвовать при Создании связей поля с разными Типами данных?

6. Каким образом можно изменить или удалить существующую Связь?

7. Что нужно сделать, чтобы создать 2-3 связи в таблице?

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

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

Определение

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

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

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

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

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

Читать еще:  Как сделать базу данных microsoft access?

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

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

Microsoft Access

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

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

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

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

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

Схема данных

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

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

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

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

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

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

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

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

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

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

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

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

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

  • сотрудники фирмы — содержит в себе код сотрудника, его фамилию, имя и средний инициал (ориентированность на зарубежные имена), также код начальника и занимаемой сотрудником должности, дату его поступления в фирму, получаемый им оклад и предусмотренные комиссионные, код отдела;
  • отделы корпорации — среди полей таблицы есть код и название отдела, а также код его размещения;
  • места размещения отделов, которая предполагает внесение информации по коду места размещения и названия города;
  • должности в фирме — небольшая таблица с двумя полями кода должности и ее официального названия;
  • фирмы-покупатели — поля: код и название покупателя, адрес, город и штат, почтовый код и код региона, телефон, код обслуживающего покупателя менеджера, кредит для покупателя и комментарии (примечания и заметки);
  • договоры о продаже, содержащая в себе код и дату договора, код покупателя, дату поставки и общую сумму договора;
  • акты продаж — код акта и код договора, в который входит акт, код продукта, его цена, количество приобретенного и общая стоимость покупки;
  • товары — код и название продукта;
  • цены — код продукта, объявленная на него цена, минимально возможная цена,дата установления и дата отмены цены.

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

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

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

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

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