Реляционная модель данных была предложена в 1970 году сотрудником компании IBM Э. Коддом и подробно описана в литературных источниках.
В основу реляционной модели положено понятие теоретико-множественного отношения, которое используется как инструмент моделирования данных. Отношения применяются также для логического представления данных предметной области.
Математически отношение определяется, как подмножество декартова произведения фиксированного числа доменов. Домен есть множество значений. Отношение задается перечислением своих элементов, которые называются кортежами. Кортеж состоит из конечного числа компонент, которые называются атрибутами. Значение каждого атрибута принадлежит определенному домену. Атрибуты имеют имена (хотя допустимо обращение к атрибутам по порядковому номеру в отношении). Список имен атрибутов называется схемой отношения. В контексте введенных понятий, реляционная модель данных представляет собой набор взаимосвязанных отношений с заданными схемами отношений. Реляционная база данных поддерживает такую модель как набор экземпляров конечных отношений и связей между ними.
Определение отношения конструктивно, то есть содержит в себе механизм построения отношения (декартово произведение). Для построения отношения необходимо, согласно определению, получить всевозможные комбинации элементов исходных множеств. Например, пусть заданы два домена D1 = {a, b, c} и D2 = {d, e}. Тогда отношение R ⊂ D1 X D2 строится следующим образом: для каждого элемента D1 строятся комбинации со всеми элементами D2: R = D1 X D2 = {(a,d), (a,e), (b,d), (b,e), (c,d), (c,e)}.
Поскольку атрибуты (как одного, так и различных отношений) могут быть определены на одном и том же домене, то можно устанавливать связи по значению между отношениями. Это позволяет отражать взаимоотношения между объектами реального мира (предметной области). Предметная область есть фрагмент реального мира, представленный отношениями и связями в реляционной БД.
Множество по своему определению не может иметь совпадающих элементов. Это означает, что кортежи в отношении можно различить лишь по значению их компонентов: два кортежа не могут иметь полностью совпадающих компонент. Таким образом, в реляционной модели полностью исключается дублирование данных об объектах предметной области.
Задача идентификации кортежей в отношении приводит к одному из самых важных понятий обработки данных - понятию ключа. Ключом называется уникальное значение, которое позволяет идентифицировать объект (или его часть) предметной области, то есть ключ - это значение некоторого атрибута или атрибутов в кортеже.
Различают первичные ключи и частичные ключи. Первичный ключ однозначно идентифицирует кортеж. Если первичный ключ содержит несколько атрибутов, то он называется составным, если состоит из одного атрибута, то - атомарным. Частичный ключ - это атрибут составного ключа, который однозначно определяет часть не ключевых атрибутов. Атрибут кортежа, который является первичным ключом другого кортежа, называется внешним ключом. Внешние ключи необходимы для представления связей между отношениями типа “родитель-потомок” или “часть-целое”.
В практике реляционных баз данных отношение принято представлять в виде двумерной таблицы (или плоского файла), в которой строка есть кортеж, каждый столбец соответствует некоторому атрибуту кортежа. Двухмерность означает, что атрибуты не могут быть массивами, повторяющимися группами или составными элементами. Значения столбцов могут быть только определенного типа, который определяется природой домена (типом данных).
Таким образом, реляционная база данных с логической точки зрения может быть представлена как множество двумерных таблиц самого различного предметного содержания. Таблица идентифицируется уникальным именем, каждой колонке (атрибуту) также присваивается уникальное внутри таблицы имя и тип (домен).
С таблицей, как с множеством, можно выполнять теоретико-множественные операции, такие как объединение, разность, пересечение, выбор, проекция и т. д. В реляционной модели данных вы оперируете с таблицей в целом. Исходными данными для реляционной операции являются таблицы, и результатом операции является также таблица, за исключением случая, когда результатом операции является скалярное выражение, такое как среднее значение в колонке. Более подробно реляционные операции рассматриваются в следующей лекции.
Помимо этого, предусмотрен набор операций манипулирования данными для вставки, удаления и модификации строк в таблицах. Эти операции работают на уровне строки или группы строк в таблице и их нельзя считать теоретико-множественными операциями.
SQL (Structured Query Language) есть полнофункциональный язык манипулирования данными в реляционных БД. SQL разрабатывался на основе реляционной алгебры, представленной Э. Коддом в 1972 году. Первая реализация под названием SEQUEL была выполнена под руководством Д. Чемберлина и Royce R.F. в первом прототипе реляционной СУБД компании IBM System R (1974-75 годы, а с 1976 года, после переделки и тестирования, реализован в продуктах компании в1981 и 1983 годах). Под СУБД (система управления базой данных) понимается программное обеспечение, которое управляет работой БД.
В настоящее время он является стандартным интерфейсом для многих реляционных баз данных, таких компаний, как Oracle (с 1979 г.), Informix (с 1984 г.), Sybase (с 1986 г.), IBM (c 1981 г.), Microsoft (c 1989 г.) и ряда других. SQL является непроцедурным языком и предназначен для обработки множеств, состоящих из строк и колонок таблиц реляционной БД. В промышленное применение SQL было впервые реализовано в СУБД Ingres.
SQL является общепризнанным стандартным интерфейсом для реляционных БД (стандарты ANSI и ISO). Первый международный стандарт языка SQL был принят в 1989 г. (SQL89).
В 1992 г. был принят международный стандарт языка SQL (SQL92). В нем расширено манипулирование данными и схемами БД, определена возможность управления доменами, добавлены новые типы данных и функции. В 1995 г. был расширен спецификацией интерфейса уровня вызова (ODBC (Open Database Connectivity) и JDBC (Java Database Connectivity)). В 1996 г. добавлена специфика для определения и использования хранимых процедур. В 1999 г. появился новый стандарт SQL99. В нем введены новые типы данных (реляционно-объектные элементы), стандартизованы триггеры и события, систематизированы спецификации для многих операторов.
В 2003 году был принят следующий стандарт, который включал в себя полную объектную модель данных и коллекции. Следующий стандарт 2008 г. включил в себя работу с XML. Стандарт 2011 г. добавил новые возможности обработки коллекций и оконных функций, конвейерные средства манипулирования данными и новые возможности обработки временных данных. Стандарт 2011 г. (опубликован в 2011 г.) продолжил расширять возможности обработки данных в операторах SQL. Специалисты предполагают, что совершенствование стандартов будет продолжаться.
Каждой конкретной СУБД соответствует своя собственная реализация SQL, в целом поддерживающая стандарт не ниже SQL92, но имеющая свои особенности. Такие реализации называются диалектами. В нашем изложении мы опираемся в основном на диалект SQL СУБД Oracle.
В учебной литературе по БД приводятся различные определения данного понятия. С практической точки зрения лучше опираться на математическое определение БД как совокупности определенных объектов, ибо с ними и приходиться работать.
Полный список объектов и их иерархия определены впервые в стандарте SQL и руководствах по конкретной СУБД. Ниже приведены основные объекты БД, большинство из которых будет использоваться в настоящем курсе.
Схема - это контейнер для таблиц, представлений и других структурных элементов реляционной БД.
К числу главных объектов реляционных БД относятся таблица, представление и пользователь.
Таблица (Table) является базовой структурой реляционной БД. Таблица идентифицируется в БД своим уникальным именем, которое включает в себя идентификацию пользователя. Таблица может быть пустой или состоять из набора строк.
Представление (View) - это поименованная динамически поддерживаемая СУБД выборка из одной или нескольких таблиц БД. Оператор выборки ограничивает видимые пользователем данные. Обычно СУБД гарантирует актуальность представления - его формирование производится каждый раз, когда представление используется.
Пользователь (User) - это объект, обладающий возможностью создавать или использовать другие объекты БД и запрашивать выполнение функций СУБД такие, как организация сеанса работы, изменение состояние БД и т. д.
Для упрощения идентификации и именования объектов в БД поддерживается объект синоним и объект последовательность.
Синоним (Synonym) - это альтернативное имя объекта (псевдоним) реляционной базы данных, которое позволяет иметь доступ к данному объекту. Синоним может быть общим и частным. Общий синоним позволяет всем пользователям БД обращаться к соответствующему объекту по его псевдониму.
Последовательность (Sequence) - это объект БД, обеспечивающий генерацию уникальных номеров в условиях многопользовательского асинхронного доступа. Обычно элементы последовательности используются для уникальной нумерации элементов таблиц в операциях модификации данных.
Для обеспечения эффективного доступа к данным в реляционных СУБД поддерживаются объекты: индекс, табличная область и кластер. Термин «кластер» имеет в реляционных БД и SQL несколько смысловых нагрузок. Так в стандартах кластер находится на верхнем уровне иерархии и определяется как группа каталогов, к которым можно обратиться через одно соединение с БД.
Индекс (Index) - это объект БД, создаваемый для повышения производительности выборки данных и контроля уникальности первичного ключа (если он задан для таблицы).
Табличная область (Tablespace) - это именованная часть БД, используемая для распределения памяти для таблиц и индексов.
Кластер (Cluster) - это объект БД, задающий способ совместного хранения данных в нескольких или одной таблицы. Обычно, кластеризованные столбцы или таблицы хранятся в БД в виде таблиц хеширования (т.е. специальным образом).
Для обработки данных специальным образом или для реализации поддержки ссылочной целостности БД используются объекты: процедура, функция, команда, триггер, таймер и пакет.
Процедура (Procedure) - это объект БД, представляющий поименованный набор команд SQL и/или операторов специализированных языков обработки программирования БД (например, SQLWindows или PL/SQL).
Функция (Function) это объект БД, представляющий поименованный набор команд SQL и/или операторов специализированных языков обработки программирования БД, который при выполнении возвращает значение.
Команда (Command) - это поименованный оператор SQL, который заранее откомпилирован и сохраняется в БД. Скорость обработки команды выше, чем у соответствующего ему оператора SQL, т.к. при этом не выполняются фазы синтаксического разбора и компиляции.
Триггер (Trigger) - это объект БД, который представляет собой хранимую процедуру. Эта процедура запускается автоматически, когда происходит связанное с триггером событие (например, до вставки строки в таблицу).
Таймер (Timer) отличается от триггера тем, что запускающим событием для хранимой процедуры является событие таймера.
Пакет (Package) - это объект БД, который состоит из поименованного, структурированного набора переменных, процедур и функций.
В распределенных реляционных СУБД имеются специальные объекты: снимок и связь.
Снимок (Snapshop) - локальная копия таблицы удаленной базы данных, которая используется для тиражирования (репликации) таблицы или результата запроса. Снимки могут быть модифицируемыми или предназначенными только для чтения.
Связь базы данных (Database Link) - это объект БД, который позволяет обратиться к объектам удаленной базы данных. Имя связи базы данных, грубо говоря, можно представить как ссылку на параметры доступа к удаленной БД.
Для эффективного управления разграничением доступа к данным в Oracle поддерживается объект роль.
Роль (Role) - объект, который представляет собой поименованную совокупность привилегий, которые могут назначаться пользователям, категориям пользователей или другим ролям.
SQL используется практически всеми категориями пользователей реляционных БД: конечными пользователями, разработчиками приложений и администраторами БД.
SQL состоит из набора команд манипулирования данными в реляционной БД. Набор команд позволяет создавать объекты реляционной БД (базы данных, таблицы, индексы, представления, хранимые команды/процедуры, триггеры, события таймера), модифицировать данные в таблицах (вставлять, удалять, исправлять), изменять схемы отношений БД, выполнять вычисления над данными и делать выборки данных из БД, поддерживать безопасность и надежность данных.
Весь набор команд SQL можно разбить на следующие группы:
При выполнении каждая команда SQL проходит четыре фазы обработки:
Есть еще оптимизатор, который является составной частью любой промышленной реализации SQL. Работа оптимизатора основана на сборе статистики о выполняемых командах и выполнении эквивалентных алгебраических преобразований с отношениями БД. Такая статистика сохраняется в системном каталоге БД. Системный каталог - словарь данных для каждой БД и содержит информацию о таблицах, представлениях, индексах, колонках, пользователях и их привилегиях доступа. Каждая БД имеет свой системный каталог, который представляет совокупность предопределенных таблиц БД.
Список основных команд SQL в соответствии с принятым стандартом. Список команд не является полным.
Команды определения данных:
ALTER TABLE - Изменяет описание таблицы (схему отношения)
CREATE EVENT - Создает событие таймера в базе данных
CREATE INDEX - Создает индекс для таблицы
CREATE TABLE - Определяет таблицу
CREATE TRIGGER - Создает триггер в базе данных
CREATE VIEW - Определяет представление на таблицах
CREATE SEQUENCE - Создает последовательность
CREATE TABLESPACE - Создает табличное пространство
DROP INDEX - Физически удаляет индекс из БД
DROP TABLE - Физически удаляет таблицу из БД
DROP VIEW - Удаляет представление
DROP SEQUENCE - Удаляет последовательность
DROP TABLESPACE - Удаляет табличное пространство
Команды манипулирования данными:
DELETE - Удаляет одну или более строк из таблицы БД
INSERT - Вставляет одну или более строк в таблицу БД
UPDATE - Обновляет значения колонок в таблице БД
Команды выборки данных:
SELECT - Выполняет запрос на выборку данных из таблиц и представлений
UNION - Объединяет в одной выборке результаты выполнения двух или более команд SELECT
INTERSECT - Делает пересечение в одной выборке результатов выполнения двух или более команд SELECT
MINUS - Вычитает в одной выборке результаты выполнения двух или более команд SELECT
Команды управления транзакциями
COMMIT - Завершает транзакцию и физически актуализирует текущее состояние БД
ROLLBACK - Завершает транзакцию и возвращает текущее состояние БД на момент последней завершенной транзакции и контрольной точки
SAVEPOINT - Назначает контрольную точку внутри транзакции
Команды управления данными:
ALTER DATABASE - Изменяет группы хранения или журналы транзакций
ALTER DBAREA - Изменяет размер областей хранения БД
ALTER PASSWORD - Изменяет пароль для доступа к БД
ALTER STOGROUP - Изменяет состав областей хранения в группе хранения
CHECK DATABASE - Проверяет целостность БД
CHECK INDEX - Проверяет целостность индекса
CHECK TABLE - Проверяет целостность таблицы и индекса
CREATE DATABASE - Физически создает БД
CREATE DBAREA - Создает область хранения БД
CREATE STOGROUP - Создает группу хранения
CREATE SYSNONYM - Создает синоним для таблицы или представления
DEINSTALL DATABASE - Делает БД недоступной пользователям вычислительной сети
DROP DATABASE - Физически удаляет БД
DROP DBAREA - Физически удаляет область хранения БД
DROP STOGROUP - Удаляет группу хранения
GRANT - Определяет привилегии пользователей и разграничение доступа к БД
INSTALL DATABASE - Делает БД доступной пользователям вычислительной сети
LOCK DATABASE - Блокирует текущую активную базу данных
REVOKE - Отменяет привилегии пользователей и разграничения доступа к БД
SET DEFAULT STOGROUP - Определяет группу хранения по умолчанию
UNLOCK DATABASE - Деблокирует текущую активную базу данных
UPDATE STATISTIC - Обновляет статистику для БД
Другие команды:
COMMENT ON - Размещает в системном каталоге комментарии к описанию объектов БД
CREATE SYNONIM - Определяет в системном каталоге альтернативные имена для таблиц и представлений БД
DROP SYNONIM - Удаляет из системного каталога альтернативные имена для таблиц и представлений БД
LABEL - Изменяет метки системных описаний
ROWCOUNT - Вычисляет число строк в таблице БД
Как и в любом языке, имена используются для идентификации элементов и объектов языка. В этом отношении имя есть идентификатор SQL. Имена бывают длинными (до 30 символов) и короткими (до 8 символов). Также различают обыкновенный идентификатор, который начинается с буквы или символов #,@,$, и состоит из букв, цифр и символа «_», и идентификатор в апострофах (Delemited Identifier), который состоит из произвольных символов, заключенных в двойные кавычки.
Объекты SQL могут иметь квалифицируемые имена, когда имя объекта квалифицируется именем охватывающего объекта, присоединенного к имени вложенного объекта через точку. По стандарту SQL охватывающим является имя схемы. Нижеследующие объекты SQL должны иметь уникальное имя:
Все допустимые типы данных описаны в стандартах SQL, но в большинстве реализаций (диалектов) поддерживается расширенный список типов. Любая реализация SQL поддерживает три общих типа данных: строковые, числовые и тип для представления даты и времени. Задание типа данных определяет область принимаемых значений и длину данных, а также и формат их представления при визуализации. Для всех типов данных определено так называемое нуль-значение, которое указывает на отсутствие данных (значение данных в текущий момент времени неизвестно).
Допустимые типы данных в языке SQL. Типы данных приведены только для часто используемых типов данных. Следует обращаться к документации конкретной версии, чтобы познакомиться с полным списком типов данных.
Строковые типы данных
строка фиксированной длины - Character [(длина)], длина до 2000 символов
строка переменной длины - Varchar [(длина)], длина до 2048 символов (стандарт)
строка переменной длины - Varchar2 (длина), длина до 4000 символов
строка фиксированной длины – nchar (длина), длина до 2000 символов. Кодировка Unicode
строка переменной длины - nvarchar2 (длина), длина до 4000 символов. Кодировка Unicode
строка произвольной длины - Long Varchar [(длина)], длина до 2 Гб.
Числовые типы данных
Целое - Integer
Числа с заданной точностью - Number [(точность [, масштаб])]
Числа с заданной точностью – Decimal [(точность [, масштаб])]
Числа с плавающей запятой заданной точности - Float (BINARY_FLOAT и BINARY_DOUBLE)*
Тип данных Дата/время
Дата/время - Date, может принимать значения от 1 января 4712 года до н.э. до 31 декабря 9999 года нашей эры.
Специальный тип данных в Oracle, расширяющий возможности типа данных date. Представлен в трех вариантах:
Битовые строки
Строка бит переменной длины - Raw [(длина)}, до 2000 байт
Строка бит переменной длины - Long Raw [(длина)}, до 2 Гб
Типы данных для больших объектов
Набор двоичных значений - BLOB
Набор символьных значений - CLOB
Данные строкового типа представляют собой последовательность строк символов. Строковые данные могут быть заданы как с предопределенной длиной (ключевые слова CHAR или VARCHAR (длина строки)), так и без указания длины (ключевое слово LONG VARCHAR) для представления строк произвольной длины. Строки последнего типа могут использоваться для сохранения битовых образов. В отличие от строкового типа с предопределенной длиной со строками LONG VARCHAR не допускаются операции сравнения и они не могут быть использованы в выражениях и как аргументы большинства встроенных функций, а также в определении последовательности.
Числовые типы данных предназначены для представления целых чисел, чисел с десятичной точкой и чисел с плавающей точкой. Любое представление чисел задается своей точностью и масштабом. Точность определяет допустимое представлением количество значащих цифр числа, а масштаб - количество значащих цифр после десятичной точки.
Для представления целых чисел используются типы INTEGER (точность 10 значащих цифр).
Для представления чисел с фиксированной десятичной точкой используются типы NUMBER (для чисел с точностью до 15 значащих цифр) и DECIMAL (точность, масштаб) (для чисел заданной точности до 15 значащих цифр). Различие между этими типами данных состоит в том, что для типа NUMBER нет необходимости следить за точностью при выполнении операций.
При выполнении операций с числами этих типов действуют следующие формулы для определения точности и масштаба результата (p - точность, s - масштаб):
Для представления чисел с плавающей точкой в SQL предусмотрен тип данных FLOAT.
Правила преобразования типов в SQL
Строковый - Числовой - Значение исходного типа должно быть в форме допустимой для числовых значений
Числовой - Строковый - Нет необходимости в одинарных кавычках
Дата/время - Числовой
Числовой - Дата/время
Дата/время - Строковый - Нет необходимости в одинарных кавычках
Строковый - Дата/время - Значение исходного типа должно быть в форме допустимой для значений даты и времени
Константы обычно специфицируют единственное значение и в соответствие с типом представляемых данных могут быть строковыми, числовыми и представлять дату/время. Строковые константы должны быть заключены в одинарные кавычки.
В SQL существует ряд предопределенных системных переменных (часто используется термин «псевдоколонка»), которые можно использовать в выражениях вместо имен колонок и констант. К таким переменным относятся следущие (не полный список):
Выражением в SQL является итем или комбинация итемов с допустимыми для них операциями, которая дает единственное значение. В качестве итемов могут выступать имена колонок, константы, связанные переменные, результаты вычислений функций, системные переменные и другие выражения. Если один из итемов имеет нуль-значение, то результат выражения также имеет нуль-значение.
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.