Ejemplo: Crear una vista de base de datos en DB2 con SQL y registrarla con ArcSDE
Puede utilizar SQL para crear una vista en una geodatabase de ArcSDE. Para consultar la vista con ArcGIS, debe registrarla con ArcSDE.
Para registrar la vista con ArcSDE, la tabla subyacente desde la que se crea la vista debe contener una columna de Id. de fila calificada. Los Id. de fila son columnas únicas, de enteros no nulos utilizadas por ArcSDE para identificar unívocamente las filas en una tabla o vista. Aunque puede crear una vista sin registrar una columna Id. de fila, esa vista tiene funcionalidad limitada en ArcGIS porque se requiere una columna Id. de fila registrada para selecciones y consultas en ArcGIS.
El ejemplo de este tema muestra cómo se puede registrar una vista creada en IBM DB2 mediante SQL con ArcSDE. El ejemplo se basa en una tabla con la siguiente definición:
CREATE TABLE employees(emp_id integer not null, name varchar(32), department smallint not null, hire_date date not null);
Tenga en cuenta que la tabla contiene una columna de enteros no nulos que se puede utilizar como un Id. de fila de ArcSDE (emp_id). Esta columna se debe incluir en la definición de vista, lo que le permitirá registrarla con ArcSDE.
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 otorgarle al creador de la vista como mínimo el privilegio de selección en la tabla. Si el propietario de la vista necesita poder otorgarle privilegios en la vista a otros usuarios, el propietario de la tabla debe otorgarle al propietario de la vista la capacidad para otorgar privilegios a otros usuarios.
En este ejemplo, la tabla en la que se basa la vista (empleados) pertenece al usuario gdb. El usuario que crea la vista es el usuario rocket. Además, el usuario rocket debe otorgar privilegios en la vista a otros usuarios. Por lo tanto, el usuario gdb debe otorgarle al usuario rocket el privilegio de selección en la tabla de empleados e incluir WITH GRANT OPTION para que rocket pueda otorgarle a otros usuarios el privilegio de selección en la vista.
db2 => connect to testdb user gdb using gdb.dbg Database Connection Information Database server = DB2 9.5.5 SQL authorization ID = GDB Local database alias = TESTDB db2 => GRANT SELECT ON employees TO USER rocket WITH GRANT OPTION; DB20000I The SQL command completed successfully.
Crear una vista
En este ejemplo, el usuario rocket crea una vista en la tabla de empleados para restringir el acceso sólo a aquellos registros en los que el departamento es 201.
db2 => connect to testdb user rocket using nopeeking Database Connection Information Database server = DB2 9.5.5 SQL authorization ID = ROCKET Local database alias = TESTDB db2 => CREATE VIEW view_dept_201 AS SELECT emp_id, name, department, hire_date FROM gdb.employees WHERE department = 201; DB20000I The SQL command completed successfully.
Otorgar privilegios en la vista
Puede otorgar privilegios en la vista a usuarios específicos sin tener que otorgarle a estos usuarios acceso a la tabla base (empleados). En este ejemplo, al usuario mgr200 se le otorgan privilegios selectos en la vista, view_dept_201:
db2 => connect to testdb user rocket using nopeeking Database Connection Information Database server = DB2 9.5.5 SQL authorization ID = ROCKET Local database alias = TESTDB db2 => GRANT SELECT ON view_dept_201 TO USER mgr200; DB20000I The SQL command completed successfully.
Probar privilegios
Inicie sesión como mgr200 y seleccione registros en view_dept_201.
db2 => connect to testdb user mgr200 using mgr200 Database Connection Information Database server = DB2 9.5.5 SQL authorization ID = MGR200 Local database alias = TESTDB db2 => SELECT * FROM rocket.view_dept_201; emp_id name dept hire_date 112 LOLLI POP 201 06/30/2007 134 VAN CHIN 201 10/15/2007 150 DON GUN 201 03/01/2009
Como se esperaba, sólo se devuelven los registros para los empleados en el departamento 201.
Registre la vista con ArcSDE
Para consultar o seleccionar registros en una vista desde una aplicación cliente de ArcGIS, debe registrar la vista con ArcSDE. Al registrar la vista con ArcSDE, se agrega un registro a la tabla del sistema TABLE_REGISTRY de ArcSDE.
Utilice el comando sdetable con la operación de registro para registrar la vista. Sólo el propietario de la vista puede registrarla con ArcSDE. Por lo tanto, el nombre y la contraseña del usuario rocket se deben proporcionar con el comando sdetable al registrar view_dept_201.
sdetable -o register -t rocket.view_dept_201 -c emp_id -C SDE -i sde:dbe -s mydb2server -D testdb -u rocket -p nopeeking
En este ejemplo, el Id. de fila (emp_id) se registra como mantenido por ArcSDE. Si su vista es de sólo lectura, puede registrar el Id. de fila como mantenido por el usuario.
Para obtener más información acerca del comando sdetable, consulte la Referencia sobre el comando de administración.