Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Software development.docx
Скачиваний:
2
Добавлен:
01.04.2025
Размер:
324.44 Кб
Скачать

Регистронезависимость Access

СУБД Access является регистронезависимой. Это значит, что имена всех объектов, полей таблицы, элементов управления формы и отчёта и т.п., записанные в разном регистре одной и той же последовательностью букв, будут считаться одинаковыми. Например, имена полей ФИО, фио и ФиО будут обозначать одно и то же.

При этом регистр написания имён элементов и текстовых данных остаётся таким, каким его внесли в СУБД.

Аналогичная ситуация и с сортировкой текстовых данных.

Свойства полей Тип данных и Размер поля

Остановимся поподробнее на свойствах полей Тип данных и Размер поля, таблица 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

1

31 декабря 1899 г.

,0

00:00:00

2,5

2

1 января 1900 г.

,5

12:00:00

27468,96875

27468

15 марта 1975 г.

,96875

23:15:00

36836,125

36836

6 ноября 2000 г.

,125

03:00:00

Можно отформатировать значение даты/времени таким образом, чтобы отображалась дата, время или то и другое. При использовании формата только даты значение составляющей времени в Access равняется нулю. И наоборот.

  • Логический тип данных

Данный тип применяют для характеристик объекта, которые можно уложить в схему «да-нет». Например, наличие действительного талона техосмотра у автовладельца, возможность порта принимать нефтяные танкеры и т.п.

Наиболее удобным представлением для таких полей является флажок. Однако даже этот тип данных относят к числовым. Принято, что -1 означает «Да» (флажок включён), а 0 означает «Нет» (флажок выключен).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]