4 votos

En términos de SQL, ¿qué hace exactamente el "identificador único" de Query Layer?

Cuando usted hace un enlace con una base de datos mediante la Consulta de la Capa en ArcMap, se debe seleccionar un Identificador Único, que asegura que la Capa resultante sólo ha únicos registros en la tabla de atributos.

En algunos casos, he observado que se utilizan Capas de Consulta de tal manera que el Identificador Único se le preguntó por ArcMap se utiliza para asegurarse de que los registros son distintos (reducción de 4000 500 registros, por ejemplo)

Pero en términos de SQL exactamente qué está haciendo? Es una cláusula "where", seleccionando distintas, seleccionando el mínimo o máximo de lo que se encuentra? Sé que es creado un ObjectID basado en identificadores únicos, pero no sé cómo es la asignación que ObjectID a filas y decidir sobre las filas que se cayó de la tabla de atributos.

6voto

M. B. Altaie Puntos 11

Creo que eres un malentendido con el propósito de que el campo de identificador único, y el uso de formas que generará resultados indefinidos.

Cuando una Capa de Consulta se define, se le da una gran libertad de acción para generar una consulta SQL. ArcGIS utiliza esa consulta, con diversas limitaciones al acceso a los datos. El más frecuente es un filtro espacial de la cláusula (utilizando el mapa de lona límites para reducir el conjunto de características de la representación). Pero la consulta también se ejecuta cuando la tabla asociada con una clase de entidad que se abre, o cuando una de Identificar la operación que se realiza cuando una fila en la tabla de la característica resaltada, o cuando un espacio se hace la selección.

El propósito de la identificador único para mantener el vínculo entre las filas de los objetos de la tabla y los gráficos en el mapa de lona. No hay nada especial acerca de la columna de identificador (que puede ser de INTEGER, STRING, UUID, o la FECHA integral de tipos), excepto que debe ser NO NULO, y que devuelven un único valor.

ArcGIS exige la exclusividad, pero no puede evitar que las diversas formas de no admitidos de manipulación, como el uso de un arbitrario número de fila (rownum) en el identificador único. La razón de esto no es compatible es que viola el propósito de la identificador: Si usted tiene consultas espaciales para que rownum 1 cumple con los criterios de selección, a continuación, intenta resaltar rownum 1 en la tabla de negocios, que son no probable que sea la misma fila! La misma apariencia escamosa se aplica si UNION características y uso MIN() o MAX() en la columna rowid o de otro tipo de acciones que alteran la intención de preservar la relación 1:1 entre las características y las filas.

Así, el único identificador debe ser una verdadera propiedad de la fila, y se espera que sea repetible en consultas posteriores, no importa lo WHERE cláusula se aplica. Si usted está solicitando un DISTINCT operador, es posible que se están preparando para un comportamiento inesperado (no es probable que ser un costo de rendimiento). En ningún caso el ArcGIS elegir "qué filas se elimina de la tabla de atributos" -- esto es siempre en el ámbito de competencia de la base de datos.

2voto

dhrose Puntos 8

Para responder a su pregunta, la forma en que funciona es que la base de datos devuelve una fila por cada uno de los valores distintos, pero no hay ninguna garantía de que cada vez que utilice la capa de la misma, se devuelven las filas. Qué fila se apega a es un tanto arbitraria, especialmente si las personas son de la edición de la tabla en cuestión.

Alternativas para el identificador único que en realidad no es única, puede variar dependiendo de la consulta real y lo que realmente se desea que la consulta devuelva. Depende de si usted necesita para unirse o filtro de tablas, si usted necesita para editar y cómo estática de los datos.

Si usted sólo tiene que poner una copia de una sola tabla, y que se carece de un identificador único del tipo de columna correcto, puede utilizar la Copia de las Filas de la herramienta. Esto creará una copia de la tabla con un nuevo ObjectID de la columna.

Usted podría tener el administrador de base de datos agregar una columna de identificador único para cada tabla en la que debe estar unido en su capa de consulta.

Usted podría tener el administrador de base de datos crear una tabla de la vista para usted. Esta es una tabla compilada a partir de una consulta SQL, por lo que se pueden unir y filtrada. Esto sería hacer lo mismo que está tratando de hacer con su capa de consulta, excepto de hacerlo sobre la base de datos secundarios. Vistas permanecer sincronizados con los datos que se están tirando de, de manera que permanezcan actual.

Francamente, es posible que la persona que pone la capa de consulta juntos, no sé SQL muy bien. Tal vez la consulta podría ser fijo para hacer lo que quieres hacer. Tal vez se puede conseguir a alguien más sabio para ayudar a ellos.

Espero que esta información le dará algunas ideas para discutir con sus compañeros de equipo.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X