Информационное обеспечение систем управления





НазваниеИнформационное обеспечение систем управления
страница5/19
Дата публикации05.12.2014
Размер3.02 Mb.
ТипРеферат
100-bal.ru > Информатика > Реферат
1   2   3   4   5   6   7   8   9   ...   19

Рис. 3.2. Пример таблицы датологического уровня

При создании таблиц в среде СУБД VFP ей присваивается имя с расширением DBF. Это означает, что каждая таблица хранится в отдельном файле, имя которого имеет расширение DBF. Допускается указывать другое расширение, но тогда придётся его указывать явно при обращении к файлу. DBF-файл по аналогии с отношением состоит из двух частей: заголовка файла (хранит схему отношения и др. служебные данные) и тело файла (хранит кортежи отношения в форме двунаправленного списка).

Каждую строку таблицы или кортеж отношения в терминах СУБД принято называть записью. Каждая запись, как правило, определяет конкретный экземпляр объекта предметной области, следовательно, вся таблица задаёт определенный однородных класс объектов.

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

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

Каждый столбец таблицы называют полем. Каждое поле имеет своё имя уникальное в данной таблице. Термин поле и термин домен следует различать, а именно: поле – заголовок столбца; домен – семантическая область значений для ячеек столбца. Имена полей в FVP могут включать до 254 символов, не допускаются специальные символы и пробелы.

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

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

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

Каждый экземпляр объекта предметной области должен быть однозначно различим. Другими словами, он должен иметь идентификатор – атрибут, который для каждого экземпляра имеет уникальное значение. Например, в классе объектов СТУДЕНТЫ, конкретный экземпляр идентифицируется атрибутом Номер зачётной книжки.

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

В таблице может быть несколько ключей, тогда один из них объявляют главным и называют первичным ключом. Выбор первичного ключа теоретически произволен, но с практической точки зрения, чем меньше полей входит в ключ и чем проще домены этих полей, тем лучше. Пример составного ключа – D+№П в таблице ПОСТАВКА (см. табл. 2.2).

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

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

Первичные, внешние и вторичные ключи выбирают и определяют разработчики АИС. Наряду с ними в реляционных СУБД имеется встроенный механизм однозначной идентификации записи. Это механизм указателей записи. СУБД автоматически присваивает каждой записи номер. По этому номеру можно, используя команды позиционирования, обратиться к любой записи таблицы, т.е. установить указатель записи на определённый номер и сделать ее текущей. Например, команда SKIP 5 перемещает указатель записи в активном DBF-файле вперёд на 5 записей от текущей.

Очевиден вопрос о том, как действует механизм указателя записи при удалении? Например, если удаляется запись в середине таблицы (всего 100 записей, а удалится запись с номером 49), то смещаются ли номера записей идущих после удаляемой?

Механизм здесь такой   операция удаления реализуется в два этапа. На первом этапе, запись системой VFP помечается на удаление командой DELETE, при этом помеченная запись сохраняет свой номер и к ней можно обратиться по этому номеру, хотя команды поиска её "не видят". На втором этапе, командой PACK помеченные записи физически удаляются, и происходит так называемая упаковка DBF-файла с перенумерацией записей.

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

Таблица 3.1

Инфологический
термин


Реляционный
термин


Датологический
термин


Предметная область, задача

Инфологическая модель

Объект

Имя объекта

Число свойств

Число экземпляров

Экземпляр объекта

Свойство объекта

Имя свойства

Значение свойства

Идентификатор объекта

Ограничение свойства

База данных
Схема базы данных

Отношение

Имя отношения

Степень отношения

Мощность отношения

Кортеж

Атрибут

Имя атрибута

Значение атрибута

Ключевой атрибут

Домен

Контейнер таблиц и
"инструментов".

Датологическая модель

Таблица

Имя таблицы

Число столбцов таблицы

Число строк таблицы

Запись

Поле

Имя поля

Значение поля

Первичный ключ

Тип поля и условие

3.2. Поддержка логической структуры БД в VFP

Б
аза данных в ранних версиях FoxPro   это множество DBF-файлов, которое разработчик АИС преобразует в систему динамическим или статическим способом. В VFP логическая структура организации данных значительно богаче и разнообразнее. Это разнообразие иллюстрируется на рис. 3.3, где представлены организация БД в FoxPro (рис. 3.3 а) и в VFP (рис. 3.3 б).

Структура на рис. 3.3 а) является частью структуры представленной на рис. 3.3 б), т.е. в плане организации данных VFP включает все возможности FoxPro. В VFP понятие логическая структура базы данных включает три элемента: свободные таблицы (Free Tables)   файлы с расширением DBF аналогичные обычным DBF-файлам; базы данных (Data Bases)   файлы с расширением DBС; запросы (Queries)   файлы с расширением QPR.

В
свою очередь каждый DBC-файл является сложной структурой. Возможности ее организации иллюстрируются на рис. 3.4.

Таблица (Table)   это DBF-файл, подключенный к Data Base, их можно называть связанными с контейнером таблицами. От свободной таблицы (Free Table) таблица подключенные к контейнеру (Table) отличается возможностью хранения дополнительной информации в соответствующем DВС-файле (контейнере), а именно: связи между таблицами; длинные имена таблиц; комментарии для полей и таблиц; заголовки полей данных, используемые в окне Browse и в элементе управления Grid (окно таблицы), в них допустимы символы кириллицы; значения по умолчанию для полей; правила контроля полей; правила контроля для записей; триггеры для добавления, изменения и удаления записей. Кроме таблиц DВС-файл может включать хранимые процедуры, соединении с внешним источником данных, локальные и удаленные виды.

На рис. 3.5 иллюстрируется логическая структура базы данных, поддерживаемая средствами VFP.



Рис. 3.5. Организация базы данных VFP
VFP автоматически преобразует DBF-файлы, созданные в предыдущих версиях. Поэтому файл из VFP нельзя будет открыть в предыдущих версиях (если есть необходимость использовать один DBF-файл в различных версиях, то следует подключиться к нему через драйвер ODBC).

Запросы позволяют просматривать данные из таблиц, удовлетворяющие описанным в операторах SQL критерием. Запросы могут быть отраженны при помощи окна таблицы, в отчете или в окне Browse (запрос   это результат работы команды SELECT и представляет собой обыкновенный текстовый файл с расширением QPR, в котором хранится текст определенной команды SELECT).

Локальный, или удаленный, вид (View)   это сохраняемый запрос, к результатам которого доступ осуществляется как к таблице. Для организации доступа к удаленным данным применяют технология ODBC, которая использует механизм соединений с источниками удаленных данных (Connection). Последний элемент контейнера – хранимые процедуры (Stored procedure) необходим для обеспечения ссылочной целостности данных (см. подраздел ).

3.3. Управление DBC-, DBF-файлами

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

Создать контейнер или DBC-файл можно тремя способами: в окне диспетчера проектов; из системного меню (File/New) и в командном окне командой CREATE DATABASE. В любом случае появляется окно конструктора баз данных (контейнеров). В одном сеансе может быть открыто одновременно несколько окон конструктора. В одной информационной системе использование и активация нескольких DBC-файлов, все они отображаются списком в системном меню, но только один их является текущим. Обеспечить текущее состояние DBC-файлу можно командой SET DATABASE TO <имя>, а открывается такой файл командой OPEN DATABASE <имя>.

Добавить в контейнер (подключить к DBC-файлу) DBF-файл можно только при открытом и текущем данном DBC-файле либо в диспетчере проектов либо из командного окна командами CREATE TABLE или ADD TABLЕ (последняя подключает существующий свободный DBF-файл к текущему DBC-файлу). Каждый DBF-файл может быть подключен только к одному DBC-файлу. Для переподключения таблицы от одного контейнера к другому контейнеру необходимо сначала освободить (отключить) данный DBF-файл в диспетчере проектов или выполнить команду REMOVE TABLE.

Удаляется DBC-файл в диспетчере проектов кнопкой Remove или командой DELETE DATABASE. Эта команда без опции DELETE TABLES не удаляет подключенные DBF-файлы, а оставляет их на диске как свободные таблицы. Аналогично, команда REMOVE TABLE без опции DELETE освобождает DBF-файлы из контейнера, но оставляет их на диске как свободные таблицы.

Для свободных таблиц имя файла не должно превышать 10 символов, а для связанных с контейнером   128 символов; при отключении DBF-файла его длина имени усекается до 10 символов. Имя DBC-файла также может иметь имя длиной до 128 символов.

Закрываются DBC-файлы командами СLOSE DATABASES [ALL] или CLOSE ALL; первая – без ключевого слова [ALL] закрывает текущий файл и все к нему подключенные DBF-файлы, в противном случае все открытые DBC-файлы с подключенные к ним DBF-файлами; вторая   закрывает все DBC-файлы с подключениями DBF-файлами и все окна.

Новая таблица создаётся в текущем каталоге командой CREATE. Вы можете задать эту команду в командном окне, например, CREATE или CREATE SDETAL; или использовать возможности операционной оболочки VFP, в частности воспользоваться услугами Конструктора или Мастера таблиц. В диалоговом режиме следует ввести имена, типы и возможно длины полей. Для перехода от поля к полю следует пользоваться клавишами управления курсором или Tab и Shift + Tab. Нажатие клавиши Enter завершает работу, при этом система предложит сразу вводить данные в созданную таблицу.

Команда LIST STRUCTURE позволяет просмотреть структуру созданной таблицы (после выхода из команды CREATE). Система выдаёт информацию о длине записи, но если сложить длины всех полей, то наш результат не совпадёт на 1 с результатом системы, этот 1 байт отводится на метку удалённой записи. Команда DELETE NEXT 1 может сделать удалённую запись текущей, а команда RECALL NEXT 1 вернут её к жизни.

Командой MODIFY STRUCTURE можно изменить структуру, при этом в зависимости от варианта модификации данные в таблице могут быть утеряны. При модификации старые DBF-файлы сохраняются с расширением BAK.

Создать таблицу программным способом можно командой CREATE TABLE языка SQL.

В FoxPro 2.0 допускалось число записей до 1 миллиона, размер одной записи до 4000 байт; число полей до 255 и число одновременно открытых DBF-файлов до 25. Каждому открытому DBF-файлу система выделяет одну рабочую область в оперативной памяти. VFP имеет более 32000 рабочих областей, это число характеризует число одновременно открытых таблиц, так как таблица может бать открыта только в свободной рабочей области. Если открыто несколько таблиц, то одна из рабочих областей является текущей. Сделать рабочую область текущей позволяет команда SELECT <Nимя>, параметр которой задает номер или имя требуемой рабочей области. По умолчанию при старте СУБД реализуется SELECT 1 (первая рабочая область).

Таблица в текущей рабочей области открывается командой USE<имя таблицы>. Полный формат данной команды будет рассмотрен в последующих разделах. Все команды для работы с таблицами и с записями распространяют свои действия только на текущую рабочую область. Команда USE без параметров закрывает текущую таблицу.
3.4. Реляционная алгебра

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

В реализациях конкретных реляционных СУБД сейчас не используется в чистом виде ни реляционная алгебра, ни реляционное исчисление. Фактическим стандартом доступа к реляционным данным стал язык SQL. Он представляет собой смесь операторов реляционной алгебры и выражений реляционного исчисления, использующий синтаксис, близкий к фразам английского языка и расширенный дополнительными возможностями, отсутствующими в реляционной алгебре и реляционном исчислении. Вообще, язык доступа к данным называется реляционно полным, если он по выразительной силе не уступает реляционной алгебре, т.е. любой оператор реляционной алгебры может быть выражен средствами этого языка. Именно таким и является язык SQL.

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

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

Каждое отношение обязано иметь уникальное имя в пределах базы данных. Имя отношения, полученного в результате выполнения реляционной операции, также должно быть определено. Однако можно не требовать наличия имен от отношений, полученных в результате реляционных выражений, если эти отношения подставляются в качестве аргументов в другие реляционные выражения. Такие отношения называют неименованными отношениями. Неименованные отношения реально не существуют в базе данных, а только вычисляются в момент вычисления значения реляционного оператора.

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

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

•объединения отношений;

•пересечения отношений;

•взятия разности отношений;

•прямого произведения отношений.

Набор специальных реляционных операций включает следующие:

•ограничение отношения;

•проекцию отношения;

•соединение отношений;

•деление отношений.

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

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

Почти все операции предложенного выше набора обладают очевидной и простой интерпретацией.

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

•Операция пересечения двух отношений дает отношение, включающее все кортежи, входящие в оба отношения-операнда.

•Отношение, являющееся разностью двух отношений включает все такие кортежи, которые входят в первое отношение и не входит во второе отношение.

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

•Результатом ограничения отношения по некоторому условию является отношение, включающее кортежи отношения операнда, удовлетворяющее этому условию.

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

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

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

•Операция переименования дает отношение, тело которого совпадает с телом операнда, но имена атрибутов изменены.

•Операция присваивания позволяет сохранить результат вычисления реляционного выражения в существующем отношении базы данных.

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

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

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

Например, представим себе, что у отношений операндов операции прямого произведения имеются одноименные атрибуты с одинаковыми доменами. Каким был бы заголовок результирующего отношения? Поскольку это множество, в нем не должны содержаться одинаковые элементы. Но и потерять атрибут в результате недопустимо. А это значит, что в этом случае вообще невозможно корректно выполнить операцию прямого произведения.

Аналогичные проблемы могут возникать и в других двуместных операций. Для их разрешения в состав операций реляционной алгебры вводится операция переименования. Ее следует применять в любом случае, когда возникает конфликт именования атрибутов в отношениях-операндах одной реляционной операции. Тогда к одному из операндов сначала применяется операция переименования, а затем основная операция выполняется уже безо всяких проблем.
Теоретико-множественные операции реляционной алгебры. Каждое отношение представляет состояние класса однородных объектов предметной области в некоторый момент времени. Следовательно, одной схеме отношения в различные моменты времени могут соответствовать разные отношения. Поэтому иногда схему отношения называют типом отношения, а само отношение   экземпляром отношения. При этом под термином «отношение» понимают экземпляр и тип отношения в зависимости от контекста. Три первые теоретико-множественные операции являются бинарными, то есть в них участвуют два отношения и они требуют эквивалентных схем исходных отношений.

Объединением двух совместимых отношений называется отношение, с той же схемой, что и у исходных отношений, и телом, содержащим множество кортежей, принадлежащих либо первому, либо второму, либо обоим отношениям одновременно.

Пусть заданы два отношения R1={r1}, R2={r2}, где r1 и r2   соответственно кортежи отношений R1 и R2, то объединение
R1 R2={ r | rR1 rR2 }.
Здесь r   кортеж нового отношения,    операция логического сложения.

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

Пересечением двух совместимых отношений называется отношение, с той же схемой, что и у исходных отношений, и телом, содержащим множество кортежей, принадлежащих одновременно и первому и второму отношениям.

R1R2={r rR1 rR2}
здесь   операция логического умножения. В отношении R4=R1R2 содержится перечень таких деталей, которые выпускаются одновременно на двух участках цеха.

Разностью двух совместимых отношений называется отношение, с той же схемой, что и у исходных отношений, и телом, содержащим множество кортежей, принадлежащих первому и не принадлежащих второму операнду:
R1 \R2={r rR1 rR2}.
Отношение R5= R1 \R2 содержит перечень деталей, изготавливаемых только на участке 1, а отношение R6 = R2 \R1   перечень деталей, изготавливаемых только на участке 2.

Следует отметить, что первые две операции, объединение и пересечение, являются коммутативными операциями, т.е. результат операции не зависит от порядка аргументов в операции. Операция же разности является принципиально несимметричной операцией, то есть результат операции будет различным для разного порядка аргументов, что и видно из сравнения отношений R5 и R6.

Для демонстрации возможностей трех первых операций реляционной алгебры рассмотрим еще один пример — уже из другой предметной области. Исходными являются три отношения R1, R2 и R3. Все они имеют эквивалентные схемы. R1= R2 = R3 = (ФИО, Паспорт, Школа).

Рассмотрим ситуацию поступления в высшие учебные заведения, которая была характерна для периода, когда были разрешены так называемые репетиционные вступительные экзамены, которые сдавались раньше основных вступительных экзаменов в вуз. Отношение R1 содержит список абитуриентов, сдававших репетиционные экзамены. Отношение R2 содержит список абитуриентов, сдававших экзамены на общих условиях. И, наконец, отношение R3 содержит список абитуриентов, принятых в институт. Будем считать, что при неудачной сдаче репетиционных экзаменов абитуриент мог делать вторую попытку и сдавать экзамены в общем потоке, поэтому некоторые абитуриенты могут присутствовать как в первом, так и во втором отношении.

Рассмотрим следующие запросы. Список абитуриентов, которые поступали два раза и не поступили в вуз   R = R1 R2 \ R3.

Список абитуриентов, которые поступили в вуз с первого раза, то есть они сдавали экзамены только один раз и сдали их так хорошо, что сразу были зачислены в вуз   R = (R1 \ R2 R3) (R2 \ R1 R3).

Список абитуриентов, которые поступили в вуз только со второго раза. Прежде всего, это те абитуриенты, которые присутствуют в отношениях R1 и R2, потому что они поступали два раза, и присутствуют в отношении R3, потому что они поступили   R=R1R2R3.

Список абитуриентов, которые поступали только один раз и не поступили. Это те абитуриенты, которые присутствуют в R1 и не присутствуют в R2, и те, кто присутствуют в R2 и не присутствуют в R1. И, разумеется, никто из них не присутствует в R3   R=(R1\R2)(R2\R1)\R3.

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

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

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

Все эти соображения приводят к появлению понятия совместимости отношений по объединению: два отношения совместимы по объединению в том и только в том случае, когда обладают одинаковыми схемами. Более точно, это означает, что в заголовках обоих отношений содержится один и тот же набор имен атрибутов, и одноименные атрибуты определены на одном и том же домене.

Если два отношения "почти" совместимы по объединению, т.е. совместимы во всем, кроме имен атрибутов, то до выполнения операции типа объединения эти отношения можно сделать полностью совместимыми по объединению путем применения операции переименования.

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

В теории множеств декартово произведение может быть получено для любых двух множеств, и элементами результирующего множества являются пары, составленные из элементов первого и второго множеств. Поскольку отношения являются множествами, то и для любых двух отношений возможно получение прямого произведения. Но результат не будет отношением! Элементами результата будут являться не кортежи, а пары кортежей.

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

Прежде чем определить операцию "расширенное прямое произведение" формально, введем понятие конкатенации кортежей.

Конкатенацией, кортежей с = <c1, с2,...., сn> и q = <q1, q2, ..., qm> называется кортеж, полученный добавлением значений второго в конец первого. Сцепление кортежей с и q обозначается как (с, q)
(с, q) = <с1 с2, ... , сn, q1 q2, ...., qm>.
Здесь n   число элементов в первом кортеже с, m   число элементов во втором кортеже.

Все предыдущие операции не меняли степени или арности отношений   это следует из определения эквивалентности схем отношений. Операция декартово произведение меняет степень результирующего отношения.

Расширенным декартовым произведением отношения R1, степени n со схемой SR1 =1, А2,…,Аn) и отношения R2 степени m со схемой SR2 =1, В2,…, Вm) называется отношение R3 степени n+m со схемой
SR3 =1, А2,…,Аn, В1, В2,…, Вm)
содержащее кортежи, полученные сцеплением каждого кортежа r отношения R1 с каждым кортежем q отношения R2. То есть если R1={ r }, R2={ q }, то
R1R2={(r, q) | rR1 qR2}.

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

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

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

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

Первой специальной операцией реляционной алгебры является горизонтальный выбор, или операция фильтрации, или операция ограничения отношений. Операция ограничения требует наличия двух операндов: ограничиваемого отношения и простого условия ограничения.

В результате выполнения операции ограничения получаем отношение, схема которого совпадает с заголовком отношения-операнда, а в тело входят те кортежи отношения операнда, для которых значением условия ограничения является истинным (True).

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

а) терм   А ос а, (1)
где А   имя некоторого атрибута, принимающего значения из домена D; а   константа, взятая из того же домена D, aD; ос   одна из допустимых для данного домена D операций сравнения;

б) терм   А ос В, (2)
где А, В   имена некоторых -сравнимых атрибутов, то есть атрибутов, принимающих значения из одного и то же домена D. Тогда результатом операции выбора, или фильтрации, заданной на отношении R в виде булевского выражения, определенного на атрибутах отношения R, называется отношение R[], включающее те кортежи из исходного отношения, для которых истинно условие выбора или фильтрации:
R[(r)]={ r | rR a(r) = True}

Операция фильтрации является одной из основных при работе с реляционной моделью. На интуитивном уровне ее лучше всего представлять как операцию взятие некоторой "горизонтальной" вырезки из отношения операнда.

Условие a может быть сколь угодно сложным. Например, выбрать из R1 детали с каталожным номером (КN) «0011003»,
R2=R1[КN = «0011003»];
выбрать из R2 детали, у которых дата изготовления (DI) и дата приемки ОТК (DP) не совпадают,
R=R2[DI # DP],
R=R1[КN=«0011003» DI # DP].

Следующей специальной операцией является операция проектирования. Пусть R   отношение, SR = (А1, ... , Аn)   схема отношения R. Обозначим через В подмножество исходного множества атрибутов; Вi}.

Проекцией отношения R на набор атрибутов В, обозначаемой R[B], называется отношение со схемой, соответствующей набору атрибутов В SR[B], содержащему кортежи, получаемые из кортежей исходного отношения R путем удаления из них значений, не принадлежащих атрибутам из набора В.

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

Если А = , то R[A] = , по определению.

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

Например, выберем все цеха, изготавливающие деталь «Болт М8». Для этого нам необходимо из отношения R1 выбрать детали с заданным названием, а потом полученное отношение спроектировать на столбец «Цех». Результатом выполнения этих операций будет отношение R3:

R2=R1[Название детали=«Болт M8»],

R3=R2[Цех].

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

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

Имеется важный частный случай соединения – эквисоединение. Операция соединения называется операцией эквисоединения, если условие соединения имеет вид (A = B), где А и В   атрибуты разных операндов соединения. Этот случай важен потому, что он часто встречается на практике, и для него существуют эффективные алгоритмы реализации.

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

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

Можно выполнять последовательное естественное соединение нескольких отношений. Нетрудно проверить, что естественное соединение (как, впрочем, и соединение общего вида) обладает свойством ассоциативности.

Прежде чем дать формальное определение операции соединения в общем случае, рассмотрим вспомогательное понятие.

Пусть   любой из следующих знаков сравнения: =,,>,,<, тогда атрибуты А и В одного и того же или различных отношений называются сравнимыми, если для любого значения а атрибута А и любого значения б атрибута В предикат aб всегда определен. Иногда для уточнения принадлежности значений атрибутам это условие записывают в виде a.Ab.B.

Наборы атрибутов А=(A1, А2, ..., Ап) и В=1, В2, ..., Вm) называются -сравнимыми, если n=т, Ai и Вi -сравнимы (i = 1, 2, ..., n); в этом случае под критерием сравнения АВ понимают (A1B1) ...  (AnBm).

Пусть даны отношения R и G, А=(A1, А2, ..., Ап)   набор атрибутов отношения R, В=1, В2, ..., Вn)   набор атрибутов той же длины отношения G. Наборы А и В -сравнимы. Тогда соединением отношений R и G при условии АВ называется отношение, обозначаемое R[AB]G, в котором кортежи получаются сцеплением тех кортежей отношений R и G, для которых на наборах атрибутов А и В критерий сравнения принимает значение «истина», т.е.

R[AB]G = {(r,s) rR, sG, r.Ais.Bi, i=1, 2, ..., n}.

В составе команд FoxPro есть команда JOIN, которая позволяет объединить две таблицы по заданному условию.

Операция деления отношений. Эта операция наименее очевидна из всех операций реляционной алгебры и поэтому нуждается в более подробном объяснении. Пусть заданы два отношения   A со схемой SA={a1, a2, ..., an, b1, b2, ..., bm} и B с заголовком SB={b1, b2, ..., bm}. Будем считать, что атрибут bi отношения A и атрибут bi отношения B не только обладают одним и тем же именем, но и определены на одном и том же домене. Назовем множество атрибутов {aj} составным атрибутом a, а множество атрибутов {bj}   составным атрибутом b. После этого будем говорить о реляционном делении бинарного отношения A(a,b) на унарное отношение B(b).

Результатом деления A на B является унарное отношение C(a), состоящее из кортежей v таких, что в отношении A имеются кортежи (v, w) такие, что множество значений {w} включает множество значений атрибута b в отношении B.

Отношение А выступает в роли делимого, отношение В выступает в роли делителя. Деление отношений аналогично делению чисел с остатком.

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

В качестве делимого возьмем проекцию Х=
1   2   3   4   5   6   7   8   9   ...   19

Похожие:

Информационное обеспечение систем управления icon«Учебно-методический комплекс дисциплины «Информационное обеспечение систем управления»

Информационное обеспечение систем управления iconПояснительная записка
«Современная организация и технология документационного обеспечения управления». Он связан с курсами «Документоведение», «Информационное...
Информационное обеспечение систем управления iconИсследование систем управления процесс определения организационной...
Место исследований систем управления в комплексе дисциплин по теории и практке управления
Информационное обеспечение систем управления iconПрограммное обеспечение для отладки систем управления упругими объектами
Целью данной работы является разработка программного обеспечения для лабораторного стенда для изучения систем управления упругими...
Информационное обеспечение систем управления iconРабочая программа дисциплины «Информационное обеспечение, базы данных»
Факультет информационных систем и технологий Кафедра Прикладной математики и вычислительной техники
Информационное обеспечение систем управления iconУчебная программа по дисциплине " информационное обеспечение управления "
Изучение теоретических, методических и практических вопросов разработки, внедрения и совершенствования информационного обеспечения...
Информационное обеспечение систем управления iconРоссийской Федерации Самарский государственный архитектурно-строительный...
Информационные системы” являются информационные системы и сети, их математическое, информационное и программное обеспечение, способы...
Информационное обеспечение систем управления iconРабочая программа дисциплины «Архитектура ЭВМ и вычислительных систем»...
«Автоматизированные системы обработки информации и управления» (по отраслям) и 230105 «Программное обеспечение вычислительной техники...
Информационное обеспечение систем управления iconИсследование систем управления
Целью работы является рассмотрение частных методов исследования систем управления, а именно эксперимент, наблюдение и опрос
Информационное обеспечение систем управления iconПримерная тематика рефератов по курсу «Исследование систем управления»
Современный менеджмент и необходимость исследования систем управления социально-экономической организацией
Информационное обеспечение систем управления iconОрганизационно-правовое обеспечение правовой деятельности
Информационное обеспечение организации и проведения внеучебной работы
Информационное обеспечение систем управления iconИсследование систем управления Специальности: «Менеджмент организации»
«Исследование систем управления» является ведущей,в учебном процессе среди смежных дисциплин
Информационное обеспечение систем управления iconРеферат по дисциплине "Избирательное право" тема: Информационное...
Информационное обеспечение выборов. Правовое регулирование предвыборной агитации в РФ
Информационное обеспечение систем управления iconИнформационное обеспечение управления
В настоящее время классификационные схемы (классификаторы) строятся не только на основе соподчинения понятий (метод иерархии), но...
Информационное обеспечение систем управления iconКурсовая работа По дисциплине «Базы данных»
Программное обеспечение для создания систем управления базами данных
Информационное обеспечение систем управления iconРабочая программа учебной дисциплины «исследование систем управления»
Студенты научатся методам планирования эксперимента и организации исследования систем управления и научатся использовать приобретенные...


Школьные материалы


При копировании материала укажите ссылку © 2013
контакты
100-bal.ru
Поиск