- •2 8. Функциональные зависимости и 1нф.
- •29. Полная функциональная зависимость и 2нф
- •30. Транзитивная зависимость и 3нф
- •31. Нормальная форма Бойса-Кодда
- •32. Понятие er-модели
- •33. Показатель кардинальности связи и степень участия сущностей
- •36. Логическое проектирование бд с помощью case-средства OpenModelSphere.
- •37. Физическое проектирование бд с помощью case-средства OpenModelSphere.
- •40. Язык запросов sql.
- •41. Операторы манипулирования данными языка sql.
- •47. Диалекты базы данных FireBird.
- •48. Типы данных с фиксированной точкой.
- •49. Безопасность бд в операционной среде.
- •50. Защита сервера.
- •51. Безопасность на уровне базы данных.
- •52. Файл конфигурации FireBird.
47. Диалекты базы данных FireBird.
Выбор диалекта БД для СУБД 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
Диалект 2 существует, но используется в качестве промежуточного этапа при миграции с Д1 на Д3.
48. Типы данных с фиксированной точкой.
В Firebird эти типы: NUMERIC и DECIMAL. Каждый тип объявляется как TYPE (P, S), Р -количество значащих цифр, а S – масштаб (количество цифр справа от символа десятичной точки).
Типы NUMERIC и DECIMAL, являются идентичными, кроме того, когда точность <5. NUMERIC не соответствует стандарту SQL-92.
FIREBIRD хранит масштабированное число как тип SMALLINT (16 бит), INTEGER (32 бита) или BIGINT (64 бита) в соответствии с объявленным масштабом (размером точности). Его объявленная точность сохраняется вместе с объявленным масштабом в виде отрицательного множителя масштаба, в виде степени числа 10. Для вывода или для расчётов, оно получается произведением хранимого целого на 10 множитель масштаба.
Например, для столбца, объявленного как NUMERI (4, 3), FIREBIRD сохраняет число в виде SMALLINT. Если вы вводите число 7.2345, FIREBIRD без сообщения округляет самую правую цифру (4) и сохраняет 16-битовое целое 7235 и множитель масштаба -3. Это число будет найдено как 7.235 (7235*10-3).
Числа в формате NUMERIC с точностью < 5 хранятся как SMALLINT (16 разрядов). Числа в формате DECIMAL с точностью < 5 хранятся как INTEGER (32 разряда).
Числа в Диалекте 1 с точностью 10 – 18 хранятся как DOUBLE PRECISION, а в Д3 –BIGINT.
При выполнении деления типов с фиксированной точкой диалекты 1 и 3 ведут себя по-разному.
В Д3, когда оба операнда при операции деления являются типами с фиксированной точкой, FIREBIRD суммирует масштабы обоих операндов для определения масштаба результата (частного).
В Д1 деление всегда создаёт частное типа DOUBLE PRECISION.
Примеры. В д3 DECIMAL (12.3) / DECIMAL (9,2) = DECIMAL (18,5). (Масштабы суммируются.)
В Д3 точность умножения чисел с фиксированной точкой будет равна 18. В Д1 если точность результата равна > 9, то результатом будет DOUBLE PRECISION.
При сложении и вычитании масштаб результата равен максимальному масштабу операндов.
В Д3 результат любого сложения или вычитания имеет тип NUMERIC(18, n). В Д1 он имеет тип (9, n), где n – максимальный масштаб операнда.
