- Реляционные языки
- Реляционная алгебра, операции реляционной алгебры
- Что такое реляционная алгебра
- Операция выборки
- Операция проекции
- Операция объединения
- Операция пересечения
- Операция разности
- Операция декартова произведения
- Операция деления
- Операция тета-соединения
- Отношение (реляционная модель)
- Содержание
- Определения
- Пример
- Операции, определённые над отношениями
- Пример деления
- Видео
Реляционные языки
На предыдущей лекции говорилось о том, что одна из частей, модели данных является управляющей, т.е. она определяет типы допустимых операций с данными, включая операции обновления и извлечения данных, а также операции изменения структуры базы данных. Для управления отношениями в реляционных СУБД используются самые разнообразные языки. Некоторые из них являются процедурными, т.е. с их помощью пользователь точно указывает системе, как следует манипулировать данными. Другие языки являются непроцедурными, т.е. пользователь указывает, какие данные ему нужны, а не как их следует извлекать.
На этой лекции основное внимание уделим реляционной алгебре, а на следующей – реляционному исчислению, которые предложены Коддом (1971) в качестве основы для создания реляционных языков. Попросту говоря, реляционную алгебру можно описать как (высокоуровневый) процедурный язык, т.е. тот, который может быть использован для того, чтобы сообщить СУБД о том, как следует построить требуемое отношение на базе одного или нескольких существующих в базе данных отношений. Реляционное исчисление, с неформальной точки зрения, представляет собой непроцедурный язык, который можно использовать для определения того, каким будет некоторое отношение, созданное на основе одного или нескольких других отношений базы данных. Однако, строго говоря, реляционная алгебра и реляционное исчисление эквивалентны друг другу, т.е. для каждого выражения алгебры существует эквивалентное выражение в реляционном исчислении (и наоборот).
Реляционное исчисление используется для оценки избирательной мощности реляционных языков. Язык называется реляционно полным, если он позволяет получить любое отношение, которое можно вывести с помощью реляционного исчисления. Большинство реляционных языков запросов является реляционно полными. Однако по сравнению с реляционной алгеброй и реляционным исчислением они обладают и другими, более широкими функциональными возможностями, поскольку в них предусмотрены дополнительные операции, способные выполнять вычислительные, обобщающие и упорядочивающие функции.
Реляционная алгебра и реляционное исчисление представляют собой формальные, а не дружественные пользователю языки. В реляционных базах данных они использовались в качестве основы для разработки других языков управления данными, более высокого уровня. Для нас они представляют интерес потому, что иллюстрируют основные операции языков манипулирования данными, а также служат определенным критерием сравнения других реляционных языков.
Несмотря на то что реляционное исчисление является достаточно сложным с точки зрения освоения и использования, тем не менее его непроцедурная природа считается весьма перспективной и это стимулирует поиск других, более простых в употреблении непроцедурных методов. Подобные исследования вызвали появление двух других категорий реляционных языков: языков на основе преобразований и графических языков.
Языки на основе преобразований являются классом непроцедурных языков, которые используют отношения для преобразования исходных данных к требуемому виду. Эти языки предоставляют простые в употреблении структуры для формулирования требуемого результата имеющимися средствами. Примерами языков на основе преобразований являются язык SQUARE, язык SEQUEL и его ответвление — язык SQL. Ранее мы с вами знакомились с некоторыми операторами языка SQL. В дальнейшем мы будем использовать именно этот язык и изучим его дополнительные возможности.
Графические языки предоставляют пользователю рисунок или другое графическое отображение структуры отношения. Пользователь создает некий образец желаемого результата, и система возвращает затребованные данные в указанном формате. Примером подобного языка является язык QBE (Query-By-Example). Он используется, например в MS Access или MS Visual Foxpro.
Еще одной категорией языков являются языки четвертого поколения (fourth-generation languages — 4GL), которые позволяют создавать полностью готовое и соответствующее требованиям заказчика прикладное приложение с помощью ограниченного набора команд и в то же время предоставляют дружественную по отношению к пользователю среду разработки, чаще всего построенную на использовании команд меню В некоторых системах используются даже некоторые разновидности естественного языка, т.е. ограниченной версии обычного английского языка, который иногда называется языком пятого поколения (fifth-generation language — 5GL). Однако разработки проектов подобных языков по большей части все еще находятся в зачаточном состоянии.
Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет
Реляционная алгебра, операции реляционной алгебры
Что такое реляционная алгебра
Операция выборки
,
Видео: Что такое реляционная модель данных - простыми словамиСкачать
Видео: Базы данных. Таблицы в SQL и отношения в реляционных БД: атрибуты, строки, столбцы, записи и кортежиСкачать
Запрос SQL
Теперь посмотрим, что получится в результате выполнения этой операции реляционной алгебры и соответствующего ей запроса SQL. В таблице ниже дано одно отношение, с которым работает эта операция.
R3 | |||
A1 | A2 | A3 | A4 |
3 | hh | yl | ms |
4 | pp | a1 | sr |
1 | rr | yl | ms |
Просматриваем столбец А3 и устанавливаем, что предикату A3>’d0′ удовлетворяют записи в первой и третьей строках исходного отношения (так как номер буквы y в алфавите больше номера буквы d). В результате получаем следующее новое отношение, в котором две строки:
R | |||
A1 | A2 | A3 | A4 |
3 | hh | yl | ms |
1 | rr | yl | ms |
Комбинировать всевозможные логические условия для выборок Вам поможет материал «Булева алгебра (алгебра логики)».
А в материалах раздела «Программирование PHP/MySQL» Вы найдёт немало примеров комбинаций различных логических условий для выборок из базы данных.
Операция проекции
Запрос SQL
Пусть вновь дано то же отношение R3 :
R3 | |||
A1 | A2 | A3 | A4 |
3 | hh | yl | ms |
4 | pp | a1 | sr |
1 | rr | yl | ms |
R | |
A4 | A3 |
ms | yl |
sr | a1 |
Операция объединения
Результатом объединения двух множеств (отношений) А и В () будет такое множество (отношение) С, которое включает в себя те и только те элементы, которые есть или во множестве А или во множестве В. Говоря упрощённо, все элементы множества А и множества В, за исключением дубликатов, образующихся за счёт того, что некоторые элементы есть и в первом, и во втором множестве. Операция объединения реляционной алгебры идентична операции объединения множеств, которая также описана в материале «Множества и операции над множествами».
Запрос SQL
R1 | R2 | ||||
A1 | A2 | A3 | A1 | A2 | A3 |
Z7 | aa | w11 | X8 | pp | k21 |
B7 | hh | h15 | Q2 | ee | h15 |
X8 | pp | w11 | X8 | pp | w11 |
R | ||
A1 | A2 | A3 |
Z7 | aa | w11 |
B7 | hh | h15 |
X8 | pp | w11 |
X8 | pp | k21 |
Q2 | ee | h15 |
Важно следующее: операция объединения может быть выполнена только тогда, когда два отношения обладают одинаковым числом и названиями атрибутов (столбцов), или, говоря формально, совместимы по объединению.
Операция пересечения
Результатом пересечения двух множеств (отношений) А и В () будет такое множество (отношение) С, которое включает в себя те и только те элементы, которые есть и во множестве А, и во множестве В. Операция пересечения реляционной алгебры идентична операции пересечения множеств, которая также описана в материале «Множества и операции над множествами».
Запрос SQL
В некоторых диалектах SQL отсутствует ключевое слово INTERSECT. Поэтому, например, в MySQL и других, операция пересечения множеств может реализована с применением предиката EXISTS.
Теперь посмотрим, что получится в результате выполнения этой операции реляционной алгебры и соответствующего ей запроса SQL. Вновь даны два отношения R1 и R2:
R1 | R2 | ||||
A1 | A2 | A3 | A1 | A2 | A3 |
Z7 | aa | w11 | X8 | pp | k21 |
B7 | hh | h15 | Q2 | ee | h15 |
X8 | pp | w11 | X8 | pp | w11 |
R | ||
A1 | A2 | A3 |
X8 | pp | w11 |
Операция разности
Разность двух отношений R1 и R2 () состоит из кортежей (или записей, или строк), которые имеются в отношении R1, но отсутствуют в отношении R2. Отношения R1 и R2 должны быть совместимы по объединению. Операция разности реляционной алгебры идентична операции разности множеств, которая также описана в материале «Множества и операции над множествами».
Запрос SQL
Установим, что получится в результате выполнения этой операции реляционной алгебры и соответствующего ей запроса SQL. Вновь даны два отношения R1 и R2:
R1 | R2 | ||||
A1 | A2 | A3 | A1 | A2 | A3 |
Z7 | aa | w11 | X8 | pp | k21 |
B7 | hh | h15 | Q2 | ee | h15 |
X8 | pp | w11 | X8 | pp | w11 |
R | ||
A1 | A2 | A3 |
X8 | pp | w11 |
Q2 | ee | h15 |
В некоторых диалектах SQL отсутствует ключевое слово EXCEPT. Поэтому, например, в MySQL и других, операция пересечения множеств может реализована с применением предиката NOT EXISTS.
Операция декартова произведения
Операция декартова произведения () определяет новое отношение R, которое является результатом конкатенации каждого кортежа отношения R1 с каждым кортежем отношения R2.
Запрос SQL
Видео: Урок 23. Что такое Отношения (Relation) в реляционных базах данных?Скачать
Видео: NoSQL простым языком: что это и зачем нужно?Скачать
Установим, что получится в результате выполнения этой операции реляционной алгебры и соответствующего ей запроса SQL. Даны два отношения R3 и R4:
R3 | R4 | ||||
A1 | A2 | A3 | A4 | A5 | A6 |
3 | hh | yl | ms | 3 | hh |
4 | pp | a1 | sr | 4 | pp |
1 | rr | yl | ms |
В новом отношении должны присутствовать все атрибуты (столбцы) двух отношений. Сначала первая строка отношения R3 сцепляется с каждой из двух строк отношения R4, затем вторая строка отношения R3, затем третья. В результате должно получиться 3 Х 2 = 6 кортежей (строк). Получаем такое новое отношение:
R | |||||
A1 | A2 | A3 | A4 | A5 | A6 |
3 | hh | yl | ms | 3 | hh |
3 | hh | yl | ms | 4 | pp |
4 | pp | a1 | sr | 3 | hh |
4 | pp | a1 | sr | 4 | pp |
1 | rr | yl | ms | 3 | hh |
1 | rr | yl | ms | 4 | pp |
Операция деления
Результатом операции деления () является набор кортежей (строк) отношения R1, которые соответствуют комбинации всех кортежей отношения R2. Для этого нужно, чтобы в отношении R2 была часть атрибутов (можно и один), которые есть в отношении R1. В результирующем отношении присутствуют только те атрибуты отношения R1, которых нет в отношении R2.
Запрос SQL
Давайте посмотрим, что получится в результате выполнения этой операции реляционной алгебры и соответствующего ей запроса SQL. Даны два отношения R5 и R6:
R5 | R6 | ||||
A1 | A2 | A3 | A4 | A2 | A3 |
2 | S3 | 4 | sun | R4 | 8 |
3 | X8 | 7 | kab | X8 | 7 |
3 | R4 | 8 | kab |
Комбинации всех кортежей отношения R6 соответствуют вторая и третья строки отношения R5. Но после исключения атрибутов (столбцов) А2 и А3 эти строки становятся идентичными. Поэтому в новом отношении присутствует эта строка один раз. Новое отношение:
Операция тета-соединения
Запрос SQL
Посмотрим, что получится в результате выполнения этой операции реляционной алгебры и соответствующего ей запроса SQL. Даны два отношения R3 и R4:
R3 | R4 | ||||
A1 | A2 | A3 | A4 | A5 | A6 |
3 | hh | yl | ms | 3 | hh |
4 | pp | a1 | sr | 4 | pp |
1 | rr | yl | ms |
Отношение (реляционная модель)
Отношение — фундаментальное понятие реляционной модели данных. По этой причине модель и называется реляционной (от лат. relatio — отношение, связь).
Содержание
Определения
-арным отношением
, или отношением
степени
, называют подмножество декартовa произведения множеств
, не обязательно различных. Исходные множества
называют в модели доменами (в СУБД используется понятие множество значений, определяемых типом данных).
Отношение имеет простую графическую интерпретацию в виде таблицы, столбцы (поля, атрибуты) которой соответствуют вхождениям доменов в отношение, а строки (записи) — наборам из значений, взятых из исходных доменов. Число строк (кортежей) называют кардинальным числом отношения (кардинальностью), или мощностью отношения.
Видео: Базы данных SQL уроки для начинающих. SELECT, JOINS, GROUP BY, INSERT, UPDATE, WHEREСкачать
Видео: Базы данных. Реляционная алгебраСкачать
Такая таблица обладает рядом свойств:
Под атрибутом здесь понимается вхождение домена в отношение. Строки отношения называются кортежами.
Формализованное определение введённых понятий.
Полезно также понятие первичного ключа — это такой набор атрибутов, который однозначно определяет кортеж и минимален среди всех своих подмножеств (то есть нельзя убрать ни один из атрибутов). При добавлении новых записей первичный ключ обязан оставаться первичным ключом (например, неверным будет использование в качестве первичного ключа набора Имя + Отчество + Фамилия сотрудника, даже если на момент создания таблицы полных тёзок среди заносимых в неё людей не было).
Пример
Допустим, содержание доменов следующее:
Тогда полное декартово произведение состоит из 18 троек, где первый элемент тройки — одна из фамилий, второй элемент — учебная дисциплина, а третий — оценка.
Тогда отношение R может моделировать реальную ситуацию и содержать пять строк, которые соответствуют результатам сессии (Петров экзамен по Физике не сдавал):
R | ||
---|---|---|
Фамилия | Предмет | Оценка |
Иванов | Физика | 4 |
Иванов | Химия | 3 |
Петров | Химия | 5 |
Сидоров | Физика | 5 |
Сидоров | Химия | 4 |
Операции, определённые над отношениями
В полученном объекте могут появиться одинаковые кортежи (например, при проецировании отношения из примера на отношение, заголовок которого состоит из единственного атрибута — фамилии, получим две пары одинаковых кортежей (два Иванова и два Сидорова) и ещё один кортеж (Петров). Необходимо удалить дубликаты, чтобы этот объект являлся отношением (тогда будет один Иванов, один Петров и один Сидоров).
Пример деления
Атрибут A | Атрибут B | Атрибут C |
---|---|---|
a | c | d |
b | c | d |
a | p | q |
b | x | y |
Атрибут B | Атрибут C |
---|---|
c | d |
Остаток от деления:
Атрибут A | Атрибут B | Атрибут C |
---|---|---|
a | p | q |
b | x | y |
Чтобы было проще понять этот пример, сравните его с обычной алгеброй: умножьте делитель на частное (декартово произведение), прибавьте остаток от деления (объединение), и Вы получите делимое. То есть если a/b=c, и остаток=d, тогда b*c+d=a.