
- •1. Информация о дисциплине
- •1.1. Предисловие
- •Место дисциплины в учебном процессе
- •1.2. Содержание дисциплины и виды учебной работы Содержание дисциплины по гос
- •1.2.1. Объем дисциплины и виды учебной работы
- •1.2.2. Перечень видов практических занятий и контроля:
- •2. Рабочие учебные материалы
- •2.1. Рабочая программа (объем дисциплины 140 часов)
- •Раздел 1. Назначение и основные компоненты системы баз данных (12 часов)
- •1.1. Субд – основа информационных систем (8 часов)
- •1.2. Современные архитектуры ис (4 часа)
- •Раздел 2. Архитектура банка данных(20 часов)
- •2.1. Уровни представления баз данных (5 часов)
- •2.2. Категории пользователей банков данных (5 часов)
- •2.3. Концепции и этапы проектирования баз данных (10 часов)
- •Раздел 3. Модели и типы данных в бд (24 часа)
- •3.1. Представление концептуальной модели средствами субд (14 часов)
- •3.2. Типовые модели данных субд (10 часов)
- •Раздел 4. Базовые элементы реляционных бд (25 часов)
- •4.1. Проектирование реляционной базы данных (9 часов)
- •4.2. Нормализация отношений в бд (16 часов)
- •Раздел 5. Язык структурированных запросов sql (28 часов)
- •5.1. Язык манипулирования данными для реляционной модели (8 часов)
- •5.2. Реализация запросов в языке sql (20 часов)
- •Раздел 6. Использование баз данных (28 часов)
- •2.2. Тематические планы дисциплины
- •2.2.1. Тематический план дисциплины для студентов очной формы обучения
- •2.2.2. Тематический план дисциплины для студентов очно-заочной формы обучения
- •2.2.3. Тематический план дисциплины для студентов заочной формы обучения
- •2.3. Структурно-логическая схема дисциплины
- •2.4. Временной график изучения дисциплины
- •2.5. Практический блок Практические занятия (очная форма обучения)
- •Практические занятия (очно-заочная)
- •Практические занятия (заочная формы обучения)
- •Лабораторные работы (очная форма обучения)
- •Лабораторные работы (очно-заочная форма обучения)
- •Лабораторные работы (заочная форма обучения)
- •2.6. Балльно-рейтинговая система
- •3. Информационные ресурсы дисциплины
- •3.1. Библиографический список
- •3.2. Опорный конспект введение
- •Раздел 1. Назначение и основные компоненты системы баз данных
- •1.1. Субд – основа информационных систем
- •1.1.1. Эволюция развития систем управления данными
- •1.1.2. Локальная технология
- •1.1.3. Архитектура с сетью и файловым сервером
- •1.2. Современные архитектуры ис
- •1.2.1. Архитектура "клиент – сервер"
- •1.2.2. Трехзвенная архитектура "клиент – сервер"
- •1.2.3. Архитектура Intranet-приложений
- •Вопросы для самопроверки по теме 1.2
- •Раздел 2. Архитектура банка данных
- •2.1. Уровни представления баз данных
- •2.1.1. Основная терминология
- •2.1.2. Архитектура базы данных.
- •2.1.3. Процесс прохождения пользовательского запроса в субд
- •2.2. Категории пользователей банков данных
- •2.2.1. Классификация пользователей БнД
- •2.2.2. Основные функции группы администратора бд
- •2.3. Концепции и этапы проектирования баз данных
- •2.3.1. Жизненный цикл бд
- •2.3.2. Общая структура процесса проектирования бд
- •Раздел 3. Модели и типы данных в бд
- •3.1. Представление концептуальной модели средствами субд
- •3.1.1. Общие представления о моделях данных субд
- •3.1.2. Классификация моделей данных
- •3.2. Типовые модели данных субд
- •3.2.1. Иерархическая и сетевая модель данных
- •3.2.2. Реляционная и постреляционная модель данных
- •3.2.3. Многомерная модель данных
- •Раздел 4. Базовые элементы реляционных бд
- •4.1. Проектирование реляционной базы данных
- •4.1.1. Свойства и виды отношений
- •4.1.2. Реляционная алгебра
- •4.2. Нормализация отношений в бд
- •4.2.1. Понятие о нормальных формах
- •4.2.2. Формальные методы синтеза и декомпозиции нормальных форм
- •4.2.3. Проектирование с использованием метода сущность – связь
- •Раздел 5. Язык структурированных запросов sql
- •5.1. Язык манипулирования данными для реляционной модели
- •5.1.1. Назначение и история языка sql
- •5.1.2. Операторы языка sql
- •5.1.3. Модификация хранимых отношений в субд
- •5.2. Реализация запросов в языке sql
- •5.2.1. Примеры запросов
- •5.2.2. Агрегатные функции
- •5.2.3. Хранимые запросы
- •Области применения триггеров и хранимых процедур
- •Раздел 6. Использование бд
- •6.1. Программирование и управление транзакциями
- •6.1.1. Управление транзакциями в системах баз данных
- •6.1.2. Менеджеры транзакций
- •6.1.3. Параллельное выполнение транзакций
- •6.1.4. Методы сериализации транзакций.
- •6.1.5. Уровни изолированности пользователей.
- •6.2. Защита баз данных. Целостность и сохранность баз данных
- •6.2.1. Методы обеспечения безопасности
- •6.2.2. Программно-технический аспект информационной безопасности
- •6.2.3. Избирательное и мандатное управление доступом
- •6.3. Современные субд. Тенденции построения и использования баз данных
- •6.3.1. Объектная и реляционная технология
- •6.3.2. Объектно-реляционные субд
- •6.3.3. Критерии сравнения субд
- •Заключение
- •3.3 Глоссарий
- •3.4. Учебное пособие
- •3.5. Методические указания к выполнению лабораторных работ
- •3.5.1. Общие указания
- •3.6. Методические указания к выполнению практических занятий
- •3.6.1. Задания на практические занятия
- •3.6.2. Методические указания к выполнению практических заданий
- •4. Блок контроля освоения дисциплины
- •4.1. Общие указания
- •4.2. Задание на курсовой проект и методические указания к его выполнению
- •Тематика курсовых проектов
- •Рекомендуемые государственные стандарты
- •Пример оформления титульного листа
- •Задание на курсовой проект по дисциплине
- •4.3. Текущий контроль Тренировочные тесты Тест № 1 (по разделу 1)
- •8. Информационная система (ис) – это …
- •Тест №2 (по разделу 2)
- •Тест № 3 (по разделу 3)
- •8. При создании схемы таблицы бд следует описать:
- •Тест № 4 (по разделу 4)
- •Тест № 5 (по разделу 5)
- •Тест № 6 (по разделу 6)
- •3. Согласованность транзакции означает…
- •4. Изоляция транзакции означает…
- •5. Сохранность транзакции означает…
- •6. Транзакция продолжается до тех пор, пока не произойдет одно из следующих событий:
- •7. Оператор commit означает…
- •8. Оператор rollback означает…
- •Правильные ответы на тренировочные тесты
- •4.4. Итоговый контроль Вопросы для подготовки к экзамену
- •Приложение 1. Определение данных в sql.
- •Приложение 2. Журнализация изменений базы данных
- •Приложение 3. Система безопасности в субд
- •1. Информация о дисциплине 3
- •2. Рабочие учебные материалы 6
- •3. Информационные ресурсы дисциплины 23
- •4. Блок контроля освоения дисциплины 143
- •191186, Санкт-Петербург, ул. Миллионная, 5
Приложение 1. Определение данных в sql.
Создание таблиц –CREATE TABLE
Чтобы из таблицы извлекать данные, необходимо ее существование в базе данных; базовое отношение создается с помощью оператора CREATE TABLE. Синтаксис этого оператора имеет вид:
CREATE TABLE таблица
(столбец1 тип1 [(размер1)]
[,...])
В этом операторе следует указать имя поля, тип данных для него, длину (для некоторых типов данных). Например, создадим таблицу Заказ с полями: номер_заказа, ФИО_исполнителя, сумма_заказа, где номер_заказа – первичный ключ:
CREATE TABLE Заказ
(номер_заказа Integer(6) NOT NULL PRYMARY KEY,
ФИО_исполнителя CHAR (20),
Сумма_заказа Integer(4)
)
Нельзя использовать оператор создания таблицы несколько раз для одной и той же таблицы. Если после ее создания обнаружились неточности в ее определении, то внести изменения можно с помощью оператора ALTER.
Оператор ALTER TABLE
Этот оператор предназначен для изменения структуры существующей таблицы; применяя его можно удалить или добавит поле к существующей таблице:
1. добавление поля
ALTER TABLE таблица ADD [COLUMN] столбец тип столбца
[(размер)]
2. удаление поля
ALTER TABLE таблица DROP [COLUMN] столбец
[(размер)]
Дополнительные ограничения
Для того чтобы указать, что данное поле должно иметь определенное значение в каждой строке таблицы, необходимо указывать ограничение NOT NULL. Это ограничение можно накладывать на любой столбец таблицы, если необходимо запретить задание неопределенных значений.
Для указания того факта, что атрибут является первичным ключом, указывается ограничение PRIMARY KEY; данное ограничение не прикрепляется к отдельному столбцу, а относится ко всей таблице в целом. Первичный ключ может распространяться более чем на один атрибут таблицы, тогда ограничения налагаются следующим образом:
CREATE TABLE Заказ
(номер_товара NOT NULL ,
цена NOT NULL,
PRYMARY KEY (номер_товара, цена)
Существует ограничение на уникальность атрибутов, не являющихся первичным ключом отношения – UNIQUE. Это ограничение можно использовать, если есть необходимость определить потенциальные ключи отношения.
Для реляционной модели данных существенным является указания внешнего ключа. При объявлении внешних ключей необходимо наложить соответствующие ограничения на столбец. Например, в таблице Счета клиентов существует два внешних ключа «номер_счета» и «номер_клиента». Они задаются следующим образом:
CREATE TABLE Счета_клиентов
(номер_счета NOT NULL REFERENCES Счет,
номер_клиента NOT NULL RFERENCES Клиент,
PRYMARY KEY (номер_счета, номер_клиента)
На отдельные атрибуты могут накладываться семантические ограничения, обеспечивающие целостность данных. В таких случаях можно использовать предложение CHECK, чтобы ограничить множество допустимых значения определенного столбца:
CREATE TABLE Товар
(номер_товара INTEGER (5) NOT NULL PRIMARY KEY,
категория_товара CHAR (1)
CHECK (категория_товара = ‘A’ OR категория_товара=’D’
);
При таком задании ограничения атрибута «категория_товара» любая попытка ввести значения, отличные от ‘А’ и ‘D’ будет отклонена.
Выбор данных.
Выбор данных (поиск) представляет собой наиболее часто встречающуюся операцию, выполняемую с помощью языка SQL. Оператор SELECT - один из наиболее важных операторов, применяемый для выполнения процедур выборки. Синтаксис этого оператора представлен ниже:
SELECT столбцы (или *)
FROM отношение (я)
[WHERE ограничение(я)]
[ORDER BY столбец];
Операторы SELECT должны содержать слова SELECT и FROM. Другие ключевые слова, такие как WHERE или ORDER, являются необязательными.
За ключевым словом SELECT следуют сведения о том, какие именно поля необходимо включить в результирующий набор данных. Звездочка (*) означает, что в набор данных попадают все поля таблицы. Если выбор данных осуществляется из нескольких таблиц одновременно, и при этом выбираются одноименные поля, необходимо указывать на имена таблиц для полной идентификации полей, включаемых в результирующий набор данных.
SELECT Поставщики.наименование_компании, Клиенты.наименование компании
Предложение FROM
Для указания имен таблиц, из которых выбираются записи, применяется ключевое слово FROM, например:
SELECT *
FROM Поставщики.
Этот запрос возвратит все поля из таблицы Поставщики.
Предложение WHERE
Для фильтрации результатов, возвращаемых оператором SELECT, можно использовать предложение WHERE, синтаксис которого имеет вид:
WHERE выражение1 [{AND êOR} выражение 2 […] ].
В предложении WHERE можно использовать различные выражения:
SELECT *
FROM Поставщики
WHERE Адрес_город= «Москва» AND Дата_договора =1998
или
SELECT наименование, цена
FROM Товар
WHERE скидка IS NOT NULL
Выражение IS NOT NULL означает, что соответствующая колонка результирующего набора данных не должна иметь пустых значений. В предложении WHERE могут использоваться как простые, так и специальные операторы сравнения (см. таблицу 1.5).
Операторы сравнения. Таблица 1.5.
Оператор |
Описание |
>,<,=, <=,>=,<> |
Больше, меньше, меньше или равно, больше или равно, не равно |
ALL |
Применяется совместно с операторами сравнения при сравнении со списком значений |
BETWEEN |
Применяется при поверке нахождения значения внутри заданного интервала (включая границы) |
IN |
Применяется для проверки значения в списке |
LIKE |
Применяется при проверке соответствия значений заданной маске |
Примеры применения вышеуказанных операторов:
SELECT наименование, цена
FROM Товар
WHERE наименование BETWEEN ‘К ‘AND ‘Н’
Выбирает наименование товара, начинающегося с букв от К до Н.
SELECT наименование, цена
FROM Товар
WHERE наименование_производителя LIKE ‘%гидро%’
Выбирает наименование товара, в названии производителя которого содержится подстрока «гидро».
Предложение ORDER BY (сортировка)
Это предложение является необязательным и применяется для сортировки результирующего набора данных по одной ил нескольким колонкам. Для определения направления сортировки используются ключевые слова ASC (по возрастанию) или DESC (по убыванию). По умолчанию сортировки производится по возрастанию.
Синтаксис предложения имеет вид:
ORDER BY столбец 1 [{ASC êDESC}] [,столбец2 [{ASC êDESC}] [,..]
SELECT наименование, цена
FROM Товар
WHERE наименование BETWEEN ‘К ‘AND ‘Н’
ORDER BY цена
Связывание таблиц
При помощи операторов языка SQL можно извлекать данные более чем из одной таблицы. Одна из возможностей сделать это заключается в связывании таблиц по одному общему полю. Однако даже без связывания таблиц в результате оператора получится набор данных, содержащий все возможные комбинации строк каждой из исходных таблиц (декартово произведение):
SELECT наименование_продукта, категория_продукта
FROM Продукт, Категория
Запрос, показанный ниже, указывает, какой категории принадлежит данный продукт:
SELECT наименование_продукта, категория_продукта
FROM Продукт, Категория
WHERE Продукт.категория_номер=Категория.категория_номер
Присутствующее в операторе ограничение указывает, что из связываемых таблиц извлекаются только те строки, в которых атрибуты «номер» имеют одинаковое значение. Название столбца указывается только вместе с названием таблицы; в противном случае оператор будет неоднозначным.
Можно использовать другие типы связывания таблиц: оператор INNER JOIN (внутреннее соединение) обеспечивает присутствие в результирующем наборе записей, значения в связанных полях которых совпадают. Внешние соединения (OUTER JOIN) позволяют включить в результат запроса все строки из одной таблицы и соответствующие им строки из другой, например:
SELECT наименование_продукта, категория_продукта
FROM Продукт LEFT OUTER JOIN Категория
WHERE Продукт.категория_номер=Категория.категория_номер
Предложения GROUP BY
Для вычисления суммарных значений на основе данных одной или нескольких таблиц можно использовать предложение GROUP BY, имеющее следующий синтаксис:
GROUP BY {столбец1} [,..]
В этом случае результаты, возвращенные функцией, будут сгруппированы по одинаковым значениям атрибута группировки. Можно использовать как агрегатные функции, так и строковые математические функции для проведения операций группировки данных. Так, сумму баллов, полученных абитуриентом на экзамене можно получить с помощью следующего запроса:
SELECT DISTINCTROW Оценки. номер абитуриента, Sum(Оценки. полученный балл) AS Sum_Полученный балл
FROM Оценки
GROUP BY Оценки.номер абитуриента;
Предложение GROUP BY сообщает системе, что надо разбить заданное отношение на группы кортежей с одинаковыми значениями атрибута «номер абитуриента». В результате для каждой группы будет возвращена строка, представляющая суммарный балл с определенным значением номера абитуриента. В первой строке необходимо указывать атрибут, по которому будет производиться группировка. При использовании функций не разрешается (!) в верхней строке оператора (в предложении SELECT) указывать имена атрибутов, не входящих в предложение GROUP BY. В одном операторе можно указывать несколько функций.
На создаваемые подгруппы можно накладывать ограничения с помощью предложения HAVING. в следующем примере оператор возвратит только строки, у которых суммарный балл больше 12.
SELECT DISTINCTROW Оценки. номер абитуриента, Sum(Оценки. полученный балл) AS Sum_Полученный балл
FROM Оценки
GROUP BY Оценки.номер абитуриента;
HAVING Sum (Оценки.полученный балл) > 12
Ключевые слова ALL и DISTINCT
Эти ключевые слова управляют выводом дублирующих строк результирующего набора записей. Ключевое слово DISTINCT указывает, что строки результирующего набора должны быть уникальны, в то время как ключевое слово ALL указывает, что возвращать необходимо все строки.
Вложенные последовательности запросов.
В SQL можно создавать вложенные последовательности запросов. Например, в результате выполнения следующего запроса будут перечислены все номера клиентов, имеющих счета в филиале «Бауманский»:
SELECT номер_клиента
FROM Счета_клиентов
WHERE номер_счета IN
(SELECT номер_счета
FROM Счета
WHERE филиал= «Бауманский»)
В данном случае подзапрос возвращает множество кортежей, состоящих из номеров_счетов отношения Счета, которые обрабатывает филиал «Бауманский». Он вложен во внешний запрос, который сравнивает номера-счетов каждого кортежа отношения Счета_клиентов с возвращенным внутренним запросом множеством номеров счетов. Если рассматриваемый номер счета есть в указанном множестве, будет возвращен номер_клиента этого кортежа. Для проверки принадлежности к множеству используется оператор IN.
Существуют определенные типы запросов, которые лучше реализовывать с помощью подзапросов; преимущественно это так называемые проверки существования. Предположим, что требуется получить данные о клиентах, которые не имеют счетов. Можно создать следующий запрос с вложенным подзапросом:
SELECT *
FROM Клиенты
WHERE номер_клиента NOT IN
(SELECT номер_клиента
FROM Клиенты_счета)
Если будет возвращено пустое множество, то это означает лишь одно – у каждого клиента есть, по крайней мере, один счет.