Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шпора информатика.doc
Скачиваний:
2
Добавлен:
01.05.2025
Размер:
2 Мб
Скачать
☆

25. Реляционная алгебра. Операции над таблицами.

В реализациях конкретных реляционных СУБД сейчас не используется в чистом виде ни реляционная алгебра, ни реляционное исчисление. Фактическим стандартом доступа к реляционным данным стал язык SQL (Structured Query Language). Язык SQL представляет собой смесь операторов реляционной алгебры и выражений реляционного исчисления, использующий синтаксис, близкий к фразам английского языка и расширенный дополнительными возможностями, отсутствующими в реляционной алгебре и реляционном исчислении. Вообще, язык доступа к данным называется реляционно полным, если он по выразительной силе не уступает реляционной алгебре (или, что то же самое, реляционному исчислению), т.е. любой оператор реляционной алгебры может быть выражен средствами этого языка. Именно таким и является язык SQL. Замкнутость реляционной алгебры Реляционная алгебра представляет собой набор операторов, использующих отношения в качестве аргументов, и возвращающие отношения в качестве результата. Таким образом, реляционный оператор f выглядит как функция с отношениями в качестве аргументов: R=f(R_1,…R_n) Реляционная алгебра является замкнутой, т.к. в качестве аргументов в реляционные операторы можно подставлять другие реляционные операторы, подходящие по типу:R=f(f_1(R_11,R_12,…),f_2(R_21,R_22,…),…) Таким образом, в реляционных выражениях можно использовать вложенные выражения сколь угодно сложной структуры. СУБД относят к реляционным базам данных. Реляционная база данных представляется таблицей, то есть: -подразделяется на столбцы и строки; -все столбцы однородны (состоят из элементов одного типа); -столбцам однозначно присвоены имена;-нет двух одинаковых строк;-строки и столбцы можно рассматривать в любом порядке

ТЕРМИНОЛОГИЯ

таблица = отношение = файл базы данных

строка = кортеж = запись

столбец = атрибут = поле

множество допустимых = домен = тип и размер поля значений элементов

Реляционные БД - некоторые объекты, которыми может быть представлена окружающая нас действительность. Поскольку эти объекты отличаются от уже известных нам чисел или даже массивов, то и возможности работы с ними так же другие. Выделяют следующие операции с таблицами: ПРОЕКЦИЯ, ОГРАНИЧЕНИЕ, СОЕДИНЕНИЕ, ДЕЛЕНИЕ, ПРЯМОЕ ПРОИЗВЕДЕНИЕ, ПЕРЕСЕЧЕНИЕ, ОБЪЕДИНЕНИЕ, РАЗНОСТЬ. ПРОЕКЦИЯ. Из одной исходной таблицы выделяется некоторое число столбцов. В результирующей таблице присутствуют только те столбцы, для которых выполнялась операция проекции. Кроме того должны отсутствовать одинаковые строки. пример: К исходной базе данных ...

код фио отдел должность оклад работа

1 И 2 1 250 2

2 Д 2 3 130 2

3 К 1 2 150 1

4 П 2 1 250 3

5 У 1 3 130 1

6 С 2 1 250 3

...применяем проекцию для полей "отдел" и "должность", получим

отдел должность

2 1

2 3 -списки кодов должностей сотрудников по отделам

1 2

1 3

ОГРАНИЧЕНИЕ. Из одной исходной таблицы выделяются строки, удовлетворяющие некоторому условию. В результирующей таблице есть все столбцы, которые были в исходной. СОЕДИНЕНИЕ. Две исходные таблицы должны иметь несколько одинаковых столбцов. В результирующую таблицу выделяются строки, имеющие одинаковые значения в одинаковых столбцах. В результирующей таблице присутствуют все столбцы, имеющиеся хотя бы в одной из исходных таблиц. пример: Пусть имеем таблицы ...

отдел подразделение код (руководителя)

1 БП 3

2 СУ 4

... и ...

код фио отдел должность оклад работа

1 И 2 1 250 2

2 Д 2 3 130 2

3 К 1 2 150 1

4 П 2 1 250 3

5 У 1 3 130 1

6 С 2 1 250 3

... результатом соединения будет таблица ...

отдел подразделение код фио должность оклад работа

1 БП 3 К 2 150 1

2 СУ 4 П 1 250 3

ДЕЛЕНИЕ. Имеем две таблицы, все столбцы второй таблицы обязательно присутствуют в первой. В результирующей таблице будут те столбцы из первой исходной таблицы, которых нет во второй. Если в 1 таблице существуют все строки, имеющие при одинаковой оставшейся части полный набор значений из 2 таблицы, то общая часть будет строкой результата. пример:

Таблицу ... делим с помощью таблицы ... результатом будет таблица

p1 p2 p2 p1

a1 b1 b1 a1

a1 b2 b3

a1 b3

a2 b1

a2 b2

ПРЯМОЕ ПРОИЗВЕДЕНИЕ. Из двух исходных таблиц, не имеющих общих столбцов, получается новая. В новую таблицу включаются все столбцы из обеих исходных таблиц. Строки образуются путем добавления каждой строке 1 таблицы всех возможных продолжений (строк) из 2 таблицы. пример: Таблицу ... умножаем на таблицу ... результатом будет таблица

p1 p2 p1 p2

a1 b1 a1 b1

a2 b2 a1 b2

a3 a2 b1

a2 b2

a3 b1

a3 b2

ПЕРЕСЕЧЕНИЕ. Выполняется для таблиц с одинаковым составом столбцов. В итоговую таблицу с тем же составом столбцов выделяются строки, одновременно имеющиеся в исходных таблицах. пример: Для таблицы ... и таблицы ... пересечением будет таблица

p1 p2 p1 p2 p1 p2

a1 b1 a1 b3 a2 b1