Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
РЕЛЯЦИОННЫЕ ЯЗЫКИ МАНИПУЛИРОВАНИЯ ДАННЫМИ
Реляционные модели Классификация реляционных языков Основные характеристики языка SQL Организация запросов к базе данных на языке SQL РЕЛЯЦИОННЫЕ МОДЕЛИ Основные понятия
Реляционные модели данных (РМД), в отличие от сетевых и иерархических (см. гл. 15), характеризуются простотой структуры данных, удобным для пользователя табличным представлением, а также возможностью использования формального аппарата алгебры отношений и реляционного исчисления для обработки данных. Отношение, или реляционная таблица, имеет прямоугольную структуру (" плоский файл" ) (рис. 19.28):
Рис. 19.28. Структура данных реляционной таблицы
Применительно к реляционной таблице используется следующая стандартная терминология. Столбцы таблицы называются атрибутами, полями реляционных таблиц или доменами. Строки таблицы соответствуют записям, кортежам отношения. Условимся считать, что указанные термины имеют полноправное употребление и являются синонимами. Схема реляционной таблицы образована именами полей, образующих структуру ее записи, например:
(Поле1, Поле2,.... Поле n) Пример 19.42. Схема отношения: СТУДЕНТ(Имя, Фамилия, Дата рождения, № зач.книжки,...).
В заполненном виде этой схеме соответствует таблица (рис. 19.29).
Рис. 19.29. Фрагмент реляционной таблицы
Данные реляционной таблицы логически взаимосвязаны, описывают определенную сущность предметной области. Таблицы, или отношения, имеют наименования, раскрывающие содержательную сторону представляемой информации. Для определенности изложения рассмотрим реляционную таблицу (рис. 19.29). Таблица СТУДЕНТ содержит основные сведения о студентах учебного заведения. Каждое поле принимает определенное значение в строке таблицы, обладает определенным форматом, или типом данных: Фамилия – строка символов, Дата рождения – дата в формате ДД.ММ.ГГ. Таблица имеет ключи – поле или группа полей, значение которых необходимо для идентификации строк (записей). Ключ обладает свойством уникальности значения, то есть неповторяемости в экземплярах записей. Если ключей несколько, один из них в объявлении схемы принимается за первичный (основной). Прочие ключи называются возможными. По первичному ключу выполняется автоматическое упорядочение записей (сортировка в порядке возрастания значений ключа). Пример 19.43. Таблица СТУДЕНТ содержит записи; для идентификации отдельной записи указывается значение ключа. В данном случае ключей несколько: № зач. книжки; [Имя]+[Фамилия]+[Дата рождения].
Право выбора первичного ключа остается за пользователем, выбирается ключ, как правило, наиболее часто используемый для поиска записи. Для эффективной реализации поиска и обработки данных создаются индексы, обеспечивающие формирование дополнительных индексных файлов (рис. 19.30).
Рис. 19.30. Индекс реляционной таблицы
При корректировке записей таблицы автоматически упорядочиваются индексы, изменяется местоположение каждого индекса – согласно принятому условию (возрастание или убывание значений); сами же записи реляционной таблицы не перемещаются при включении или удалении новых экземпляров записей, изменении значений их ключевых полей. Таким образом, индекс обеспечивает логическую последовательность записей в реляционной таблице, а также прямой доступ кзаписи по ее машинному или относительному адресу в файле реляционной таблицы. Количество индексов, имена (идентификаторы) индексов, соответствие индексов полям таблицы определяются при создании схемы таблицы. В свою очередь, индексы можно создавать и удалять, оставляя неизменным содержание записей реляционной таблицы. Следует помнить, что большое число индексов замедляет корректировку записей в реляционной таблице. Работа с данными осуществляется на уровне: отдельной таблицы; нескольких таблиц. Типовые операции по обработке записей реляционной таблицы
Классический состав операций с реляционными таблицами определяет требования к реляционным языкам. Рассмотрим типовые операции по обработке записей в изолированной реляционной таблице. Включить – добавляется новая запись, для чего указывается имя таблицы, в которую производится дополнение, и значения полей новой записи, обязательно заполнение ключевых полей. Удалить – удаляется определенная запись или группа записей, указывается имя таблицы и первичный ключ удаляемой записи – единичное удаление либо формируется условие (задают значения вторичных ключей или отдельных полей записи), выполнение которого необходимо для удаления группы записей. Обновить - изменяется значение полей указанной записи, задается имя таблицы, идентификатор записи (записей), подлежащей корректировке значений полей, новые значения изменяемых полей. Выборка (селекция) – выбор подмножества записей таблицы по условию, которое формулируется как логическое выражение. Результирующая таблица имеет ту же схему, что и исходная; эту операцию называют " горизонтальной" выборкой. Частным случаем выборки является пустая выборка, если исходные записи не соответствуют условию отбора. Проекция – для таблицы указывается подмножество полей, участвующих в формировании новой (выходной) таблицы, имеющей другую схему, и, может быть, другой массив записей (исключаются записи, дублирующие друг друга). Эту операцию называют " вертикальной" выборкой. Пример 19.44. Ввод сведений о новом студенте: ВКЛЮЧИТЬ в СТУДЕНТ [Игорь; Смирнов; 23.02.1980; 126543] Изменить номер зачетной книжки студента: ОБНОВИТЬ в СТУДЕНТ: [Игорь; Смирнов; 23.02.1980] поле [№ зач.книжки] = 345234 Удаление сведения о студенте: УДАЛИТЬ в СТУДЕНТ: [Игорь; Смирнов; 23.02.1980] Удаление сведения о студентах, которые родились в 1979 г.: УДАЛИТЬ в СТУДЕНТ: если [Дата рождения] > =01.01.1980 AND [Дата рождения] < 01.01.1981 Отобрать студентов, у которых номера зачетных книжек находятся в интервале 100000 – 200000: ВЫБОРКА в СТУДЕНТ: если [№ зач.книжки] > = 100000 AND [№ зач.книжки] < 200000
Результат выборки
Сформировать список имен студентов на основании таблицы СТУДЕНТ
ПРОЕКЦИЯ СТУДЕНТ [Имя]: СТУДЕНТ
Результат проекции
Популярное:
|
Последнее изменение этой страницы: 2017-03-11; Просмотров: 477; Нарушение авторского права страницы