Связи в базах данных (в частности в Access)

Существует 3 основных вида связей между таблицами БД (некоторые выделяют четвертый тип, многие к одному, но он аналогичен связи один ко многим):


Связи в MS Access

 

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

one_to_one



2. Связь «один ко многим» (1 к ∞) — предполагает, что одному атрибуту первой таблицы соответствует несколько атрибутов второй таблицы. Аналогичная связь «многие к одному», когда одному атрибуту второй таблицы, соответствует несколько атрибутов первой таблицы.

one_to_many



3. Связь «многие ко многим» (∞ к ∞) — предполагает, что одному атрибуту первой таблицы соответствует несколько атрибутов второй таблицы и наоборот, одному атрибуту второй таблицы, соответствует несколько атрибутов первой таблицы.

many_to_many



ПРИМЕРЫ:


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

 

Для примера, возьмем тему «Идентификационный код».

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

Создадим базу данных, а в ней, две таблицы: таблицу «Гражданин» и таблицу «Идентификационный код»:

В таблице  «Гражданин» создадим два поля:

  • id_grazdanin — будет первичным ключем
  • FIO — Фамилия, имя и отчество гражданина.

 

В таблице  «Идентификационный код» создадим два поля:

  • id_kod — будет первичным ключем
  • kod — непосредственно, идентификационный код гражданина.

 

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

В Ms Access эта связь, будет выглядеть следующим образом:

one_to_one

 

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

 

Для примера, возьмем тему «Ученик в классе».

Один ученик, может учиться только в одном классе, но в одном классе может учиться много учеников.

Создадим базу данных, а в ней, две таблицы: таблицу «Класс» и таблицу «Ученики»:

В таблице  «Класс» создадим два поля:

  • id_class — будет первичным ключем
  • class_name — Название класса (9-А).

 

В таблице  «Ученики» создадим два поля:

  • id_student — будет первичным ключем
  • id_class — внешний ключ. Содержит запись о классе: id_class
  • FIO — Фамилия, имя и отчество ученика.

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

В результате, в Ms Access эта связь, будет выглядеть следующим образом:

one_to_many

 

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

 

Для примера, возьмем тему «Предметы и ученики».

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

Создадим базу данных, а в ней, две таблицы: таблицу «Предметы» и таблицу «Ученики»:

В таблице  «Предметы» создадим два поля:

  • id_predmet — будет первичным ключем
  • name_predmet — Название предмета.

 

В таблице  «Ученики» создадим два поля:

  • id_student — будет первичным ключем
  • FIO — Фамилия, имя и отчество ученика.

Для создания связи «многие ко многим» необходимо создать дополнительную таблицу. Назовем её «Предмет-ученик».

В таблице  «Предмет-ученик» создадим два поля:

  • id_pred — будет первичным ключем
  • id_stud — будет первичным ключем

 

Между тремя таблицами необходимо создать следующие связи:

  • Связь «один ко многим»  между полями ‘id_predmet’ и ‘id_pred’ в таблицах соответственно  «Предметы» и «Предмет-ученик»
  • Связь «один ко многим»  между полями ‘id_student’ и ‘id_stud’ в таблицах соответственно  «Ученики» и «Предмет-ученик»

 

В результате, в Ms Access эта связь, будет выглядеть следующим образом:

many_to_many

 

comments powered by HyperComments