Основные объекты реляционной БД 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Основные объекты реляционной БД



 

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

Под кластером понимается группа каталогов, к которым можно обращаться через одно соединение с сервером базы данных (программная компонента СУБД).

На практике процедура создания каталога определяется реализацией СУБД на конкретной операционной платформе. Под каталогом понимается группа схем. На практике каталог часто ассоциируется с физической базой данных как набором физических файлов операционной системы, которые идентифицируются ее именем.

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

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

Термин схема используется для описания всех объектов базы данных, которые созданы некоторым пользователем. Для каждого нового пользователя автоматически создается новая схема.

К числу основных объектов реляционных баз данных относятся таблица, представление и пользователь.

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

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

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

Для упрощения идентификации и именования объектов в базе данных поддерживается такие объекты, как синоним, последовательность и определенные пользователем типы данных.

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

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

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

Для обеспечения эффективного доступа к данным в реляционных СУБД поддерживаются ряд других объектов: индекс, табличная область, кластер, секция.

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

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

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

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

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

Данные объекты реляционной базы данных представляют собой программы, т.е. исполняемый код. Этого код обычно называют серверным кодом, поскольку он выполняется компьютером, на котором установлено ядро реляционной СУБД. Планирование и разработка такого кода является одной из задач проектировщика реляционной базы данных.

Хранимая процедура - это объект базы данных, представляющий поименованный набор команд SQL и/или операторов специализированных языков обработки программирования базы данных (например, SQLWindows или PL/SQL).

Функция - это объект базы данных, представляющий поименованный набор команд SQL и/или операторов специализированных языков обработки программирования базы данных, который при выполнении возвращает значение - результат вычислений.

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

Триггер (Trigger) - это объект базы данных, который представляет собой специальную хранимую процедуру. Эта процедура запускается автоматически, когда происходит связанное с триггером событие (например, до вставки строки в таблицу).

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

Пакет (Package) - это объект базы данных, который состоит из поименованного структурированного набора переменных, процедур и функций.

В распределенных реляционных СУБД имеются специальные объекты: снимок и связь базы данных.

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

Связь базы данных (Database Link) или связь с удаленной базой данных - это объект базы данных, который позволяет обратиться к объектам удаленной базы данных. Имя связи базы данных, грубо говоря, можно представить как ссылку на параметры доступа к удаленной базы данных.

 

Язык QBE

 

В современных СУБД широко используются табличные языки запросов. Наиболее распространенным среди них является язык QBE (Query-By-Example - запрос по примеру). Язык QBE предназначен для работы в интерактивном режиме и ориентирован на конечного пользователя. Язык QBE реализован во многих современных СУБД, например в dBase IV и более старших версиях этой системы, Paradox, Access и др. Конкретные реализации этого языка несколько отличаются друг от друга, но все они построены по единому принципу.

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

 

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

 

 

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

 

Ø FAM - фамилия;

Ø IMIA – имя;

Ø TABN - табельный номер;

Ø VOZR - возраст;

Ø POL - пол;

Ø ADR - адрес.

 

Требуется выдать информацию обо всех сотрудниках в возрасте 40 лет. В соответствующем столбце таблицы (VOZR) указывается цифра 40. В столбце можно записывать не только значение атрибута, но и знак операции сравнения; по умолчанию принимается знак равенства («=»).

 

Задание сложных запросов. Допускается задание и простых запросов, включающих только один аргумент поиска, и сложных запросов, компоненты которых связаны операторами AND (И) или OR (ИЛИ). Операторы AND и OR в явном виде не указываются при формулировании запроса на QBE. При отображении запросов на экране используется следующее правило: если в сложном запросе его компоненты представляют разные атрибуты, которые должны быть связаны оператором AND, то они записываются в одной строке (рис. 6.2). Если компоненты запроса должны быть связаны операторами OR, то они записываются на разных строках.

 

Запрос: «Выдать информацию о сотруднике с фамилией Диго и именем Светлана», а на рис. 6.3 - «Выдать информацию о сотрудниках, имеющих либо фамилию Диго, либо имя Светлана».

 

 

 

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

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

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

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

В разных СУБД «наполнители» и обычные значения атрибутов поиска различаются по-разному: в некоторых системах «наполнители» подчеркиваются, в других - используются специальные ограничители при указании переменных в запросе, в третьих - такое понятие вообще не вводится и т.п.

 

Существуют и другие способы установления связей.

 

Теоретически возможны разные типы соединений таблиц. Наиболее распространенным является соединение, при котором в результатную таблицу помещаются те соединенные записи, для которых значение поля связи основной таблицы совпадает с соответствующим полем в зависимой таблице. В описанных выше случаях устанавливается именно такое соединение. В настоящее время широко используются такие понятия, как «левое» и «правое» соединение, когда в результатную таблицу помещаются все записи из основной или зависимой таблицы соответственно, даже если для них нет связанных записей в другой таблице. Но не все системы позволяют в QBE реализовывать такие соединения. В случаях, когда возможно задание разных типов соединений, конкретный способ реализации отличается в разных СУБД. Так, в Access «левое» и «правое» соединения можно определить, задав для связи «параметры объединения» или перейдя в SQL. В dBase IV никаких специфических терминов для обозначения такого типа соединений нет, но включение слова Every в запрос на QBE выполняет ту же роль.

Работа с несколькими таблицами в конкретных СУБД различается не только тем, каким способом можно определить связь между таблицами. Так, например, некоторые системы обязывают пользователя связать те таблицы/файлы, которые указываются как исходные для запроса; другие автоматически связывают открытые файлы по тем полям, которые система воспринимает как поля связи (чаще всего это поля, имеющие одинаковые имена, тип и длину); третьи - оставляют эти таблицы изолированными, если пользователь не указал, как они должны быть связаны, четвертые - выполняют декартово произведение открытых таблиц. Например, в dBase IV вызвать несколько файлов БД на панель запросов и не связать их было нельзя. В MS Query, Access если таблицы не связаны, то при выполнении запроса это приводит к связыванию каждой записи одной таблицы с каждой записью другой.

 

Язык SQL

Одним из самых распространенных языков запросов является язык SQL (Structure Query Language). Он был разработан в середине 1970-х гг. (IBM). Первой коммерческой системой, в которой реализован этот язык, была система Oracle (1979 г.). В дальнейшем он был реализован в целом ряде популярных СУБД для различных типов ЭВМ и операционных систем. В некоторых СУБД, таких, как Oracle, INGRES, MS SQL-сервер и др., язык SQL используется в качестве основного. В других системах, например СУБД семейства dBase, Access, AD ABAS и других, этот язык применяется в качестве альтернативного.

Предшественником SQL был язык SEQUEL (Structured English Query Language).

В силу широкого использования язык SQL сначала стал де-факто стандартом языка запросов, а затем было официально разработано несколько международных стандартов SQL[‡]. Кроме того, некоторые страны имеют национальные стандарты SQL.

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

Язык SQL близок к классу языков реляционного исчисления кортежей и используется в основном в реляционных СУБД. Но в связи с его очень широким применением имеются попытки реализации SQL и в других классах систем (например, в сетевой системе db_VISTA III).

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

Язык баз данных SQL включает в себя два языка.- язык определения схемы (SQL-DDL) я язык манипулирования данными (SQL-DML). Язык DDL позволяет описывать и создавать такие объекты базы данных, как таблицы, индексы, представления и др. Язык DML дает возможность задавать поисковые и корректирующие запросы к базе данных. Операторы языка манипулирования данными SQL могут использоваться как самостоятельно (интерактивный или автономный SQL), так и совместно с операторами других языков манипулирования данными (встроенный SQL).

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

Имеется два типа встроенных SQL-операторов: статический SQL и динамический SQL. Статический SQL ссылается на SQL-операторы, которые известны до момента запуска и в дальнейшем не изменяются, в то время как динамические SQL-операторы определяются только во время выполнения программы.

Кроме DDL и DML иногда в качестве самостоятельного подмножества выделяют язык управления данными (DCL - Data Control Language). Операторы DCL обычно используются для создания объектов, относящихся к управлению доступом пользователей к базе данных, а также для назначения пользователям подходящих уровней привилегий доступа.



Поделиться:


Последнее изменение этой страницы: 2017-01-25; просмотров: 2048; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.144.9.141 (0.038 с.)