Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Информатика. Лекции. 2009. Измайлов.doc
Скачиваний:
10
Добавлен:
26.10.2018
Размер:
4 Mб
Скачать

21.2.2. Индексы базы данных

Одним из приемов ускорения поиска информации в системах управления базами данных является расположение информации в упорядоченном виде. Например, расположение электродвигателей в таблице по возрастанию мощности или другого параметра, размещение фамилий сотрудников в алфавитном порядке и т. п. Такое упорядочение называют сортировкой. Для выполнения действий по упорядочению информации требуется дополнительное время и память компьютера. Если информация в базе данных постоянно изменяется (что–то удаляется, что–то добавляется), то это требует частой ее сортировки и дополнительной потери времени. В таких случаях предпочитают использовать несортированную таблицу данных. Но тогда возрастает время поиска информации. Для достижения компромисса в этой ситуации вводят дополнительную таблицу, называемую индексами базы данных. В эту таблицу помещаются только первичные ключи из основной таблицы и поле, по которому совершается сортировка. Такая таблица с упорядоченными ключами и полем атрибута с упорядоченными значениями представляет собой индекс для основной таблицы базы данных. Для одной и той же таблицы данных можно создать несколько индексов. Например, для таблицы, содержащей информацию о параметрах электродвигателей, можно создать один индекс по мощности, другой индекс по напряжению, а третий по частоте вращения и др. Это удобно. Если необходимо найти электродвигатель с необходимой мощностью, то в этом случае удобно использовать индекс по мощности, так как поле мощности в этом индексе сортировано, что обеспечит быстрый поиск. При выборе электродвигателя с требуемой частотой вращения удобно использовать индекс по частоте вращения. Индексные таблицы значительно меньше основных таблиц и на их сортировку требуется существенно меньше времени. Этим и определяется полезность их применения.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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