Информационные системы
Шрифт:
Отсутствие упорядоченности кортежей
В таблицах реляционной базы данных информация хранится в неупорядоченном виде. Упорядочивание в принципе не поддерживается СУБД и такое понятие как порядковый номер кортежа не имеет никакого смысла. Отсутствие упорядоченности кортежей отношения также является следствием определения отношения как множества кортежей. Поскольку не требуется поддержание порядка на множестве кортежей отношения, СУБД получает дополнительную гибкость при хранении баз данных во внешней памяти и при выполнении запросов к базе данных.
Примечание.
При проведении выборки данных из базы (с использованием, например, языка SQL)
Отсутствие упорядоченности атрибутов
Атрибуты отношений также не упорядочены, поскольку по определению схема отношения есть множество пар {имя атрибута, имя домена}. Для ссылки на значение атрибута в кортеже отношения всегда используется имя атрибута. Это свойство теоретически позволяет, например, модифицировать схемы существующих отношений не только путем добавления новых атрибутов, но и путем удаления существующих атрибутов. Однако в большинстве существующих систем такая возможность не допускается, и хотя явная упорядоченность набора атрибутов отношения не требуется, часто для неявного упорядочения атрибутов используется их порядок в линейной форме определения схемы отношения.
Атомарность значений атрибутов
Значения всех атрибутов являются атомарными. Это следует из определения домена как потенциального множества значений простого типа данных, то есть среди значений домена не могут содержаться множества значений (отношения).
Реляционная система управления базами данных
Реляционная база данных – это совокупность отношений, содержащих всю информацию, которая должна храниться в базе данных. Однако пользователи могут воспринимать такую базу данных как совокупность таблиц. Таким образом, реляционную базу данных можно рассматривать как хранилище данных, содержащее набор двухмерных связанных таблиц. Набор средств управления подобным хранилищем называется реляционной системой управления базами данных. Реляционная СУБД может содержать утилиты, приложения, службы, библиотеки, средства создания приложений и другие компоненты.
Еще раз подчеркнем, что в реляционной базе данных таблицы связаны между собой; это позволяет с помощью единственного запроса найти все необходимые данные (которые могут находиться в нескольких таблицах). Будучи связанной посредством общих ключевых полей, информация в реляционной базе данных может объединяться из множества таблиц в единый результирующий набор.
Свойства таблиц реляционной базы данных
Так как таблицы в реляционной СУБД являются отношениями реляционной модели данных, то и свойства этих таблиц являются свойствами отношений, которые мы уже рассматривали. Кратко сформулируем эти свойства еще раз:
• каждая таблица состоит из однотипных строк и имеет уникальное имя;
• строки имеют фиксированное число полей (столбцов) и значений (множественные поля и повторяющиеся группы недопустимы), иначе говоря, в каждой позиции таблицы на пересечении строки и столбца всегда имеется в точности одно значение или NULL;
• строки таблицы обязательно отличаются друг от друга хотя бы единственным значением, что позволяет однозначно идентифицировать любую строку;
• столбцам таблицы присваиваются уникальные имена, и в каждом из них размещаются однородные значения данных (даты, фамилии, целые числа или денежные суммы);
• полное информационное содержание базы данных представляется в виде явных значений данных, и такой метод представления является единственным, в частности, не существует каких-либо специальных «связей» или указателей, соединяющих одну таблицу с другой;
• при выполнении операций с таблицей ее строки и столбцы можно обрабатывать в любом порядке безотносительно к их информационному содержанию – этому способствует наличие имен таблиц и их столбцов, а также возможность выделения любой строки или любого набора строк с указанными признаками.
Индексы
Ранее мы рассмотрели понятие ключей таблиц базы данных. В большинстве реляционных СУБД ключи реализуются с помощью объектов, называемых индексами.
Индекс представляет собой указатель на данные, размещенные в реляционной таблице. Можно провести аналогию индекса таблицы базы данных с алфавитным указателем, обычно помещаемым в конце книги. Чтобы найти в книге страницы, относящиеся к некоторой теме, проще всего обратиться к указателю, в котором устанавливается соответствие между перечисленными в алфавитном порядке темами и номерами страниц, и сразу определить требуемые страницы. Чтобы без указателя найти все страницы, относящиеся к нужной теме, пришлось бы просматривать всю книгу. Индекс базы данных предназначен для аналогичных целей – чтобы ускорить поиск информации в таблице базы данных. Индекс предоставляет информацию о точном физическом расположении данных в таблице.
Примечание.
Мы отмечали, что записи в реляционных таблицах не упорядочены. Тем не менее, любая запись в конкретный момент времени имеет вполне определенное физическое местоположение в файле базы данных, хотя это положение и может изменяться при изменении информации, хранящейся в базе данных.
При создании индекса в нем сохраняется информация о местонахождении записей, относящихся к индексируемому столбцу таблицы. При добавлении в таблицу новых записей или удалении существующих индекс также модифицируется.
При выполнении запроса к базе данных, в условие поиска которого входит индексированный столбец, поиск значений производится в первую очередь в индексе. Если этот поиск оказывается успешным, то в индексе устанавливается точное местоположение искомых данных в таблице базы данных.
Рассмотрим пример индекса. На рис. 4.1 показан фрагмент таблицы СТУДЕНТЫ и индекса, построенного по полю Имя данной таблицы. При выполнении поиска по имени студента, просматривая индекс, можно сразу определить порядковый номер записи, содержащей необходимую информацию, и затем быстро найти в таблице сами данные. Если бы у таблицы отсутствовал индекс по полю Имя, то выполнение поиска по имени студента потребовало бы просмотра всей таблицы. Таким образом, использование индексов сокращает время выборки данных.
Рис. 4.1. Поиск информации в таблице с помощью индекса.
Примечание.
Ускорение поиска информации при использовании индекса может показаться неочевидным – ведь количество записей в индексе совпадает с количеством записей в таблице. Однако следует учитывать два обстоятельства. Во-первых, обращение к индексу выполняется быстрее, чем к таблице, во-вторых, в индексе записи хранятся в упорядоченном виде (в рассматриваемом примере – в алфавитном порядке) и поэтому при поиске информации в индексе нет необходимости просматривать все данные до конца индекса.