Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Основные понятия. · Классификация реляционных языков

РЕЛЯЦИОННЫЕ МОДЕЛИ

РЕЛЯЦИОННЫЕ ЯЗЫКИ МАНИПУЛИРОВАНИЯ ДАННЫМИ

· Реляционные модели

· Классификация реляционных языков

· Основные характеристики языка SQL

· Организация запросов к базе данных на языке SQL

Реляционные модели данных (РМД), в отличие от сетевых и иерархических (см- гл. 15), характеризуются простотой структуры данных, удобным для пользователя табличным представлением, а также возможностью использования формального аппарата алгебры отношений и реляционного исчисления для обработки данных. Отношение, или реляционная таблица, имеет прямоугольную структуру ("плоский файл") (рис. 19.28).

Рис. 19.28. Структура данных реляционной таблицы

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

Условимся считать, что указанные термины имеют полноправное употребление и являются синонимами.

Схема реляционной таблицы образована именами полей, образующих структуру ее записи, например:

(Поле1, Поле2,.... Поле n)

Пример 19.42. Схема отношения:

СТУДЕНТ(Имя, Фамилия, Дата рождения, N зач.книжки,...).

В заполненном виде этой схеме соответствует таблица (рис. 19.29).

Рис. 19.29. Фрагмент реляционной таблицы

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

Для определенности изложения рассмотрим реляционную таблицу (рис. 19.29).

Таблица СТУДЕНТ содержит основные сведения о студентах учебного заведения. Каждое поле принимает определенное значение в строке таблицы, обладает определенным форматом, или типом данных: Фамилия - строка символов. Дата рождения - дата в формате ДД.ММ.ГГ.

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

Если ключей несколько, один из них в объявлении схемы принимается за первичный (основной). Прочие ключи называются возможными. По первичному ключу выполняется автоматическое упорядочение записей (сортировка в порядке возрастания значений ключа).

Пример 19.43. Таблица СТУДЕНТ содержит записи; для идентификации отдельной записи указывается значение ключа. В данном случае ключей несколько:

  • N зач. Книжки;
  • [Имя]+[Фамилия]+[Дата рождения].

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

Для эффективной реализации поиска и обработки данных создаются индексы, обеспечивающие формирование дополнительных индексных файлов (рис. 19.30).

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

Значение индекса Адрес записи, содержащей значение индекса
и1 и2 и3 и т.д. Адр2 Адр10 Адр1

Рис. 19.30. Индекс реляционной таблицы

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

Работа с данными осуществляется на уровне:

  • отдельной таблицы;
  • нескольких таблиц.

Типовые операции по обработке записей реляционной таблицы

Классический состав операций с реляционными таблицами определяет требования к реляционным языкам. Рассмотрим типовые операции по обработке записей в изолированной реляционной таблице.

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

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

Обновить - изменяется значение полей указанной записи, задается имя таблицы, идентификатор записи (записей), подлежащей корректировке значений полей, новые значения изменяемых полей.

Выборка (селекция) - выбор подмножества записей таблицы по условию, которое формулируется как логическое выражение. Результирующая таблица имеет ту же схему, что и исходная; эту операцию называют "горизонтальной" выборкой. Частным случаем выборки является пустая выборка, если исходные записи не соответствуют условию отбора.

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

Пример 19.44.

∙ Ввод сведений о новом студенте:

ВКЛЮЧИТЬ в СТУДЕНТ [Игорь; Смирнов; 23.02.1980; 126543)

∙ Изменить номер зачетной книжки студента:

ОБНОВИТЬ в СТУДЕНТ: [Игорь; Смирнов; 23.02.1980] поле [ N зач книжки ] = 345234

∙ Удаление сведения о студенте:

УДАЛИТЬ в СТУДЕНТ: [Игорь; Смирнов; 23.02.1980]

∙ Удаление сведения о студентах, которые родились в 1979 г.:

УДАЛИТЬ в СТУДЕНТ: если [ Дата рождения ] >=01.01.1980 AND [Дата рождения] <01.01.1981

∙ Отобрать студентов, у которых номера зачетных книжек находятся в интервале 100000≈200000:

ВЫБОРКА в СТУДЕНТ: если [ N зач.книжки ]>=100000 AND [N зач. Книжки] < 200000

Результат выборки

Имя Фамилия Дата рождения N зач. книжки
Марина Петрова 1.1.80  

∙ Сформировать список имен студентов на основании таблицы СТУДЕНТ

ПРОЕКЦИЯ СТУДЕНT [ Имя ]:

СТУДЕНТ

Имя Фамилия Дата рождения N зач. Книжки
Петр Иванов 12.12.80  
Марина Петрова 1.1.80  
Марина Смирнова 6.6.81  

Результат проекции

Имя
Марина
Петр

Типовые операции совместной обработки реляционных таблиц

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

Объединение - для двух таблиц строится новая таблица той же схемы, содержащая совокупность записей исходных таблиц. При этом, если таблицы содержат одинаковые значения первичного ключа, при объединении таблиц записи не дублируются. Если записи двух таблиц имеют различные значения первичного ключа, результат объединения - совокупность всех записей исходных таблиц.

Пример 19.45. Имеются таблицы СТУДЕНТ (дневная форма обучения) и СТУДЕНТ-ЗАОЧНИК (заочная форма обучения) одной схемы Они объединяются в одну таблицу СТУДЕНТЫ той же схемы (но без дублирования первичных ключей записей). Так. студентка ПЕТРОВА Марина присутствует в таблице СТУДЕНТЫ в единственном числе:

CТУДЕНТ

Имя Фамилия Дата рождения N зач. книжки
Петр Иванов 12.12.80  
Марина Петрова 1.1.80  

СТУДЕНТ √ ЗАОЧНИК

Имя Фамилия Дата рождения N зач. книжки
Иван Сидоров 12.1.80  
Марина Петрова 1.1.80  

Итог объединения: СТУДЕНТЫ

Имя Фамилия Дата рождения N зач. Книжки
Петр Иванов 12.12.80  
Марина Петрова 1.1.80  
Марина Смирнова 6.6.81  

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

Пример 19.46. Имеются таблицы СТУДЕНТ (дневная форма обучения) и СТУДЕНТ-ЗАОЧНИК (заочная форма обучения). При пересечении таблиц выявляются студенты, находящиеся в двух таблицах одновременно:

Имя Фамилия Дата рождения N зач. книжки
Петр Иванов 12.12.80  
Марина Петрова 1.1.80  

СУДЕНТ

Имя Фамилия Дата рождения N Зач. книжки
Иван Сидоров 12.1.80  
Марина Петрова 1.1.80  

СТУДЕНТ-ЗАОЧНИК

Имя Фамилия Дата рождения N зач. книжки
Марина Петрова 1.1.80  

Вычитание - для двух таблиц строится новая таблица той же схемы, содержащая записи первой таблицы, отличные от второй таблицы. Если записей, содержащих одинаковое значение первичного ключа, во второй таблице нет, результат вычитания - полный состав записей первой таблицы; если записи второй таблицы содержат все значения первичного ключа записей первой таблицы, результат вычитания - пустая таблица.

Пример 19.47. Имеются таблицы СТУДЕНТЫ (весь контингент студентов - дневная и заочная формы обучения) и СТУДЕНТ-ЗАОЧНИК (заочная форма обучения). При вычитании таблиц выявляются студенты очной формы обучения:

Имя Фамилия Дата рождения N зач. книжки
Петр Иванов 12.12.80  
Марина Петрова 1.1.80  
Иван Сидоров 12.1.80  

СУДЕНТ-ЗАОЧНИК

Имя Фамилия Дата рождения N Зач. книжки
Иван Сидоров 12.1.80  
Марина Петрова 1.1.80  

Итог вычитания таблиц: СТУДЕНТ

Имя Фамилия Дата рождения N зач. книжки
Петр Иванов 12.12.80  

Между записями реляционных таблиц устанавливаются отношения следующих типов:

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

1:М - одно - многозначное соответствие, когда одной записи в первой таблице соответствует несколько записей во второй таблице, но каждая запись второй таблицы связана не более чем с одной записью первой таблицы.

Связь М:М не реализуется в реляционных языках непосредственно, для этого используются промежуточные таблицы-связки для замены типа соответствия на 1:М.

Пример 19.48. Если таблица СТУДЕНТ содержит первичный ключ [N зач.книжки], а таблица ОЦЕНКА имеет схему ([N зач.книжки], [Код дисциплины], [Результат]), то поле [N зач.книжки] таблицы ОЦЕНКА выступает как внешний ключ для организации связи с таблицей СТУДЕНТ. Связь возможна, если тип данных и значение данного поля в обеих таблицах будут одинаковыми, при этом эти поля могут иметь и Произвольные названия. Так, в таблице ОЦЕНКА может использоваться поле [Код студента], к примеру.

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

Декартово произведение - две таблицы образуют новую таблицу, которая включает все поля исходных таблиц. В результирующей таблице выводится итог соединения типа "каждый с каждым", при этом могут отсутствовать значения отдельных полей в результирующей записи.

Пример 19.49. Имеются таблицы СТУДЕНТ и ДИСЦИПЛИНА ([Код дисциплины], [Наименование дисциплины]). Декартово произведение таблиц дает новую таблицу - УСПЕВАЕМОСТЬ со схемой ([Имя], [Фамилия]. Дата рождения], [N зач.книжки], [Код дисциплины], [Наименование дисциплины]). Если какой-либо студент не связан с определенной дисциплиной либо по дисциплине не предполагается учет успеваемости, результирующая запись, полученная как декартово произведение, не имеет смысла.

СТУДЕНТ

Имя Фамилия Дата рождения N Зач. книжки
Петр Иванов 12.12.80  
Марина Петрова 1.1.80  

ДИСЦИПЛИНА

Код дисциплины Наименование дисциплины
  Высшая математика
  Информатика

УСПЕВАЕМОСТЬ

Имя Фамилия Дата рождения N зач. книжки Код дисциплины Наименование дисциплины
Петр Иванов 12.12.80     Высшая математика
Петр Иванов 12.12.80     Информатика
Марина Петрова 1.1.80     Высшая математика
Марина Петрова 1.1.80     Информатика

Условием совместной обработки paзносхемных реляционных таблиц в ряде случаев является наличие общих по типу и значению полей, так называемых ключей.

Соединение - две таблицы, имеющие общие поля - внешние ключи, участвуют в создании новой таблицы, схема которой строится объединением всех полей исходных отношений, а результирующие записи формируются по определенным условиям:

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

Пример 19.50. Соединить таблицы СТУДЕНТЫ и ОЦЕНКА при условии, что включены все записи таблицы СТУДЕНТ и соответствующие им записи таблицы ОЦЕНКА. Объединение таблиц возможно по общему полю - [N зач. книжки].

СТУДЕНТЫ

Имя Фамилия Дата рождения N зач. книжки
Петр Иванов 12.12.80  
Марина Петрова 1.1.80  
Иван Сидоров 12.1.80  

ОЦЕНКА

Код дисциплины N зач. книжки Результат
     
     
     
     

РЕЗУЛЬТАТЫ

Имя Фамилия Дата рождения N зач. книжки Код дисциплины N зач. книжки Результат
Петр Иванов 12.12.80        
Петр Иванов 12.12.80        
Марина Петрова 1.1.80        
Марина Петрова 1.1.80        
Иван Сидоров 12.1.80   пустые поля, так как нет соответствующих записей в таблице ОЦЕНКА

Деление - создается новая таблица, схема которой строится вычитанием из множества полей первой таблицы множества полей второй таблицы, результирующие записи формируются для одинаковых значений общих полей.

Пример 19.51. Результат деления таблицы УСПЕВАЕМОСТЬ на таблиц ОЦЕНКА дает таблицу СГУДЕНТ (см. предыдущий пример).

КЛАССИФИКАЦИЯ РЕЛЯЦИОННЫХ ЯЗЫКОВ

<== предыдущая лекция | следующая лекция ==>
Пример 19.41 | DBASe-подобные реляционные языки
Поделиться с друзьями:


Дата добавления: 2014-01-11; Просмотров: 408; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.042 сек.