Типы данных и полей: общее и в разных СУБД

Характеристики полей БД и типы данных

Одна СУБД отличается от другой в первую очередь набором поддерживаемых типов данных и их свойствами. Но понимание общих подходов позволяет достаточно легко решить значительную часть возникающих нестыковок.

Первым делом введем тип данных, для которого не существует поля, но он чрезвычайно важен, так как означает отсутствие данных. Он обозначается как NULL и его необходимо присваивать отдельно. Сделать это можно только для тех полей, для которых указано в структуре таблицы соответствующее разрешение. В этом случае, например, задав его значением по умолчанию, мы можем получить 3 варианта логического поля: null, true, false. При этом данные будут пустыми (null) при создании записи и актуализируются только после ввода конкретной информации.

Поле — минимальная единица структурированной информации в БД, характеризующая один показатель для одного явления. Каждое поле имеет тип и размер. Все поля для данного явления составляют запись. Поле — структурная единица записи. Обратите внимание, что, уже с точки зрения всей БД, поле является совокупностью какого-либо значения во всех записях.


Доступ к этим материалам предоставляется только зарегистри­рован­ным пользователям!


Характеристики полей БД (на основе xBase)

Тип поляОбозначениеОграничения (размер)Содержание (виды информации)
Символьный (Character)254/255 символовЛюбые символы кодовой таблицы
Числовой (Numeric)20 разрядовЧисловые значения. Размер поля состоит из суммы числа разрядов до десятичной точки, после нее +1 знак на точку
(Float)20 разрядовЧисла с плавающей точкой
(Integer)(4 байта)Целые числа, размер поля фиксирован!
Дата(Date)8 байтовДата
Время(Time)6 байтовВремя, часто объединено с датой (DateTime)
Логический(Logical)(1 байт)Логические данные — истина (.T. или .Y.) или ложь (.F. или .N.), то есть 1 или 0
Примечаний(Memo)нет*Любые данные, в том числе в двоичном виде
Общего назначения(General)нет*Как правило графические или мультимедийные (звук, видео) данные

* В отличие от всех полей хранится в отдельном файле, не имеет фиксированного размера и ограничивается только свободным дисковым пространством, либо размером файла операционной системы.

Характеристики основных полей MySQL

Тип поляОбозначениеОграничения (размер)Содержание (виды информации)
Символьный(CHAR)255 символов*Любые символы кодовой таблицы
(TEXT)65535 символовЛюбые символы кодовой таблицы
(VARCHAR(Size))65532 символаЛюбые символы кодовой таблицы
(MEDIUMTEXT)16777215 символовЛюбые символы кодовой таблицы
(LONGTEXT)4294967295 символовЛюбые символы кодовой таблицы
Числовой(FLOAT(M,D))4 байтаЧисловые значения. Размер поля состоит из суммы числа разрядов до и после десятичной точки. Из них выделяются десятичные разряды
(DOUBLE(M,D))8 байтТо же, что и FLOAT, но со значительным расширением диапазона значений
(DECIMAL(M,D))число знаковТоже что и DOUBLE, но хранится в виде строки
(TINYINT(Size))1 байтЦелое число от -128 до 127 или 0-255 без знака
(SMALLINT(Size))2 байтаЦелое число от -32768 до 32767
(INT(Size))4 байтаЦелое число от -2147483648 до 2 147 483 647
Дата(DATE)3 байтаДата
Время(DATETIME)8 байтВремя с датой от 1000 до 9999 года
Время(TIMESTAMP)4 байтаВремя с датой (момент создания записи)
Время(TIME)3 байтаВремя суток с точностью до секунд
Двоичная информация(LONGBLOB)0–4 294 967 295 байтLONG Binary Large OBjects. Самый большой тип поля для хранения бинарных данных

* Размер для символьных (строковых) полей зависит от используемой кодировки.


Доступ к этим материалам предоставляется только зарегистри­рован­ным пользователям!


Неверный выбор типа и размера полей

Поскольку размер поля в «правильной» реляционной БД имеет фиксированное значение, он должен быть достаточным (иначе данные могут не поместиться) но не избыточным (лишнее место на диске и в памяти). Если подумать, то данный параметр должен быть, например, для символьного типа точно равен самой длинной строке генеральной совокупности.

Тип поля должен соответствовать вводимым данным с учетом возможного развития. В том числе числу записей для идентификаторов.

Ошибка типа — достаточно грубая и примитивная. Если недостаточный размер поля еще может быть оправдан просто отсутствием достаточного (исчерпывающего) объема информации, то ошибка в выборе типа — следствие слишком поверхностных рассуждений.

Еще один, совсем неочевидный пример. Так как размер поля всегда измеряется в целых байтах, логический тип, теоретически требующий всего одного бита, следует рассматривать как нерациональный. Да, он будет всегда обрабатываться быстрее, так как может иметь всего от двух до трех вариантов значения (T, F, null). Но даже банальный интерфейсный флажок, чаще всего используемый для управления полем, может иметь до четырех состояний.


Доступ к этим материалам предоставляется только зарегистри­рован­ным пользователям!


....

Прошу обратить особо пристальное внимание на неопределенную информацию, традиционно вносимую для xBase в Memo-поле. Новые концепции не предусматривают такого типа и придется пользоваться текстовыми полями, дополнительно обдумывая их структуру. Важно создать среду, когда не будет вывода пользователю, что он превысил объем сохраняемых данных.

См. также Ключевые поля.


Copyright © 1993–2021 Мацкявичюс Д.А. Все права защищены.
Никакая часть сайта не может быть воспроизведена никаким способом без письменного разрешения правообладателя и явной ссылки на данный ресурс.