Таблицы и связи между ними. Первичные и внешние ключи

Основным структурным компонентом базы данных является таблица. При определении состава таблиц следует руководствоваться правилом:в каждой таблице должны храниться данные только об одном классе объектов. Например, в одной и той же таблице нельзя хранить анкетные данные студентов и наименования изучаемых дисциплин, т.к. это свойства разных классов объектов. Если в базе данных должна содержаться информация о разных классах объектов, то она должна быть распределена по отдельным таблицам.

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

таблица Факультеты, содержащая информацию о факультетах, на которых обучаются студенты;

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

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

таблица Дисциплины, содержащая информацию об учебных дисциплинах, по которым фиксируется успеваемость студентов;

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

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

Связи между любыми двумя таблицами относятся к одному из трех типов: один-к-одному (1 : 1), один-ко-многим (1 : М) и многие-ко-многим (М : М).

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

При связи типа“один-ко-многим”каждой записи в одной таблице соответствует нуль, одна или несколько записей в связанной таблице. Это наиболее распространенный тип связей. Одна из связываемых таблиц представляет сторону "один", другая - сторону "многие". Для установления этого типа связи в таблице со стороны "многие" должно содержаться поле того же типа и длины, что и первичный ключ таблицы на стороне "один": так называемый внешний ключ. Каждая запись таблицы должна содержать в этом поле значение соответствующего первичного ключа таблицы на стороне "один".

Так, например, таблица Факультеты на стороне "один" будет иметь автоинкрементный первичный ключ с именем Код, а таблица Группына стороне "многие" – внешний ключ с именем КодФакультета. Связь между таблицами будет установлена по этим полям.

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

Так, например, таблица Оценки реализует связь “многие-ко-многим”между сущностями Студенты и Дисциплины путем замены ее на две связи “один-ко-многим”: Студенты–Оценки и Дисциплины–Оценки.

Наши рекомендации