
- •Введение
- •Часть 1
- •Глава 1 модели данных
- •Уровни моделей данных
- •1 Инфологические модели данных
- •1.1 Диаграмма Бахмана
- •1.2 Модель «сущность-связь»(er)
- •Нотация Мартина
- •Нотация idef1x
- •Нотация Баркера
- •2. Даталогические модели
- •2.1. Документальные модели
- •2.1.1. Ориентированные на формат документа
- •2.1.2. Дескрипторные модели
- •2.1.3. Тезаурусные модели
- •2.2. Фактографические модели
- •2.2.1. Теоретико-графовая модель
- •2.2.1.1. Иерархическая модель
- •2.2.1.2. Сетевая модель
- •2.2.2. Теоретико-множественные модели
- •2.2.2.1. Реляционная модель
- •Правила Теда Кодда
- •2.2.2.2. Бинарных ассоциаций
- •2.2.3. Объектно-ориентированные модели
- •3. Физические модели
- •3.1. Модели, основанные на файловых структурах
- •3.2. Модели, основанные на странично-сегментной организации
- •Известные сетевые субд:
- •Глава 2. Проектирование баз данных
- •1.1. Избыточность данных и аномалии обновления
- •1.2. Функциональные зависимости
- •1.3. Нормальные формы и схемы выполнения нормализации
- •1) 1Нф.
- •2) 2Нф.
- •3) 3Нф.
- •4) Нфбк (нормальная форма Бойса-Кодда).
- •5) 4Нф.
- •6) 5Нф.
- •1.4 Синтез реляционных баз данных
- •1.5 Пример синтеза
- •1.6 Пример декомпозиции
- •Часть 2
- •Реляционная алгебра
- •Введение
- •Стандартные реляционные операции
- •Свойства стандартных операций
- •Специальные операции
- •Язык sql как стандартный язык баз данных
- •Введение в sql
- •2.1.1 Функциональные возможности sql
- •2.2 Создание баз данных
- •2.2.1 Оператор create database
- •2.3 Удаление баз данных
- •2.4.3 Размер поля
- •2.4.4 Тип поля
- •2.5 Удаление таблиц
- •2.5.1 Оператор drop table
- •2.6. Данные и записи данных
- •2.6.1 Оператор select
- •2.6.2 Оператор distinct
- •2.6.3 Оператор from { таблица [ псевдоним ] } [,...]
- •2.6.4 Оператор where (условие)
- •2.6.5 Оператор group by { поле | Integer } [,...]
- •2.6.6 Оператор having( условие)
- •2.6.7 Оператор order by { поле | Integer [ asc|desc ] } [,...]
- •2.6.8 Оператор union [all] select-команда
- •2.6.9 Оператор intersect [all] select-команда
- •2.6.10 Оператор except [all] select-команда
- •2.6.11 Into { temp | scratch } таблица
- •2.6.12 Insert - добавлять данные
- •2.6.13 Values ( константа [,...] )
- •2.6.18 Unload - выгрузить данные в текстовый файл
- •2.7 Операторы
- •2.7.3 Арифметические операторы
- •2.7.4 Приоритеты операторов
- •2.8 Функции
- •2.8.3 Текстовые функции
- •2.8.4 Функции работы с временем и датами
- •2.8.5 Вспомогательные функции
- •2.9 Виды на таблицы данных (Просмотры)
- •2.9.1Create view - создать новый вид на таблицу данных
- •2.9.2 Drop view - удалить вид на таблицу данных
- •2.10 Пользовательские процедуры
- •2.10.1 Create procedure - создать пользовательскую процедуру
- •2.10.2 Dba
- •2.10.3 References { byte | text }
- •2.10.4 Default { Wert | null }
- •2.10.5 Returning { Feldtyp | references { byte | text } }
- •2.10.6 Drop procedure - удалить процедуру
- •2.12.2 Нормальный текст
- •1999 - Sql-99, sql-3 (iso/iec 9075:1999(e) Information technology - Database languages - sql)
- •2003 - Sql-2003
- •4. Виды систем баз данных
- •4.1.Oracle
- •4.1.1 Типы данных
- •4.1.1.1.Символьные типы
- •4.1.1.2.Числовые типы
- •Даты, временные метки и интервалы
- •4.1.1.3.Логические типы
- •Двоичные данные
- •4.1.1.4.Типы данных для сети Интернет
- •4.1.1.5.Типы данных «Any»
- •4.2. Mysql
- •4.2.1 Типы данных.
- •4.2.1.1.Character String (строковый)
- •4.2.1.2.National Character String (национальный строковый)
- •4.2.1.3.Binary Large Object String (двоичный)
- •4.2.1.4.Numeric (числовой)
- •4.2.1.5.Datetime (дата/время)
- •4.2.1.6.Interval (интервальный)
- •4.2.1.7.Типы enum и set
- •4.2.2Использование типов столбцов их других систем управления базами данных
- •4.3. Postgresql
- •4.3.1 Типы данных
- •4.3.1.1Числовые типы
- •4.3.1.1.Целочисленные типы
- •4.3.1.2.Числа с заданной точностью
- •4.3.1.3.Типы с плавающей точкой
- •4.3.1.4.Серийные типы
- •4.3.1.5.Денежные типы
- •4.3.1.6.Символьные типы
- •4.3.1.7.Двоичные типы данных
- •4.3.1.8.Типы дата/времени
- •4.3.1.9.Логический тип
- •4.3.1.10.Перечисления
- •5. Использованные в пример таблицы данных
- •Символьные
- •Числовые типы данных
- •Двоичные типы данных
- •Типы данных времени, даты, интервалы
- •Логические типы данных
- •Список литературы
- •Оглавление
- •Часть 1………………………………………………………….…………………………….………… 4
- •Глава 1 модели данных………………………….………………….……………….…........…. 4
- •Глава 2 проектирование баз данных…………..……………………………………...… 40
- •1.4 Синтез реляционных баз …...………………………………………………………… 44
- •Часть 2……...…...………………………………………………………………………………….… 52
4.3.1.1.Целочисленные типы
Типы smallint, integer и bigint хранят обыкновенные числа, т.е. числа без дробной части, но разных диапазонов. Попытки сохранить значения, которые выходят за рамки разрешённого диапазона приведут к ошибке.
Обычно для целых чисел выбирается integer, потому что он предлагает лучший баланс между диапазоном хранимых значений, размером хранимых значений и производительностью. Тип smallint обычно используется только в случаях, когда необходимо крайне рациональное использование дискового пространства. Тип bigint должен использоваться только если не хватает диапазона типа integer, потому что работа с последним осуществляется существенно быстрее.
Только в некоторых операционных системах тип bigint может функционировать неправильно, так как он зависит от поддержки компилятором восьмибайтовых целых чисел. На машинах, где такой поддержки нет, bigint работает также как integer, но по прежнему использует восемь байт для хранения.
SQL определяет только целочисленные типы integer (или int), smallint и bigint. Имена типов int2, int4 и int8 являются расширениями, которые также используются некоторыми другими SQL СУБД.
4.3.1.2.Числа с заданной точностью
Тип данных numeric может хранить числа с точностью до 1000 знаков после точки и с этим типом могут выполняться точные вычисления. Использование этого типа особенно рекомендуется для хранения денежных значений и других величин, для которых требуется точность. Однако, для типа numeric, работа с арифметическими значениями осуществляется очень медленно по сравнению с целочисленными типами или типами с плавающей точкой.
Далее используются следующие термины: масштаб(scale) типа numeric — это количество десятичных разрядов в дробной части, справа от десятичной точки.Точность(precision) типа numeric — это общее количество значимых разрядов во всём числе, т.е. количество разрядов по обе стороны от десятичной точки. Таким образом, число 23.5141 имеет точность 6 и масштаб 4. Целые числа могут быть представлены с использованием масштаба ноль.
Для колонки с типом numeric можно настроить и максимальную точность и максимальный масштаб. Для определения колонки типа numeric используйте синтаксис:
NUMERIC(точность,масштаб)
Точность должна быть положительным значением, масштаб должен быть либо положительным значением либо нулём. Можно также использовать и такой синтаксис:
NUMERIC(точность) ,который обусловливает значение масштаба 0. Если задать:
NUMERIC без значений точности и масштаба, будет создана колонка, в которой можно хранить значения типа numeric с любыми точностью и масштабом, ограниченными только реализованным в СУБД пределом точности. Колонка такого вида будет приводить вводимые значения к любому отдельному масштабу, в то время как колонки типа numeric с заданным значением масштаба будут приводить вводимые значениям к этому масштабу.
Если масштаб какого-либо значения больше, чем заявленный масштаб колонки, то система округлит это значение до указанного количества дробных разрядов. Затем, если количество разрядов слева от десятичной точки превышает заявленную точность минус заявленный масштаб, будет выдано сообщение об ошибке.
Значения numeric физически хранятся без каких-либо дополнительных нулей вначале или в конце. Следовательно, заявленная точность и масштаб колонки являются максимально возможными, но размер хранения для них выделяется нефиксированный. (В этом смысле тип numeric больше похож на тип varchar(n), чем на тип char(n).) Фактически требования, предъявляемые к хранению — это два байта для каждой группы из четырёх десятичных разрядов, плюс дополнительно от пяти до восьми байт.
В дополнение к обычным числовым значениям, тип numeric позволяет хранить специальное значение NaN, которое означает "not-a-number (не число)". Любые операции над NaN в качестве результата дают другое значение NaN. Когда это значение пишется как константа в команде SQL, вы должны заключить его в одинарные кавычки, например UPDATE table SET x = 'NaN'. При вводе, строка NaN распознаётся независимо от регистра букв.
Note: В большинстве реализаций концепции "не число", NaN не считается равным какому либо числовому значению (включая NaN). Чтобы разрешить сортировку значениям numeric и использовать индексы, основанные на деревьях, PostgreSQL считает значения NaN равными или больше, чем все не-NaN значения.
Типы decimal и numeric эквивалентны. Оба типа являются частью стандарта SQL.