- •Введение
- •Глава 1. Проектирование баз данных
- •1.1. История развития баз данных и субд
- •1.2. Введение в субд
- •1.2.1. Основные термины, понятия и определения
- •1.2.2. Классификация субд
- •1) Сетевые, корпоративные, распределенные, клиент-серверные, полнофункциональные, масштабируемые, “большие” субд.
- •2) Локальные, персональные, настольные, файл-серверные, “малые” субд.
- •1.3. Модели данных
- •1.3.1. Типы связей между объектами
- •1.3.2. Формы записи инфологической (концептуальной) модели
- •1.3.3. Уровни представления и независимости данных
- •1.3.4. Порядок взаимодействия пользователя, субд и ос
- •1.3.5. Поддержка целостности базы данных
- •1.3.6. Иерархическая модель
- •1.3.7. Сетевая модель
- •1.3.8. Реляционная модель
- •1.3.8.1. Отношения
- •1.3.8.2. Теоретико-множественные операции с отношениями
- •1.3.8.3. Правила Кодда
- •1.3.8.4. Индексирование таблиц
- •1.3.8.5. Связывание таблиц
- •1.3.9. Постреляционная модель
- •1.3.10. Многомерная модель
- •1.3.11. Объектно‑ориентированная модель
- •1.4. Модели использования баз данных в сети
- •1.4.1. Сеть
- •1.4.2. Модели использования баз данных
- •1.4.2.1. Локальная однопользовательская модель
- •1.4.2.2. Файл-серверная модель
- •1.4.2.3. Клиент-серверная модель
- •В моделях «клиент–сервер»
- •1.4.2.4. Модель удаленного доступа (rda)
- •1.4.2.5. Модель сервера данных
- •1.4.2.6. Трехзвенная распределенная модель
- •1.4.2.7. Модели серверов баз данных
- •1.4.2.8. Клиент-Интернет
- •1.4.2.9. ИнтерфейсOdbc
- •1.4.3. Мониторы обработки транзакций (tpm)
- •1.4.4. Децентрализованное управление базами данных
- •1.4.5. Таблицы в локальных сетях
- •1.5. Проектирование баз данных
- •1.5.1. Принципы и этапы проектирования и создания баз данных
- •1.4.Определение доменов атрибутов.
- •1.5. Определение первичных и вторичных ключей.
- •1.6. Определение суперклассов и подклассов для типов сущностей.
- •1.7. Создание er‑диаграмм для отдельных пользователей.
- •2.6. Создание er‑диаграмм для отдельных пользователей.
- •3.4. Создание er‑диаграммы глобальной логической модели.
- •4. Создание глобальной логической модели в среде целевой субд.
- •6. Разработка механизма защиты.
- •1.5.3. Правила формирования взаимосвязанных таблиц
- •1.5.4. Модели жизненного цикла и проектирование баз данных
- •1.5.4.1. Модели жизненного цикла
- •1.5.4.2. Обследование, системный анализ и постановка задачи
- •1.5.4.3. Инфологическое проектирование
- •1.5.4.4. Датологическое проектирование
- •1.5.4.5. Проектирование физической модели
- •1.5.4.6. Реализация, интеграция и внедрение
- •1.5.5. Выбор субд
- •1.5.5.1. Сравнение Visual FoxPro, Access, sql Server, Oracle и Excel
- •1.5.5.2. Методика балловой оценки программных средств
- •1.5.6. Case‑средства автоматизации проектирования
- •1. Ориентация на этапы жизненного цикла
- •2. Функциональная полнота
- •Пользователя в ms sql Server 7.0
- •1.6.2. Резервирование информации
- •1.6.3. Варианты разработки приложений
- •1.7. Стандартизация баз данных
- •1.8. ЯзыкSql
- •1.8.1. Введение вSql
- •1.8.2. Типы данныхSql
- •1.8.3. Оператор выбора данныхSelect
- •1.8.3.1. Назначение и синтаксис оператора
- •1.8.3.2. Объединение таблиц
- •1.8.3.3. Вложенные и коррелированные запросы
- •1.8.3.4. Запросы, использующиеExist, any, all
- •1.8.3.5. Стандартные функции
- •1.8.3.6. Запрос с группировкой
- •1.8.4. Операторы обновления базы
- •1.8.4.1. Оператор корректировки данныхUpdate
- •1.8.4.2. Оператор удаления записейDelete
- •1.8.4.3. Оператор включения записей insert
- •1.8.5. Представления
- •1.9. Транзакции
- •1.9.1. Определение транзакций
- •1.9.2. Организация транзакций
- •1.9.3. Журнал транзакций
- •1.9.4. Журнализация и буферизация
- •1.9.5. Индивидуальный откат транзакций
- •1.9.6. Восстановление после мягкого сбоя
- •1.9.7. Физическая согласованность базы данных
- •1.9.8. Восстановление после жесткого сбоя
- •1.9.9. Параллельное выполнение транзакций
- •1.9.10. Уровни изолированности пользователей
- •1.9.11. Гранулированные синхронизационные захваты
- •1.9.12. Предикатные синхронизационные захваты
- •1.9.13. Метод временных меток
- •1.10. ВстроенныйSql
- •1.10.1. Особенности встроенногоSql
- •1.10.2. Определение курсора
- •1.10.3. Открытие курсора
- •1.10.4. Чтение очередной строки курсора
- •1.10.5. Закрытие курсора
- •1.10.6. Удаление и обновление данных
- •1.10.7. Хранимые процедуры
- •Хранимой процедуры на сервере
- •1.10.8. Триггеры
- •1.10.9. ДинамическийSql
- •1.11. Архитектура субд и оптимизация запросов
- •1.12. Перспективы развития субд
- •Вопросы для самопроверки и контроля
- •1Оглавление
1.8.2. Типы данныхSql
Приведем описание основных типов данных.
CHARACTER(n) или CHAR(n) – символьные строки постоянной длины в nсимволов. При задании данного типа под каждое значение всегда отводитсяnсимволов, и если реальное значение занимает менее, чемnсимволов, то СУБД автоматически дополняет недостающие символы пробелами.
NUMERIC[(n,m)] – точные числа, здесь n – общее количество цифр в числе, m – количество цифр слева от десятичной точки.
DECIMAL[(n,m)] – точные числа, здесь n – общее количество цифр в числе, m – количество цифр слева от десятичной точки.
DEC[(n,m)] - то же, что и DECIMAL[(n,m)].
INTEGER или INT – целые числа. В большинстве реализаций тип данных INTEGER соответствует целым числам, хранимым в четырех байтах, a SMALLINT – соответствует целым числам, хранимым в двух байтах. Выбор одного из этих типов определяется размером числа.
FLOAT[(n)] – числа большой точности, хранимые в форме с плавающей точкой. Здесь n – число байтов, резервируемое под хранение одного числа. Диапазон чисел определяется конкретной реализацией.
REAL – вещественный тип чисел, который соответствует числам с плавающей точкой, меньшей точности, чем FLOAT.
DOUBLE PRECISION специфицирует тип данных с определенной в реализации точностью большей, чем определенная в реализации точность для REAL.
VARCHAR(n) – строки символов переменной длины.
NCHAR(N) – строки локализованных символов постоянной длины.
NCHAR VARYING(n) – строки локализованных символов переменной длины.
BIT(n) – строка битов постоянной длины.
BIT VARYING(n) – строка битов переменной длины.
DATE – календарная дата.
ТIMESТАМР(точность) – дата и время.
INTERVAL – временной интервал.
Большинство коммерческих СУБД поддерживают еще дополнительные типы данных, которые не специфицированы в стандарте. Так, например, практически все СУБД в том или ином виде поддерживают тип данных для представления неструктурированного текста большого объема. Этот тип аналогичен типу MEMO в настольных СУБД. Называются эти типы по-разному, например в ORACLE этот тип называется LONG, в DB2 - LONG VARCHAR, в SYBASE и MS SQL Server - TEXT.
Специфика реализации отдельных типов данных серьезным образом влияет на результаты запросов к БД. Особенно это касается реализации типов данных DATE и TIMESTAMP. Поэтому при переносе приложений на разных платформах они могут работать по-разному, и одной из причин может быть различие в интерпретации типов данных.
Для числовых типов данных определены константы в виде последовательности цифр с необязательным заданием знака числа и десятичной точкой. То есть правильными будут константы:
213-314 612.716 + 551.702
Константы с плавающей запятой задаются, как и в большинстве языков программирования, путем задания мантиссы и порядка, разделенных символом Е, например:
2.9Е-4 -134.235Е7 0.54267Е18
Строковые константы должны быть заключены в одинарные кавычки:
'Крылов Ю.Д.' 'Санкт-Петербург'
В некоторых реализациях, например MS SQL Server и Informix, допустимы двойные кавычки в строковых константах:
"Москва" "New York"
Использование двойных кавычек может вызвать дополнительные проблемы при переносе приложений на другую платформу, поэтому рекомендуеся по возможности избегать такого представления символьных констант.
Константы даты, времени и временного интервала в реляционных СУБД представляются в виде строковых констант. Форматы этих констант отличаются в различных СУБД. Кроме того, формат представления даты различен в разных странах. В большинстве СУБД реализованы способы настройки форматов представления дат или специальные функции преобразования форматов дат, как сделано, например, в СУБД ORACLE.
Приведем примеры констант в MS SQL Server:
March 15, 1999 Маг 15 1999 3/15/1999 3-15-99 1999 MAR 15
В СУБД ORACLE та же константа запишется как 15-MAR-99
Кроме пользовательских констант в СУБД могут существовать и специальные системные константы, например, USER соответствует имени пользователя, под которым вы подключились к БД.
В операторах SQL могут использоваться выражения, которые строятся по стандартным правилам применения знаков арифметических операций сложения (+), вычитания (-), умножения (*) и деления (/). Однако в ряде СУБД операция деления (/) интерпретируется как деление нацело. Имееется возможность выполнения операций сложения и вычитания над датами. В большинстве СУБД также определена операция конкатенации над строковыми данными, обозначается она по-разному. Так, например, для DB2 операция конкатенации обозначается двойной вертикальной чертой, в MS SQL Server – знаком сложения (+)
Имеются стандартные встроенные функций:
BIT_LENGTH(cтpoкa) – количество битов в строке;
САSТ(значение AS тип данных) – значение, преобразованное в заданный тип данных;
CHAR_LENGTH(cтpoкa) – длина строки символов;
CONVERT(cтpoкa USING функция) – строка, преобразованная в соответствии с указанной функцией;
CURRENT_DATE - текущая дата;
CURRENT_TIME(точность) – текущее время с указанной точностью;
CURRENT_TIMESTAMP(точность) – текущие дата и время с указанной точностью;
LOWER(cтpокa) – строка, преобразованная к верхнему регистру;
OCTED_LENGTH(строка) – число байтов в строке символов;
POSITION( первая строка IN вторая строка) – позиция, с которой начинается вхождение первой строки во вторую;
SUBSTRING(cтpoкa FROM n FOR длина) – часть строки, начинающаяся с n-го символа и имеющая указанную длину;
TRANSLATE(строка USING функция) – строка, преобразованная с использованием указанной функции;
TRIM(BOTH символ FROM строка) – строка, у которой удалены все первые и последние символы;
TRIM(LEADING символ FROM строка ) – строка, в которой удалены все первые указанные символы;
TRIM(TRAILING символ FROM строка) – строка, в которой удалены последние указанные символы;
UPPER(строка) – строка, преобразованная к верхнему регистру.