О соединении и связи таблиц

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

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

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

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

Соединение таблиц по атрибуту

Обычно к слою присоединяют таблицу с данными на основании значений поля, которое присутствует в обеих таблицах. Название поля в таблицах может различаться, но тип поля должен быть один и тот же: числовые поля соединяются с числовыми, строковые со строковыми и т.д. Можно выполнить соединение и при помощи диалогового окна Соединение данных (Join Data), которое открывается по щелчку правой кнопкой на слое в ArcMap, или с помощью инструмента Добавить соединение (Join).

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

Отношение один-к-одному и многие-к-одному

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

Отображение объектов на основании присоединенных демографических данных (Population)

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

Пример отношения многие-к-одному

Отношение один-к-одному и многие-к-одному

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

Это означает, что если вы создали соединение 1:M или M:M данными базы геоданных, и вам необходимо построить отчет, вы увидите несколько записей в отчете, по одной для каждого сопоставления. Множественные сопоставления также приводятся, при использовании присоединенных полей для присвоения условных знаков, присоединении слоя, надписывании, идентификации объектов, построении диаграмм, а также при использовании инструментов Найти и Гиперссылка. Если вы используете присоединенный слой в качестве входных данных для инструментов геообработки, или в операциях экспорта, также будут использованы множественные сопоставления записей.

ВниманиеВнимание:

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

Пространственное соединение данных

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

Можно выполнить пространственное соединение и при помощи диалогового окна Соединение и связи (Join Data), которое открывается по щелчку правой кнопкой на слое в ArcMap, или с помощью инструмента Пространственное соединение (Spatial Join).

Используя пространственное соединение, вы можете:

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

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

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

Связывание таблиц

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

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

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

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

Более подробно о создании классов отношений

Классы отношений в базе геоданных

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

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

Отличие соединений и связей

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

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

Сохранение соединений и связей

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

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

Если вы хотите, вы можете делать копию слоя со связанными данными на диске: просто экспортируйте слой. Чтобы экспортировать слой, щелкните на нем правой кнопкой в таблице содержания, укажите на Данные, затем Экспорт данных. При этом создается новый класс пространственных объектов со всеми атрибутами, включая атрибуты связанных полей.

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

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

В случае, если вам необходимо присоединить таблицу А и связать таблицу В со слоем С, возможны три варианта действий. Опишем все эти ситуации:

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

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

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

9/11/2013