Свойства и типы полей

Компьютерные программы работают с колоссальным количеством информации, которую необходимо где-то хранить. Специально для этой цели создаются базы данных, обеспечивающие структурированное представление сведений и удобный доступ к ним. Один из самых популярных способов организации таких хранилищ - табличный, в которых для разных типов информации можно выбрать специальные типы полей. Это облегчает манипуляции с данными и позволяет экономить ресурсы.

Табличные базы данных

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

Каждая база состоит из нескольких таблиц, олицетворяющих определенную сущность или отношение сущностей. Например, в виде таблицы могут быть представлены данные о студентах университета или информация об итогах экзаменов.

Столбцы таблицы называются полями и содержат конкретный атрибут сущности. Так, в таблице "Студенты" в качестве полей выступают:

  • фамилия, имя, отчество;
  • номер зачетки;
  • дата рождения;
  • номер телефона.

Строки называются записями и представляют отдельный реальный объект (конкретного студента).

Количество столбцов (полей) таблицы определено при ее создании и больше не изменяется. Строки же могут добавляться, удаляться и редактироваться в любой момент.

С первого взгляда очевидно, что информация, хранящаяся в поле "Ф.И.О." существенно отличается от информации в поле "№ зачетки" или в поле "Дата рождения". Так как манипуляции с разными типами данных осуществляются по разным алгоритмам, целесообразно заранее определить, какого рода сведения будут храниться в конкретном поле таблицы.

Каждая база данных определяет, поля каких типов она может обрабатывать. Основные виды информации, например, числовая, символьная, поддерживаются в любой системе. Кроме того, некоторые базы могут предоставлять собственные типы данных.

Поля и их свойства

Поле записи является наименьшей именованной единицей информации в базе данных. Оно имеет два обязательных свойства:

  • уникальное в пределах таблицы имя, по которому к нему можно обращаться;
  • тип данных, хранящихся в нем.

Поле может быть отмечено как уникальное или ключевое.

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

Ключевыми назначаются поля, наиболее активно участвующие в выборках данных. По ним будут выстроены индексы - дополнительные структуры, облегчающие поиск.

Каждая таблица в базе должна иметь первичный ключ, уникальный для каждой записи и однозначно ее определяющий. Он может состоять из одного или нескольких полей. Разумнее всего выбирать в качестве первичного ключа поля, имеющие короткие значения. Например, в таблице "Студенты" в качестве первичного ключа может выступать поле "№ зачетки".

Свойства целостности

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

Кроме того, некоторые поля совершенно необходимы для описания сущности, в то время как заполнение других необязательно. У студента может не быть телефона, но имя и зачетка есть всегда.

Обеспечение целостности данных контролируется несколькими свойствами:

  • тип поля определяет вид данных, которые могут являться его значением;
  • обязательность запрещает вносить в таблицу записи с пустым полем;
  • значение по умолчанию позволяет не заполнять поле, но не оставлять его пустым;
  • уникальность обеспечивает однозначную идентификацию сущности в пределах таблицы;
  • максимальная или точная длина значения поля в символах;
  • способ форматирования данных;
  • различные дополнительные условия (максимальная и минимальная дата).

Основные типы и форматы полей, поддерживаемые большинством СУБД:

  • числовые - целые и вещественные;
  • строковые;
  • бинарные;
  • логические;
  • дата и время;
  • перечисления и множества.

В некоторых базах в отдельный тип могут быть выделены гиперссылки, денежные величины, примечания, сообщения об ошибках.

Тип поля определяет набор ограничений целостности, которые могут быть к нему применены. Во многих системах управления базами данных эти типы специфицированы и изначально включают в себя ряд ограничений. Хорошим примером может служить тип TINYINT в СУБД MySQL, принимающий целые числа в ограниченном диапазоне.

Строки

Строковые значения могут содержать любые символы. Основное ограничение накладывается на длину.

Строки могут быть фиксированной или переменной длины. Во втором случае обычно устанавливается максимально возможный размер. Наиболее распространенное ограничение по длине для строк в БД - 255 символов.

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

  • CHAR - фиксированная длина до 255 символов. Если размер строки меньше установленного, она будет дополнена пробелами.
  • VARCHAR, TINYTEXT - переменная длина до 255 символов, для хранения размера тратится дополнительный байт.
  • TEXT, MEMO - переменная длина до 65.535 символов.
  • MEDIUMTEXT - максимум 16.777.215 знаков.
  • LONGTEXT - максимально 4.294.967.295 символов в строке.

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

Очень большие фрагменты текста могут также храниться в полях типа BLOB, которые рассмотрены ниже.

Возможные ограничения целостности: длина строки, обязательность, значение по умолчанию.

Числа

Существует большое количество числовых форматов, поддерживаемых базами данных: целые, длинные целые, вещественные, дробные с плавающей и фиксированной точкой.

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

Для целых чисел:

  • TINYINT, байт - диапазон значений 0 - 255 (или -127 - 128);
  • SMALLINT - от 0 до 65.535 (от -32.768 до 32.767);
  • MEDIUMINT - от 0 до 16.777.215 (от -8.388.608 до 8.388.607);
  • INT - от 0 до 4294967295 (от -2.147.483.648 до 2.147.483.647);
  • BIGINT - от 0 до 18.446.744.073.709.551.615 (от -9.223.372.036.854.775.808 до 9.223.372.036.854.775.807).

Для вещественных чисел:

  • FLOAT - число знаков в дробной части мантиссы не больше 24.
  • DOUBLE, REAL - число с двойной точностью, после точки может быть до 53 знаков.

Существует еще один специфический тип поля БД - DECIMAL (NUMERIC). Это такое же число, как DOUBLE, записанное, однако, в виде строки.

Всегда следует выбирать минимально возможный размер поля. Например, для хранения экзаменационной оценки студента вполне хватит одного байта TINYINT. Это позволяет экономить ресурсы базы данных. Например, поля BIGINT относятся к самым редко используемым типам, так как практически ни одно приложение не оперирует числами в таком огромном диапазоне.

Возможные ограничения целостности данных:

  • размер;
  • форматирование данных (в некоторых СУБД): числа могут быть представлены в процентном, экспоненциальном, денежном формате;
  • размер дробной части;
  • значение по умолчанию;
  • уникальность;
  • автозаполнение (нумерация записей).

Поля с числовым типом данных зачастую становятся первичным индексом таблицы (при условии уникальности значений).

Счетчик

Поля-счетчики имеют числовой тип данных, но их значение присваивается каждой новой записи автоматически, самой базой. Каждый раз счетчик просто увеличивается на единицу, обеспечивая нумерацию строк в таблице.

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

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

Дата и время

Очень удобны для работы поля с типом данных "Дата" и "Время". Они позволяют сохранять данные в различных форматах:

  • DATE - только дата в формате "ГГГГ-ММ-ДД", например, "2018-04-04";
  • DATETIME - дата вместе со временем в формате "ГГГГ-ММ-ДД ЧЧ:ММ:СС", например, "2018-04-04 17:51:33";
  • TIME - только время в формате "ЧЧ-ММ-СС";
  • YEAR - год в формате "ГГ" (17) или "ГГГГ" (2017);
  • TIMESTAMP - временная метка, которая может обозначать, например, точный момент внесения записи в базу. Формат может быть разным, например, "ГГГГММДДЧЧММСС".

Основным ограничением целостности является способ форматирования данных.

Логические значения

Самый простой тип информации - логический, или булев. Он допускает всего два взаимоисключающих значения: TRUE (истина, 1) и FALSE (ложь, 0).

Поля с логическим типом данных используются для хранения так называемых флагов, которыми можно отмечать, получает студент стипендию или нет.

Бинарные данные

Базы данных предусматривают возможность хранения больших объемов информации. Аудио- и видеофайлы, изображения, фрагменты скомпилированного кода хранятся в BLOB-виде (Binary Large Object, двоичный большой объект).

Поля, предназначенные для записи таких данных, должны иметь один из следующих типов:

  • BINARY - двоичная строка фиксированной длины;
  • TINYBLOB;
  • BLOB;
  • MEDIUMBLOB;
  • LONGBLOB;
  • OLE-объект (Object Linking and Embedding, технология связывания и вставки объектов) - в Microsoft Access;

Массив двоичных данных не имеет пользовательских ограничений целостности. Работу с BLOB-объектами разные базы реализуют по-разному.

Перечисления

В некоторых СУБД существует возможность создать поле, значение которого будет выбираться из заранее определенного списка допустимых значений. Это очень похоже на работу радио-кнопки в HTML.

Такой тип поля называется ENUM. В разрешенном списке может быть максимум 65.535 строковых значений, из которых выбирается только одно.

Ограничение целостности в этом случае очевидно - все возможные значения поля базы заранее определены и не могут принимать других значений.

Множества

Очень похоже работает тип данных SET. Он также принимает список допустимых строковых значений, но позволяет выбрать сразу несколько из них. Так работает элемент чекбокс. Максимальное количество элементов в наборе - 64.

Выбор правильного типа поля базы данных имеет большое значение для организации работы приложения. Это связано с экономией ресурсов и различными способами обработки информации разных видов.

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

Комментарии