- •Содержание
- •Введение
- •1. Основные понятия
- •1.1 Терминология, базовые принципы
- •1.1.1 Понятие базы данных, субд и информационной системы
- •1.1.2 База данных и субд
- •1.1.3 Принципы построения информационных систем
- •1.2.2 Архитектура «файл-сервер»
- •1.2 Архитектуры информационных систем
- •1.2.1 Понятие архитектуры информационной системы
- •1.2.3. Архитектура «клиент-сервер»
- •1.2.4 Многозвенные архитектуры
- •1.2.5. Информационные системы на основе web-архитектуры
- •1.2.6 Информационные системы, функционирующие в терминальном режиме
- •1.3 Модели данных
- •1.3.1 Сравнительная характеристика моделей данных
- •1. Иерархическая модель данных
- •2. Сетевая модель данных
- •3. Реляционная модель данных
- •4. Постреляционная модель данных
- •5. Объектно-ориентированная модель данных
- •1.3.2 Неформальное введение в реляционную модель
- •1. Таблицы и связи
- •2. Первичные, альтернативные и внешние ключи
- •3. Null-значения
- •4. Метаданные. Схема базы данных
- •5. Правила ссылочной целостности
- •2. Реляционная модель
- •2.1 Реляционная модель. Структурная и целостная части
- •2.1.1 Структурная часть
- •2.1.2 Атрибуты и домены. Схема отношения
- •2.1.3 Кортежи. Отношение
- •2.1.4 Потенциальные ключи. Первичный ключ
- •2.1.5 Внешние ключи
- •2.1.6 Целостная часть реляционной модели
- •2.2 Манипуляционная часть реляционной модели
- •2.2.1 Реляционная алгебра
- •2.2.2 Реляционное исчисление
- •3. Проектирование базы данных
- •3.1 Семантический анализ предметной области
- •3.1.1 Трехуровневая модель ansi/sparc
- •3.1.2 Диаграммы «сущность - связь»
- •3.1.3 Case-технологии и case-системы
- •3.1.4 Методология idef1
- •3.2 Нормализация базы данных
- •3.2.1 Определение функциональной зависимости
- •3.2.2 Математические свойства фз, теоремы
- •3.2.3 Процедура нормализации. Декомпозиция отношений
- •3.2.4 Нормальные формы
- •3.3 Денормализация. Хранилища данных
- •3.3.1 Недостатки нормализованной базы данных
- •3.3.2 Oltp и olap-системы. Data Mining
- •3.3.3 Хранилища данных
- •4. Язык sql
- •4.1 Язык ddl. Основные объекты базы данных
- •4.1.1 Общий вид команд ddl
- •4.1.2 Основные объекты бд
- •4.2 Команды ddl для работы с таблицами
- •4.2.1 Создание таблицы
- •Типы даты и времени
- •4.2.2 Удаление таблиц и изменение их структуры
- •4.2.3 Пример создания базы данных
- •4.2.4 Создание таблиц на основе других таблиц
- •4.3 Команды манипулирования данными
- •4.3.1 Команда insert
- •Insert into имя_таблицы [(список_имен_столбцов)]
- •Values (список значений)
- •Insert into имя таблицы [(список столбцов)]
- •4.3.2 Команда delete
- •4.3.3 Команда update
- •4.4 Команда выборки данных (select)
- •4.4.1 Запросы на выборку по одной таблице
- •4.4.2 Соединение таблиц в запросах
- •Декартово произведение
- •Внутреннее (естественное) соединение таблиц
- •4. Самосоединения
- •4.4.3 Вложенные запросы
- •4.4.4 Комбинированные запросы
- •4.5 Представления (view)
- •4.5.1 Понятие представления
- •4.5.2 Создание и удаление представлений
- •4.5.3 Обновление представлений
- •4.5.4 Стандартные представления словаря данных Oracle
- •4.6 Хранимый код. Триггеры
- •4.6.1 Процедурные расширения языка sql
- •1. Оператор присваивания
- •2. Условный оператор
- •3. Операторы цикла
- •4.6.2 Использование команд sql в хранимом коде
- •4.6.3 Хранимые процедуры и функции
- •4.6.4 Триггеры
- •1. Триггер на вставку нового студента
- •2. Триггеры на удаление студента
- •3. Триггер на изменение оценки
- •5. Управление доступом к данным
- •5.1 Система безопасности субд
- •Разграничение доступа пользователей.
- •5.1.1 Разграничение доступа пользователей
- •Identified by пароль
- •5.1.2 Привилегии и роли
- •5.1.3 Аудит действий пользователей
- •5.2 Поддержка транзакций
- •5.2.1 Свойства транзакции
- •5.2.2 Поддержка транзакций в языке sql
- •5.2.3 Механизмы субд для поддержки транзакций
- •5.3 Настройка производительности. Индексы
- •5.3.1 Понятие индекса
- •5.3.2 Обзор индексов Oracle
- •Заключение
- •Библиографический список
4.1 Язык ddl. Основные объекты базы данных
Язык DDL (Data Definition Language) служит для создания, удаления и модификации всех объектов, входящих в состав базы данных.
4.1.1 Общий вид команд ddl
Язык DDL содержит всего три команды CREATE, ALTER и DROP, которые могут быть применены к различным объектам базы данных.
В
самом общем виде команду DDL
можно определить так:
Создание (CREATE)
и
ли
Изменение (ALTER) объект имя объекта [дополн. параметры]
или
Удаление(DROP)
Примеры:
DROP TABLE t - удаление таблицы с именем t, здесь объектом является TABLE, его имя t.
Данная команда не требует никаких дополнительных параметров
CREATE TABLE tt (n NUMBER, x VARCHAR(50)) – создание таблицы с именем tt, в качестве дополнительных параметров задаются определения столбцов, в данном прмере их два: столбец n имеет цифровой тип, а столбец x - текстовый тип, причем длина текста не превышает 50 символов.
4.1.2 Основные объекты бд
Современные базы данных, кроме таблиц с данными, содержат еще ряд объектов, необходимых для осуществления эффективного доступа и обработки данных. Кратко охарактеризуем каждый из объектов.
1. База данных (DATABASE) – контейнер, в котором будут содержаться таблицы и другие объекты, которые мы рассмотрим ниже. Как правило, СУБД может обслуживать одновременно несколько различных баз данных, если в этом есть необходимость. В СУБД Oracle в процессе ее установки создается база данных, которая при работе может быть использована по умолчанию, поэтому во многих случаях нет необходимости создавать другие базы данных.
2. Схема (SCHEMA) – часть базы данных, в пределах которой все имена создаваемых объектов должны быть уникальны. В разных схемах одной и той же базы данных разрешены одинаковые имена, например, таблиц. Схемы поддерживаются далеко не всеми СУБД. СУБД Oracle поддерживает это понятие по-своему. Отдельной команды CREATE SCHEMA … в этой СУБД нет, но при создании нового пользователя ему предоставляется в распоряжение собственная схема, имя которой совпадает с именем пользователя. Если пользователь наделен правами создавать объекты в базе данных, владея схемой, он будет владеть всеми правами на те объекты, которые создаст в своей схеме. Эта тема будет подробно рассматриваться в последнем учебном модуле курса.
3. Таблица (table) – безусловно, основной объект базы данных. В стандарте SQL таблица определяется как мультимножество строк, в отличие от реляционной теории, где отношение (математическая модель таблицы) определяется как множество кортежей (кортеж - математическая модель одной строки). Мультимножество является расширением понятия множества, в котором допускаются повторяющиеся элементы.
Иными словами, стандарт SQL допускает создание таблицы, в которой не определено ни одного потенциального ключа (т.е. могут быть одинаковые строки). Однако на практике принято определять первичный ключ даже для таких таблиц, на которые не ссылаются другие таблицы.
4. Индекс (index) – вспомогательный объект, который служит для ускорения поиска данных, однако замедляет операции вставки, удаления и обновления строк таблиц. В качестве структуры данных при реализации индексов, как правило, используются сильноветвящиеся деревья во внешней памяти (В+- деревья), которые автоматически обновляются при изменении данных таблицы. Кроме древовидных индексов, многие СУБД предоставляют возможность создавать индексы и на основе других структур (хеш-таблицы, битовые карты и др.).
Для всех потенциальных ключей таблицы автоматически создаются древовидные индексы, по остальным столбцам можно создавать индексы при помощи команды CREATE INDEX … . Можно создавать индексы и по нескольким столбцам одновременно, некоторые СУБД позволяют создавать индексы на основе выражений.
Команда CREATE INDEX ... не входит в стандарт SQL 2003, однако поддерживается всеми СУБД без исключения. Наличие или отсутствие индексов сильно влияет на производительность СУБД, поэтому индексы по праву считаются очень важным, хотя и скрытым от пользователя, объектом БД, требующим пристального внимания разработчиков приложений баз данных и АБД.
5. Представление (view) – именованный запрос на выборку, который хранится в БД и выполняется на сервере при любом обращении к нему по имени, создавая при этом виртуальную таблицу с отобранными данными. Представления позволяют предоставлять пользователям любые выборки данных, с которых можно работать практически так же, как и с физическими таблицами, входящими в состав БД. Иными словами, механизм представлений позволяет конструировать производные виртуальные таблицы на основе базовых таблиц базы данных.
6. Хранимая процедура или функция (stored procedure, function). Данные объекты БД пишутся на языке процедурного расширения языка SQL, который дополняет язык SQL такими управляющими структурами языка высокого уровня, как ветвления и циклы, и позволяет реализовать любые алгоритмы обработки данных. Хранимый код постоянно хранится на сервере и выполняется по запросу на его запуск из приложений клиентов.
Управляющие конструкции процедурных расширений SQL не регламентируются стандартом, поэтому большинство СУБД имеют свои собственные процедурные расширения. Однако команды CREATE PROCEDURE … и CREATE FUNCTION ... являются частью стандарта, который регламентирует также правила встраивания команд SQL в код хранимой подпрограммы (определяется понятие Embedded SQL – встроенный SQL).
7. Триггер (trigger) – особый вид хранимой процедуры, который срабатывает автоматически при наступлении определенных событий в базе данных. Основными такими событиями являются вставка, удаление и обновление строк, однако некотороые СУБД предоставляют возможность создавать триггеры и на другие события, например, открытие и закрытие сеанса связи с сервером, ряд команд DDL и т.д. Триггеры – это очень мощный (и опасный) инструмент в руках администратора базы данных (о существовании триггера может не знать даже разработчик прикладного ПО, не говоря уж о конечных пользователях).
В качестве дополнительной информации перечислим еще ряд объектов базы данных, которые позволяют СУБД реализовать несколько важных функций управления данными.
8. Последовательность (sequence) – в некоторых СУБД (Oracle) служат для генерации уникальных значений суррогатных первичных ключей таблиц. Присвоение этих значений ключевому столбцу в Oracle выполняется в триггере на вставку новой строки.
9. Пользователь и роль (user, role) – пользователи и их права на выполнение различных действий в базе данных. Эти объекты служат для разграничения доступа к информации многочисленным пользователям БД, которые совместно используют общие объекты базы данных и могут выполнять только те действия, которые определяются их ролями.
10. Связь, снимок, синоним (link, snapshot, synonym) – данные объекты используются при организации распределенных баз данных, в которых данные хранятся на нескольких серверах (узлах), обычно удаленных друг от друга территориально. Для того, чтобы физически распределенные данные, логически воспринимались пользователями как единая целостная база данных, между серверами устанавлявают связи («линки»- объект link), а для удобного обращения к удаленным объектам используют короткие синонимы (объект synonym) вместо длинных составных имен.
Снимок (объект snapshoT) – таблица или представление, которое посылается на удаленный сервер и периодически обновляется в автоматическом режиме. Снимок, в отличие от представления, это реальная физическая таблица, хранящаяся на удаленном сервере, которая позволяет избежать многочисленных запросов пользователей удаленного сервера к данным, хранящимся на другом сервере. Однако не стоит забывать, что снимок не может обновляться очень часто, поэтому в какие-то моменты времени его данные могут не соответствовать актуальному состоянию удаленной БД.
Любая база данных должна содержать, как минимум, одну таблицу, реальные базы обычно содержат десятки, сотни и даже тысячи таблиц. Все остальные объекты создаются по мере необходимости.
