
1. БАЗЫ ДАННЫХ, ОТНОШЕНИЯ И РЕЛЯЦИОННЫЕ БАЗЫ ДАННЫХ
1.1. Базовые концепции
Базу данных можно определить как унифицированную совокупность данных, совместно используемую всем персоналом предприятия, банка или учебного заведения. Задача БД состоит в хранении всех представляющих для некоторого предприятия интерес данных в одном месте, причем таким способом, который заведомо исключает их избыточность. Хранение множественных копий данных в различных местах предприятия чревато возникновением рассогласований между предположительно идентичными наборами данных. В хорошо спроектированной БД избыточность данных исключается, и вероятность сохранения противоречивых данных минимизируется.
В больших компьютерных системах к данным, хранящимся в БД, доступ может осуществляться одновременно сотней и более пользователей. БД в таких случаях может иметь сотни полей данных с миллионами единиц информации. Такие системы могут содержать буквально все данные, требующиеся для управления предприятием. БД на микрокомпьютерных системах имеют гораздо меньший масштаб. Здесь к конкретной БД в некоторый момент времени обычно осуществляет доступ один пользователь и каждая БД содержит только некоторое подмножество данных, требующихся предприятию. Одна БД разрабатывается, скажем, для хранения финансовой информации, другая - данных о персонале. Будет ли разрабатываемая БД размещаться на большой ЭВМ или на микрокомпьютере - функции СУБД в обоих случаях одинаковы. СУБД представляет собой программно-аппаратный пакет, обеспечивающий пользователям простой доступ к БД. Программная часть СУБД, которую некоторые изготовители называют менеджером БД, выступает в качестве интерфейса между пользователем и БД (рис. 1.1). Менеджер БД обеспечивает программные средства, необходимые для создания, загрузки, запроса и обновления данных. Менеджер также контролирует все действия, связанные с управлением вводом-
в
ыводом
и памятью БД, а на больших ЭВМ на него
возлагается и решение проблем безопасности
и совместного использования данных.
Короче говоря, хорошо спроектированная
СУБД обеспечивает программное
обеспечение, упрощающее для пользователя
общение с БД.
Рис 1.1 Основные компоненты архитектуры СУБД
Другое сходство между большими и малыми СУБД заключается в том, что в обоих случаях сама БД должна быть хорошо спроектирована, если мы хотим, чтобы система баз данных как единое целое функционировала должным образом. Цель книги состоит в выделении и описании некоторых базовых процедур проектирования для определенного типа БД, а именно реляционных. Предполагается, что пользователь будет устанавливать БД на микрокомпьютерной системе; однако, те же алгоритмы проектирования применимы к БД, проектируемым для больших компьютерных систем.
1.2. Определение отношения
Математически отношение определяется следующим образом.
Пусть даны "N" множеств Dl, D2, ...,DN, тогда R есть отношение над этими множествами, если R есть множество упорядоченных п-кортежей вида <dl, d2, ..., dn>, где dl - элемент из Dl, d2 - элемент из D2,... и dn - элемент из DN. Dl, D2, ..., DN называются доменами отношения R.
Рис. 1.2. Отношение с математической точки зрения
Смысл данного определения наиболее просто пояснить графически (рис. 1.2). Здесь показаны 4 домена. Домен D1 - это множество целых чисел; D2 - символьных строк, представляющих собой названия предметов; D3 - символьных строк, представляющих собой меру измерения; D4 - еще одно множество чисел. Отношение R состоит из 4 кортежей. Каждый кортеж - из 4 элементов, которые выбираются каждый из своего домена. Обратите внимание на порядок элементов в кортеже: первый элемент каждого кортежа выбран из домена Dl, второй элемент - из домена D2 и т. д.
Сущность
"реального мира"
Атрибут
сущности
(Имя файла) (Поле в записи)
ТОВАР
-
дном
дназв
изм
цена
101
Яйцо
Десяток
4,00
102
Картофель
Кг
4,00
103
104
Огурцы
Виноград
Кг
Кг
11,98
62,50
Одна
запись
Значение
атрибута
(Значение поля в записи)
Файл
Рис. 1.3. Отношение с точки зрения обработки данных
Взгляд на отношение с точки зрения обработки данных характеризует рис. 1.3. Четыре домена, представленные на рис. 1.2, соотносятся с четырьмя элементами реального мира: номером товара, его названием, измерением кол-ва товара и ценой. Отношение принимает вид таблицы или файла, где кортежи - строки таблицы или записи в файле.
Имена столбцов (с точки зрения обработки данных - поля в записи) называются атрибутами, а индивидуальные значения, появляющиеся в отдельных кортежах, - значениями атрибутов. Таким образом, первый элемент первого кортежа имеет значение атрибута, равное 101 и взятое из домена дном. Следующие наборы терминов будут использоваться поочередно:
1. отношение, таблица и файл;
2. кортеж, строка и запись;
3. атрибут, столбец и поле;
так же как и в большей части документации по микрокомпьютерным БД.
Следует сделать одно замечание по поводу различия между математическим определением отношения и действительным хранением отношений в микрокомпьютерных системах БД. По определению отношение не может иметь два идентичных кортежа. Несмотря на то что большинство больших СУБД не допускают хранения идентичных кортежей (записей) в отношении (файле), многие микрокомпьютерные СУБД это допускают (если не используется специальная техника программирования, предотвращающая возникновение указанной ситуации).
Следует упомянуть два дополнительных термина, касающихся отношений. Число столбцов в отношении называют степенью. Текущее число кортежей в отношении называется мощностью. Степень отношения обычно не изменяется после создания отношения, но мощность будет колебаться по мере добавления новых и удаления старых кортежей.
1.3. Определение реляционной БД
Реляционная БД представляет собой не что иное, как совокупность отношений, содержащих всю информацию, которая должна храниться в БД. На рис. 1.4 приведен пример очень маленькой БД, названной Поставщик—Детали.
Эта база содержит три типа информации о строительной компании'):
^ БД Поставщик-Детали - хороший пример небольшой по объему реляционной БД, часто используемый в литературе.
1. Информация о поставщиках, поставляющих детали предприятию. Сюда относятся номер поставщика (предполагается уникальным), а также его фамилия, статус и город проживания (не являются уникальными). Эта информация содержится в отношении ПОСТАВЩИК.
Товар ПТ
Дном |
Дназв |
изм |
Цена |
|
пном |
пфам |
статус |
Город |
101 102 103 104 105 106 |
Болт Муфта Винт Гайка Муфта Болт |
Черный Синий Красный Зеленый Красный Оранжевый |
3 9 11 4 13 21 |
|
П1 П2 П3 П4 П5 |
Смит Джонс Эддер Хаус Блэйк |
20 15 10 30 20 |
Лондон Детройт Чикаго Париж Париж |
|
|
|
|
ПД
Пном |
дном |
Шт |
П1 П1 П1 П1 П2 П2 П2 П2 П3 П3 П3 П3 П3 П3 П4 П4 П5 П5 |
101 102 103 106 101 102 105 106 101 102 103 104 105 106 103 106 103 104 |
9 4 2 3 3 8 11 9 7 13 6 1 2 5 7 13 8 9 |
Рис. 1.4. База данных Поставщик-Детали
2. Информация о деталях, используемых на предприятии. Сюда относятся номер детали, являющийся уникальным, название, цвет и вес, не являющиеся уникальными. Эта информация содержится в отношении ДЕТАЛЬ.
3. Информация о номерах и количестве деталей от каждого поставщика. Эта информация содержится в отношении ПД.
Каждое отношение в БД хранится в отдельном файле. Структура файла, используемого для хранения отношения, довольна проста, поскольку все записи имеют одинаковый формат. В больших СУБД каждое отношение сохраняется в виде индексированного файла, где индекс представляет собой атрибут или набор атрибутов, специфицированный при конструировании отношения.
Набор атрибутов, используемый в качестве индекса, называется первичным ключом отношения. Первичный ключ определяется как такой атрибут, или набор атрибутов, который может быть использован для однозначной идентификации конкретного кортежа. Первичный ключ не должен иметь дополнительных атрибутов. Это значит, что если единичный произвольный атрибут исключить из первичного ключа, оставшихся атрибутов будет недостаточно для однозначной идентификации отдельных кортежей. В БД Поставщик—Детали первичными ключами являются <пном> для отношения ПОСТАВЩИК, <дном> для отношения ДЕТАЛЬ и пара атрибутов <пном, дном> для отношения ПД.
Читатель может убедиться, что каждый первичный ключ является достаточным для однозначной идентификации каждого кортежа в отношении. Например, в отношении ПД, если пном ~ П1 и дном = 101, можно найти не более одного кортежа с указанными значениями атрибутов. На рис. 1.4 данные значения содержит кортеж <П1,101,9>. Попытка сохранить другой кортеж с тем же первичным ключом, скажем, <П1,101,11>, приводит к возникновению конфликтной ситуации, поскольку становится неясным сколько деталей с номером 101 поставляет П1 - 9 или 11 (а может быть 20?). В полностью разработанной СУБД при попытке пользователя записать кортеж, имеющий первичный ключ, совпадающий с первичным ключом другого кортежа, уже включенного в отношение, генерируется сообщение об ошибке. Во многих реализациях СУБД, предназначенных для микрокомпьютеров, кортежи с совпадающими первичными ключами и даже полностью идентичные кортежи могут быть занесены в отношение, и это не приводит к возникновению ошибки СУБД. В связи с этим могут возникнуть некоторые проблемы.
Во многих СУБД индекс файла, содержащего отношение, не создается автоматически, и пользователь должен выполнить команду INDEX для его создания. Индексирование файлов значительно ускоряет выполнение некоторых команд. Возможно индексирование отношения с использованием атрибутов, отличных от первичного ключа. Данный тип индекса называется вторичным индексом и применяется в целях уменьшения времени доступа при нахождении данных в отношении. Простой пример индексного файла приведен на рис. 1.5. Обратите внимание, что если само отношение не упорядочено каким-либо образом и в нем могут присутствовать строки, оставшиеся после удаления некоторых кортежей, то индексный файл, напротив, отсортирован. Структура индексного файла может быть разной, но обычно используется некоторый вариант древовидной структуры, обеспечивающей быстрый поиск. Для пояснения выбрана структура индексного файла, показанного на рис. 1.5, но ее не следует воспринимать как образец практического проектирования.
Поставщикх (Индексный файл) Поставщик (Файл данных)
Номер записи |
Файл Поставщик пном Номер записи |
|
Номер записи |
пном пфам статус город |
0001 0002 0003 0004 0005 |
П1 0006 П2 0004 ПЗ 0003 П4 0001 П5 0002 |
|
0001 0002 0003 0004 0005 0006 |
П4 Хаус 30 Париж П5 Блейк 20 Париж ПЗ Зддер 10 Чикаго П2 Джонс 15 Детройт Эта запись была удалена П1 Смит 20 Лондон |
Рис. 1.5. Простой пример индексного файла
Число отношений в БД и конкретные атрибуты, приписываемые каждому отношению, определяются в процессе проектирования. Собственно процесс проектирования может быть довольно продолжительным. Однако после завершения этапа проектирования создание БД средствами СУБД можно выполнить довольно быстро. В случае БД Поставщик—Детали структура ее полностью специфицируется коротким набором предложений, приведенным на рис. 1.6. Это сжатое описание называется концептуальной моделью БД и содержит всю информацию, необходимую для создания полной структуры БД вне зависимости от того, какая конкретно СУБД будет использована. На рис. 1.7 приводится пример создания отношения ПОСТАВЩИК в dBase II вместе с индексным файлом для отношения ПОСТАВЩИК, в котором индекс перекрывает первичный ключ. Каждое из отношений в БД Поставщик-Детали будет создаваться аналогичным образом. Обратите внимание на то, что вся информация, необходимая для создания ПОСТАВЩИК, содержится в концептуальной модели.
Название БД: Поставщик_детали Атрибуты и тип:
пном симв(З),
пфам симв(6),
статус целый,
город симв(10),
дном целый,
дназв симв(6),
цвет симв(6),
вес целый,
шт целый.
Отношения и <Первичные ключи>:
Поставщик(пном, пфам, статус, город) <пном>,
ПД(пном, дном, шт) <пном, дном>,
Деталь(дном, дназв, цвет, вес) <дном>.
Рис. 1.6. Концептуальная модель БД Поставщик—Детали
Листинг содержимого отношения или всех отношений в БД, подобный тому, который приведен на рис. 1.4 ' для БД Поставщик—Детали, следует рассматривать как фотографию вида отношений в некоторый момент времени. Следует помнить, что содержимое всех отношений динамически изменяется, поскольку кортежи могут быть добавлены, удалены или модифицированы в течение жизненного цикла отношений. Отдельный листинг некоторого отношения в определенный момент времени называется экземпляром этого отношения.