Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие 3000259.doc
Скачиваний:
27
Добавлен:
30.04.2022
Размер:
1.27 Mб
Скачать

3.1.2. Классы отношений

Отношения реляционной базы данных в зависимости от содержания подразделяются на два класса: объектные отношения и связные отношения.

Объектные отношения хранят данные о группах однородных объектов, явлений или процессов, имеющих однотипные характеристики. В объектном отношении ключ называют первичным, или просто ключом отношения.

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

Рассмотрим пример объектных и связных отношений.

Объектное отношение "Детали"

Номер детали

Название детали

401000

Втулка

409857

Кронштейн

Объектное отношение "Материалы"

Код материала

Марка

Вид материала

181508

АД1Н

Лист

181440

АМГ2М

Лист

Связное отношение "Технологический процесс"

Номер

детали

Код материала

Норма расхода

материала

401000

181508

23.78

409857

181440

112.6

В отношении "Детали" первичный ключ – номер детали. В отношении "Материал" первичный ключ – код материала. В отношении "Технологический процесс" внешний ключ – номер детали, код материала. Атрибут "Норма расхода материала на деталь" – количественная характеристика связи между деталью и материалом.

Поскольку не всякой таблице можно поставить в соответствие отношение, приведем условия, выполнение которых позволяет считать таблицу отношением.

  1. Все строки таблицы должны быть уникальны, т.е. не может быть строк с одинаковыми первичными ключами.

  2. Имена столбцов таблицы должны быть различны, а значения их простыми, т.е. недопустима группа значений в одном столбце одной строки.

  3. Все строки одной таблицы должны иметь одинаковую структуру с соответствующими именами и типами столбцов.

  4. Порядок размещения строк в таблице может быть произвольным.

3.1.3. Индексирование

Определение ключа для таблицы означает автоматическую сортировку записей, контроль отсутствия повторений значений в ключевых полях записей и повышение скорости выполнения операций поиска в таблице. Для реализации этих функций в СУБД применяют индексирование. Индекс – это средство ускорения операции поиска записей в таблице, а, следовательно, и других операций, использующих поиск: извлечение, модификация, сортировка и т.д. Таблицу, для которой используется индекс, называют индексированной. Ключевые поля таблицы во многих СУБД, как правило, индексируются автоматически. Индексы, созданные для ключей, называют первичными индексами.

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

Главная причина повышения скорости выполнения различных операций в индексированных таблицах состоит в том, что основная часть работы производится с небольшими индексными файлами, а не с самими таблицами. Наибольший эффект повышения производительности работы с индексированными таблицами достигается для значительных по объему таблиц. Индексирование требует небольшого дополнительного места на диске и незначительных затрат процессора на изменение индексов в процессе работы.

Индекс или индексная таблица обычно содержит поле (поля), по которому строится индекс, и порядковый номер записи в основной таблице, которая содержит поле с данным индексным значением. Данные в индексной таблице упорядочены по полю, по которому строится индекс.

Пусть имеется таблица со следующей схемой данных:

Студенты (Номер зачетки, Фамилия, Имя, Отчество, Дата рождения).

Фрагмент таблицы с исходными данными следующий:

06023 Петров Сергей Алексеевич 12.09.89

06010 Волков Максим Михайлович 30.09.89

06002 Антипов Петр Андреевич 09.01.89

06018 Орлов Алексей Викторович 23.06.89

Вид индексной таблицы, построенной по номеру зачетки следующий:

06002 3

06010 2

06018 4

06023 1

Вид индексной таблицы, построенной по фамилии следующий:

Антипов 3

Волков 2

Орлов 4

Петров 1

Вид индексной таблицы, построенной по дате рождения:

09.01.89 3

23.06.89 4

12.09.89 1

30.09.89 2