Читайте также:
|
|
Остановимся поподробнее на свойствах полей Тип данных и Размер поля, таблица 2.
От типа поля зависит, какие данные можно в него вносить в поле, а какие нет, а также допустимый набор операций с данными, содержащимися в поле. Например, данные в поле Цена можно просуммировать, чтобы определить общую стоимость. Суммировать данные, содержащиеся в поле Номер телефона, совершенно бессмысленно, даже если номера телефонов записаны одними цифрами. Очевидно, что эти поля обладают разными характеристиками, служат разному предназначению.
Однако количество типов данных ограничено, и под каждое поле в Access нельзя выбрать свой уникальный тип. Но это означает лишь, что разработчик должен постоянно помнить о том, что имеет смысл, а что не имеет, обязан предусмотреть это в своей СУБД. Вычисление суммы номеров телефонов, даже если выбран числовой тип данных, должно быть исключено, по крайней мере, для пользователей.
Размер поля – это то, сколько места в БД будет занимать каждая его ячейка, таблица 2.
Таблица 2 – Типы данных полей и их размеры
Тип даннах полей | Использование | Размер |
Текстовый | Текст, состоящий из любых символов, в кодировке Unicode (2 байта на символ) | До 255 символов, задаётся отдельно |
Поле МЕМО | Текст в кодировке Unicode | До 64000 символов, не задаётся |
Числовой: байт, целое, длинное целое, одинарное с плавающей запятой, двойное с плавающей запятой, действительное | Числа: целые (байт, целое, длинное целое, действительное) и дробные (с плавающей запятой) | Байт – 1 байт, целое – 2 байта, длинное целое и одинарное с плавающей запятой – 4 байта, двойное с плавающей запятой – 8 байтов, действительное – 12 байтов. |
Денежный | Значения валют. Денежный тип используется для предотвращения округлений во время вычислений. Предполагает до 15 символов в целой части числа и 4 - в дробной | 8 байтов |
Дата/время | Даты и/или время | 8 байтов |
Логический | Поля, содержащие только одно из двух возможных значений, таких как Да/Нет, Истина/Ложь, Вкл/Выкл | 1 бит |
Счётчик | Автоматическая вставка последовательных (увеличивающихся на 1) или случайных чисел при добавлении записи | 4 байта |
Крайне важным для понимания дальнейшего материала является изучение способов хранения основных типов данных. Всё множество рассматриваемых нами типов данных подразделяют на строковые (типы текстовый и поле МЕМО) и числовое (все остальные, представленные в таблице 2) типы данных. Ниже мы увидим причину подобной классификации.
- Текстовый тип
Является наиболее применимым в СУБД. В него можно записывать всё что угодно – все печатные (видимые на экране) символы и символ пробела. Размер в данном случае задаётся явно и означает максимальное число символов, которое возможно записать в ячейку. Остаток строки остаётся пустым, рисунок 4, слева.
Такое положение вещей обусловлено главным образом тем, чтобы не нарушалась структурированность таблицы. В противном случае для извлечения 1000-й строки из таблицы пришлось бы сначала прочитать все 999 предыдущих строк.
- Тип поле МЕМО
Внешне очень похож на текстовый тип. Главное отличие заключается в формате хранения. В таблице вместо самих строк хранятся указатели на них. Указатели имеют фиксированную длину, поэтому структурированность данных не нарушается и здесь. В базе данных, но в отдельном месте есть специальная область для хранения самих строк типа поле МЕМО. На них и ссылаются указатели в таблице с данными, рисунок 4, справа.
Из такого формата хранения следует, что максимальный размер строки, как в текстовом типе, не задаётся.
Рисунок 4 – Сравнение форматов хранения строковых типов данных
На первый взгляд, данный тип кажется лучшим решением по сравнению с текстовым типом данных. Однако это не так. Содержание подобной отдельной области, связывание каждый раз при просмотре таблицы всех данных воедино тоже требует затрат. Кроме того, в такой области тоже имеются «дыры» (точки на рисунке 4, справа).
Поэтому тип поле МЕМО рекомендуется использовать только для строк с сильно отличающейся, порой очень большой длиной. Например, для кратких характеристик работников, описания их выговоров (у кого-то может быть больше десятка выговоров, а у большинства – ни одного) и т. п.
- Числовой тип
Числовой тип данных подразделяется на целые и дробные подтипы. В целые числовые типы данных (байт, целое, длинное целое и действительное) можно записать только цифры и символ «минус» перед ними (кроме подтипа байт, где все числа неотрицательные, таблица 2).
В дробные типы данных (одинарное и двойное с плавающей точкой) можно записать ещё разделитель целой и дробной части (запятая в русской инсталляции и точка – в английской).
Любое число может быть записано в экспоненциальной форме (Например, ).
От размера числовых типов данных зависит насколько большой диапазон чисел они могут представлять. Как известно, в 1 байте содержится 8 бит, каждый бит может принимать только 2 значения (0 или 1). Следовательно, числовой подтип байт может представлять различных значений. В СУБД это числа от 0 до 255 включительно. Целый подтип длиной в 2 байта или в 16 бит уже может представлять различный значений чисел от -32768 до 32767 и т.д.
Дробное число в СУБД хранится следующим образом. Как уже было показано выше, все числа можно перевести в экспоненциальную форму. Допустим, что мы это сделали так, чтобы разделитель целой и дробной части всё время был в одном заранее оговоренном месте. Тогда нам можно не хранить как этот разделитель, так и основание степени, поскольку эти части числа всегда будут одинаковыми. Схема хранения таких чисел представлена на рисунке 5.
Рисунок 5 – Представление дробных чисел в СУБД
Ячейка дробного числа делится на 4 части, размер которых строго фиксирован. Следует обратить внимание на тот факт, что все иррациональные числа и некоторые рациональные дроби (см., например, 1/3) не могут быть точно представлены в таком формате. Это порождает всевозможные погрешности при вычислении.
В ряде случаев дробное число представляется в процентном формате. По сути, процент – это обычное дробное число. Поэтому при вводе такого числа нужно либо ставить символ % сразу после него (21%; 4,7%; -0,72%), либо вводить его в виде обычного дробного числа (0,21; 0,047; -0,0072).
- Денежный тип данных
Этот тип данных создан специально для финансовых операций. Для предотвращения возникновения погрешностей количество разрядов в дробной части предполагается фиксированным и равным 4. Само число хранится также, как и дробное, только все дробные разряды обязательно записываются туда слева, рисунок 6.
Рисунок 6 – Представление денежного типа в СУБД
В данном случае, как мы видим, всё свелось к одному и тому же порядку . А раз так, то его можно и не хранить, просто помня о том, где проходит разделение целой и дробной части (пунктирные линии на рисунке 6 не хранятся в БД, но об их положении знает СУБД).
Наименование валют также не хранится в БД – это прерогатива свойства Формат поля.
Таким образом, по сути, денежные числа хранятся как целые.
- Тип данных Дата/Время
Тип данных Дата/Время хранится в Access в формате числа двойной точности с плавающей запятой, рисунок 5. Целая часть числа представляет собой дату, а дробная часть – время. То есть, в каждой ячейке с этим типом данных обязательно содержится какая-то дата и какое-то время.
Дата может принимать значения от -657 434 (1 января 100 г. н.э.) до 2 958 465 (31 декабря 9999 г. н.э.). Нулевому значению даты соответствует 30 декабря 1899 г. Даты до 30 декабря 1899 г. хранятся в Access в виде отрицательных чисел.
Время может принимать значения от …,0 (00:00:00) до …,99999 (23:59:59). Числовое значение представляет собой долю дня. Можно перевести числовое значение в часы, минуты и секунды, последовательно умножая остаток на 24 для вычисления часов или на 60 для минут и секунд.
В таблице 3 показано, как хранятся значения даты/времени в Access:
Таблица 3 – Примеры соответствия дробного числа дате и времени
Дата/Время | Составляющая даты | Реальная дата | Составляющая времени | Реальное время |
1,0 | 31 декабря 1899 г. | ,0 | 00:00:00 | |
2,5 | 1 января 1900 г. | ,5 | 12:00:00 | |
27468,96875 | 15 марта 1975 г. | ,96875 | 23:15:00 | |
36836,125 | 6 ноября 2000 г. | ,125 | 03:00:00 |
Можно отформатировать значение даты/времени таким образом, чтобы отображалась дата, время или то и другое. При использовании формата только даты значение составляющей времени в Access равняется нулю. И наоборот.
- Логический тип данных
Данный тип применяют для характеристик объекта, которые можно уложить в схему «да-нет». Например, наличие действительного талона техосмотра у автовладельца, возможность порта принимать нефтяные танкеры и т.п.
Наиболее удобным представлением для таких полей является флажок. Однако даже этот тип данных относят к числовым. Принято, что -1 означает «Да» (флажок включён), а 0 означает «Нет» (флажок выключен).
Дата добавления: 2015-08-27; просмотров: 189 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Свойства полей. Обзор | | | Приоритеты при разработке СУБД |