Виды отношений. 1. Именованные отношения – это переменное отношение, определённое в СУБД посредством операторов: create Base relation; create view; create snapshot. 2. Базовым отношением называется именованное отношение которое не является производным ( т.е. базовое отношение является автономным). 3. Производным отношением называется отношение определённое посредством реляционного выражения через другие именованные отношения и в конечном счете через базовые отношения. 4. Представлением (view) называется именованное производное отношение. Представления виртуальны – они представлены в системе исключительно через определения в терминах других именованных отношений. 5. Снимки (snapshot) – это именованные производные отношения, однако в отличии от представлений снимки реальны, а не виртуальны. Пример: CREATE SNAPSHOT SC AS ((S JOIN P) WHERE P# =’P2’)[S,CITY] REFRESH EVERYDAY; Реляционные БД (РБД) – это БД воспринимаемая пользователем как набор формализованных отношений разной степени. Выражение “воспринимаемое пользователем” является решающим. Идея реляционной модели применяется к внешнему и концептуальному уровням системы, а не к внутреннему. 6. Введение в базы данных В 60-х годах была осознана необходимость применения средств компьютерной обработки хранимой информации. Это произошло в первую очередь там, где были накоплены значительные объемы полезных данных: в военной промышленности и бизнесе. Появились автоматизированные информационные системы АИС, программно-аппаратные комплексы, предназначенные для хранения, обработки информации и обеспечения ее пользователя. Первые АИС работали в основном с информацией фактического характера, такой, как характеристики объектов и их связей. По мере интеллектуализации ЭВМ, появилась возможность обрабатывать текстовые документы на естественном языке, изображения и другие виды и форматы представления данных. Несмотря на то, что принципы хранения данных в системах обработки фактической и документальной (текстовой) информации схожи, алгоритмы обработки в них заметно различаются. Поэтому в зависимости от характера информационных ресурсов, которыми оперируют такие системы, принято различать два их класса: документальный и фактографический. Документальные системы служат для работы с документами на естественном языке: монографиями, периодическими публикациями, текстами законодательных актов. Наиболее распространенный тип документальных систем – информационно-поисковые системы, предназначенные для накопления и поиска по различным критериям документов на естественном языке. Другой большой класс автоматизированных систем – фактографические системы. Они оперируют фактическими сведениями, представленными в виде, специальным образом организованной совокупности формализованных записей данных. Центральное функциональное звено фактографических информационных систем – системы управления базами данных СУБД. Фактографические системы используются не только для реализации справочных функций, но и для решения задач обработки данных, т.е. имеются в виду задачи, связанные с вводом, хранением, сортировкой и группировкой записей данных однородной структуры. В большинстве случаев эти задачи предусматривают предоставления пользователям итоговых результатов обработки в виде отчетов в табличной форме. Задачи, связанные с обработкой данных, решаются с использованием АИС и широко распространены во всех сферах деятельности, начиная с производства, управления финансами и телекоммуникациями, и заканчивая управлением семейным бюджетом. Массивы информации, накопленные в АИС, должны быть оптимальным образом организованы для их компьютерного хранения и обработки, должна быть обеспечена их целостность и непротиворечивость. Используя функции стандартных файловых систем невозможно добиться нужной производительности при решении подобных задач, поэтому все АИС опираются на СУБД. СУБД обеспечивает создание СУБД, поддержание ее в актуальном состоянии и обеспечения эффективного доступа пользователей и их приложений к содержащейся в ней информации. 1. Модели данных Любая АИС оперирует с моделью той или иной части реального мира предметной областью. Предметная область рассматривается как некоторая совокупность реальных объектов и связи между ними, причем каждый объект обладает определенным набором свойств/атрибутов. Способ отражения сущностей атрибутов и связей на структуры данных определяются моделью данных. Принято выделять иерархическую, сетевую, реляционную и объектноориентированную модели данных. Соответственно, говорят об иерархических, сетевых, реляционных и объектно-ориентированных СУБД. Иерархическая модель позволяет строить БД с иерархической древовидной структурой. Эта структура определяется как дерево, образованное попарными связями. На самом верхнем узле дерева имеется узел, называемый корнем; все другие узлы, кроме корня, связываются только с одним узлом на более высоком по отношению к ним уровне. Пример иерархической древовидной структуры Реляционные обьекты данных. Домены и отношения. Начнем с неформального введения терминов: Отношение, Картеж, Кардинальное число, Атрибут, Степень, Домен, Первичный ключ S# SNAME STATUS CITY S1 Иванов 20 Москва S2 Петров 10 Киев S3 Сидоров 30 Киев S4 Рычков 20 Москва S5 Робчук 30 Одесса 3. Атрибуты Степень Отношение Картежи Кардинальное число Отношение соответствует тому, что до сих пор называется таблицей. Кортеж соответствует строке этой таблицы, а атрибут столбцу. Первичный ключ - это уникальный индентификатор для таблицы, т.е. столбец или такая комбинация столбцов, что в момент времени не существует 2-х строк содержащих одинаковое значение в этом столбце или комбинации столбцов. Домен – это общая совокупность значений из которых берутся настоящие значения для определения атрибутов определенного отношения. Главный смысл замены заключается в том, что ониограничивают сравнения. Пример БД поставщиков и деталей. S S# SNAME STATUS CITY S1 Smith 20 London S2 Jones 10 Paris S3 Blake 30 Paris S4 Cleark 20 London S5 Adams 30 Athems Первичный ключ P Отделы Начальник Сотрудники Филиалы Оборудование Компьютер Ксероксы ы иерархической модели: простота Основное достоинство описания иерархических структур реального мира. Если в модели каждый порожденный элемент может иметь более одного исходного, то такая модель называется сетевой, В ней элемент м/б связан с любым др. без ограничений. Сетевая БД может состоять из набора записей, соответствующих каждому экземпляру объекта предметной области и набора связей м/д ними. Сотрудник 1 Проект 1 Сотрудник 2 Проект 2 Сотрудник N Проект N В данном примере сетевая модель хорошо отражает то, что в проекте могут участвовать разные сотрудники и в то же время сотрудник может участвовать в различных проектах. В реляционных БД вся информация представляется в виде прямоугольных таблиц. Реляционная модель опирается на систему понятий реляционной алгебры, важнейшие из которых: таблица, отношение, строка, столбец, первичный ключ. Все операции над реляционными БД сводится к манипуляциям над таблицами. Модели ОО-СУБД берут свое начало от ОО ЯП. Основная идея, объединяющая эти две области, состоит в том, что пользователям приходиться оперировать не понятиями, связанными с аппаратным обеспечением (биты, байты, записи, поля), а понятиями, которые более всего отвечают структуре реального мира, а именно объектами и операциями, определенными для этих объектов. Это позволяет, в отличии от других БД, говорить о возможности сохранения семантики предметной области в ОО БД благодаря повышению уровня абстракции. По состоянию на сегодняшний день заметно доминирование реляционной модели в современных СУБД. PNAME Nut Boet Screw Screw Cam Cog COLOR WEIGHT CITY Red 12 London Green 17 Paris Blue 17 Rome Red 14 London Blue 12 Paris Red 19 London SP S# P# QTY S1 P1 300 S1 P2 200 S1 P3 400 S1 P4 200 S1 P5 100 S1 P6 100 S2 P1 300 S2 P2 400 S3 P2 200 S4 P2 200 S4 P4 300 S4 P5 100 Пример по ограничению сравнений. SELECT… //имеет смысл SELECT //не имеет смысла FROM P,SP FROM P,SP WHERE P.P# =SP.P# WHERE P.WEIGHT = SP.QTY 2. Организация P# P1 P2 P3 P4 P5 P6 Отношение. Переменная отношения–это обычная переменная такая же и в языках программировать, т.е. именованный объект значение которого может изменятся со временем, а значение этой переменной в любой момент времени и есть значение отношения. Отношение R определено на множестве доменов D1, D2… DN(не обязательно различны) содержит две части заголовок и тело. Если представить отношение в терминах таблиц это строка заголовков столбцов, а тело это множество строк данных. Заголовок содержит фиксированное множество атрибутов или точнее пар <имя атрибута : имя домена >: {<A1: D1>,<A2: D2>…..<An: Dn>} Тело содержит множество кортежей, кортежи содержат множество пар < имя атрибута : значение атрибута>: {<A1: Ni1>,<A2: Ni2>…..<An: Nin>}; i=1..m –количество картежей Значение m и n наз соответственно кординальным числом и степенью отношения R. Определение данных. Определим синтаксис оператора: GREATEBASE RELATION (base–relation) attribute–definition–CommoList–список определенных атрибутов разделенных запятыми. Candidate–Key–Definition–List–список определенных потенциальных ключей. Foreign– Key–Definition–List – список определенных внешних ключей Определение атрибута имеет форму atrшbгte DOMAIN(domain) Если упустить спецификацию DOMAIN(domain) то считается, что атрибут основан на домене с тем же именем. Удаление базовых отношений. DESTRON BASE RELATION base_relation.– предназначено для удаления всех кортежей указанного базового отношения с последующим удалением в каталоге всех записей в базовом отношение. 4. Свойства отношений. В любом отношении: 1)нет одинаковых кортежей. 2)кортежи не упорядочены сверху вниз. 3)атрибуты неупорядочены слева направо. 4)все значения атрибутов атамарные. 1 Это св-во следует из того факта, что тело отношения это множество картежей, а мн-во, в математике, не содержит одинаковых элементов. Важное следствие этого св-ва в том что всегда существует первичный ключ. Т.к. картежи уникальны, то по крайней мере комбинация всех атрибутов будет обладать св-вом уникальности, а значит при необходимости может служить первичным ключом. 2 Это св-во также следует из того, что тело отношения это математическое множество, а простые множества в математике неупорядочены. 3 Это св-во следует из того факта, что заголовок отношения также определен как множество. 4 Данное св-во является следствием того, что все лежащие в основе домены содержат только атамарные значения. Это св-во можно выразить иначе: каждой позиции пересечения столбца и строки в таблице расположено в точности одно значение, а не набор значений. Можно сказать ещё и так: отношение не содержит групп повторения.Отношения, удовлетворяющие этому условию, называются нормализованными или представлены в первой нормальной форме. Причина нормализации – простота объектов, с которыми проводится работа, что, приводит к упрощению всей системы. 5. Целостность реляционных данных: потенциальные и внешние ключи. Ссылочная целостность. Потенциальные ключи Пусть R- некоторая переменная отношения, тогда потенциальный ключ К для R – это подмножество множества атрибутов R, обладающее следующими свойствами: 1. Свойством уникальности, т.е. нет 2-х различных картежей в текущем значении переменной R с одинаковым значением K(key). 2. Свойство неизбыточности: никако еиз подмножеств К не обладает свойством уникальности. Синтаксис определения потенциального ключа: Candidate – key – definition ::=CANDIDATE KEY(attribute - commalist) | PRIMARY KEY(attribute - commalist) Потенциальный ключ, состоящий из более чем одного атрибута, называется составным, из одного атрибута – простым. ЗАМЕЧАНИЕ: хотя на практике отношение чаще всего имеет только один потенциальный ключ, на самом деле их может быть несколько. Пусть есть отношение ELEMENTS , представляющее таблицу химических элементов. Каждый элемент имеет уникальное имя (свинец),уникальное обозначение (Pb), и уникальное атомное число, поэтому имеет 3 потенциальных ключа. ЗАМЕЧАНИЕ: потенциальные ключи определены как множества атрибутов, поэтому при ссылке используется { } множества. {S#, p#} – потенциальный ключ отношения Sp. В нормальном контексте { }могут быть опущены. ЗАМЕЧАНИЕ: Логическое понятие потенциального ключа не следует путать с физическим понятием уникального индекса, хотя последний часто играет роль потенциального ключа. ЗАМЕЧАНИЕ: Причина важности потенциальных ключей заключается в том, что они обеспечивают основной механизм адресации на уровне картежей в реляционной системе. 7. Правило внешних ключей. Рассмотренное нами правило целостности выражено исключительно в терминах состояния б/д любое состояние не удовлетворяющее этому правилу не корректно. Но как избежать таких некорректных состояний? Основная идея заключается в следующем: для каждого внешнего ключа необходимо ответить на следующий вопрос: Что должно случиться при попытке удалить объект ссылки внешнего ключа. Например удалить поставщика для которого есть по крайней мере одна поставка. Для определенности рассмотрим именно этот случай. Существует по меньшей мере две возможности: 1)Ограничить операцию удаления до момента, когда не будет существовать соответствующих поставок (в противном случае операция запрещается). 2)Каскадировать операцию удаления, удаляя также соответствующие поставки. Аналогичные операции можно проводить при попытке обновления потенциального ключа. Учитывая выше сказанное разработчик должен указать специальные правила внешних ключей для данного внешнего ключа. Введем синтаксис определения внешнего ключа следующим образом: FOREIGN KEY(…)REFERENCES base-relation DELETE option DELETE option Здесь параметр option может принимать значения RECTRICTED и CASCADES. На самом деле количество возможностей при попытке удаления определенного поставщика гораздо больше рассмотренных двух операций. Дать название всем возможным действиям не реально, поэтому в общем случае параметр option в нашем синтаксисе должен включать возможность вызова определенной при установке процедуры БД (иногда называемой хранимой процедуры). 10. NULL – значения. NULL – значения в БД предлагаются для решения проблемы отсутствующей информации, эта проблема достаточно часто встречается в реальной жизни, следовательно необходимо иметь подход, когда сталкиваешься с такими ситуациями в формальных системах БД. Коддом был предложен подход в решении этой проблемы, в котором для представления отсутствующей информации используется специальный параметр, который называют NULL – значением, тогда если данный кортеж имеет NULL – значение в данной позиции атрибута, то это означает, что в этом кортеже значение атрибута по некоторой причине отсутствует. В случае введения NULL – значения синтаксис определения атрибута в операторе CREATE BASE RELATION должно быть расширенно для включения спецификации вида: NULLS ALLOWED NULLS NOT ALLOWED. Если данному атрибуту не разрешено создавать NULL – значения система будет отвергать любые попытки ввода NULL – значения в эту область. 11. РЕЛЯЦИОННАЯ АЛГЕБРА Была придумана Коддом в одной из статей в 72г,содержала 4 традиционных оператора над множествами: объединение, пересечение , разность , декартово произведение; и спец реляционный операторы: :выборка, проекция ,естественное соединение ,деление .Операндами явл-ся отнош. ,а не произвольные мн-ва . Должны работать с отношениями, имеющими одинаковые заголовки . Например : выборка проекция произведен 12. Первичные и альтернативные ключи Как мы уже убедились базовое отношение может иметь больше одного потенциального ключа. В таком случае в реляционной модели по традиции один из потенциальных ключей должен быть выбран в качестве первичного ключа, а остальные потенциальные ключи, если они есть, будут называться альтернативными ключами. Если потенциальный ключ один, то он же выступает и в роли первичного ключа, если их несколько, то выбор первичного ключа по существу произволен. 8. Внешние ключи Определим термин внешний ключ. Пусть R2 базовое отношение, тогда внешний ключ, скажем FK, в отношении R2 – это подмножество множества атрибутов R2 такое, что 1. Существует базовое отношение R1 (R1 и R2 необязательно различны) с потенциальным ключом CK 2. Каждое значение FK в текущем значении R2 всегда совпадает со значением CK некоторого кортежа в текущем значении Замечание 1. Внешние ключи, как и потенцильные, определены как множество атрибутов, поэтому используются фигурные скобки 2. По определению каждое значение данного внешнего ключа должно являться значением соответствующего потенциального ключа, однако, обратное не требуется. 3. Данный внешний ключ будет составным или простым, если сопоставленный ему потенциальный ключ бкдет соответственно составным или простым 4. Значение внешнего ключа представлено с ссылкой к кортежу, содержащему соответствующее значение потенциального ключа, поэтому проблема обеспечения того, что база данных не включает никаких неверных значений внешних ключей, известна как проблема внешней целостности. Ограничение, по которому значения данного внешнего ключа должны быть адекватны значениям соответствующих потенциальных ключей называют ссылочным ограничением. Отношение, которое содержит внешний ключ, называется ссылающимся отношением, а отношение, которое содержит соответствующий потенциальный ключ, называется ссылочным или целевым отношением. 5. Ссылочные диаграммы. Рассмотрим б/д поставщиков и деталей. Существующие в б/д ссылочные ограничения можно представить следствиями следующей ссылочной диаграммы (S<-SP->P). 6. Соответствие с внешней к потенциальному ключу иногда называют клеем который удерживает б/д, как целое. 7. Введем правило ссылочной ценности. Б/д не должна содержать несогласованных значений внешних ключей. Здесь несогласованное значение внешнего ключа- это значение внешнего ключа которого не существует, отвечающего ему значения соответствующий ему потенциал ключа соответствующем целевом отношении. Проще говоря правило утверждает что если В ссылается на А, то А должно существовать. a x b y c Объединение Пересечение ax ay bx by cx cy Вычитание 9. a1 a2 a3 b1 b1 b2 ax ay az bx cy делимое Соединение (естественные) b1 c1 a1 b1 c1 b2 c1 a2 b1 c1 b3 c2 a3 b2 c1 Деление x a y результат делитель ЗАМКНУТОСТЬ. Рез. к\дой операции над отношениями также явл-ся отношением. Это реляционное св-воназыв-ся св-вом замкнутости. Т.к.результат операции имеет тотже тип ,что и исходные обьекты(отнощения),то рез.одной операции может использоваться в кач-ве исходных данных для другой. Др.словами ,можем записывать вложенные выражения, т.е.выр-ния ,в которых операнды сами представлены в виде выр-ния вместо простых имен отношений . Если рассматривать замкнутость более строго, к\дая реляционная операциядолжна быть представлено т.о.,чтобы выдавать рез.надлежащим заголовком(т.е.соответствующим набором атрибутов).Иначе говоря, необходим такой набор правил наследования и имен атрибутов, встроенный в алгебру ,чтобы можно было предсказывать имена атрибутов на выходе произвольной реляционной операции,зная имена атрибктов на вх.операции. Для достижения этой цели необходим новый оператор RENAME ,предназначенный для переименования атрибутов в определенные отношения ,например: S RENAME CITY AS SCITY Другие атрибуты этого отношения наследуют имена своих эквивалентов в отношении S без изменения, само отношение безымянное. 13. Проекция. Пусть дано {XY…Z} Проекция отношения А по атрибутам X, Y,…, Z, где каждый из этих атрибутов принадлежат отношению А называется отношением с заголовком {X,Y,…,Z} и телом содержащим все картежи {X:x, Y;y, Z;z} таких для которых в отношении А значение атрибута Х равно х, атрибута Y = y … Z = z. Т.о. с помощью оператора проекции помечены вертикальные подмножества данного отношения, т.е. подмножество, полученное, исключением всех атрибутов не указано в списке атрибутов и последующем исключением дублирующих картежей. Из того, что осталось никакой атрибут не может быть указан в списке более одного раза. Пример: S[CITY] CITY London Paris Athers 17. 14. Синтаксис реляционной алгебры. Expression :: =monadic-expression| dyadic-expression monadic- expression ::=renaming | restriction | projectium renaming ::=team RENEME attribute as attribute team ::=relution|( expression) expression restriction ::=|term where condition projection :: = |term |term[attribute - commolist] dyadic- expression :: = projection dyadic operation ::|UNION|INTESECT|MINUS|TIMES|JOIN|DIVIDE BY Традиционные операции над множествами. Для того, чтобы результаты над отношениями были коректны ( т.е. сами представляли из себя отношения) необходимо чтобы они были совместимы по типу . Будем говорить что два отношения совместимы по типу ,если у них идентичные заголовки ,а точнее : 1.если каждый из них имеет одно и тоже множество атрибутов( следовательно они заведомо должны иметь одну и туже степень). 2.если соответствующие атрибуты (т.е. атрибуты с теми же самыми именами в двух отношениях ) определены на одном и том же домене. А (поставщик из Лондона) S# SNAME STATUS CITY S1 Smith 20 London S4 Clarc 20 London В (поставщик детали Р 1) S# SNAME STATUS CITY S1 Smith 20 London S4 Jones 10 Paris Объединением двух совместных по типу отношений А и В (A UNION B) называются отношения с тем же заголовком, как и в отношениях А и В и с телом, состоящим из множеств всех картежей t ,принадлежащих А или В, или обоим отношениям. S# SNAME STATUS CITY S1 Smith 20 London S4 Clarc 20 London S2 Jones 10 Paris Поставщики либо размещены в London либо поставляют деталь Р1(либо и то и другое). Замечание: Удаление дубликатов производиться кроме объединения в проекции Пересечение. Пересечением двух совместимых по соотношению А и В (А INTERSECT B) называется отношение с тем же заголовком как и в отношениях А и В и с телом, состоящим из множества всех кортежей Т, принадлежащих одновременно обоим отношениям А и В. Поставщики, которые поставляют в Лондоне и поставляют деталь Р1. S# SNAME STATUS CITY S1 Smith 20 London Вычитание. Вычитанием двух совместимых по типу А и В (А MINUS B) называется отношением с тем же заголовком как и в отношении А и В, принадлежащих отношению А и не принадлежащих отношению В. (А MINUS B) != (B MINUS A) AminusB S# SNAME STATUS CITY S4 Clearc 20 London BminusA S# SNAME STATUS CITY S2 Jones 10 Paris Произведение. Для декартового произведения двух отношений А и В, где А и В не имеют общих имен и атрибутов определяются как отношение с заголовком, который представляет собой сцепление двух заголовков исходных отношений А и В и телом, состоящего из всех кортежей Т таких, что Т представляет собой сцепление кортежа a, принадлежащего отношению А и b, принадлежащего B. Обратим внимание, что кардинальное число результатов равно произведению кардинальных чисел отношений А и В, а степень равна сумме их степеней. Синтаксические упрощения. Легко проверить, что объедение ассоциативно, то есть А, В, С – произвольные выражения \, дающие совместимые по типу отношения, то выражения (A UNION B) UNION C и A UNION (B UNION C) эквивалентны. Аналогичное замечание можно сделать и для операций пересечение и декартового произведение (но не вычитание). Отметим, объедение, пересечение, декартовое произведение еще и коммутативны, то есть (A UNION B)= (B UNION A). 15. Специальные реляционные операции .Выборка. Это сокращенное название -выборки, где обозначает любой скалярный оператор сравнения =, !=, =>, <=. - это выборка из отношения А по атрибутам Х и У ( A WHERE XY ) называется отношение имеющее тот же заголовок что и отношение А и тело, содержащее множество всех кортежей Т отношения А, для кот проверено условие XY дает значение истины . Атрибуты Х и У определены на одном и том же домене. Как вместо атрибута Х, так и вместо У может быть указана салярное литерное значение, ( A WHERE XLiteral ) . Благодаря свойству замкнутости определение можно однозначно расширить до формы, в которой условие в выражении WHERE будет содержать произвольное число логических сочетаний таких простых сравнений, благодаря следующим тождествам. 1. A WHERE C1 AND C2 ( A WHERE C1 ) INTERSECT ( A WHERE C2 ) 2. A WHERE C1 AND C2 ( A WHERE C1 ) UNION ( A WHERE C2 ) 3. A WHERE NOT C A MINUS ( A WHERE C ) Пример: S WHERE CITY = ‘London’ S# SNAME STATUS CITY S1 Smith 20 London S2 Clark 20 London P WHERE WEIGHT = 14 P# PNAME Color WEIGHT CITY P1 Nut Red 12 London P3 Cam Blue 12 Paris SP WHERE S# = ‘S1’ AND P#=’P1’ S# P# QTY S1 P1 300 16. P[COLOR,CITY] COLOR Red Green Blue Blue (S WHERE CITY =”Paris”)[S#] CITY London Paris Rome Paris Естественное соединение. Операция соединения им. несколько разновидностей наиболее важной является естественное соединение, обозначается JOIN. Пусть отношения А и В имеют заголовки: A {X1,…, Xm, Y1,…, Yn} B {Y1,…, Yn, Z1,…, Zp} Предполагаем также что соответствующие атрибуты (т.е. атрибуты с одинаковым именем) определены на одном и том же домене. Будем теперь рассматривать выражение {X1,…, Xm}; {Y1,…, Yn}; {Z1,…, Zp} как три соответствующих атрибута X,YиZ соответственно, Тогда естественным соединением отношений А и В (A join B) называется отношение с заголовком {X,Y,Z}и телом, содержащим мн-во всех кортежей {X:x,Y:y,Z:z} таких, для которых в отношении А значение аттрибута X равно x, А аттрибута Y равно y и в отношении В значение атрибута Y = y, а значение Z = z. 18. S# SNAME STATU S CITY P# PNAME COLOR WEI GHT S1 SMITH S1 SMITH S1 SMITH S2 JONES S2 JONES S3 BLAKE S3 BLAKE S4 CLARK S4 CLARK S4 CLARK 20 20 20 10 10 30 30 20 20 20 LONDON LONDON LONDON PARIS PARIS PARIS PARIS LONDON LONDON LONDON P1 P4 P6 P2 P5 P2 P2 P1 P4 P6 12 14 19 17 12 17 12 12 14 19 RED RED RED GREEN BLUE GREEN BLUE RED RED RED P# P1 P4 P6 P1 P4 P6 PNAME COLOR WEIGHT PCITY NUT RED 12 LONDON SCREW RED 14 LONDON CEG RED 19 LONDON NUT RED 12 LONDON SCREW RED 14 LONDON CEG RED 19 LONDON Сравнение строковых значений лексикографическом порядке. происходит в Деление Пусть отношения А и В имеют заголовки {X1,…..Xm, Y1,…Yn} . Отношения А и В представляют соответственно делимое и делитель . Предположим также, что соответствующие атрибуты определены на одном и том же домене. Пусть теперь выражения {X1,…Xm} и {Y1…Yn} обозначают 2-а составных атрибута X и Y соответственно, тогда делением отношения Ана В (A DIVIDE BY B) называется отношение с заголовком {Х} и телом, содержащим множество всех кортежей {X:x}таких, что существует кортеж {X:x, Y:y}, который принадлежит отношению А для всех кортежей {Y:y}, принадлежащих отношению В. Нестрого это можно сформулировать так: результат содержит такие Х-значения из отношения А , для которых соответствующие y-значения из А включают у-значения из В. Пример1 DEND DOR S# P# P# S# S1 P1 P1 S1 S1 P2 S2 S1 P3 S1 P4 DEND S1 P5 DEVIDEBY S1 P6 DOR S2 P1 S2 P2 S3 P2 S4 P2 S4 P4 S4 P5 Пример2 DOR P# S# P2 S1 P4 S4 20. DEND DEVIDEBY DOR Обратим внимание на последний пример3, в котором делителем является отношение , содержащее номера всех известных в данный момент деталей. В результате , очевидно, получим номера поставщиков, поставляющих все эти детали. Запросы типа деления чаще проще описываются в терминах реляционных сравнений. Примеры использования реляционной алгебры. 1.Получить имена поставщиков, которые поставляют деталь Р2. (S JOIN (SP WHERE P#=’P2’)[S#] )[SNAME] 2.Получить имена поставщиков, которые поставляют по крайней мере одну красную деталь. (S JOIN (SP JOIN (P WHERE COLOR=’Red’)[P#])[S#][SNAME] ИЛИ (S JOIN (SP JOIN (P WHERE COLOR=’Red’))[S#][SNAME] 3.Получить номера поставщиков, которые поставляют по кркйней мере все те детали, которые поставляет поставщик P2. SP [S#, P#] DEVIDE BY (SP WHERE S#=S2)[P#] 4.Получить имена поставщиков, не поставляющих детали Р2. (SP [S#] MINUS (SP WHERE P#=P2)[S#] JOIN S)[SNAME] 5.Получить все пары номеров, размещенных в одном городе. (((S RENAME S# AS FIRSTS#)[FIRSTS#,CITY] JOIN (S RENAME S# AS SECONDS#)[SECONDS#,CITY] ) WHERE FIRSTS# < SECONDS#)[FIRSTS#,SECONDS#] Назначение алгебры. Основная цель алгебры – обеспечить запись выражений. Выражения служат символического высокоуровневого представления намерений пользователя. Поэтому этими выражениями можно манипулировать в соответствии с многочисленными правилами преобразования. Например выражение ((SP JOIN S) WHERE P#=’P2’)[SNAME] можно преобразовать в эквивалентное, но возможно более рациональное выражение ((SP WHERE P#=’P2’) JOIN S)[SNAME]. Таким образом алгебра служит хорошим базисом для оптимизации. СОЕДИНЕНИЕ: Операция - соединение предназначается для тех случаев, когда нам нужно соеденить вместе 2 отношения на основе некоторых условий, отличных от эквивалентности. Пусть отношения А и В не имеют общих аттрибутов, а определяются также, как и в операции выборки. Тогда соединение отношения А по аттрибуту х с отношением В по аттрибуту У наз-ся результат вычисления выражения . (A TIMES B) WHERE XY Другими словами – это отношение с тем же заголовком, что и пр декартовом произведении отношений А и В и с телом содержащим множество кортежей t таких, что t принадлежит этому декартовому произведению и вычисление условия XY дает значение ИСТИНА для этого кортежа. Атрибуты Х и У должны быть определены на одном и том же домене, а операция должна иметь смысл для этого домена . Определим больше-соединение отношения S по атрибуту CITY с отношением P по атрибут CITY .Производим предварительное переименование атрибутов : ((S RENAME CITY AS SCITY) TIMES (P RENAME CITY AS PCITY)) WHERE SCITY>PCITY В результате мы получаем : Операция расширения и подведения итогов. Для обеспечения возможности проведения скалярных вычислений в БД предназначена операция расширения. С помощью этой операции из определенного отношения создается новое отношение, создающее наряду с имеющимися атрибутами новый атрибут, значение которого получается посредством некоторых скалярных вычислений. Например, можно записать: EXTEND P ADD (WEIGHT * 454) AS GMWT перевод фунтов в граммы. Теперь можно использовать атрибут GMWT в операциях проверки, выборки и т.д. Пример: (EXTEND P ADD (WEIGHT*454) AS GMWT) WHERE GMWT>10000 Расширим ранее определенный синтаксис операции EXTEND, добавив новый вид унарных выражений EXTEND term ADD scalar-expression. Рассмотренная операция расширения обеспечивает возможность горизонтального или построчного вычисления в алгебре. Операция SUMMARIZE (подведения итогов) выполняет аналогичную функцию для вертикальных вычислений. Например с помощью выражения SUMMARIZE SP BY (P#) ADD SUM(QTY) AS TOTQTY Вычисляется отношение с заголовком (P#, TOTQTY), в котором существует один кортеж для каждого значения P# в отношении SP, в этом кортеже содержится значение P# и соответствующее количество деталей P# TOTQTY P1 600 P2 1000 P3 400 P4 500 P5 500 P6 100 Введем в ранее определенную синтаксическую таблицу еще один вид унарных выражений SUMMARIZE term BY (attribute-commalist) ADD aggregate-expression AS attribute Пример: SUMMARIZE (P JOIN SP) BY (CITY) ADD COUNT AS NSP CITY NSP London 5 Paris 6 Rome 1 Здесь COUNT – итоговая информация, определяемая как число дублирующих кортежей. Она добавляется как дополнительный атрибут NSP. В качестве итоговых функций выступают следующие функции: SUM, COUNT,AVG, MAX, MIN и др. 24. Операции обновления. Введем операцию реалиционного присвоения. Ее синтаксис: TARGET:=SOURCE Здесь SOURCE и TARGET реалиционные выражения, представляющие совместимые по типу отношения. Вычисленное значение SOURCE присваивается значению TARGET, заменяя его старое значение. Теоретически операции обновления можно было бы выполнять с использованием введенной операции присваивания, и операций UNION и MINUS. Однако такой подход не позволяет должным образом обрабатывать ошибки, поэтому на практике в реалиционных системах существуют явные операции INSERT, UPDATE, DELETE. Приведем синтаксис этих операций: INSERT:INSERT SOURCE INTO TARGET Пример: INSERT(S WHERE CITY=‘LONDON’) INTO TEMP UPDATE:UPDATE target assigment-commalist; Каждое присвоение (ASSIGMENT) имеет форму: Attribute:=scalar-expression Пример:UPDATE P WHERE COLOR=’RED’ CITY:=’PARIS’; DELETE:DELETE TARGET; Пример:DELETE S WHERE STATUS=20; 25. S# S1 23. 19. S# SNAME STATUSSCITY S2 Jones 10 Paris S2 Jones 10 Paris S2 Jones 10 Paris S3 BLAKE 30 Paris S3 BLAKE 30 Paris S3 BLAKE 30 Paris Пример3 (Деление) DEND DOR P# P# P1 P1 P2 P2 P3 P3 P4 P4 P5 P5 P6 P6 P1 P2 P2 P2 P4 P5 S# S1 S1 S1 S1 S1 S1 S2 S2 S3 S4 S4 S4 22. S# S2 S3 NOT SCREW COG BOLT CAM BOLT CAM NUT SCREW COG 21. Реалиционные сравнения. Изначально определенная реалиционная алгебра не поддерживает прямого сравнения двух отношений. Для исправления этого упущения определим новый вид условияреалиционные сравнения со следующим синтаксисом: Expression Θ expression Здесь expression это в обоих случаях выражения реалиционной алгебры представляющие совместимые по типу отношения, а Θ- один из операторов сравнения. Пример: 1) S[CITY]=P[CITY] Значение совпадает ли проекция S по атрибуту CITY с проекцией по отношению P с атрибутом CITY 2) S[S#]=SP[S#]- Если поставщики не поставляют детали. Новый вид условия допустим для использования в операциях выборки. 3) S WHERE ((SP RENAME S# AS X) WHERE X=S#) [P#]=P[P#] Получаем те картежи поставщиков, которые поставляют все детали. 26. Оглавление 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. Введение в базы данных Модели данных Реляционные обьекты данных. Домены и отношения. Отношение. Свойства отношений. Виды отношений. Целостность реляционных данных: потенциальные и внешние ключи. Ссылочная целостность. Первичные и альтернативные ключи Внешние ключи Правило внешних ключей. NULL – значения. РЕЛЯЦИОННАЯ АЛГЕБРА ЗАМКНУТОСТЬ. Синтаксис реляционной алгебры. Традиционные операции над множествами. Специальные реляционные операции .Выборка. Проекция. Естественное соединение. -СОЕДИНЕНИЕ: Деление Пример3 (Деление) Примеры использования реляционной алгебры. Назначение алгебры. Операция расширения и подведения итогов. Операции обновления. Реалиционные сравнения.