martes, 9 de agosto de 2011

Dynamics NAV - Diagrama Entidad Relación (ERD)

Estoy trabajando para adquirir un grado de conocimiento importante en Navision y concretamente en LS Retail, uno de los add-on certificados más grandes del mercado y enfocado al sector del retail.

En mis andaduras entre varios libros, manuales del proveedor, foros y sobre todo por el customer-source de Microsoft, he echado en falta algo que, para los que nos hemos dedicado muchos años al mundo del desarrollo, es fundamental, concretamente el modelo de datos, o lo que es casi lo mismo el diagrama Entidad-Relación de la base de datos.

Si que he encontrado algún suscedáneo muy interesante, como por ejemplo el que podéis ver en el siguiente link http://www.mibuso.com/dlinfo.asp?FileID=398, pero lo que realmente me ha ayudado ha sido el descubrir la posibilidad de realizar yo mismo los diagramas de las partes funcionales que más me interesan.

Ya sabéis que Dynamics Nav permite crear objetos tipo 'Table' a través de su 'Object Dessigner' y que al especificar las propiedades de los campos de la tabla, podemos especificar la relaciones que estos tienen con las demás tablas. Sin embargo, a pesar de que Navision, al compilar la tabla, crea esa misma definición en la base de datos SQL Server (o una muy parecida) , las relaciones no se representan como 'Foreing Keys' y por tanto no son visibles a nivel de base de datos. En la siguiente imagen vemos una muestra:



En consecuencia, si, a través de la base de datos, intentamos generar un diagrama, este no mostrará en ningún momento las relaciones ni nos permitirá incorporar, de manera automática, todas las tablas foràneas.

Donde está la solución? Pues muy sencillo, simplemente tenemos que realizar los siguientes pasos:
  1. Abrimos el cliente clásico de Dynamics Nav.
  2. Vamos al menú Archivo / Base de datos / Modificar.
  3. En la pestaña 'Integración' seleccionamos la opción 'Mantain relationships' y aceptamos.


En este preciso momento, Navision modificará los metadatos de la base de datos de SQL Server e incluirá todas las definiciones de las 'Foreign Keys'. De todos modos, cabe remarcar que solo lo hará a nivel de metadatos, en ningún caso activará la integridad referencial a nivel de BBDD.

Podemos comprobar en la siguiente imagen que la tabla de artículos ya contiene la definición de las claves foráneas:

Ya solo es cuestión de ir al apartado de diagramas de la base de datos, añadir uno nuevo e incorporar las tablas deseadas. Os recuerdo que SQL Server permite, mediante el menú contextual sobre la tabla del diagrama, incorporar todas las tablas relacionadas de un plumazo:




Et voilà ... Ya tenemos nuestro ERD