Puede utilizar SQL para crear una vista en las tablas y clases de entidad de una geodatabase corporativa para restringir qué columnas o registros están disponibles para los usuarios de vistas, o bien definir una vista para unir información de dos tablas o una clase de entidad y una tabla. Al incluir la columna espacial en la definición de la vista, los usuarios de la vista pueden visualizar las entidades de un mapa en un cliente de ArcGIS Desktop.
Los ejemplos de este tema muestran cómo crear vistas en una base de datos de PostgreSQL. Una vista restringe el acceso del usuario a columnas concretas. La otra vista presenta contenido de dos tablas distintas. Los ejemplos se basan en tablas con las siguientes definiciones:
Definición de tabla para empleados
CREATE TABLE employees(
emp_id integer not null,
name varchar(32),
department smallint not null,
hire_date timestamp without time zone not null
);
Definición de tabla para regiones
CREATE TABLE regions(
objectid integer not null,
r
emp_id integer not null,
rname varchar(32),
);
Otorgar privilegios en la tabla
Si el usuario que crea la vista no es el propietario de la tabla o las tablas en las que se basa la vista, el propietario de la tabla debe otorgar al creador de la vista como mínimo el privilegio de selección en las tablas.
En este ejemplo, las tablas en las que se basan las vistas (empleados y regiones) son propiedad del usuario gdb. El usuario que crea las vistas es el usuario rocket.
psql testdb gdb Enter password for user gdb:
GRANT SELECT ON gdb.employees TO rocket;
GRANT SELECT ON gdb.regions
TO rocket;
Crear una vista para restringir el acceso
En este ejemplo, el usuario rocket crea una vista (view_dept_201) en la tabla de empleados para restringir el acceso solo a aquellas filas en las que el departamento es 201:
psql testdb rocket Enter password for user rocket:
CREATE VIEW view_dept_201 AS SELECT emp_id, name, hire_date FROM gdb.employees
WHERE department = 201;
Crear una vista para unir dos tablas
En este ejemplo, la vista —emp_regions_view— une una tabla espacial (clase de entidad) a una tabla no espacial basada en la columna emp_id. La vista incluye el ObjectID, la columna espacial (region) y el nombre de la región (rname) de la clase de entidad de regiones junto con el nombre del empleado y el Id. de la tabla de empleados.
CREATE VIEW emp_regions_view AS SELECT (e.emp_name,e.emp_id,r.objectid,r.rname,r.region)
FROM employees e, regions r
WHERE e.emp_id = r.emp_id;
Otorgar privilegios en las vistas
Puede otorgar privilegios en las vistas a usuarios específicos sin tener que otorgarle a estos usuarios acceso a las tablas base (empleados y regiones). En este ejemplo, se otorga al usuario dispatch_mgr privilegios seleccionados para ambas vistas:
GRANT SELECT ON rocket.view_dept_201 TO dispatch_mgr;
GRANT SELECT ON rocket.emp_region_view
TO dispatch_mgr;
El usuario dispatch_mgr puede acceder ahora a view_dept_201 para ver registros de empleados de todos los empleados del departamento 201 y acceder a emp_region_view desde una conexión de base de datos en ArcMap o ArcGIS Pro para ver todas las regiones. Cuando dispatch_mgr consulta una región en la vista, ArcGIS devuelve el nombre de la región y el nombre y el Id. de todos los empleados de dicha región.