Определение полей в таблицах

Поля - это компоненты, представляющие структуру таблицы. По сути, у вас не может быть таблицы без полей. Например, вы можете создать пустую таблицу, в которой будут определены поля, но в ней не будет строк (записей).

В базах данных поля также используются для поддержки отношений между таблицами. Это выполняется путем установки соответствий между полями двух и более таблиц. Например, если в базе данных хранится таблица с именем toy_store, а также таблица staff, которая предназначена для ведения учета сотрудников в каждом магазине, то можно создать поле, общее для обеих таблиц, которое могло бы быть заполнено, например, значениями идентификаторов магазинов (store ID). Значение поля store ID для конкретного магазина игрушек будет одинаковым в обеих таблицах.

Ниже приводится таблица магазина игрушек, в которую было добавлено поле store ID:

Таблица с полем store ID
Таблица магазина игрушек с полем store ID

Таблица магазина игрушек связана с таблицей сотрудников полем store ID. В следующей таблице показано три сотрудника магазина Play House:

Таблица сотрудников
Таблица сотрудников, связанная с таблицей магазинов с помощью ID

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

Поля в таблице хранят одну и ту же категорию данных с одним и тем же типом данных. Например, если у вас имеется поле с именем NAME в таблице пользователей (customers), то всеми входными записями для данного поля будут имена пользователей, и они будут храниться как текстовый тип данных (text). Вы не будете смешивать эти входные записи — вы не поместите имя пользователя в данное поле в одной строке (записи), а имя продукта в том же самом поле в другой строке (записи).

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

Имена полей

Имена полей - это имена, которые вы присваиваете для столбцов таблицы. Имена должны нести в себе информацию о том, какие данные содержатся в каждом столбце. Например, при создании нового класса пространственных объектов в ArcCatalog в таблице автоматически создаются и заполняются поля ObjectID и Shape. Поле ObjectID содержит уникальные номера идентификаторов (ID) для каждого объекта в классе пространственных объектов. Поле Shape определяет тип геометрии, хранящийся в классе пространственных объектов — точка, линия, полигон, мультиточка или мультипатч.

Вам также следует принять во внимание возможность использования связанных словосочетаний для обозначения типа столбца. Например, если вы создаете для таблицы отдельный столбец уникальных ID, который вы будете использовать для индексирования, то вы можете присвоить этому полю имя ID_UK, — UK означает, что это уникальный ключ (unique key).

Имена полей в одной и той же таблице должны быть уникальными; например, у вас не может быть двух столбцов с именем ObjectID. Имена должны также начинаться с буквы и не должны содержать пробелов или зарезервированных слов. Длина названий полей должна быть не должна превышать 64 символа для файловых и персональных баз геоданных, 31 символа в SQL Server and SQL Express, 30 символов в базах геоданных в Oracle и DB2 и 10 символов в dBASE.

Определенные имена полей будут отображаться в ArcGIS под своими полными именами для таблиц, хранящихся в базе геоданных ArcSDE. Например, если вы создаете или импортируете полигональный класс пространственных объектов, который имеет поле с именем Area, то к его имени будет добавлено имя базы данных, схема и имя таблицы. Именно это название вы увидите в таблице атрибутов класса пространственных объектов. Это означает, что для полигонального класса пространственных объектов с именем archsites, хранимого в схеме prof в базе данных museum, поле Area будет выглядеть так:

MUSEUM.PROF.ARCHSITES.AREA

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

FID, AREA, LEN, POINTS, NUMOFPTS, ENTITY, EMINX, EMINY, EMAXX, EMAXY, EMINZ, EMAXZ, MIN_MEASURE, MAX_MEASURE

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

Псевдонимы полей

Псевдонимы полей позволяют вам назначить для поля альтернативное имя. Вы чаще всего будете использовать те имена полей, которые имеют максимально малую длину и позволяют определить, какие данные содержатся в данном поле. Вы также не сможете использовать пробелы или специальные символы в именах полей, поскольку как показано выше, определенные поля отображаются в таблице полностью определенными именами. В этих случаях вы могли бы использовать псевдонимы полей для присвоения полю более информативного имени. Например, если у вас имеется поле с именем ST_SUFX, в котором хранится значение типа улицы (это было указано с помощью суффикса, используемого для имени улицы), то вы могли бы присвоить этому поле псевдоним Street type.

Поскольку сами имена полей не могут быть изменены, и если вы после создания класса объектов решите изменить имя, то вы сможете использовать псевдоним для замены имени поля, которое видят пользователи. Если создано и заполнено поле ST_SUFX, а затем было решено, что добавление к имени поля SUFX было неудачным, то можно назначить псевдоним поля, чтобы пользователи видели, например, Street type, а не ST_SUFX.

Более подробно о том, как указать псевдоним поля

ПодсказкаПодсказка:
Существуют методы геообработки, позволяющие проверять корректность названий таблиц и полей. Более подробно см. в статье Работа с базами геоданных на языке Python.

Использование доменов для контролирования значений в полях

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

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

Использование атрибутивного домена для поля, хранящего данные по цвету глаз, могло бы обеспечить некоторую последовательность, или согласованность значений. Если человеку, производящему сбор данных, было бы разрешено вводить для цвета глаз в текстовое поле любой цвет, то вы бы могли запутаться во всех этих значениях глаз голубого цвета:

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

Типы атрибутивных доменов

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

Домены кодированных значений (Coded value domain) — используют коды для определения набора возможных значений поля, в котором хранятся дискретные данные

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

  • Blk = Черный
  • Brn = Коричневый
  • Blu = Голубой
  • Grn = Зеленый
  • Hzl = Карий
  • Gra = Серый
  • Vlt = Фиолетовый

Или

  • 1 = Черный
  • 2 = Коричневый
  • 3 = Голубой
  • 4 = Зеленый
  • 5 = Карий
  • 6 = Серый
  • 7 = Фиолетовый

Домен с диапазоном — определяет для поля диапазон возможных числовых значений

Чтобы вы смогли использовать интервальный домен, поле должно иметь численный тип (numeric) или содержать даты (date). Примером поля, для которого вы можете использовать интервальный домен, может служить поле, в котором хранятся данные о весе тела при живорождении у горилл в зоопарках западной низменности. Интервал будет начинаться с самого малого веса (1 кг) и заканчиваться самым высоким (2.5 кг).

Дополнительные сведения об атрибутивных доменах см. в статье Краткий обзор атрибутивных доменов.

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

Использование подтипов

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

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

Вот правила, применяющиеся для подтипов:

  1. В таблице или классе пространственных объектов только одно поле может иметь определенные для него подтипы.
  2. Чтобы вы могли использовать подтипы, поле, для которого вы хотите использовать подтип, должно быть с типом длинное целое (long integer) или короткое целое (short integer).
  3. Вы можете использовать различные правила топологии и отношений для различных подтипов. Можно также использовать различные атрибуты или домены с кодированными значениями для других полей в таблице на основании подтипов.

Шаги для применения подтипов

Шаги:
  1. Убедитесь в том, что поле, для которого вы хотите использовать подтип, имеет тип длинное целое (long integer) или короткое целое (short integer). Если это не так, то добавьте поле с типом длинное целое (long integer) или короткое целое (short integer) в таблицу или класс пространственных объектов. В большинстве случаев, поля с типом короткое целое (short integer) должно быть достаточно. Однако если существует возможность использования в подтипе значений, превышающих 32767, то используйте поле с типом длинное целое (long integer).

    Например, для класса пространственных объектов для рек вы бы могли добавить поле с типом короткое целое (short integer), присвоить ему имя Watershed для создания подтипов на основании бассейна водосбора, к которому данная река принадлежит.

  2. На вкладке Подтипы (Subtypes) диалогового окна Свойства (Properties) для таблицы или класса пространственных объектов укажите поле подтипа, выбрав его из первого раскрывающегося списка.

    В случае примера с реками можно было выбрать поле Watershed в списке Поле подтипа (Subtype Field).

  3. Новый подтип будет автоматически добавлен в таблицу Subtypes. В данном подтипе по умолчанию имеется столбец Код (Code) со значением 0 и Описание (Description) Нового подтипа (New Subtype). Вы можете щелкнуть дважды в каждом из этих полей, чтобы ввести код подтипа и необходимое описание.

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

  4. Для добавления подтипов продолжайте добавлять коды подтипов и их описания в таблице Подтипы (Subtypes).

    В поле, расположенном под полем с кодом 1, можно добавить код 2 с соответствующим именем водосборного бассейна в поле Описание (Description). Ниже этого поля добавьте код 3 с соответствующим именем водосборного бассейна и т.д. Делайте так до тех пор, пока не создадите коды и описания для всех водосборных бассейнов, представленных в вашем классе пространственных объектов для рек.

  5. Для определения различных значений по умолчанию или доменов для каждого подтипа щелкните на подтипе в списке Подтипы (Subtypes). В списке Значения и домены по умолчанию (Default Values and Domains) можно ввести значение по умолчанию для любых полей в этом списке. Вы также можете использовать для полей в этом списке атрибутивные домены или домены с кодированными значениями. Для этого щелкните на поле Домен (Domain) и выберите домен из раскрывающегося списка. Если доменов еще нет, можно создать новый домен, нажав кнопку Домены (Domains) в нижней части диалогового окна Свойства (Properties). При нажатии на нее откроется диалоговое окно Домены рабочей области (Workspace Domains).

    Значения по умолчанию и домены, которые вы определяете, будут использоваться для того подтипа, который вы выбрали из списка Подтипы (Subtypes). Если вы щелкнете на другом подтипе в списке Подтипы (Subtypes), то значения по умолчанию и домены будут либо пустыми (если вы не определили для этого подтипа значения по умолчанию и домены) или будут содержать другие значения.

Более подробно о подтипах

Связанные темы

12/10/2012