- •Введение в базы данных
- •Основные понятия и определения
- •Традиционные файловые системы
- •Системы с базами данных
- •История развития субд
- •Обзор современных субд
- •Основные термины:
- •Архитектура баз данных
- •Уровни представления баз данных
- •Схемы и подсхемы бд
- •Независимость от данных
- •Модели данных
- •Архитектура баз данных и субд
- •Функции и компоненты субд
- •Понятие целостности данных
- •Компоненты субд
- •Многопользовательские субд и языки баз данных
- •Архитектура многопользовательских субд
- •Языки баз данных
- •Реляционные базы данных
- •Используемая терминология
- •Структуры данных
- •Свойства отношений
- •Реляционные ключи
- •Манипулирование данными
- •5.5.1. Специальные реляционные операции
- •5.5.2. Традиционные операции над множествами
- •Пример манипулирования данными
- •Реляционная алгебра
- •Реляционное исчисление
- •Нормализация отношений в реляционных базах данных
- •Нормализация отношений
- •Аномалии вставки
- •Аномалии удаления
- •Аномалии обновления
- •Функциональные зависимости
- •Процесс нормализации
- •Первая нормальная форма (1нф)
- •Вторая нормальная форма (2нф)
- •Третья нормальная форма (3нф)
- •Нормальная форма Бойса-Кодда (нфбк)
- •Четвертая нормальная форма (4нф)
- •Пятая нормальная форма (5нф)
- •Проектирование реляционных баз данных
- •Подходы к проектированию бд
- •Понятия er- модели
- •Использование case-инструментов
- •Методология проектирования бд с помощью Case-инструментов silverrun
- •8.1.1. Использование silverrun-bpm
- •8.1.2. Контекстная диаграмма
- •Детализирующая диаграмма
- •8.1.4. Порядок работы с silverrun-врм
- •8.1.5. Использование silverrun-erx
- •8.1.6. Использование silverrun-rdm
- •Реляционные базы данных и субд InterBase
- •Субд InterBase, ее основные возможности и область применения
- •Типы данных
- •9.2.1. Целочисленные типы
- •9.2.2. Вещественные типы данных
- •Типы данных с фиксированной точкой
- •9.2.4. Типы данных для хранения текста
- •Типы для хранения даты и времени
- •Тип данных blob
- •Массивы
- •Язык реляционных баз данных sql
- •Sql и его история
- •Объекты реляционной базы данных
- •Операторы манипулирования данными
- •Агрегирование данных при выборке
- •Представления
- •Новые встроенные функции
- •Диалект базы данных
- •Типы с фиксированной точкой
- •Принципы физической организации баз данных
- •Безопасность данных и субд
- •Безопасность в операционной среде
- •Защита сервера
- •Безопасность на уровне базы данных
- •Файл конфигурации Firebird
- •Объектные субд
- •Сильные стороны реляционной модели субд
- •Недостатки реляционных субд
- •Недостатки оосубд
- •Заключение
- •Список литературы
Новые встроенные функции
В СУБД Firebird добавлены новые встроенные функции из стандарта SQL-99 — CASE, COALESCE и NULLIF.
CASE является базовой для этого ряда функций и реализует условную выборку значений из таблиц, например:
SELECT CASE O.TYPE WHEN 0 THEN 'Доход' ELSE 'Расход' END FROM OPERATIONS O
или так
SELECT CASE WHEN (O.TYPE = 0) THEN 'Доход' ELSE 'Расход' END FROM OPERATIONS O
Следует отметить, что у функции CASE может быть любое количество аргументов, т.е. Она не ограничивается только простейшей проверкой типа 'ЕСЛИ-ИНАЧЕ', например:
SELECT CASE O.TYPE WHEN 0 THEN 'Доход' WHEN 1 THEN 'Расход' ELSE '----' END FROM OPERATIONS O
Функция COALESCE является упрощением CASE для проверки на NULL
SELECT COALESCE(O.STATUS, '----') FROM OPERATIONS O
Результатом COALESCE будет являться первый аргумент, если он не NULL, или второй аргумент в противном случае.
Функция NULLIF также является упрощением CASE, но для иного случая
SELECT NULLIF(O.STATUS1, O.STATUS2) FROM OPERATIONS O
Результатом NULLIF будет являться NULL, если оба аргумента равны, или первый аргумент в противном случае.
Диалект базы данных
Выбор диалекта базы данных для СУБД Firebird очень важен.
Диалект 1 и Диалект 3 отличаются друг от друга следующими принципиальными особенностями:
Диалект 3 позволяет использовать расширенный набор типов данных, таких как типы для работы с большими целыми числами (ВigInt – 64 разряда), типы для работы с датой и временем DATE и TIME.
Диалект 3 различает регистр идентификаторов, если идентификатор заключён в двойные кавычки. Table1 и TABLE1 в обоих диалектах будут равнозначны, а вот “Table1” и “TABLE1” (TABLE1) сервер будет интерпретировать как разные идентификаторы.
Диалект 3 не поддерживает неявное приведение типов данных (как в диалекте 1). Это означает, что в Диалекте 1 выражение ‘25’+5 будет корректным, и в результате мы получим 30. В Диалекте 3 это выражение вызовет ошибку несоответствия типов.
В Диалекте 3 двойные кавычки применяются только для обозначения идентификаторов (названия таблиц), а одинарные – для строковых констант. В Диалекте 1 строковые константы можно заключать как в одиночные, так и в двойные кавычки.
В Диалекте 3 используются новые ключевые слова (зарезервированные слова): COLUMN, CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP, DAY, EXTRACT, HOUR, MINUTE, MONTH, SECOND, TIME, TIMESTAMP, WEEKDAY, YEAR, YEARDAY.
Арифметические операции в диалекте 3 взяты из стандарта SQL-92. Например, деление целого на целое в диалекте 3 возвращает усечённое целое, в то время как в диалекте 1 оно вернёт число с плавающей точкой двойной точности.
Генераторы в диалекте 3 могут иметь тип bigint (64-битовые целые числа), а в диалекте 1 генераторы – 32-битовые целые.
Сам сервер не имеет диалекта – диалект базы данных является атрибутом базы данных. Он является интерфейсом клиента, который определяет, какой набор возможностей запрашивается у базы данных.
Выбор диалекта, в котором будет создаваться база данных, важен по той причине, что переход между разными диалектами – занятие достаточно нетривиальное и трудоёмкое. Иными словами, если есть возможность, то лучше сразу выбрать верный диалект.
В общем случае при выборе диалекта следует руководствоваться следующими правилами:
выбираем Диалект 3, если проектируется база данных для приложения, которое будет использовать только современные библиотеки прямого доступа к InterBase/FireBird, которые полностью поддерживают Диалект 3.
выбираем Диалект 1, если важна совместимость с более ранними библиотеками доступа к InterBase/FireBird, такими как BDE.
Может возникнуть вопрос, почему диалекты бывают 1 и 3, а где же 2? Диалект 2 действительно существует, но используется в качестве промежуточного этапа при миграции с Диалекта 1 на Диалект 3.
