double arrow

Связи базы данных

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

Если все эти сведения размещать в одной сплошной таблице, то в случае потребности получения информации только об электрических параметрах интересуемого электродвигателя, будет выдана полная информация о нем. Это не всегда нужно. Чтобы исключить такие случаи, всю информацию разделяют на отдельные логически обоснованные части и для каждой из этих частей создают отдельную таблицу. Реально база данных должна хранить информацию о нескольких взаимосвязанных сущностях, образующих предметную область, то есть быть представленной набором связанных таблиц. Эта связь должна быть синхронной. Это означает, что если удаляется, например, тип двигателя в одной таблице, то удаляется вся связанная с ним информация во всех таблицах и наоборот, если добавляется в базу данных какой–то двигатель, то автоматически во все таблицы добавляется соответствующая информация о нем.




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

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



Существует четыре вида связей (отношений между таблицами):

один к одному,

один ко многим,

многие к одному,

многие ко многим.

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

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

Связь многие ко многим или непрямая табличная связь определяет связь одной записи первой таблицы с несколькими записями второй таблицы, в то же время как одна запись второй таблицы может быть связана с несколькими записями первой таблицы. На практике такой сложный вид связи между двумя таблицами реализуется через промежуточную (связующую) таблицу. Она позволяет заменить одну связь вида многие ко многим на две последовательные связи: многие к одному и один ко многим, которые реализуются проще.

Из двух связанных таблиц одна выступает в роли главной (первичной), а другая – в роли подчиненной (вторичной). Например, таблица Дисциплины содержит перечень дисциплин, которые преподаются различными преподавателями. Сведения о преподавателях содержаться в другой таблице Преподаватели. Здесь таблица Дисциплины играет роль главной, а таблица Преподавателиподчиненной.

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

Из этого рисунка видно, что дисциплину Информатика преподают два преподавателя Петров И. С. и Серов Г. Л., так как их коды соответственно 2 и 3 связаны с кодом 2 таблицы Дисциплины. Таким образом, реализована связь один ко многим, где одна дисциплина Информатика таблицы Дисциплины связана с двумя преподавателями Петровым И. С. и Серовым Г. Л., таблицы Преподаватели.

Конкретный набор всех таблиц, необходимых для хранения и поиска информации, образует структуру базы данных. Разработка и создание структуры базы данных представляет собой самый важный и самый сложный этап. Эту работу, как правило, поручают высококвалифицированным специалистам в этой области.

Главная таблица

Дисциплины: таблица
Код дисциплины Дисциплина Семестр Количество лекций, час. Количество лаб. раб., час.
  Математика    
2 Информатика      
(счетчик)        

Поле первичного ключа таблицы Дисциплины.

Связь

Подчиненная таблица

Преподаватели:таблица
Код дисциплины Код преподавателя Фамилия Должность Ученая степень Стаж
    Иванов А.В. Профессор д.ф-м.н.  
    Петров И.С. Доцент к.т.н.  
    Серов Г. Л. Доцент к.т.н.  
  (счетчик)        

Внешний ключ Первичный ключ таблицы Преподаватели

Рис. 21.2 Пример связи типа один – ко – многим






Сейчас читают про: