Ejemplo: convertir una BD Access en SQLite
Este ejemplo explica cómo convertir un modelo de base de datos de un tipo en otro. En concreto, explica cómo leer la estructura de una base de datos Microsoft Access y pasarla a un modelo UML para luego combinarla con una base de datos SQLite que ya existe. Al final del ejemplo la estructura de la base de datos Access de origen se replicará en la base de datos SQLite de destino. Tenga en cuenta que aunque en este ejemplo se usen las bases de datos Microsoft Access y SQLite, el mismo mecanismo que explicamos en este ejemplo se puede aplicar al convertir otros tipos de datos compatibles con UModel (véase Trabajar con bases de datos en UModel).
Para el ejemplo necesitará estos archivos de la carpeta C:\Usuarios\...\Documentos\Altova\UModel2025\UModelExamples\Tutorial:
•Nanonull.mdb: la base de datos Microsoft Access de origen
•Nanonull.sqlite: la base de datos SQLite de destino
Nota: | antes de comenzar con el ejemplo recomendamos que cree una copia de seguridad del archivo de base de datos de muestra Nanonull.sqlite porque su contenido se habrá modificado una vez haya seguido las instrucciones del ejemplo. |
Paso nº1: importar la base de datos de origen en UModel
1.Haga clic en el comando de menú Proyecto | Importar base de datos SQL y siga los pasos del asistente para conectarse a la base de datos Microsoft Access de origen (Nanonull.mdb). Consulte el apartado Conectarse a una base de datos para más información.
2.Cuando la aplicación solicite un nombre para el origen de los datos, indique un nombre descriptivo, como BaseDatosOrigen.
3.Seleccione los objetos de la base de datos que desea importar al modelo y haga clic en Finalizar.
Observe que ahora hay un paquete llamado BaseDatosOrigen en la ventana Estructura del modelo, dentro del paquete raíz Root.
Paso nº2: importar la base de datos de destino en UModel
1.Haga clic en el comando de menú Proyecto | Importar base de datos SQL y siga los pasos del asistente para conectarse a la base de datos SQLite de destino (Nanonull.sqlite).
2.Cuando la aplicación solicite un nombre para el destino de los datos, indique un nombre descriptivo, como BaseDatosDestino.
3.Seleccione los objetos de la base de datos que desea importar al modelo y haga clic en Finalizar.
4.Cuando la aplicación solicite un paquete de destino, marque la casilla Importar a un paquete nuevo y haga clic en Finalizar.
Llegados a este punto el nuevo paquete BaseDatosDestino aparece en la ventana Estructura del modelo, dentro del paquete raíz Root.
Paso nº3: ejecutar la transformación del modelo desde la base de datos de origen a la de destino
1.Haga clic en el comando de menú Proyecto | Transformación de modelos.
2.En el cuadro de diálogo "Seleccionar el paquete de origen" haga clic en el paquete BaseDatosOrigen / Nanonull y después en Siguiente.
3.En el cuadro de diálogo "Seleccionar el paquete de destino" haga clic en el paquete BaseDatosDestino / main y después en Siguiente.
4.En el cuadro de diálogo "Detalles de la transformación de modelos" seleccione el tipo de transformación BD a BD y haga clic en Siguiente.
5.En el cuadro de diálogo "Asignación de tipos" repase los tipos de datos y realice los cambios que sean necesarios. Para este ejemplo asignaremos solamente los tipos de datos propios de Microsoft Access que no existen en SQLite, como puede ver aquí:
Por lo general, asegúrese de que en la columna de la izquierda aparecen tipos de datos compatibles con la base de datos de origen y en la derecha tipos de datos compatibles con la base de datos de destino. Para agregar o eliminar asignaciones de tipos utilice los botones Anexar, Insertar y Eliminar del cuadro de diálogo.
6.Haga clic en Finalizar. Después aparece un mensaje (imagen siguiente). Haga clic en Aceptar para terminar.
UModel genera un diagrama de dependencias donde puede repasar (y modificar) todas las opciones definidas hasta ahora, incluidas las asignaciones de tipos de datos. Para este ejemplo dejamos las opciones tal y como están.
Paso nº4: combinar el código de programa con el proyecto de UModel
1.Haga clic en el comando de menú Proyecto | Combinar el código de programa con el proyecto de UModel.
2.No modifique las opciones de configuración predeterminadas y haga clic en Aceptar.
UModel genera un script de actualización de base de datos y muestra una vista previa en un cuadro de diálogo (imagen siguiente). Ahora puede ejecutar el script en UModel directamente o guardarlo en un archivo. Si tiene Altova DatabaseSpy instalado también puede abrir y ejecutar el script en Altova DatabaseSpy, que ofrece una avanzada interfaz de administración de bases de datos.
Lo más recomendable es repasar el script generado y, si es necesario, modificarlo antes de ejecutarlo en la base de datos de destino.
Si la base de datos de origen contiene nombres de objetos (p. ej. índices o claves foráneas) que no son únicos a nivel de base de datos, el script de actualización de base de datos no se ejecutará correctamente. Por ejemplo, una base de datos Microsoft Access puede tener varios índices que se llamen igual. Si la base de datos de destino no acepta nombres repetidos para los índices deberá editar el script de actualización para que todos los nombres de objeto sean únicos.
En ocasiones también deberá actualizar el script para modificar el tamaño de las columnas en función de los requisitos de la base de datos de destino. |
Tras ejecutar el script (desde UModel o en una herramienta como Altova DatabaseSpy) las tablas, columnas, índices y restricciones de clave necesarias se recrearán en la base de datos SQLite de destino. Recuerde que SQLite (versión 3.6.19) acepta los nombres de restricciones de clave foráneas dados por la instrucción SQL pero no ofrece ningún mecanismo para recuperarlos de la base de datos (las restricciones de clave foránea se recuperan con un nombre aleatorio y no con su nombre real). Para conseguir que el modelo de base de datos muestre los nombres de objeto reales dados por la base de datos deberá llevar a cabo una actualización inversa del modelo a partir de la base de datos. Esto se hace con el comando de menú Proyecto | Combinar el proyecto de UModel con el código de programa. El modelo se actualizará y mostrará los nombres de objeto tal y como vienen dados por la base de datos.