2. ¿Donde Usarlo?
Desarrollo Gestión de Proyectos Desarrollo Gestión de Proyectos
Al inicio Al inicio Proceso Seguimiento
Fase del
del del de
Inicial Proyecto
proyecto proyecto Desarrollo
4. Elementos que
intervienen
Modelo entrada
Diagrama de Clases. (fichero.uml)
Modelo salida
Diagrama de Base de Datos.
(fichero.sqlschema)
Modelo de Configuración
Modelo de configuración de la
transformación(fichero.transformationconfiguration)
5. Cómo ejecutar la
transformación (1/2)
1. Desde la vista de transformaciones
2. Sobre el modelo con menú contextual
Desde la vista de transformaciones
Window/Show View/MOSKittTransformation
6. Cómo ejecutar la
transformación(2/2)
Desde el MOSKitt Resource Explorer utilizando el
menú contextual del modelo del diagrama de clases.
7. Cómo ejecutar la
transformación(2/3)
• Lanzar la transformación
• Introducir los parámetros
• Validar parámetros
• Configurar la transformación
• Ejecutar la transformación
8. Lanzar la
transformación
• Con el gestor de transformaciones (Asistente)
• Tiene una primera ventana donde se definen el
modelo de entrada y de salida:
Diagrama de Clases
Diagrama de Base de Datos
9. La siguiente pantalla del asistente nos muestra las
posibles configuraciones de la transformación:
1. Configuración por defecto.
2. Seleccionando una configuración dada.
Fichero de configuración
de la transformación
10. 3. Nueva Configuración
Directorio destino para el fichero
de configuración a crear
Nombre del fichero de configuración
La siguiente pantalla es de validación de los
modelos de entrada y configuración.
11. ¿QUE SE VALIDA?
Diagrama clases ●
●
extensión .uml
contiene al menos 1 elemento raiz
Modelo de configuración
●
extensión .transformationconfiguration
● contiene al menos un elemento raíz
En la última pantalla del asistente se muestra un
campo donde se indica el resultado de la
transformación. Si ha sido o no correcta.
13. Regla
(Rules)
1..*
1..* 1..* Patron
Modelo Elemento (Pattern)
Parametro
0..*
• Todos los elementos tienen el patrón
PersistentNomElemento
Ejemplo: (PersistentProperty, PersistentClass.....)
Con las reglas:
- Persistent → el elemento va a ser transformado.
- NotPersistent → el elemento no se va a transformar.
14. Parámetros:
• Dependiendo del patrón seleccionado podrán
aparecer parámetros para completar la
configuración:
• ¿un atributo es clave primaria?
• ¿cuales serán las claves alternativas en una
tabla? etc...)
15. Correspondencias de la
transformación
UML BD Correspondencia
Model Database Siempre
Package Schema Siempre
Class Table Siempre
Property Column Depende
Association Reference (FK) Depende
Class Association Reference+Table Depende
Composition Columna +Reference Depende
Generalization Reference (FK) Siempre
Datatype Column/Column+FK Depende
Enumeration Column/Column+FK Depende
16. Property (Atributo) = Field (Campo)
Caso1: Si multiplicidad max=1 → se transforma en
una columna dentro de la tabla.
Caso2: Si multiplicidad max>1 → se transforma
en una nueva clase con la que se relaciona.
isUnique:
Si la propiedad isUnique=True, la propiedad se convertirá en
clave primaria de la tabla
17. Association (Asociación)
¡Ojo hablamos de los dos extremos de la asociación!
Caso1: Si multiplicidades máximas =1 ->Foreign Key
¡Ojo con la
navegabilidad de la
asociación!
Caso2: Si multiplicidades máximas >1 ->Tabla + Foreign Key
18. Caso3: En el resto de los casos el usuario elige si
quiere que se transforme en una tabla o en una Clave
Ajena añadiendo el patrón:
Patrón: AssociationInto
Reglas: Reference → Clave Ajena (por defecto)
Table → Tabla
Reference
23. Generalization (Generalización)
Para las generalizaciones se incluye un patrón en la
clase padre.
Patron1: GeneralizationInto
Reglas: AllTables → (por defecto) transforma todas las
Clases
OnlyChildTable → únicamente son transformadas
las clases hijas
OnlyParentTable → sólo se transforma la clase
padre
25. Generalization Set (Conjunto de
Generalización)
La transformación es la misma que en el caso de las
generalizaciones.
AssociationClass (Clase Asociación)
Crea una tabla por clase y en la tabla correspondiente a
la clase asociación dos claves ajenas a las tablas que
une.
26. Datatype
A un tipo de datos (Datatype) se le puede hacer
referencia, bien por el tipo de datos del atributo
(Property) o como una asociación entre la clase
origen y la propia clase del tipo de
datos(Association).
Property Association
27. Patrón: PropertyToDataTypeAs
Reglas: Property → Columna
ExclusiveTable → 1 tabla por atributo + Clave ajena
Shared Table → 1! tabla + Clave ajena
Property y Association
Caso1. Si multiplicidad max. =1
Reglas: Property → (por defecto) los atributos del
“Datatype” se incluyen en la clase
Property Association
30. Enumeration
Al igual que el elemento “Datatype” el enumerado se
puede definir como tipo de datos de un atributo
(Property) o como una asociacion (Association) entre la
clase y el enumerado.
Patrón: PropertyToEnumerationAs
Reglas: Property → Columna
ExclusiveTable → 1 tabla por atributo + Clave
ajena
Shared Table → 1! tabla + Clave ajena
31. Property y Association
Caso1. Si multiplicidad max. =1
Reglas: Property → (por defecto) los atributos del
“Datatype” se incluyen en la clase
Property
Association
32. Caso2. Si multiplicidad max. >1
Regla -> ExclusiveTable (por defecto),se crea
unatabla por cada atributo cuyo tipo de
datos sea el enumerado, además de una
Property referencia a dicha clase.
Association
34. Sincronización de la
transformación
• La sincronización es en el sentido UML2 a BD.
• La sincronización afecta a la inserción,
actualización y borrado de elementos.
Inserción de elementos
Cualquier elemento insertado en el modelo de clases,
se transformará en el modelo de base de datos.
35. Actualización de elementos
Los elementos se actualizan según la siguiente
tabla:
UML BD
Package Schema
modificar la propiedad name se actualiza la propiedad name
Class (isAbstract = false) PersistentTable
modificar la propiedad name se actualiza la propiedad name
modificar isAbstract= true eliminar PersistentTable
Class (isAbstract = true) transformar el elemento Class
modificar la propiedad isAbstract = false genera los elementos
PersistentTable y PrimaryKey
36. UML BD
DataType PersistentTable
modificar la propiedad name se actualiza la propiedad name
Enumeration PersistentTable
modificar la propiedad name se actualiza la propiedad name
Property (upperBound = 1) PersistentTable
1.modificar la propiedad name 1.se actualiza la propiedad name
2.modificar la propiedad upperBound > 1 2.eliminar los elementos
PersistentTable, PrimaryKey,
ForeignKey y Column
Transformar el elemento Property
genera el elemento Column
Association (src upperBound = 1 dst Column, ForeignKey
upperBound = 1) que relaciona dos
elementos Class
modificar la propiedad name se actualiza la propiedad name
Association (src upperBound > 1 dst PersistentTable, PrimaryKey
upperBound > 1) que relaciona dos
elementos Class
modificar la propiedad name se actualiza la propiedad name
37. UML BD
Association que relaciona dos elementos Eliminar los elementos generados a
Class partir del elemento Association
modificar la cardinalidad Transformar el elemento Association
siguiendo el apartado anterior
Property que referencia a un elemento Eliminar los elementos generados a
DataType partir de los elementos Property y
modificar la cardinalidad DataType
Transformar los elementos Association
y DataType siguiendo el apartado
anterior
Property que referencia a un elemento Eliminar los elementos generados a
Enumeration partir del los elementos Property y
Enumeration
Modificar la cardinalidad Transformar los elementos Association
y Enumeration siguiendo el apartado
anterior
Association que relaciona un elemento Eliminar los elementos generados a
Class y un elemento DataType partir de los elementos Association y
DataType
Modificar la cardinalidad Transformar los elementos Association
y DataType siguiendo el apartado
anterior
38. UML BD
Association que relaciona un elemento Eliminar los elementos generados a
Class y un elemento Enumeration partir de los elementos Association y
Enumeration
Modificar la cardinalidad transformar los elementos Association y
Enumeration siguiendo el apartado
anterior
AssociationClass PersistentTable, PrimaryKey
modificar la propiedad name actualizar la propiedad name
39. Borrado de elementos
UML BD
Package Eliminar el elemento Schema
Class (isAbstract = false) Eliminar el elemento PersistentTable
Property (upperBound = 1) Eliminar (Column)
Property (upperBound > 1) Eliminar los elementos PersistentTable,
PrimaryKey, ForeignKey y Column
Association (src upperBound = 1 dst Eliminar los elementos Column y
upperBound = 1) que relaciona dos ForeignKey
elementos Class
Association (src upperBound > 1 dst Eliminar los elementos PersistentTable,
upperBound > 1) que relaciona dos PrimaryKey, ForeignKey y Column
elementos Class
AssociationClass Eliminar el elemento PersistentTable
Generalization Eliminar los elementos Column y
ForeignKey
40. Generalization Set
• Cuando tenemos herencia múltiple, en
ocasiones se pueden producir confiltos de
colisiones de nombres y de precedencia.
• Los conflictos se minimizan haciendo grupos
de generalizaciones, que comparten una
misma superclase en base a un mismo criterio
de especialización.
• Notacion:{<cobertura>,<solapamiento>}
42. Un grupo de generalización tiene dos propiedades:
• Cobertura(IsCovering)
➢ complete, cada instancia de la
superclase es obligatoriamente
instancia de alguna(o varias) subclases
➢ Incomplete, puede haber instancias de
la superclase que no sean instancias en
ninguna subclase
• Solapamiento(IsDisjoint)
➢ Disjoint, las subclases no pueden tener
instancias comunes
➢ Overlapping, las subclases pueden
tener instancias comunes
Valor por defecto {<incomplete>,<disjoint>}
43. Pestaña
Configuración
Para cada elemento del diagrama de clases, en la
pestaña de propiedades tenemos una sección de
configuración, donde se podrá seleccionar un
modelo de configuración, y donde aparecerán los
patrones asociados a dicho elemento.
Nueva Configuración
Botón de selección de un modelo de configuración ya existente
44. Si pulsamos el botón New aparece la
siguiente pantalla:
Posibles transformaciones para el modelo
Crea una nueva configuración.
Crea una configuración por defecto