- •Серверы баз данных Курс лекций
- •Предисловие
- •Серверы баз данных. Основные понятия
- •История развития субд
- •Перспективы развития субд
- •Трехуровневая архитектура бд. Ее назначение
- •Модели клиент- сервер в технологии бд
- •Пользователи бд
- •Разработчики и администраторы приложений.
- •Контрольные вопросы
- •Двухуровневые модели
- •Модель удаленного доступа к данным
- •Удаленная презентация (Модель сервера бд)
- •Модель распределенной бд
- •Модель сервера приложений
- •Проектирование баз данных
- •Этапы разработки базы данных
- •Критерии оценки качества логической модели данных
- •Алгоритм нормализации (приведение к 3нф)
- •Элементы модели "сущность-связь"
- •Основные понятия er-диаграмм
- •Пример разработки er-модели
- •Описание предметной области
- •Описание сущностей и типов связей
- •П ереход к реляционной модели
- •Концептуальные и физические er-модели
- •Контрольные вопросы
- •Языки бд. Язык определения данных
- •Создание бд. Способы создания бд
- •Создание таблиц базы данных
- •Декларативные ограничения при создании таблиц
- •Задание ограничений ссылочной целостности
- •Изменение таблиц
- •Создание индексов в системе sql-сервер
- •Кластеризованный индекс
- •Контрольные вопросы
- •Языки бд. Язык управления данными
- •Выборка данных
- •Сортировка результатов запроса
- •Вложение запросов
- •Создание таблицы из набора результатов
- •Использование оператора union
- •Запросы на модификацию данных
- •Запросы на удаление
- •Запросы на добавление
- •Вставка записей из другой таблицы
- •Добавление данных в указанные поля
- •Values(‘31.03.03’,’согласен’,3000,4)
- •Запросы на обновление
- •Контрольные вопросы
- •Создание представлений
- •Создание, удаление и обновление представлений
- •Модифицируемые и немодифицируемые представления
- •Контрольные вопросы
- •Хранимые процедуры
- •Элементы Transact sql
- •Оператор условия
- •Циклическое выполнение операций
- •Функции
- •Создание хранимых процедур
- •Выполнение хранимой процедуры.
- •Контрольные вопросы
- •Триггеры
- •Назначение триггеров
- •Создание триггеров
- •Принцип работы триггеров
- •Включение и отключение триггера. Удаление триггера, Просмотр информации о триггерах
- •Контрольные вопросы
- •Транзакции и блокировки
- •Понятие транзакции
- •Свойства транзакций. Способы завершения транзакций
- •Операторы Transact sql для работы с транзакциями
- •Журнал транзакций.
- •Блокировки.
- •Сериалиация транзакций
- •Переопределение блокировок на уровне запроса. Типы блокировок
- •Контрольные вопросы
- •Безопасность данных и привилегии
- •Принципы защиты баз данных от несанкционированного доступа
- •Защита данных в системе ms sql Server
- •Контрольные вопросы
- •Организация доступа к бд из прикладных программ
- •Понятие курсора
- •Интерфейс прикладного программирования
- •Архитектура odbc
- •Архитектура odbc
- •Контрольные вопросы
- •Файловые структуры, используемые для хранения информации в бд.
- •Файлы прямого и последовательного доступа
- •Индексные файлы
- •Файлы с плотным индексом
- •Файлы с неплотным индексом
- •Моделирование отношений 1:м на файловых структурах
- •Моделирование отношений 1:м с использованием однонаправленных указателей
- •Структура записи подчиненного файла.
- •Алгоритм удаление записи из цепочки подчиненного файла.
- •Инвертированные списки
- •К Рисунок 14 онтрольные вопросы
- •Содержание
- •Литература
Создание таблиц базы данных
Таблицы создаются командой CREATE TABLE. Эта команда создает пустую таблицу, не содержащую записей. Очевидно, что данные в нее можно внести, например, с помощью команды INSERT. В команде CREATE TABLE определяется имя таблицы, и набор имен полей, которые указываются в нужном порядке. Кроме того, этой же командой оговариваются типы данных и длины полей.
Синтаксис команды CREATE TABLE следующий:
CREATE TABLE <имя таблицы>
(<имя поля1> <тип данных> [(<длина>)],
(<имя поля2> <тип данных> [(<длина>)]),
…).
Пробелы не могут быть частью имени таблицы или любого другого создаваемого объекта, поэтому для разделения слов, как правило, используется символ подчеркивания. Значение длины поля зависит от типа данных. Если его не указывать, то СУБД сама назначает значение автоматически (для числовых данных такой вариант предпочтительнее). Для данных типа CHAR указание размера обязательно. По умолчанию значение длины равно 1.
Пользователи, не являющиеся владельцами таблиц, могут задавать ссылки на эти таблицы с помощью имени владельца. Например, SA.STUDENTS (таблица STUDENTS с идентификатором разрешения SA).
Пример (для БД, схема которой приведена на рисунке 9):
CREATE TABLE STUDENTS
(NOM_ZACH INTEGER,
SFAM CHAR (20),
SNAME CHAR (10),
STIP DECIMAL);
Рисунок 8
Декларативные ограничения при создании таблиц
При создании таблиц могут быть заданы декларативные ограничения целостности атрибутов: значения по умолчанию (DEFAULT), задание обязательности или необязательности значений (NULL), условия проверки значения (CHECK), задание уникальность столбца и др.
Например, на значение стипендии может быть наложено ограничение (стипендия должна находиться в пределах от 20 до 50 тысяч рублей) по умолчанию значение стипендии равно 25 тыс. руб.
STIP DECIMAL DEFAULT 25 CHECK(STIP >=25 AND <=50).
Задание проверки значений атрибутов для БД “Библиотека”:
Возраст читателя должен быть не менее 17 лет:
BIRTH_DAY DATE CHECK (DATEDIFF(YEAR, GETDATE(),BIRTH_DAY) >=17)
Функция DATEDIFF (часть даты, начальная дата, конечная дата) определяет разность между начальной и конечной датами в единицах, заданных первым параметром.
Для ключевого поля задается ограничение NOT NULL PRIMARY KEY. Для запрета неопределенных значений на столбец следует наложить ограничение NOT NULL.
Часто в поле требуется реализовать ограничение, связанное уникальностью значений. В этом случае в ограничение поля при создании таблицы помещают ключевое слово UNIQUE. Можно определить группу полей как уникальную, например, в таблице USP уникальными должны быть комбинации полей NOM_ZACH и PKOD:
UNIQUE NOM_ZACH,PKOD
Ограничение PRIMARY KEY действует аналогично UNIQUE, но для таблицы должен быть определен только один первичный ключ, а уникальных полей может быть несколько.
Ключ может быть составным (как в таблице USP, где ключ состоит из атрибутов NOM_ZACH и PKOD). В этом случае ограничение PRIMARY KEY будет относиться не к одному полю, а ко всей таблице. Оператор создания таблицы USP,имеющий составной ключ:
CREATE TABLE USP
(NOM_ZACH INTEGER NOT NULL,
PKOD INTEGER,
TNUM INTEGER,
UDATE DATE ,
MARK INTEGER CHECK (MARK BETWEEN 3 AND 5),
PRIMARY KEY(NOM_ZACH, PKOD));
