Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Software development.docx
Скачиваний:
5
Добавлен:
01.04.2025
Размер:
324.44 Кб
Скачать

Вид связи один-к-одному

При отношении один-к-одному запись в таблице A может иметь не более одной связанной записи в таблице B и наоборот. Пример – христианский брак, рисунок 9. Обратите внимание, «может иметь» – это значит может иметь, а может и не иметь: Петров и Бочкина в настоящий момент не состоят в браке.

В данном виде связи ПК и ВК практически равны, здесь в ВК также не должно встречаться дубликатов. Разница лишь в том, что ПК заполняется автоматически СУБД, а ВК – вручную пользователем, так как только человек знает что с чем связано. Если запись в таблице с ВК не имеет связи, то ВК оставляют пустым.

Здесь можно было поменять ПК и ВК местами – ничего в функциональности связи не изменилось бы.

Рисунок 9 – Связь 1-1

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

Вид связи один-ко-многим

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

В этом случае в ВК могут быть повторяющиеся значения. Всё остальное происходит также, как и в связи 1-1.

Таблицу, находящуюся со стороны «один», будем называть основной, а таблицу со стороны «много» – подчинённой. Принятое обозначение – 1-, где символ  означает «много».

Рисунок 10 – Связь 1-

Вид связи многие-ко-многим

При отношении многие-ко-многим одной записи в таблице A могут соответствовать несколько записей в таблице B, а одной записи в таблице B несколько записей в таблице A. Принятое обозначение – -.

Такая схема реализуется только с помощью третьей связующей таблицы, которая состоит, по крайней мере, из двух полей ВК для таблиц A и B. То есть, рассматриваемая связь реализуется через две связи один-ко-многим: - = 1---1. Например, связь между таблицами Врачи и Пациенты. Один больной может наблюдаться у нескольких врачей, в то время как врач может лечить несколько больных, рисунок 11.

Рисунок 11 – Связь -

Механизм создания ключей

В лабораторной работе в качестве первичного ключа во всех вариантах будет использовано дополнительное служебное поле типа Счётчик (см. таблицу 2). Счётчик – это поле числового типа с размером длинное целое, которое средствами СУБД с добавлением каждой новой записи будет вносить туда новое, уникальное значение. Ни пользователи, ни разработчики не могут внести вручную в такое поле какое-либо значение, поскольку доступ на запись полностью закрыт.

Сам факт создания поля-счётчика ещё не означает, что оно является первичным ключом. Требуется указать это СУБД в явном виде командой «Ключевое поле», выделив ПК в конструкторе таблиц и нажав на кнопку с изображением ключа. Аналогичная пиктограмма появится слева на панели выделения напротив соответствующего поля. Повторное выполнение этой команды убирает статус ПК у поля.

В Access нет отдельной команды для создания ВК. Его придётся создать вручную. Для нашего случая с ПК типа Счётчик нам нужно в подчинённой таблице поле ВК числового типа размером длинное целое. Затем нам нужно включить индексацию, допустив совпадения для связи 1- или исключив их для связи 1-1. Если мы хотим ещё и исключить возможность появления несвязанной записи в подчинённой таблице (рисунок 9, Бочкина), то следует задать обязательный ввод в поле ВК.

Принято полям ПК и ВК, принадлежащим одной связи, присваивать одинаковые имена.

Схема данных

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

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

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

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

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

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

Рисунок 12 – Вид связи 1- в окне «Схема данных»

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]