
- •Введение. Структура предмета. Основные понятия
- •1.История развития баз данных
- •2. История развития субд
- •4.Основные понятия и определения
- •Контрольные вопросы
- •Раздел 1. Структура и технологии субд. Модели данных
- •Тема1.1 Архитектура и технико-экономические характеристики субд. Архитектура бд.
- •1. Основные функции субд
- •2. Обобщенная архитектура субд
- •3. Процесс прохождения пользовательского запроса
- •4. Архитектура бд
- •Контрольные вопросы
- •Тема 1.2 Модели данных. Основные понятия и классификация
- •1. Классификация моделей данных
- •3 Пример разработки простой er-модели
- •Контрольные вопросы
- •Тема 1.3 Иерархическая, сетевая и реляционная модели данных
- •1. Иерархическая модель данных
- •2. Сетевая модель данных
- •3. Реляционная модель данных
- •Базовые понятия реляционных баз данных
- •Контрольные вопросы
- •Тема 1.4 Физические модели данных
- •1. Файловые структуры, используемые для хранения информации в базах данных
- •2. Индексные файлы
- •3. Моделирование отношения 1:м с использованием однонаправленных указателей
- •Контрольные вопросы
- •Тема 1.5 Целостность бд. Нормальные формы
- •1. Основные понятия
- •Null-значения
- •Трехзначная логика (3vl)
- •Потенциальные ключи
- •2.Целостность сущностей
- •2 . Основные нормальные формы
- •Аномалии обновления
- •Определение функциональной зависимости
- •3Нф (Третья Нормальная Форма)
- •Алгоритм нормализации (приведение к 3нф)
- •Контрольные вопросы
- •Тема 1.6 Операции и основные понятия реляционной алгебры и реляционного исчисления
- •1. Реляционная алгебра
- •Замкнутость реляционной алгебры
- •Отношения, совместимые по типу
- •2. Теоретико-множественные операторы
- •3. Специальные реляционные операторы
- •Соединение
- •Общая операция соединения
- •Тэта-соединение
- •Экви-соединение
- •Естественное соединение. Определение 10. Пусть даны отношения и , имеющие одинаковые атрибуты (т.Е. Атрибуты с одинаковыми именами и определенные на одинаковых доменах).
- •Контрольные вопросы
- •Тема 1.7 Проектирование реляционной базы данных
- •1. Методология проектирования базы данных
- •2. Этапы проектирования базы данных
- •Контрольные вопросы
- •Раздел 2. Язык sql и его возможности
- •Тема 2.1 История языка sql. Создание и редактирование схемы бд
- •1. Развитие языка sql
- •Что такое пользователь?
- •Числовые константы
- •2 Создание базы данных и структуры таблицы
- •3. Модификация структуры таблицы и удаление таблицы
- •4. Индексы
- •5. Добавление новых данных
- •Однострочный оператор insert
- •Многострочный оператор insert
- •Утилиты пакетной загрузки
- •6. Удаление существующих данных
- •Оператор delete с вложенным запросом
- •7. Обновление существующих данных
- •Обновление всех строк
- •Контрольные вопросы
- •Тема 2.2 Организация запросов к базе данных.
- •1. Формирование запросов к одной таблице
- •2. Статистические функции
- •3. Группировка и агрегатные функции в запросах
- •4. Объединение таблиц
- •Объединения таблиц по равенству значений в столбцах и другие виды объединений
- •5. Объединение таблицы с собой
- •6. Теоретико-множественные операции с таблицами
- •7. Выполнение сложных запросов с вложенными подзапросами
- •Использование выражений в подзапросах
- •Контрольные вопросы
- •Тема 2.3 Виртуальные таблицы Цель: рассмотреть понятие «виртуальная таблица»; назначение виртуальных таблиц и область их использования
- •1. Команда create view
- •2. Групповые представления
- •3. Представления и объединения
- •4. Представления и подзапросы
- •5. Удаление и модификация представлений
- •Контрольные вопросы
- •1.Определение триггера и его назначение
- •2. Типы триггеров
- •Создание триггеров dml
- •Создание триггеров замещения
- •Создание системных триггеров
- •Другие аспекты использования триггеров
- •3. Хранимые процедуры
- •Хранимые функции
- •Контрольные вопросы
- •Тема 2.5 Защита информации в бд
- •1. Общие понятия привилегий
- •Стандартные привилегии
- •2. Предоставление привилегий с использованием представлений
- •3. Другие типы привилегий
- •Контрольные вопросы
- •Тема 2.6 Транзакции и управлении ими
- •1. Что такое транзакция
- •2 . Операторы commit и rollback
- •3. Журнал транзакций
- •5. Транзакции и работа в многопользовательском режиме
- •Проблема пропавшего обновления
- •Проблема промежуточных данных
- •Проблема несогласованных данных
- •Проблема строк-призраков
- •6. Параллельные транзакции
- •Уровни блокировки
- •Жесткая и нежесткая блокировки
- •Тупиковые ситуации
- •Усовершенствованные методы блокировки
- •Контрольные вопросы
- •Тема 2.7 Распределенные базы данных. Модели серверов
- •1.Распределенная обработка данных
- •2. Модели «клиент—сервер» в технологии баз данных
- •Двухуровневые модели
- •Модель сервера приложений
- •3. Модели серверов баз данных
Контрольные вопросы
Перечислите основные фазы жизненного цикла системы баз данных
Какие требования предъявляются к методологии проектирования БД?
Какие основные результаты этапа определения стратегии?
Перечислите основные результаты этапа анализа предметной области
Объясните результаты логического и физического проектирования
Что определяется на этапе концептуального проектирования?
Раздел 2. Язык sql и его возможности
Тема 2.1 История языка sql. Создание и редактирование схемы бд
Цель: рассмотреть основные этапы развития языка SQL, назначение его подъязыков, рассмотреть основные команды создание базы данных и таблиц, как основных объектов БД; команды удаления таблицы и обновления структуры
1. Развитие языка sql
SQL - это язык, который дает вам возможность создавать и работать в реляционных базах данных, которые являются наборами связанной информации, сохраняемой в таблицах.
Мир баз данных становится все более и более единым, что привело к необходимости создания стандартного языка, который мог бы использоваться, чтобы функционировать в большом количестве различных видов компьютерных сред. Стандартный язык позволит пользователям, знающим один набор команд, использовать их, чтобы создавать, отыскивать, изменять и передавать информацию, независимо от того, работают ли они на персональном компьютере, сетевой рабочей станции, или на универсальной ЭВМ. В нашем все более и более взаимосвязанном компьютерном мире, пользователь, снабженный таким языком, имеет огромное преимущество в использовании и обобщении информации из ряда источников с помощью большого количества способов.
Элегантность и независимость от специфики компьютерных технологий, а также его поддержка лидерами промышленности в области технологии реляционных баз данных, сделало SQL, и вероятно в течение обозримого будущего оставит его, основным стандартным языком. По этой причине, любой, кто хочет работать с базами данных 90-х годов, должен знать SQL.
Стандарт SQL определяется ANSI (American National Standard Institute — Американским Национальным Институтом Стандартов) и в данное время также принимается ISO (International Standard Organization —Международной Организацией по Стандартизации). Однако большинство коммерческих программ баз данных расширяют SQL без уведомления ANSI, добавляя разные другие особенности в этот язык, которые, как они считают, будут весьма полезны. В наших лекциях, мы будем, в основном, следовать стандарту ANSI, но одновременно иногда будем показывать и некоторые наиболее общие отклонения от его стандарта. Вы должны проконсультироваться с документацией вашего пакета программ, который вы будете использовать, чтобы знать, где в нем этот стандарт видоизменен.
Если пользователю необходимо получить информацию из базы данных, он запрашивает ее у СУБД с помощью SQL. СУБД обрабатывает запрос, находит требуемые данные и посылает их пользователю. Процесс запрашивания данных и получения результата называется запросом к базе данных, отсюда и название структурированный язык запросов.
Инструкции SQL напоминают английские предложения и содержат «слова-пустышки», не влияющие на смысл инструкции, но облегчающие ее чтение.
SQL – это достаточно мощный и в то же время относительно легкий для изучения язык.
Сам по себе язык SQL не является ни системой управления базами данных, ни отдельным программным продуктом. Нельзя пойти и «купить SQL». SQL – это неотъемлемая часть СУБД, инструмент, с помощью которого осуществляется связь пользователя с нею.
SQL выполняет много различных функций:
SQL – язык интерактивных запросов. Пользователи вводят команды SQL в интерактивных программах с целью выборки данных и отображения их на экране.
SQL – язык программирования баз данных. Чтобы получить доступ к базе данных программисты вставляют в свои программы команды SQL.
SQL – язык администрирования баз данных. Администратор БД, находящейся на сервере, использует SQL для определения структуры базы данных и управления доступом к данным.
SQL – язык создания приложений клиент/сервер. В программах для персональных компьютеров SQL используется как средство организации связи по локальной сети с сервером БД, в которой хранятся совместно используемые данные.
SQL – язык доступа к данным в среде Internet. Используется как стандартный язык для доступа к корпоративным БД.
SQL – язык распределенных баз данных. В СУ распределенными базами данных SQL помогает распределять данные среди нескольких взаимодействующих вычислительных систем. Программное обеспечение каждой системы посредством SQL связывается с другими системами, посылая им запросы на доступ к данным.
SQL – язык шлюзов баз данных. Позволяет СУБД одного типа связываться с СУБД другого типа.
SQL — это язык, ориентированный специально на реляционные базы данных. Он устраняет много работы, которую вы должны были бы сделать если бы вы использовали универсальный язык программирования. Команды в SQL могут работать со всеми группами таблиц как с единым объектом и могут обрабатывать любое количество информации, извлеченной или полученной из их, в виде единого модуля.
Имеются два SQL: Интерактивный (Interactive) и Встроенный (Embedded). Большей частью, обе формы работают одинаково, но используются различно.
Интерактивный SQL используется для функционирования непосредственно в базе данных, чтобы производить вывод для использования его заказчиком. В этой форме SQL, когда вы введете команду, она сейчас же выполнится, и вы сможете увидеть вывод (если он вообще получится) — немедленно.
Встроенный SQL состоит из команд SQL, помещенных внутри программ, которые обычно написаны на некотором другом языке (типа КОБОЛА или Паскаля). Это делает эти программы более мощными и эффективным. Однако, допуская эти языки, приходится иметь дело со структурой SQL и стилем управления данными, который требует некоторых расширений к интерактивному SQL. Передача SQL команд во встроенный SQL является выдаваемой ("passed off") для переменных или параметров используемых программой в которую они были вложены.
Интерактивный SQL — это форма наиболее полезная не программистам. Все, что вы узнаете относительно интерактивного SQL, в основном применимо и к вложенной форме.
Подразделы SQL
Можно выделить следующие группы операторов (перечислены не все операторы SQL):
Операторы DDL (Data Definition Language) - операторы определения объектов базы данных
Операторы DML (Data Manipulation Language) - операторы манипулирования данными
Операторы DCL (Data Control Language) защиты и управления данными
Различные типы данных
Не все типы значений, которые могут занимать поля таблицы — логически одинаковые. Наиболее очевидное различие — между числами и текстом. Вы не можете помещать числа в алфавитном Заказе или вычитать одно имя из другого. Так как системы с реляционной базой данных базируются на связях между фрагментами информации, различные типы данных должны понятно отличаться друга от друга, так чтобы соответствующие процессы и сравнения могли быть в них выполнены.
В SQL это делается с помощью назначения каждому полю типа данных, который указывает на тип, значения, которое это поле может содержать. Все значения в данном поле должны иметь одинаковый тип. К сожалению, определение этих типов данных является основной областью, в которой большинство коммерческих программ баз данных и официальный стандарт SQL не всегда совпадают. ANSI SQL стандарт распознает только текст и тип номера, в то время как большинство коммерческих программ используют другие специальные типы. Такие как, DATA (ДАТА) и TIME (ВРЕМЯ) — фактически почти стандартные типы (хотя точный формат их меняется). Некоторые пакеты также поддерживают такие типы, как, например, MONEY (ДЕНЬГИ) и BINARY (ДВОИЧНЫЕ).
Тип для текста — CHAR (или СИМВОЛ), который относится к строке текста. Поле типа CHAR имеет определенную длину, которая определяется максимальным числом символов, которые могут быть введены в это поле. Больше всего реализаций также имеют нестандартный тип называемый VARCHAR (ПЕРЕМЕННОЕ ЧИСЛО СИМВОЛОВ), который является текстовой строкой, которая может иметь любую длину до определенного реализацией максимума (обычно 254 символа). CHARACTER и VARCHAR значения включаются в одиночные кавычки как 'текст'. Различие между CHAR и VARCHAR в том, что CHAR должен резервировать достаточное количество памяти для максимальной длины строки, а VARCHAR распределяет память так, как это необходимо.
Символьные значения сохраняются в компьютере как двоичные значения, но показываются пользователю как печатный текст.
Таблица 2.2 -Типы данных, определенные в стандартах |
|
Тип данных |
Описание |
CHAR (длина) |
Строки символов постоянной длины |
CHARACTER (длина) |
|
VARCHAR (длина) |
Строки символов переменной длины |
CHAR VARYNG (длина) |
|
CHARACTER VARYNG (длина) |
|
NCHAR (длина) |
|
NATIONAL CHAR (длина) |
|
NATIONAL CHARACTER (длина) |
Строки локализованных символов постоянной длины |
NCHAR VARYNG (длина) |
Строки локализованных символов переменной длины |
NATIONAL CHAR VARYNG (длина) |
|
NATIONAL CHARACTER VARYNG (длина) |
|
INTEGER |
Целые числа |
INT |
|
SMALLINT |
Маленькие целые числа |
BIT (длина) |
Строки битов постоянной длины |
BIT VARYNG (длина) |
Строки битов переменной длины |
NUMERIC (точность, степень) |
Масштабируемые целые (десятичные) числа |
DECIMAL (точность, степень) |
|
DEC (точность, степень) |
|
FLOAT (точность) |
|
REAL |
Числа с плавающей запятой низкой точности |
DOUBLE PRECISION |
Числа с плавающей запятой высокой точности |
DATE |
Календарная дата |
TIME(точность) |
Время |
TIMESTAMP (точность) |
Дата и время |
INTERVAL |
Временной интервал |