Al conectarse a la base de datos Impact, Ud. puede hacerlo por una conexión a base de datos. La conexión almacena información como la ubicación de la base de datos en su red, concretamente una cadena de conexión ADO o una fuente ODBC que permite acceder a la base de datos.
Para conectarse, es preciso un nombre de usuario y contraseña que serán suministrados por el administrador del sistema Impact.
El término base de datos tiene distintos significados para cada persona. Una "base de datos Impact" incluye una verdadera base de datos, pero también puede incluir archivos de dibujos (proyectos, símbolos y plantillas), archivos de usuario (dibujos de trabajo más ajustes) y archivos de configuración. La parte de verdadera base de datos es una base de datos relacional (que incluye tablas, campos, índices, etc.) que utiliza un motor de base de datos cliente-servidor (Microsoft SQL Server, Oracle, MySQL). Opcionalmente puede "blobear" la base de datos, o sea convertir todos los archivos (dibujos, parámetros, configuración) en una base de datos BLOBS (término técnico: objetos binarios grandes) y guardarlos en una verdadera base de datos. En tal caso la "base de datos Impact" y la "verdadera base de datos" son sinónimos.
Temas relacionados: Base de datos > Gestión.
Relación de muchos a muchos
Introducción
En esta sección se describen los detalles de implementación del soporte de bases de datos de uno a muchos y de muchos a muchos en Impact. Incluye las siguientes características:
- La opción de definir las relaciones de tablas entre tanto tablas internas como personalizadas.
- Configurar una VBD para abrir una o varias VBD hijos para editar registros relacionados.
- Configurar una VBD para incluir uno o más vistas de lista hijo incrustadas.
- Configurar una VBD vista de lista para mostrar múltiples registros de una tabla como una lista.
- Almacenar datos hijos relacionados para tablas personalizadas.
- Almacenar datos hijos relacionados para usuarios y sitios.
- Almacenar datos hijos relacionados incrustados durante la vida de proyectos de trabajo.
- Actualizar datos hijos relacionados al realizar una actualización.
- Eliminar datos hijos relacionados al eliminar elementos.
Configuración de tablas
La consideración más importante es determinar qué datos adicionales Ud. desea almacenar con cada elemento de Impact, ya sea un proyecto, una capa (o tipo de capaextra), una plantilla, un símbolo, un cliente, un contacto, un usuario o un sitio. También se puede almacenar datos adicionales para una tabla personalizada nueva o existente.
Simplemente defina una nueva tabla personalizada para almacenar los datos relacionados y luego adjunte esos datos a la tabla padre a través de una clave ajena.
Una vez las tablas añadidas, es importante definir las relaciones entre ellas para que Impact las conozca. Véase Configuración de relaciones más abajo.
Relación de uno a muchos
Cree una tabla personalizada que contenga los datos que desea almacenar para la tabla padre. Esta tabla personalizada contendrá cero o más registros relacionados con un único registro padre.
Por ejemplo, para crear una tabla que almacene datos relacionados adicionales para cada registro de DRAWINGS, Ud. podría definir una tabla como la que se muestra a continuación.
La tabla personalizada DRAWINFO almacenará cero o más registros para cada registro DRAWINGS.
No se especifican propiedades del menú de base de datos, ya que esta tabla no debería aparecer en el menú de base de datos de Impact.
Tiene especificadas las columnas DI_DATE and DI_TIME para almacenar automáticamente las horas de modificación de los registros.
Al definir los campos de la tabla, es importante incluir un enlace de clave ajena a la tabla padre. En este caso se utilizará DI_DRAWKEY para relacionar cada registro DRAWINFO con un registro DRAWING particular. Se recomienda indexar todas las claves ajenas.
Los campos restantes de la tabla DRAWINFO se utilizan para almacenar los datos específicos que le interesan. Los datos que almacene serán específicos de la personalización/automatización que esté implementando.
Ud. puede especificar que las columnas sean obligatorias, en cuyo caso Impact lo exigirá para cada registro de tabla que se añada.
Relación de muchos a muchos
El ejemplo anterior contenía una sola clave ajena que se utilizará para vincular la tabla DRAWINFO de nuevo a un solo registro DRAWINGS. Esto crea una relación uno a muchos; un registro DRAWINGS a muchos registros DRAWINFO.
Para crear relaciones de muchos a muchos, es necesario definir relaciones de clave ajena adicionales desde la tabla hija a otras tablas de la base de datos Impact.
La tabla LAYINFO de ejemplo que se muestra a continuación contiene varias columnas de clave ajena.
La columna LI_LEYKEY relaciona cada registro LAYINFO de nuevo a un solo registro LAYERS.
La columna LI_COLKEY es una clave ajena a la clave primaria COL_KEY de una tabla personalizada COLOURS.
La columna LI_COLKEY es una clave ajena a la clave primaria COL_KEY de una tabla personalizada COLOURS.
Debido a estas columnas de clave ajena adicionales y a las relaciones de tablas, se conocen colectivamente como una relación de muchos a muchos.
Muchos registros LAYERS están relacionados con muchos registros COLOURS mediante una tabla de enlace LAYINFO.
En Impact, la tabla de enlace de muchos a muchos más pequeña contiene tres columnas: la columna de clave primaria y dos columnas de clave ajena que enlazan dos tablas.
Contactos y direcciones de CUSTOMER
Hay dos tablas internas que también pueden utilizarse con los nuevos controles vista de lista disponibles en las VBD.
La tabla CONTACTS tiene una clave ajena para enlazar una dirección a un CUSTOMER, específicamente CC_CUSTKEY.
La tabla ADDRESS tiene cuatro claves ajenas definidas que pueden enlazar una dirección a una de cuatro tablas padres, específicamente A_USERKEY, A_CUSTKEY, A_CONTKEY y A_SITEKEY.
Fechas/horas de modificación
Ud. puede configurar una columna de fecha y hora para almacenar las horas de modificación de una tabla personalizada.
Impact sincronizará las columnas de fecha y hora de modificación cuando se añade o actualiza cada registro hijo relacionado. Para los datos relacionados a proyectos (DRAWINGS, LAYERS, ONE_UP, MULTI_UP, etc.) se sincronizará las columnas de fecha y hora de modificación con la hora real de la actualización del proyecto.
Estas columnas también son de sólo lectura en cualquier VBD.
Elementos del menú de base de datos
Anteriormente, todas las tablas de la base de datos que tenían una asignación en Instalación de la base de datos > Asignaciones de VBD o Operación de la base de datos > Asignaciones de VBD tenían un elemento de menú asociado en el menú base de datos de Impact.
Anteriormente se generaba automáticamente un título de elemento de menú a partir del nombre de tabla si la tabla no tenía texto de menú configurado en el grupo menú de base de datos de las propiedades estructura de tabla.
Dado que ahora se pueden especificar asignaciones de VBD para tablas hijas que quizás no necesiten un elemento de menú en el menú de la base de datos Impact, este comportamiento ha cambiado.
Las asignaciones de VBD SOLO se añadirán al menú de la base de datos Impact si tienen especificado un texto del menú.
Las bases de datos existentes se actualizan automáticamente para que el texto del menú se genere a partir del nombre de la tabla si falta. Por lo tanto, no es necesario realizar cambios en la configuración de las bases de datos existentes.
Las nuevas tablas que se añadan deberán tener un texto de menu configurado si necesitan aparecer en el menú de la base de datos de Impact.
Peticiones de tablas
Se ha añadido la nueva propiedad petición para cada tabla en el formulario estructura de tabla.
Actualmente se utiliza para mostrar nombres de tabla amigables cuando se solicita eliminar tablas. No puede depender del texto del menú ya que es posible que no esté configurado (véase más arriba).
Las bases de datos existentes se actualizan automáticamente y la petición se copia del texto del menú.
Configuración de relaciones
Tras haber definido las tablas para almazenar los datos adicionales, debe definir las relaciones entre las tablas para que Impact las conozca.
Esto se hace a través de Instalación de la base de datos > Relaciones de tablas que solía estar en la página de opciones Instalación de la base de datos > Consultas avanzadas.
Defina cada una de las relaciones de tabla utilizando las claves ajenas que creó al definir las tablas. Para el ejemplo de DRAWINFO anterior defina la relación de tabla de DRAWINFO.DI_DRAWKEY a DRAWINGS.D_KEY como se muestra a continuación.
Para el ejemplo anterior de LAYINFO se definirían tres relaciones de tabla:
- LAYINFO.LI_LAYKEY a LAYERS.L_KEY
- LAYINFO.LI_COLKEY a COLOURS.COL_KEY
- LAYINFO.LI_USERKEY a USERS.U_KEY
Las relaciones se pueden definir entre columnas de tipo entero y de tipo carácter, aunque lo habitual es usar relaciones de tipo entero utilizando las claves padres.
Visualización de la estructura
Una vez definidas las tablas y las relaciones de tablas, puede visualizar cómo están relacionadas utilizando una aplicación externa llamada Graphviz.
Se recomienda utilizar la versión de línea de comandos en lugar de enlazar una versión de biblioteca específica, ya que facilita las actualizaciones.
Graphviz está disponible en https://www.graphviz.org/. Tras haberlo instalado, haga clic en Visualizar e Impact le pedirá que configure la ubicación. La configuración se almacena en la estación de trabajo, en el registro en lugar de en la configuración del usuario, ya que es específica de una instalación de estación de trabajo.
Impact simplemente genera un archivo .xml que contiene la notación 'dot' de Graphviz y llama a la línea de comandos dot.exe para generar un archivo .png, que luego se visualiza utilizando la aplicación Windows asociada.
Hay algunas opciones que Ud. puede configurar para controlar qué tablas y columnas están incluidas n en la salida xml. Puede acceder a estas opciones después de la configuración inicial utilizando la flecha derecha del botón Visualizar.
Ejemplo de visualización
El siguiente ejemplo se ha creado para las tablas de ejemplo DRAWINFO y LAYINFO y las relaciones de tablas comentadas en las secciones anteriores.
Las tablas de color marrón claro son tablas internas de Impact; las tablas de color azul claro son tablas personalizadas de Impact.
Las relaciones de tabla internas de Impact se muestran en negro, mientras que las relaciones de tabla definidas por el usuario se muestran en azul.
Una línea con cabeza de diamante representa una relación de uno a muchos, donde el extremo del diamante indica la tabla que puede contener muchos registros para una sola clave padre. Un diamante relleno representa una clave ajena no nula, mientras que un diamante abierto representa una clave ajena que puede ser nula.
También hay una línea de doble cabeza con círculo relleno que representa una relación de uno a uno, como LAYERS.L_EXTKEY a ONE_UP.OU_KEY. Las relaciones de tabla uno a uno no pueden ser definidas por el usuario.
Ventanas de base de datos directas e incrustadas
Una vez definidas las tablas y las relaciones entre tablas, es necesario configurar las VBD adecuadas para introducir esos valores.
Hay dos tipos de VBD y cada uno admite datos relacionados de una manera ligeramente diferente.
Los VBD directas sirven para introducir datos en tablas personalizadas y están disponibles a través del menú base de datos de Impact.
Las VBD incrustadas sirven para introducir y mostrar datos relacionados con otros objetos de Impact, como proyectos, plantillas, símbolos, capas, usuarios y sitios. Las VBD incrustadas no almacenan los datos inmediatamente en sus tablas de destino, sino que almacenan la información internamente y la utilizan para añadir/actualizar/eliminar filas según convenga.
Las VBD incrustadas también se utilizan en el navegador Impact para mostrar información de la base de datos de proyectos y capas. Las VBD incrustadas utilizadas en el navegador Impact son de sólo lectura.
Configuración de ventanas de base de datos
Hemos mejorado el formulario Atributos de campo para configurar campos de VBD utilizando un control de página para las propiedades principales de cada tipo de control.
El tipo de control se ha desplazado encima del control de página para indicar que debe seleccionarse primero.
Hemos añadido dos nuevos tipos de control: Tabla vista de lista y Tabla hijo vista de lista.
La función de prueba al editar VBD es compatible con estos nuevos controles vista de lista e incluso permite añadir/editar/eliminar filas de los controles de vista de lista. No se actualizan ningunos datos en el modo de prueba.
Configuración del menú/botón de ventana de base de datos
Se ha desplazado el comando Eliminar todo del menú Acción a un botón. Está oculto si de no configuralo en la VBD.
Anteriormente, solo se podían configurar elementos adicionales del menú Acción en una VBD. Ahora también se pueden configurar botones de automatización adicionales.
La nueva acción Abrir VBD hijo permite abrir una VBD hijo para el registro padre actualmente mostrado.
Seleccione una relación apropiada para una tabla hijo -> tabla padre.
Seleccione una VBD particular o seleccione <Ninguno> para usar la asignación de VBD predeterminada para la tabla hijo.
Especifique un Título de VBD opcional que sustituirá los valores del registro padre actual.
Ahora Ud. puede especificar que el elemento de automatización de acción sea un menú o un botón.
Actualización de la ventana de base de datos CUSTOMER
La configuración existente de VBD CUSTOMER se actualiza automáticamente para incluir un botón de contactos y direcciones en la VBD. Esto permite una mayor personalización según sea necesario.
Actualización de la ventana de base de datos USERS
En versiones anteriores de Impact, para los clientes que utilizaban la autenticación LDAP para el acceso de usuarios, el formulario Propiedades de usuario incluía una página dirección cuando existía una asignación de VBD para la tabla ADDRESS. Esto permitía crear un solo registro de ADDRESS para el usuario.
Ahora, como cada usuario puede tener varios registros de ADDRESS es necesario configurar una vista de lista de tabla hijo en la VBD USERS para mostrar las direcciones.
Este cambio NO se realiza automáticamente y cualquier cliente que utilice LDAP deberá reconfigurar su VBD USERS según corresponda.
Los registros de dirección creados para cada usuario desde el directorio LDAP tendrán un valor A_DESCRPT de ‘LDAP’. Al editar el registro ADDRESS en una VBD, cualquier campo que tenga una asignación LDAP estará deshabilitado.
Las bases de datos se actualizan automáticamente para establecer la columna A_DESCRPT para las direcciones de usuario LDAP existentes.
Navegador Impact
El navegador Impact admite VBD tanto incrustadas en las páginas de Propiedades como a través del comando 'Base de datos' en el menú contextual.
Cualquier VBD configurada que contenga controles vista de lista de tabla hijo mostrará datos relacionados de sólo lectura.
Guardar proyectos
Al guardar un proyecto por primera vez, cualquier datos relacionados que se hayan añadido mediante VBD incrustadas se añaden automáticamente a la base de datos.
Cuando se utiliza la VBD integrada o VBD modales individuales que contienen controles vista de lista de tabla hijo, se comprueba la validez de las filas de la tabla antes de cerrar los diálogos modales.
Además, antes de guardar un proyecto, Impact comprueba que todas las filas de datos relacionadas tengan los valores de columna no nulos obligatorios. De este modo se garantiza la validez de las filas introducidas a través del cuadro de herramientas flotante de base de datos, ya que éstas no se comprueban cuando se utiliza la edición directa en una vista de lista de tabla hijo en el cuadro de herramientas.
Proyectos de trabajo
Durante la vida útil de un proyecto de trabajo, cualquier datos relacionados introducidos en las VBD incrustadas se almacenan en el mismo proyecto de trabajo.
Impact realiza un seguimiento de las filas de datos relacionados que se añaden, modifican o eliminan durante la vida útil del proyecto de trabajo.
Los datos relacionados no se escriben en la base de datos antes de actualizar el proyecto. Al descartar el proyecto o capas individuales, no se escriben ningunos datos relacionado en la base de datos.
Revisiones del proyecto
Cada revisión del proyecto creada que contiene geometría también se guarda con todos los registros de datos relacionados actuales de la base de datos.
Al seleccionar revisiones individuales en el navegador de Impact y ver la información asociada de base de datos, se mostrarán todos los datos relacionados de cuando se creó la revisión.
Revertir un proyecto a una revisión anterior reemplazará todos los datos relacionados actuales con los datos relacionados almacenados en la revisión del proyecto que se está restaurando.
Eliminar en cascada
Al quitar elementos de Impact, también se eliminan automáticamente todos los datos hijos relacionados.
Es aplicable a:
- Proyectos, incluidas todas las capas y registros de capa adicionales
- Plantillas y símbolos
- Clientes y contactos
- Usuarios
- Sitios
- Registros de tablas personalizadas