Межтабличные связи.
Для задания связи таблицы должны иметь поля с одинаковыми именами или хотя бы с одинаковыми типами данных.
Связь позволяет уменьшить избыточность хранимых данных, упрощает ввод данных, организацию запросов и отчётов, обеспечивает целостность данных, т.е. защиту от случайного удаления или изменения связанных данных, а также позволяет обеспечить каскадное обновление или удаление связанных данных.
Главная таблица – таблица, которая участвует в связи своим ключевым полем.
Вторая таблица называется подчиненной.
В Access можно задать три вида связей между таблицами: Один-ко-многим, Многие-ко-многим и Один-к-одному.
Связь Один-ко-многим (обозначается 1 - ∞) – наиболее часто используемый тип связи между таблицами. В такой связи каждой записи в главной таблице может соответствовать несколько записей в связанной таблице, а запись в связанной таблице не может иметь более одной соответствующей ей записи в главной таблице.
При связи Многие-ко-многим (∞-∞) одной записи в главной таблице может соответствовать несколько записей в связанной таблице, а одной записи в связанной таблице – несколько записей в главной таблице. Такая схема реализуется только с помощью третьей (связующей) таблицы, в которой одно из полей является общим с главной таблицей, а другое – общим со связанной таблицей.
При связи Один-к-одному (1-1) запись в главной таблице может иметь не более одной связанной записи в связанной таблице и наоборот. Этот тип связи используют не очень часто, поскольку такие данные могут быть помещены в одну таблицу. Связь с отношением Один-к-одному применяют для разделения очень широких таблиц, для отделения части таблицы в целях её защиты, а также для сохранения сведений, относящихся к подмножеству записей в главной таблице.
Разработка структуры и связей таблиц на примере базы данных “Деканат”
Пусть эта база данных содержит следующую информацию.
Перечень дисциплин, по которым обучаются студенты.
Сведения о студентах (фамилия, имя, отчество, номер группы, дата рождения, получает или нет стипендию).
Сведения о преподавателях (фамилия, имя, отчество, должность, преподаваемая дисциплина, заработная плата, дата рождения, телефон).
Можно выделить две таблицы, которые не будут обладать избыточностью: Студенты, Дисциплины.
Поля таблицы Студенты: код студента, фамилия, имя, отчество, номер группы, дата рождения, стипендия, оценки.
Поля таблицы Дисциплины: код дисциплины, название дисциплины.
Поля таблицы Преподаватели: код преподавателя, фамилия, имя, отчество, дисциплина, дата рождения, телефон, заработная плата, должность.
Коды в таблицах введены для однозначной идентификации соответствующих данных, для обеспечения связности и для экономии памяти в случае неизбежного повтора данных.
Рассмотрим связи между полученными объектами. Очевидно, что типы связей будут выглядеть так (считая, что каждый преподаватель преподаёт только одну дисциплину):
Студенты ∞- ∞ Дисциплины 1- ∞ Преподаватели
Чтобы избежать множественных связей, введём вспомогательную таблицу Оценки.
Поля таблицы Оценки: код студента, код дисциплины, оценки.
Таким образом, получается следующая схема данных.
