Ответы к экзамену по БД. 1. Архитектура базы данных. Физическая и логическая независимость (трехуровневая модель ansi). 3
Скачать 2.24 Mb.
|
10. Реляционная алгебра. Теоретико-множественные операции реляционной алгебры. Основные операции.Алгеброй называется множество объектов с заданной на нем совокупностью операций, замкнутых относительно этого множества, называемого основным множеством. Основной объект реляционной алгебры – это отношение. Всего Э. Ф. Коддом было предложено 8 операций. (множество избыточное, одни операции могут быть представлены через другие, но!!! максимально удобное при реализации произвольных запросов к БД. Теоретико-множественные операции реляционной алгебры. Объединение. Пересечение. Разность. Операции объединения, пересечения и разности применимы только к отношениям с эквивалентными схемами. Кроме перечисленных трех теоретико-множественных операций в рамках реляционной алгебры определена еще одна теоретико-множественная операция — расширенное декартово произведение. Эта операция не накладывает никаких дополнительных условий на схемы исходных отношений, поэтому операция расширенного декартова произведения, обозначаемая R1 R2, допустима для любых двух отношений. Но прежде чем определить саму операцию, введем дополнительно понятие конкатенации, или сцепления, кортежей. Сцеплением, или конкатенацией, кортежей с = (с, q) = <с1 с2, ... , cn, q1, q2, ... qm>, здесь n — число элементов в первом кортеже с, m — число элементов во втором кортеже q. Все предыдущие операции не меняли степени или арности отношений — это следует из определения эквивалентности схем отношений. Операция декартова произведения меняет степень результирующего отношения. Группа теоретико-множественных операций избыточна, практически все сложные операции можно записать разными способами. 11. Реляционная алгебра. Специальные операции.12. Язык SQL. История развития SQL.Структура SQL. Типы данных.SQL (Structured Query Language) — Структурированный Язык Запросов — стандартный язык запросов по работе с реляционными БД. Язык SQL появился после реляционной алгебры, и его прототип был разработан в конце 70-х годов в компании IBM Research. Он был реализован в первом прототипе реляционной СУБД фирмы IBM System R. В дальнейшем этот язык применялся во многих коммерческих СУБД и в силу своего широкого распространения постепенно стал стандартом «де-факто» для языков манипулирования данными в реляционных СУБД. Первый международный стандарт языка SQL был принят в 1989 г. (SQL/89 или SQL1). Иногда стандарт SQL1 также называют стандартом ANSI/ISO, и подавляющее большинство доступных на рынке СУБД поддерживают этот стандарт полностью. Однако развитие информационных технологий, связанных с базами данных, и необходимость реализации переносимых приложений потребовали в скором времени доработки и расширения первого стандарта SQL. В конце 1992 г. был принят новый международный стандарт языка SQL, который в дальнейшим будем называть SQL/92 или SQL2. И он не лишен недостатков, но в то же время является существенно более точным и полным, чем SQL/89. В настоящий момент большинство производителей СУБД внесли изменения в свои продукты так, чтобы они в большей степени удовлетворяли стандарту SQL2. В 1999 г. появился новый стандарт, названный SQL3. Имеет серьезные качественные преобразования. (Введены новые структурированные типы данных, соответств.объектной ориентации. Добавлен стандарт на события и триггеры. В рамках управления транзакциями произошел возврат к старой модели транзакций, допускающей точки сохранения (savepoints), и возможность указания в операторе отката ROOLBACK точек возврата позволит откатывать транзакцию не в начало, а в промежуточную ранее сохраненную точку. SQL нельзя, в полной мере, отнести к традиционным языкам программирования. Он не содержит традиционные операторы, управляющие ходом выполнения программы, операторы описания типов и многое другое. Он содержит только набор стандартных операторов доступа к данным, хранящимся в базе данных. Операторы SQL встраиваются в базовый язык программирования, которым может быть любой стандартный язык типа C++, PL, COBOL и т. д. Кроме того, операторы SQL могут выполняться непосредственно в интерактивном режиме. Основные объекты реляционной базы данных. Tables Отношения (таблицы) базы данных, в которых хранятся собственно данные. Имеют структуру, ограничения на типы данных и связи между таблицами. Views Просмотры (виртуальные таблицы) для отображения данных из таблиц, содержимое которых определяется запросом. Информация, которую видит пользователь через представление, не сохраняется в базе данных как самостоятельный объект. Indexes Индексы – дополнительные структуры(таблицы), создаваемые для повышения производительности работы с данными. Индекс определяется для одного или нескольких столбцов(индексированные столбцы). Он содержит отсортированные значения индексированных столбцов со ссылками на соответствующую строку исходной таблицы или представления. Повышение производительности достигается за счет сортировки данных. Использование индексов может существенно повысить производительность поиска, однако для хранения индексов необходимо дополнительное пространство в базе данных. Constraints Ограничение целостности – объекты для обеспечения логической целостности данных – механизм, обеспечивающий автоматический контроль соответствия данных установленным условиям (или ограничениям). Ограничения целостности имеют приоритет над триггерами, правилами и значениями по умолчанию. К ограничениям целостности относятся: ограничение на значение NULL, проверочные ограничения, ограничение уникальности (уникальный ключ), ограничение первичного ключа и ограничение внешнего ключа. Последние три ограничения тесно связаны с понятием ключей Keys Ключи – один из видов ограничений целостности данных Stored Procedures Хранимые процедуры представляют собой группу команд SQL, объединенных в один модуль. Такая группа команд компилируется и выполняется как единое целое. Triggers Триггеры – специальные хранимые процедуры, вызываемые автоматически при изменении данных в таблице(при добавлении, изменении или удалении данных из таблицы) Sequence – генераторы последовательностей чисел User Defined function Создаваемые пользователем функции. Функции в языках программирования – это конструкции, содержащие часто исполняемый код. Функция выполняет какие-либо действия над данными и возвращает некоторое значение. User Defined Data Types Пользовательские типы данных - это типы данных, которые создает пользователь на основе системных типов данных, когда в нескольких таблицах необходимо хранить однотипные значения; причем нужно гарантировать, что столбцы в таблице будут иметь одинаковый размер, тип данных и чувствительность к значениям NULL. Users Пользователи, обладающие доступом к базе данных. Roles Роли, позволяющие объединять пользователей в группы. Rules Правила базы данных, позволяющие контролировать логическую целостность данных. Правила используются для ограничения значений, хранимых в столбце таблицы или в пользовательском типе данных. Они существуют как самостоятельные объекты базы данных, которые связываются со столбцами таблиц и пользовательскими типами данных. Контроль значений данных может быть реализован и с помощью ограничений целостности Defaults Умолчания или стандартные установки базы данных – самостоятельный объект базы данных, представляющий значение, которое будет присвоено элементу таблицы при вставке строки, если в команде вставки явно не указано значение для этого столбца Структура SQL. 1. Операторы определения данных – Data Definition Language – DDL. 2. Операторы манипулирования данными – Data Manipulation Language – DML. 3. Язык запросов Data Query Language (DQL). Типы данных. В языке SQL/89 поддерживаются следующие основные типы данных: CHARACTER(n) или CHAR(n) — символьные строки постоянной длины в n символов. При задании данного типа под каждое значение всегда отводится n символов, и если реальное значение занимает менее, чем n символов, то СУБД автоматически дополняет недостающие символы пробелами. NUMERIC[(n,m)] — точные числа, здесь n — общее количество цифр в числе, m — количество цифр слева от десятичной точки. DECIMAL[(n,m)] или DEC[(n,m)] — точные числа, здесь n — общее количество цифр в числе, m — количество цифр слева от десятичной точки. INTEGER или INT — целые числа. REAL — вещественный тип чисел, который соответствует числам с плавающей точкой DOUBLE PRECISION специфицирует тип данных с определенной в реализации точностью большей, чем определенная в реализации, точность для REAL. В стандарте SQL92 добавлены следующие типы данных: VARCHAR(n) — строки символов переменной длины. NCHAR(N) — строки локализованных символов постоянной длины. NCHAR VARYING(n) — строки локализованных символов переменной длины. ВIТ(n) — строка битов постоянной длины. BIT VARYING(n) — строка битов переменной длины. DATE — календарная дата. ТIМЕSTАМР (точность) — дата и время. INTERVAL — временной интервал. Большинство коммерческих СУБД поддерживают еще дополнительные типы данных, которые не специфицированы в стандарте. Например, для представления неструктурированного текста большого объема (аналогичен типу MEMO в настольных СУБД). Могут использоваться константы заданных типов. Для числовых типов данных: 213-314 612.716, + 551.702, 2.9Е-4 -134.235Е7 0.54267Е18 Строковые константы в одинарных кавычках: 'Крылов Ю.Д.’ 'Санкт-Петербург' Константы даты, времени и временного интервала в реляционных СУБД представляются в виде строковых констант. Форматы констант отличаются в различных СУБД. В стандарте SQL1 не были определены встроенные функции, однако в большинстве коммерческих СУБД такие функции были реализованы, и в стандарт SQL2 уже введен ряд стандартных встроенных функций (приведены только некоторые!) CURRENT_DATE - текущая дата; CURRENT_TIME(точность) — текущее время с указанной точностью; LOWER(строкa) — строка, преобразованная к нижнему регистру; SUBSTRING(строка FROM n FOR длина) — часть строки, начинающаяся с n-го символа и имеющая указанную длину; TRANSLАТЕ(строка USING функция) — строка, преобразованная с использованием, указанной функции; UPPER(строка) — строка, преобразованная к верхнему регистру. И т.д. – самостоятельно в документации. |