РЕЛЯЦИОННАЯ МОДЕЛЬ ДАННЫХ БАЗЫ ДАННЫХ Реляционная Алгебра
Edgar Frank 'Ted' Codd Эдгар Френк Кодд , Dorset, England , Williams Island, Florida создал и описал концепцию реляционных баз данных и реляционную алгебру [ ]; для проектирования БД предложил аппарат нормализации отношений Edgar Frank 'Ted' Codd Эдгар Френк Кодд , Dorset, England , Williams Island, Florida создал и описал концепцию реляционных баз данных и реляционную алгебру [ ]; для проектирования БД предложил аппарат нормализации отношений Реляционная модель данных
Основы реляционной модели данных были впервые изложены в статье Е. Кодда в 1970 г. Эта работа послужила стимулом для большого количества статей и книг, в которых реляционная модель получила дальнейшее развитие. Реляционная модель данных
Информационное правило - вся информация в реляционной БД (включая имена таблиц и столбцов) должна определяться строго как значения в таблицах. Информационное правило - вся информация в реляционной БД (включая имена таблиц и столбцов) должна определяться строго как значения в таблицах. Гарантированный доступ - любое значение в реляционной БД должно быть гарантированно доступно для использования через комбинацию имени таблицы, значения первичного ключа и имени столбца Гарантированный доступ - любое значение в реляционной БД должно быть гарантированно доступно для использования через комбинацию имени таблицы, значения первичного ключа и имени столбца Поддержка пустых значений (null value) - СУБД должна уметь работать с пустыми значениями (неизвестными, неопределёнными или неиспользованными значениями), в отличие от значений по умолчанию и независимо для любых доменов. Поддержка пустых значений (null value) - СУБД должна уметь работать с пустыми значениями (неизвестными, неопределёнными или неиспользованными значениями), в отличие от значений по умолчанию и независимо для любых доменов. Информационное правило - вся информация в реляционной БД (включая имена таблиц и столбцов) должна определяться строго как значения в таблицах. Информационное правило - вся информация в реляционной БД (включая имена таблиц и столбцов) должна определяться строго как значения в таблицах. Гарантированный доступ - любое значение в реляционной БД должно быть гарантированно доступно для использования через комбинацию имени таблицы, значения первичного ключа и имени столбца Гарантированный доступ - любое значение в реляционной БД должно быть гарантированно доступно для использования через комбинацию имени таблицы, значения первичного ключа и имени столбца Поддержка пустых значений (null value) - СУБД должна уметь работать с пустыми значениями (неизвестными, неопределёнными или неиспользованными значениями), в отличие от значений по умолчанию и независимо для любых доменов. Поддержка пустых значений (null value) - СУБД должна уметь работать с пустыми значениями (неизвестными, неопределёнными или неиспользованными значениями), в отличие от значений по умолчанию и независимо для любых доменов. 12 ПРАВИЛ КОДДА
Онлайновый реляционный каталог - описание БД и ее содержания должны быть представлены на логическом уровне как таблицы, к которым можно применять запросы, используя язык базы данных. Онлайновый реляционный каталог - описание БД и ее содержания должны быть представлены на логическом уровне как таблицы, к которым можно применять запросы, используя язык базы данных. Исчерпывающий язык управления данными - по крайней мере, один из поддерживаемых языков должен иметь четко определенный синтаксис и быть всеобъемлющим. Он должен поддерживать описание структуры данных и манипулирование ими, правила целостности, авторизацию и транзакции. Исчерпывающий язык управления данными - по крайней мере, один из поддерживаемых языков должен иметь четко определенный синтаксис и быть всеобъемлющим. Он должен поддерживать описание структуры данных и манипулирование ими, правила целостности, авторизацию и транзакции. Правило обновления представлений (views) - все представления, теоретически обновляемые, могут быть обновлены через систему. Правило обновления представлений (views) - все представления, теоретически обновляемые, могут быть обновлены через систему. Вставка, обновление и удаление - СУБД поддерживает не только запрос на отбор данных, но и вставку, обновление и удаление Вставка, обновление и удаление - СУБД поддерживает не только запрос на отбор данных, но и вставку, обновление и удаление Онлайновый реляционный каталог - описание БД и ее содержания должны быть представлены на логическом уровне как таблицы, к которым можно применять запросы, используя язык базы данных. Онлайновый реляционный каталог - описание БД и ее содержания должны быть представлены на логическом уровне как таблицы, к которым можно применять запросы, используя язык базы данных. Исчерпывающий язык управления данными - по крайней мере, один из поддерживаемых языков должен иметь четко определенный синтаксис и быть всеобъемлющим. Он должен поддерживать описание структуры данных и манипулирование ими, правила целостности, авторизацию и транзакции. Исчерпывающий язык управления данными - по крайней мере, один из поддерживаемых языков должен иметь четко определенный синтаксис и быть всеобъемлющим. Он должен поддерживать описание структуры данных и манипулирование ими, правила целостности, авторизацию и транзакции. Правило обновления представлений (views) - все представления, теоретически обновляемые, могут быть обновлены через систему. Правило обновления представлений (views) - все представления, теоретически обновляемые, могут быть обновлены через систему. Вставка, обновление и удаление - СУБД поддерживает не только запрос на отбор данных, но и вставку, обновление и удаление Вставка, обновление и удаление - СУБД поддерживает не только запрос на отбор данных, но и вставку, обновление и удаление 12 ПРАВИЛ КОДДА
Физическая независимость данных - на программы-приложения и специальные программы логически не влияют изменения физических методов доступа к данным и структур хранилищ данных. Физическая независимость данных - на программы-приложения и специальные программы логически не влияют изменения физических методов доступа к данным и структур хранилищ данных. Логическая независимость данных - на программы-приложения и специальные программы логически не влияют, в пределах разумного, изменения структур таблиц. Логическая независимость данных - на программы-приложения и специальные программы логически не влияют, в пределах разумного, изменения структур таблиц. Независимость целостности - язык БД должен быть способен определять правила целостности. Они должны сохраняться в онлайновом справочнике, и не должно существовать способа их обойти. Независимость целостности - язык БД должен быть способен определять правила целостности. Они должны сохраняться в онлайновом справочнике, и не должно существовать способа их обойти. Независимость распределения - на программы-приложения и специальные программы логически не влияет, первый раз используются данные или повторно. Независимость распределения - на программы-приложения и специальные программы логически не влияет, первый раз используются данные или повторно. Неподрывность - невозможность обойти правила целостности, определенные через язык базы данных, использованием языков низкого уровня Неподрывность - невозможность обойти правила целостности, определенные через язык базы данных, использованием языков низкого уровня Физическая независимость данных - на программы-приложения и специальные программы логически не влияют изменения физических методов доступа к данным и структур хранилищ данных. Физическая независимость данных - на программы-приложения и специальные программы логически не влияют изменения физических методов доступа к данным и структур хранилищ данных. Логическая независимость данных - на программы-приложения и специальные программы логически не влияют, в пределах разумного, изменения структур таблиц. Логическая независимость данных - на программы-приложения и специальные программы логически не влияют, в пределах разумного, изменения структур таблиц. Независимость целостности - язык БД должен быть способен определять правила целостности. Они должны сохраняться в онлайновом справочнике, и не должно существовать способа их обойти. Независимость целостности - язык БД должен быть способен определять правила целостности. Они должны сохраняться в онлайновом справочнике, и не должно существовать способа их обойти. Независимость распределения - на программы-приложения и специальные программы логически не влияет, первый раз используются данные или повторно. Независимость распределения - на программы-приложения и специальные программы логически не влияет, первый раз используются данные или повторно. Неподрывность - невозможность обойти правила целостности, определенные через язык базы данных, использованием языков низкого уровня Неподрывность - невозможность обойти правила целостности, определенные через язык базы данных, использованием языков низкого уровня 12 ПРАВИЛ КОДДА
Наиболее распространенная трактовка реляционной модели данных принадлежит К.Дейту. Согласно Дейту, реляционная модель состоит из трех частей: Реляционная модель данных Структурной части.Структурной части. Целостной части.Целостной части. Манипуляционной частиМанипуляционной части Структурной части.Структурной части. Целостной части.Целостной части. Манипуляционной частиМанипуляционной части
Структурная часть описывает, какие объекты рассматриваются реляционной моделью. Постулируется, что единственной структурой данных, используемой в реляционной модели, являются нормализованные n- арные отношения.Структурная часть описывает, какие объекты рассматриваются реляционной моделью. Постулируется, что единственной структурой данных, используемой в реляционной модели, являются нормализованные n- арные отношения. Целостная часть описывает ограничения специального вида, которые должны выполняться для любых отношений в любых реляционных базах данных. Это целостность сущностей и целостность внешних ключей.Целостная часть описывает ограничения специального вида, которые должны выполняться для любых отношений в любых реляционных базах данных. Это целостность сущностей и целостность внешних ключей. Манипуляционная часть описывает два эквивалентных способа манипулирования реляционными данными - реляционную алгебру и реляционное исчисление.Манипуляционная часть описывает два эквивалентных способа манипулирования реляционными данными - реляционную алгебру и реляционное исчисление. Реляционная модель данных
Домен имеет уникальное имя (в пределах базы данных).Домен имеет уникальное имя (в пределах базы данных). Домен определен на некотором простом типе данных или на другом домене.Домен определен на некотором простом типе данных или на другом домене. Домен может иметь некоторое логическое условие, позволяющее описать подмножество данных, допустимых для данного домена.Домен может иметь некоторое логическое условие, позволяющее описать подмножество данных, допустимых для данного домена. Домен несет определенную смысловую нагрузку.Домен несет определенную смысловую нагрузку. Основные определения Реляционная модель данных Домен - это семантическое понятие. Домен можно рассматривать как подмножество значений некоторого типа данных имеющих определенный смысл. Домен характеризуется следующими свойствами:
Основные определения Отношение - это множество кортежей, соответствующих одной схеме отношения. На самом деле, понятие схемы отношения ближе всего к понятию структурного типа данных в языках программирования. Реляционная модель данных Кортеж - это множество пар {имя атрибута, значение}, которое содержит одно вхождение каждого имени атрибута. "Значение" является допустимым значением домена данного атрибута Попросту говоря, кортеж - это набор именованных значений заданного типа.
Реляционная алгебра Реляционное исчисление Третья часть реляционной модели, манипуляционная часть, утверждает, что доступ к реляционным данным осуществляется при помощи реляционной алгебры или эквивалентного ему реляционного исчисления. Реляционная модель данных
В реализациях конкретных реляционных СУБД сейчас не используется в чистом виде ни реляционная алгебра, ни реляционное исчисление. Фактическим стандартом доступа к реляционным данным стал язык SQL (Structured Query Language). Язык SQL представляет собой смесь операторов реляционной алгебры и выражений реляционного исчисления, использующий синтаксис, близкий к фразам английского языка и расширенный дополнительными возможностями, отсутствующими в реляционной алгебре и реляционном исчислении.
Язык доступа к данным называется реляционно полным, если он по выразительной силе не уступает реляционной алгебре т.е. любой оператор реляционной алгебры может быть выражен средствами этого языка. Реляционная модель данных
ОСНОВЫ РЕЛЯЦИОННОЙ АЛГЕБРЫ Реляционная алгебра представляет собой набор операторов, использующих отношения в качестве аргументов, и возвращающие отношения в качестве результата. Таким образом, реляционный оператор выглядит как функция с отношениями в качестве аргументов: Замкнутость реляционной алгебры
ОСНОВЫ РЕЛЯЦИОННОЙ АЛГЕБРЫ Замкнутость реляционной алгебры Реляционная алгебра является замкнутой, т.к. в качестве аргументов в реляционные операторы можно подставлять другие реляционные операторы, подходящие по типу:
Реляционные операторы Теоретико-множественные операторы: –Объединение –Пересечение –Вычитание –Декартово произведение Традиционно, вслед за Коддом определяют восемь реляционных операторов, объединенных в две группы.
Реляционные операторы Специальные реляционные операторы: –Выборка –Проекция –Соединение –Деление
Реляционные операторы Не все операторы являются независимыми, т.е. некоторые из них могут быть выражены через другие реляционные операторы.
ТЕОРЕТИКО-МНОЖЕСТВЕННЫЕ ОПЕРАТОРЫ Объединение. Объединением двух совместимых по типу отношений А и В называется отношение с тем же заголовком, что и у отношений А и В и телом, состоящим из кортежей, принадлежащих или А, или В, или обоим отношениям. Замечание. Объединение, как и любое отношение, не может содержать одинаковых кортежей. Поэтому, если некоторый кортеж входит и в отношение А, и отношение В, то в объединение он входит один раз.
Пример 1. Объединения Пусть даны два отношения с информацией о сотрудниках: ФамилияЗарплата 1Иванов1000 2Петров2000 3Сидоров3000 ФамилияЗарплата 1Иванов1000 2Пушников2500 4Сидоров3000 Таблица 1. Отношение A Таблица 2. Отношение B
Пример 1. Объединения При объединение 2-ух множеств в результат входят элементы обоих множеств B A Select * from A Union Select * from B
ФамилияЗарплата 1Иванов1000 2Петров2000 3Сидоров3000 2Пушников2500 4Сидоров3000 Таблица 3. Отношение A UNION B Пример 1. Объединения
Замечание. Как видно из приведенного примера, потенциальные (возможные) ключи, которые были в отношениях А и В не наследуются объединением этих отношений. Поэтому, в объединении отношений А и В атрибут «номер» может содержать дубликаты значений. Если бы это было не так, и ключи наследовались бы, то это противоречило бы понятию объединения как "объединение множеств". Конечно, объединение отношений А и В имеет, как и любое отношение, возможный ключ, например, состоящий из всех атрибутов.
Пересечение Пересечением двух совместимых по типу отношений А и В называется отношение с тем же заголовком, что и у отношений А и В, и телом, состоящим из кортежей, принадлежащих одновременно обоим отношениям А и В. Синтаксис операции пересечения:
Пересечение При пересечение 2-ух множеств в результат входят элементы принадлежавшие как множеству А так и множеству В B A Select * from A Where EXIST (Select * from B Where B.*=A.*)
Пересечение Для тех же отношений, что и в предыдущем примере пересечение имеет вид: ФамилияЗарплата 1Иванов1000 Таблица 4 Отношение A INTERSECT B
Разность Разность двух совместимых по типу отношений А и В называется отношение с тем же заголовком, что и у отношений А и В, и телом, состоящим из кортежей, принадлежащих отношению А и не принадлежащих отношению В. Синтаксис операции вычитания:
Разность При вычитании из одного множества другого в результат идет только элементы множества А без общих элементов с множеством В A B
Разность Для тех же отношений А и В, что и в предыдущем примере вычитание имеет вид Таблица 5 Отношение A MINUS B ФамилияЗарплата 2Петров2000 3Сидоров3000 Select * from A Where NOT EXIST ( Select * from B Where B.*=A.*)
Декартово произведение Декартовым произведением двух отношений А и В называется отношение, заголовок которого является сцеплением заголовков отношений А и В, а тело состоит из кортежей, являющихся сцеплением кортежей отношений А*В={(А1В1)(А1В2)…..AnBn}: Синтаксис Декартово произведение : A TIMES B
Декартово произведение Пусть даны два отношения с информацией о поставщиках и деталях: Наименование детали 1Болт 2Гайка 3Винт Наименование поставщика 1Иванов 2Петров 3Сидоров Таблица 6 Отношение A (Поставщики) Таблица 7 Отношение B (Детали)
Декартово произведение В результате запроса: Select A.*,B.* from A,B постав Наименование поставщика детали Наименова ние детали 1Иванов1Болт 1Иванов2Гайка 1Иванов3Винт 2Петров1Болт 2Петров2Гайка 2Петров3Винт 3Сидоров1Болт 3Сидоров2Гайка 3Сидоров3Винт
Замечание. Сама по себе операция декартового произведения не очень важна, т.к. она не дает никакой новой информации, по сравнению с исходными отношениями. Для реальных запросов эта операция почти никогда не используется. Однако операция декартового произведения важна для выполнения специальных реляционных операций.
Специальные реляционные операторы
Выборка (ограничение, селекция) Выборкой (ограничением, селекцией) на отношении А с условием называется отношение с тем же заголовком, что и у отношения А, и телом, состоящем из кортежей, значения атрибутов которых при подстановке в условие дают значение ИСТИНА. представляет собой логическое выражение, в которое могут входить атрибуты отношения А и (или) скалярные выражения. ИСТИНА. представляет собой логическое выражение, в которое могут входить атрибуты отношения А и (или) скалярные выражения. В простейшем случае условие имеет вид, где - один из операторов сравнения ( и т.д.), а и - атрибуты отношения или скалярные значения. Такие выборки называются -выборки (тэта- выборки) или -ограничения, -селекции.В простейшем случае условие имеет вид, где - один из операторов сравнения ( и т.д.), а и - атрибуты отношения или скалярные значения. Такие выборки называются -выборки (тэта- выборки) или -ограничения, -селекции. Синтаксис операции выборки:Синтаксис операции выборки: Или
Выборка Пусть дано отношение А с информацией о сотрудниках: ФамилияЗарплата 1Иванов1000 2Петров2000 3Сидоров3000 Таблица 9 Отношение A Выборка
Выборка ФамилияЗарплата 1Иванов1000 2Петров2000 Результат выборки Select * from A Where Зарплата
Проекция Проекцией отношения А по атрибутам X,Y,Z, где каждый из атрибутов принадлежит отношению A, называется отношение с заголовком (X,Y,Z) и телом, содержащим множество кортежей вида(x, y, z), таких, для которых в отношении A найдутся кортежи со значением атрибута X равным x, значением атрибута Y равным y, …, значением атрибута Z равным z. Синтаксис операции проекции A[X, Y,…, Z] Замечание. Операция проекции дает "вертикальный срез" отношения, в котором удалены все возникшие при таком срезе дубликаты кортежей.
Пример.6 Проекция Пусть дано отношение с информацией о поставщиках, включающих наименование и месторасположение: Наименование поставщикаГород поставщика 1ИвановУфа 2ПетровМосква 3СидоровМосква 4СидоровЧелябинск Таблица 11 Отношение A (Поставщики)
Проекция Select DISTINCT Город_поставщика From A будет иметь вид: Таблица 12 Отношение Соединение A[Город поставщика] Город поставщика Уфа Москва Челябинск Проекция
Соединения отношений. Наряду с операциями выборки и проекции, является одной из наиболее важных реляционных операций. Обычно рассматривается несколько разновидностей операции соединения: –Общая операция соединения –Тэта-соединение –Экви-соединение –Естественное соединение
Общая операция соединения Определение Соединением отношений А и В по условию С называется отношение представляет собой логическое выражение, в которое могут входить атрибуты отношений А и В и (или) скалярные выражения.
Общая операция соединения Таким образом, операция соединения есть результат последовательного применения операций декартового произведения и выборки. Если в отношениях А и В имеются атрибуты с одинаковыми наименованиями, то перед выполнением соединения такие атрибуты необходимо переименовать.
Тэта-соединение Определение Пусть отношение А содержит атрибут Х, отношение В содержит атрибут Y, а Тэта- один из операторов сравнения ( и т.д.). Тогда - соединением отношения А по атрибуту Х с отношением В по атрибуту Y называют отношение Это частный случай операции общего соединения. Иногда, для операции -соединения применяют следующий, более короткий синтаксис:
Пример.7 Тэта-соединение Рассмотрим некоторую компанию, в которой хранятся данные о поставщиках и поставляемых деталях. Пусть поставщикам и деталям присвоен некий статус. Пусть бизнес компании организован таким образом, что поставщики имеют право поставлять только те детали, статус которых не выше статуса поставщика
Пример.7 Тэта-соединение Номер поставщика Наименование поставщика (Статус поставщика) Х 1Иванов4 2Петров2 3Сидоров1 Таблица 13 Отношение A (Поставщики) Номер деталиНаименование детали Статус детали Y 1Болт3 2Гайка2 3Винт1 Таблица 14 Отношение B (Детали)
Пример.7 Тэта-соединение Номер Постав- щика Наименова ние поставщика Статус поставщика X Номер детали Наименов а ние детали Статус детали Y 1Иванов41Болт3 1Иванов42Гайка2 1Иванов43Винт1 2Петров13Винт1 3Сидоров22Гайка2 3Сидоров23Винт1 Таблица 15 Отношение "Какие поставщики поставляют какие детали"
Экви-соединение Наиболее важным частным случаем тэтта соединения является случай, когда тэтта есть просто равенство. Синтаксис экви-соединения : A [ X=Y ] B
Пример8. Экви-соединение Пусть имеются отношения P, D и PD, хранящие информацию о поставщиках, деталях и поставках соответственно (для удобства введем краткие наименования атрибутов): Номер Детали DNUM Наименование детали DNAME 1Болт 2Гайка 3Винт Номер поставщика PNUM Наименование поставщика PNAME 1Иванов 2Петров 3Сидоров Таблица 16 Отношение P (Поставщики) Таблица 17 Отношение D (Детали)
Пример8. Экви-соединение Номер поставщика PNUM Номер детали DNUM Поставляемое количество VOLUME Таблица 18 Отношение PD (Поставки)
Пример8. Экви-соединение Номер поставщик а PNUM1 Наименование поставщика PNAME Номер Поставщика PNUM2 Номер детали DNUM Поставляемо е количество VOLUME 1Иванов Иванов Иванов Петров Петров Сидоров Таблица 19 Отношение "Какие детали поставляются какими поставщиками"
Пример8. Экви-соединение Недостатком экви-соединения является то, что если соединение происходит по атрибутам с одинаковыми наименованиями (а так чаще всего и происходит!), то в результатирующем отношении появляется два атрибута с одинаковыми значениями. В нашем примере атрибуты PNUM1 и PNUM2 содержат дублирующие данные. Избавиться от этого недостатка можно, взяв проекцию по всем атрибутам, кроме одного из дублирующих. Именно так действует естественное соединение.
Естественное соединение Определение Пусть даны отношения А(А1,…, Аn,Х1,…, Хm) и B(Х1,…,Хm,В1,…,Вn), имеющие одинаковые атрибуты (Х1,…,Хn) (т.е. атрибуты с одинаковыми именами и определенные на одинаковых доменах). Тогда естественным соединением отношений А и В называется отношение с заголовком (А1,…, Аn,Х1,…, Хm,В1,…,Вn) и телом, содержащим множество кортежей (а1,…,аn,x1,…,xn,b1,…,bn), таких, что Естественное соединение настолько важно, что для него используют специальный синтаксис: A JOIN B
Естественное соединение Замечание. В синтаксисе естественного соединения не указываются, по каким атрибутам производится соединение. Естественное соединение производится по всем одинаковым атрибутам. Замечание. Естественное соединение эквивалентно следующей последовательности реляционных операций: –Переименовать одинаковые атрибуты в отношениях –Выполнить декартово произведение отношений –Выполнить выборку по совпадающим значениям атрибутов, имевших одинаковые имена –Выполнить проекцию, удалив повторяющиеся атрибуты –Переименовать атрибуты, вернув им первоначальные имена Замечание. Можно выполнять последовательное естественное соединение нескольких отношений. Нетрудно проверить, что естественное соединение (как, впрочем, и соединение общего вида) обладает свойством ассоциативности, т.е. (A JOIN B) JOIN C=A JOIN (И JOIN C)
Пример9. Естественное соединение В предыдущем примере ответ на вопрос "какие детали поставляются поставщиками", более просто записывается в виде естественного соединения трех отношений P JOIN PD JOIN D (для удобства просмотра порядок атрибутов изменен, это является допустимым по свойствам отношений): Номер поставщика PNUM Наименование поставщика PNAME Номер детали DNUM Наименован ие детали DNAME Поставляемое количество VOLUME 1Иванов1Болт100 1Иванов2Гайка200 1Иванов3Винт300 2Петров1Болт150 2Петров2Гайка250 3Сидоров1Болт1000 Таблица 20 Отношение P JOIN PD JOIN D
Деление Определение. Пусть даны отношения А(Х1,…, Хn,Y1,…, Ym) и B(Y1,…,Ym), причем атрибуты Y1,…,Ym - общие для двух отношений. Делением отношений A на B называется отношение с заголовком (X1,…,Xn) и телом, содержащим множество кортежей (x1,…,xn), таких, что для всех кортежей в отношении A найдется кортеж. Отношение A выступает в роли делимого, отношение B выступает в роли делителя. Деление отношений аналогично делению чисел с остатком. Синтаксис операции деления:
Пример. Деление Ответим на вопрос, "какие поставщики поставляют все детали?". В качестве делимого возьмем проекцию X=PD[ PNUM,DNUM ], содержащую номера поставщиков и номера поставляемых ими деталей: Номер Поставщика PNUM Номер Детали DNUM Таблица 21 Проекция X=PD[PNUM,DNUM]
Пример. Деление В качестве делителя возьмем проекцию Y=D [ DNUM], содержащую список номеров всех деталей (не обязательно поставляемых кем- либо): Номер детали DNUM Таблица 22 Проекция Y=D[DNUM] Select DISTINCT PNUM from Y, X where NOT EXIST (Select DNUM from X where Y.DNUM=X.DNUM) Деление дает список номеров поставщиков, поставляющих все детали: Таблица 23 Отношение X DEVIDEBY Y Номер поставщика PNUM 1
Вывод Не все операторы реляционной алгебры являются независимыми - некоторые из них выражаются через другие реляционные операторы. Операторы соединения, пересечения и деления можно выразить через другие реляционные операторы, т.е. эти операторы не являются примитивными. Оставшиеся реляционные операторы (объединение, вычитание, декартово произведение, выборка, проекция) являются примитивными операторами - их нельзя выразить друг через друга.
Различия между реляционной алгеброй и языком SQL Имеется несколько типов запросов, которые нельзя выразить средствами реляционной алгебры. К ним относятся запросы, требующие дать в ответе список атрибутов, удовлетворяющих определенным условиям, построение транзитивного замыкания отношений, построение кросс-таблиц. Для получения ответов на подобные запросы приходится использовать процедурные расширения реляционных языков.