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 puede usar SQL para crear vistas creadas en una base de datos de Microsoft SQL Server. 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,
emp_name nvarchar(32),
department smallint not null,
hire_date datetime2 not null
);
Definición de tabla para regiones
CREATE TABLE regions( objectid integer not null, emp_id integer not null, reg_id integer not null, rname varchar(32), region geometry
);
Otorgar privilegios en las tablas
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.
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:
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_regions_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.