Arquitectura de un modulo I/O para objetos 3D
Andrés Harker Gutiérrez
Gutierrez
Tabla de contenido 1. Introducción ...................................................................................................................... 3
1.1. Propósito ................................................................................................................... 3
1.2. Alcance ...................................................................................................................... 3
1.3. Definiciones, Acrónimos y Abreviaciones ................................................................... 4
1.4. Referencias ................................................................................................................ 6
1.5. Resumen del Documento ........................................................................................... 6
2. Representación Arquitectónica ......................................................................................... 7
2.1. Diagrama de contexto arquitectónico ........................................................................ 7
2.2. Estilos Arquitectónicos............................................................................................... 8
2.2.1. forwarder receiver ............................................................................................. 8
2.2.2. Publicador suscriptor .......................................................................................... 8
2.3. Modelo Arquitectónico .............................................................................................. 9
3. Vista de escenarios .......................................................................................................... 11
4. Vista Lógica ..................................................................................................................... 11
5. Vista de Procesos ............................................................................................................ 12
6. Vista de Despliegue ......................................................................................................... 13
7. Vista de implementación ................................................................................................. 15
8. Vista de datos ................................................................................................................. 15
1. Introducción
El siguiente documento SAD describe las características más significativas de la
arquitectura de software del sistema para el trabajo de grado “Arquitectura de un
modulo I/O para objetos 3D”, centrándose en la definición de los estilos
arquitectónicos y los atributos de calidad que se tuvieron en cuenta para el diseño de
la arquitectura del sistema.
1.1. Propósito
Este documento ha sido elaborado para ofrecer una visión de alto nivel del sistema de
información “modulo I/O para objetos 3D” en cuanto a la arquitectura de Software
que enmarca su diseño y su posterior implementación. Haciendo uso del modelo 4+1
vistas para describir los elementos, relaciones y características fundamentales en la
arquitectura del sistema, se pretende facilitar el entendimiento de estos por parte de
los Stakeholders y hacer evidentes, decisiones de diseño que influyen en los atributos
de calidad del sistema a desarrollar.
1.2. Alcance
Teniendo en cuenta el propósito, definido anteriormente, y además recordando que la
arquitectura de software se encuentra enmarcada en un alto nivel de abstracción del
diseño del sistema, el alcance de este documento es:
¥ La descripción arquitectónica del “modulo I/O para objetos 3D”, elementos
internos que componen el sistema, así como los externos que se integran o
prestan servicios a él, y las diferentes relaciones entre ellos.
¥ Definición de aspectos relevantes de cada una de la vistas, consideraciones que
se tuvieron en cuenta para diseñar la arquitectura del “MODULO I/O PARA
OBJETOS 3D”.
¥ Destalles de la arquitectura de software que le permitan al grupo de desarrollo
iniciar con la implementación del sistema.
¥ Se hace uso de conceptos genéricos en las vistas, en cuanto a que no se detalla
aspectos relacionados con el lenguaje de programación o protocolos de
puntuales de implementación.
¥ Justificación de estilos tenidos en cuenta y características del sistema
priorizadas según requerimientos tanto funcionales como no funcionales,
haciendo énfasis en los últimos.
1.3. Definiciones, Acrónimos y Abreviaciones
LETRA DEFINICIÓN, ABREVIATURAS Y ACRÓNIMOS
A ¥
B ¥ Browser: Software especial que se ejecuta en una computadora conectada a
internet, mediante el cual los usuarios pueden ver páginas web. [5]
C ¥
D
¥ Desempeño: El grado en el que un sistema o componente realiza su función designada dentro de las restricciones de rapidez, precisión y uso de memoria.[4]
¥ DBMS: Sistema Manejador de Bases de Datos, ejemplos de estos son, oracle, postgres, mysql, sqlServer, entre otros.
E
¥ Enterprise Architect: herramienta de análisis y diseño intuitiva, flexible y poderosa para construir software robusto y mantenible. Desde la recolección de requerimientos, pasando por el análisis, modelado, implementación y pruebas hasta despliegue y mantenimiento, Enterprise Architect es una herramienta de modelado UML rápida, rica en funcionalidad, multiusuario, que conduce el éxito de su proyecto de software. [9]
¥ Escalabilidad: Propiedad de un sistema que le permite crecer en su número de usuarios de manera que el sistema los pueda soportar. [4]
F ¥
G ¥
H ¥
I ¥
J
¥ JEE: Java Enterprise Edition ¥ JPA: Java Persistence Api. ¥ JMS: Java Message Service. ¥ JDK: Java Develpment Kit. ¥ JRE: Java Runtime Enviroment.
K ¥
L ¥
M ¥
N ¥ .NET: El Microsoft .NET Framework, es un componente de software que
puede ser o es incluido en los sistemas operativos Microsoft Windows.
Provee soluciones pre-codificadas para requerimientos comunes de los programas y gestiona la ejecución de programas escritos específicamente para este Framework.[7]
O ¥
P ¥
Q ¥
R ¥ Requerimiento: Condición o capacidad necesaria por un usuario para
solucionar un problema o logar un objetivo. [4]
S
¥ Sistema de información: Sistema que administra la información de una organización, de manera que pueda ser utilizada por los Stakeholders para apoyar la toma de decisiones, cumplir las metas organizacionales y mejorar y administrar los procesos de negocio.[13]
¥ StakeHolder: Son las personas que tiene relación directa con el sistema, estos pueden ser (gerente, cliente, desarrolladores, diseñadores y demás equipo de trabajo).[5]
¥ Sistema distribuido: Unión de componentes de hardware y software localizados en un red de computadoras comunicados y coordinados para realizar tareas mediante paso de mensajes.[9]
¥ SAD: Documento de arquitectura de software. ¥ “MODULO I/O PARA OBJETOS 3D”: Sistema informático que corresponde al
software que manipulara el repositorio de objetos 3D. ¥ Servidor: computadora central en un sistema de red que provee servicios a
otras computadoras.[7] ¥ Servidor de aplicaciones: Sistema de software con características
especificas, el cual provee funcionalidades comunes a las aplicaciones empresariales, ejemplo de estos son GlassFish, JBOSS, WebLogic, Internet Information Server, entre otros.
T
¥ Tolerancia a fallos: Capacidad de un sistema o de un componente para continuar su funcionamiento normal a pesar de que ocurran fallos en el hardware. [9]
¥ Transparencia: Propiedad de un sistema distribuido para que el usuario lo vea como un solo sistema.[9]
U ¥ Usuario: Persona que va a utilizar el sistema. ¥ Usabilidad: facilidad con el que el usuario puede aprender a operar,
preparar entradas y entender las salidas de un sistema o componente. [4]
V
¥ VITRAL: Contenedor de aplicaciones para computación grafica, de la Pontificia Universidad Javeriana.
¥ VSDK: Capa de VITRAL encargada de brindar todas las funcionalidades de lógica de computación grafica.
W ¥
X ¥
Y ¥
Z ¥
1.4. Referencias
[1] CESAR JULIO BUSTACARA MEDINA, Material de Clase. Clase 2009. . Disponible
en:http://sophia.javeriana.edu.co/~cbustaca/Arquitectura%20Software/Proyectos/
Plantillas/1Vision/rup_vision.htm[Ultima Consulta: 20 de Septiembre de 2010].
[2] Kruchten Philippe. Architectural Blueprints - The “4 + 1” View Model of Software
Architecture, Rational Software Corporation. [Articulo en Internet]. Disponible en:
http://www.cs.ubc.ca/~gregor/teaching/papers/4+1view-architecture.pdf [Ultima
consulta: 24 de Septiembre de 2010].
[3] JULIO ERNESTO CARREÑO VARGAS, Material de Clase. Clase 2010-3. [Última
Consulta: 25 de Septiembre de 2010].
[4] Julián Rodrigo Tenjo, Adrián Otálora, Carolina Loaiza Carvajal. Documento de
Visión. Febrero 20 de 2010.
[5] KENDALL, K. Y KENDALL, J. Análisis y Diseño de Sistemas, Tercera Edición, Prentice
Hall, México, 1997 cap. 1
[6] Estándar ISO 9126. Disponible en:
http://www.issco.unige.ch/en/research/projects/ewg96/node14.html#SECTION00
311000000000000000 [Ultima Consulta: 30 de Agosto de 2010].
[7] Diccionario en línea. Disponible en: http://www.alegsa.com.ar/Dic [Ultima
Consulta: 24 de Septiembre de 2010].
[8] Diego Francisco Castillo Velázquez, Jairo Eduardo Ipial. Tienda Virtual de
Medicamentos. SAD. Febrero 20 de 2010.
[9] Manual de Usuario. Disponible en
http://www.sparxsystems.com/bin/EAUserGuide.pdf [Última fecha de consulta: 20
de Septiembre de 2010]
[10] Buschmann Frank, Meunier Regine, Rohnert hans, Sommerlad Peter, Stal
Michael. Pattern oriented software architecture, A system patterns. Volumen 1.
Wiley.2001
[11] AVILA, JAMIR. Estilos Arquitectónicos. Presentación de clase. [Última Consulta:
25 de Septiembre de 2010].
1.5. Resumen del Documento
Siguiendo el modelo de 4+1 vistas [2], la estructura de este documento se encuentra
organizada por las diferentes vistas de arquitectura del sistema en secciones, de la
siguiente manera:
Vista de Casos de Uso (Escenarios): Sección 4
Vista Lógica: Sección 5
Vista de Procesos: Sección 6
Vista Física: Sección 7
Vista de Implementación: Sección 8
La secciones 2 a la 4, se orientan a una descripción general de la arquitectura y a la
consideración de requerimientos.
Adicional a las vistas del modelo 4+1 views, se ofrece en la sección 9, una vista de
datos que plasma la organización de los datos en el sistema.
Todo este diseño basados en las investigaciones realizadas y en el documento de
especificación de requerimientos (SRS), en el cual figuran los casos de uso de la
aplicación, los requerimientos funcionales y no funcionales, los atributos de calidad
que se deben contemplar y finalmente el modelo de dominio que rige la aplicación.
2. Representación Arquitectónica
2.1. Diagrama de contexto arquitectónico
El siguiente diagrama representa el contexto del sistema “MODULO I/O PARA OBJETOS
3D”, en él se indica la interacción de la aplicación tanto con los sistemas del mismo
contexto como VITRAL, como los externos a el:
Usuarios
Sistemas de VITRAL
Sistemas Externos a VITRAL
Del diagrama es posible deducir que es necesario tener en cuenta en el sistema:
Fuerte interacción con el usuario (MVC).
Integración con varios sistemas externos.
El uso de protocolos de comunicación con las aplicaciones internas que ya
están definidos (Módulo de comunicaciones tipo Broker o CDS).
2.2. Estilos Arquitectónicos
Para el diseño de la arquitectura del sistema “MODULO I/O PARA OBJETOS 3D” se han
considerado 2 estilos arquitectónicos principales, uno general: Componentes
Independientes de forwarder-receiver para que el servidor conozca al cliente y pueda
enviar notificaciones de las búsquedas que se encuentre realizando para él,
internamente en el modulo se tiene un patrón de publicador-suscriptor para poder
realizar de forma asincrónica las búsquedas y las inserciones en el repositorio de
objetos 3D.
2.2.1. forwarder receiver
forwarder-receiver es un modelo de comunicación en el cual las dos partes del sistema se conocen en términos de comunicación y en términos de poder enviar mensajes el uno al otro. Este patrón permite al sistema “MODULO I/O PARA OBJETOS 3D” conocer a sus clientes y comunicarse con ellos conforme vaya teniendo resultados de sus búsquedas distribuidas, de esta manera el usuario al hacer una solicitud, puede simplemente confirmar el inicio de la tarea y romper su comunicación y el sistema ira avisando por medio de su conexión los resultados.
2.2.2. Publicador suscriptor
Este estilo arquitectónico brinda a la arquitectura la posibilidad de realizar tareas de
forma asincrónica, valiéndose del tópico de publicación para poder dejar los mensajes
al componente interesado y que este realice el respectivo procedimiento.
2.3. Modelo Arquitectónico
La arquitectura de software de del sistema “MODULO I/O PARA OBJETOS 3D”, se
define mediante el modelo 4+1 vistas [modelo 4+1]. En este modelo se tendrán en
cuenta las siguientes vistas:
Ilustración 1: Vistas de la Arquitectura
Vista de escenarios
•Describe el comportamiento del sistema SSF y como es visto por sus usuarios y otros sistemas externos. que interactúan él.
•Se enfoca en las funciones mas importantes del sistema y los actores relacionados.
•Esta vista se modelara mediante un diagrama de casos de uso UML 2.0.
•los escenarios representativos se representaran en diagramas de secuencia UML 2.0.
Vista Lógica
•Esta vista muestra los servicios que el sistema debe brindar a los usuarios.
•Para su realización se basa en los requerimientos funcionales.
•Los elementos que componen esta vista son los subsistemas y paquetes.
•Muestra los sistemas que interactuan con el sistema SSF.
•Esta vista se modelara mediante un modelo del dominio UML 2.0.
Vista de procesos
•Describe los diferentes procesos que tiene el sistea SSF y como están relacionados.
•Describe las operaciones que ejecutan los elementos identificados en la vista logica teniendo en cuenta la concurrencia, distribución, la integridad del sistema y la tolerancia a fallos.
•Describe los procesos que maneja el sistema y mediante que protocolos y/o mecanismos se comunican.
•Esta vista se modela mediante un diagrama de actividad UML 2.0.
Vista de Despliegue
•Tiene en cuenta los requerimientos no funcionales
•Los elementos que la conforman son nodos, redes, componentes.
•Describe la topología del sistema, mostrando sus elementos y la forma de comunicación.
•Esta vista se modela mediante un diagrama de componentes UML 2.0.
Vista de implementacion
•Estaá dirigida hacia los desarrolladores del grupo.
•Describe la organización modular del software en el entorno de desarrollo.
•Esta vista se modela mediante un diagrama de componentes UML 2.0.
Vista de datos
•Esta vista es opcional
•Se basa en el modelo entidad
•Describe el esquema en el cual se organizan los datos del sistema.
•Esta vista se modela mediante un modelo entidad relación.
3. Vista de escenarios
Para información acerca de esta vista por favor revisar el documento en los anexos del
SRS:
Modelo de casos de uso EA_2011_11_26.rtf
4. Vista Lógica
Para información acerca de esta vista por favor revisar el documento en los anexos del
SAD:
Vista logica de la arquitectura EA_2011_11_27.rtf
5. Vista de Procesos
Para información acerca de esta vista por favor revisar el documento en los anexos del
SAD:
Vista de procesosEA_2011_11_27.rtf
6. Vista de Despliegue
deployment v ista de despliegue
deployment v ista de despliegue - procesos
Para información acerca de esta vista por favor revisar el documento en los anexos del
SAD:
Vista de despliegue EA_2011_11_27.rtf
7. Vista de implementación
Para información acerca de esta vista por favor revisar el documento en los anexos del
SAD:
Vista de implementación EA_2011_11_28.rtf
8. Vista de datos
class Data Model
Objeto3D
«column»
*PK ID_OBJETO_3D: decimal(20,1)
* EXISTE: boolean
FK FK_ID_ESCENA: decimal(20,1)
«FK»
+ FK_Objeto3D_Escena(decimal)
«PK»
+ PK_Objeto3D(integer)
Cache_Objeto_2D
«column»
*pfK FK_ID_CONSULTA: decimal(20,1)
*pfK FK_ID_OBJETO_2D: decimal(20,1)
«FK»
+ FK_Cache_Objeto_2D_Cache_consulta(decimal)
+ FK_Cache_Objeto_2D_Objeto2D(decimal)
«PK»
+ PK_Cache_Objeto_2D(integer, integer)
Metamodelo3D
«column»
*pfK FK_ID_OBJETO_3D: decimal(20,1)
*pfK FK_ID_METADATA_3D: decimal(20,1)
«FK»
+ FK_Metamodelo3D_Metadata3D(decimal)
+ FK_Metamodelo3D_Objeto3D(decimal)
«PK»
+ PK_Metamodelo3D(integer, integer)
Metadata3D
«column»
*PK ID_METADATA_3D: decimal(20,1)
* DESCRIPCION: varchar(250)
«PK»
+ PK_Metadata3D(integer)
Caracteristica
«column»
*PK ID_CARACTERISTICA: decimal(20,1)
* DESCRIPCION: varchar(250)
* NOMBRE: varchar(250)
«PK»
+ PK_Caracteristica(integer)
CaracteristicaObjeto3D
«column»
*FK FK_ID_CARACTERISTICA: decimal(20,1)
*FK FK_ID_OBJETO_3D: decimal(20,1)
*PK ID_CARACTERISTICA_OBJETO: decimal(20,1)
«FK»
+ FK_CaracteristicaObjeto3D_Caracteristica(decimal)
+ FK_CaracteristicaObjeto3D_Objeto3D(decimal)
«PK»
+ PK_CaracteristicaObjeto3D(integer)
VectorCaracteristico
«column»
*PK ID_VECTOR: decimal(20,1)
*FK FK_ID_CARACTERISTICA_OBJETO: decimal(20,1)
* INDICE: decimal(20,1)
«FK»
+ FK_VectorCaracteristico_CaracteristicaObjeto3D(decimal)
«PK»
+ PK_VectorCaracteristico(integer)
Valor
«column»
*PK ID_VALOR: decimal(20,1)
* VALOR: real
* INDICE: decimal(20,1)
*FK FK_ID_VECTOR: decimal(20,1)
«FK»
+ FK_Valor_VectorCaracteristico(decimal)
«PK»
+ PK_Valor(integer)
Objeto2D
«column»
*PK ID_OBJETO_2D: decimal(20,1)
* ARCHIVO_ASOCIADO: bytea
* EXISTE: decimal(20,1)
*FK FK_ID_OBJETO_3D: decimal(20,1)
«FK»
+ FK_Objeto2D_Objeto3D(decimal)
«PK»
+ PK_Objeto2D(integer)
Persistencia_GrupoObjetos
«column»
*PK ID_GRUPO_DE_OBJETOS_3D: decimal(20,1)
* DESCRIPCION: varchar(250)
«PK»
+ PK_GrupoObjetos(integer)
Persistencia_GrupoDeObjeto
«column»
*pfK FK_ID_OBJETO_3D: decimal(20,1)
*pfK FK_ID_GRUPO_DE_OBJETO_3D: decimal(20,1)
«FK»
+ FK_Persistencia_GrupoDeObjeto_Objeto3D(decimal)
+ FK_Persistencia_GrupoDeObjeto_Persistencia_GrupoObjetos(decimal)
«PK»
+ PK_GrupoDeObjeto(integer, integer)
Persistencia_Limite
«column»
*pfK FK_ID_GRUPO_DE_OBJETOS_3D: decimal(8,2)
*pfK FK_ID_POSICION_DEL_LIMITE: decimal(20,1)
* LIMITE_INFERIOR: real
* LIMITE_SUPERIOR: real
«FK»
+ FK_Persistencia_Limite_Persistencia_GrupoObjetos(decimal)
+ FK_Persistencia_Limite_Persistencia_PosicionLimite(decimal)
«PK»
+ PK_Limite(integer, integer)
Persistencia_Correlacion
«column»
*PK ID_CORRELACION: decimal(20,1)
DESCRIPCION: varchar(250)
«PK»
+ PK_Correlacion(integer)
Persistencia_Correlaciones
«column»
*pfK FK_ID_CORRELACION: decimal(20,1)
*pfK FK_ID_GRUPO_DE_OBJETOS_3D: decimal(20,1)
«FK»
+ FK_Persistencia_Correlaciones_Persistencia_Correlacion(decimal)
+ FK_Persistencia_Correlaciones_Persistencia_GrupoObjetos(decimal)
«PK»
+ PK_Correlaciones(integer, integer)
Escena
«column»
*PK ID_ESCENA: decimal(20,1)
* NOMBRE: varchar(250)
* ARCHIVO_ESCENA: bytea
«PK»
+ PK_Escena(integer)
Metamodelo2D
«column»
*FK FK_ID_OBJETO_2D: decimal(20,1)
*FK FK_OBJETO_2D: decimal(20,1)
*pfK FK_ID_METADATA_2D: decimal(20,1)
«FK»
+ FK_Metamodelo2D_Metadata2D(decimal)
+ FK_Metamodelo2D_Objeto2D(decimal)
+ FK_Metamodelo2D_Objeto2D_independiente(decimal)
«PK»
+ PK_Metamodelo2D(integer)
Metadata2D
«column»
*PK ID_METADATA_2D: decimal(20,1)
* DESCRIPCION: varchar(250)
«PK»
+ PK_Metadata2D(integer)
CaracteristicaObjeto2D
«column»
FK FK_ID_OBJETO_2D_3D: decimal(20,1)
FK FK_ID_OBJETO_2D: decimal(20,1)
*FK FK_ID_CARACTERISTICA_2D: decimal(20,1)
*PK ID_CARACTERISTICA_OBJETO_2D: decimal(20,1)
«FK»
+ FK_CaracteristicaObjeto2D_Caracteristica2D(decimal)
+ FK_CaracteristicaObjeto2D_Objeto2D(decimal)
+ FK_CaracteristicaObjeto2D_Objeto2D_independiente(decimal)
«PK»
+ PK_CaracteristicaObjeto2D(integer)
Valor2D
«column»
*PK ID_VALOR_2D: decimal(20,1)
*FK FK_ID_VECTOR_2D: decimal(20,1)
* INDICE: decimal(20,1)
* VALOR: real
«FK»
+ FK_Valor2D_VectorCaracteristico2D(decimal)
«PK»
+ PK_Valor2D(integer)
VectorCaracteristico2D
«column»
*PK ID_VECTOR: decimal(20,1)
*FK FK_ID_CARACTERISTICA_OBJETO_2D: decimal(20,1)
* INDICE: decimal(20,1)
FK_ID_VECTOR_CARACTERISTICO: decimal(20,1)
«FK»
+ FK_VectorCaracteristico2D_CaracteristicaObjeto2D(decimal)
«PK»
+ PK_VectorCaracteristico2D(integer)
Caracteristica2D
«column»
*PK ID_CARACTERISTICA: decimal(20,1)
* DESCRIPCION: varchar(250)
* NOMBRE: varchar(250)
«PK»
+ PK_Caracteristica2D(integer)
Persistencia_GrupoDeObjeto2D
«column»
*FK FK_ID_OBJETO_2D: decimal(20,1)
*FK FK_ID_GRUPO_DE_OBJETOS_2D: decimal(20,1)
*FK FK_OBJETO_2D: decimal(20,1)
*PK ID: decimal(20,1)
«FK»
+ FK_Persistencia_GrupoDeObjeto2D_Objeto2D(decimal)
+ FK_Persistencia_GrupoDeObjeto2D_Objeto2D_independiente(decimal)
+ FK_Persistencia_GrupoDeObjeto2D_Persistencia_GrupoObjetos2D(decimal)
«PK»
+ PK_Persistencia_GrupoDeObjeto2D(decimal)
Persistencia_GrupoObjetos2D
«column»
*PK ID_GRUPO_DE_OBJETOS_3D: decimal(20,1)
* DESCRIPCION: varchar(250)
«PK»
+ PK_GrupoObjetos2D(integer)
Persistencia_Correlaciones2D
«column»
*pfK FK_ID_CORRELACION_2D: decimal(20,1)
*pfK FK_ID_GRUPO_DE_OBJETOS_2D: decimal(20,1)
«FK»
+ FK_Persistencia_Correlaciones2D_Persistencia_Correlacion2D(decimal)
+ FK_Persistencia_Correlaciones2D_Persistencia_GrupoObjetos2D(decimal)
«PK»
+ PK_Correlaciones2D(integer, integer)
Persistencia_Limite2D
«column»
*pfK FK_ID_GRUPO_DE_OBJETOS_2D: decimal(20,1)
* LIMITE_INFERIOR: real
* LIMITE_SUPERIOR: real
«FK»
+ FK_Persistencia_Limite2D_Persistencia_GrupoObjetos2D(decimal)
«PK»
+ PK_Limite2D(integer)
Persistencia_Correlacion2D
«column»
*PK ID_CORRELACION_2D: decimal(20,1)
* DESCRIPCION: varchar(250)
«PK»
+ PK_Correlacion2D(integer)
Persistencia_GrupoLogicoObjeto
«column»
*pfK FK_ID_GRUPO_LOGICO: decimal(20,1)
*pfK FK_ID_MODELO_3D: decimal(20,1)
«FK»
+ FK_Persistencia_GrupoLogicoObjeto_Objeto3D(decimal)
+ FK_Persistencia_GrupoLogicoObjeto_Persistencia_GrupoLogico(decimal)
«PK»
+ PK_GrupoLogicoObjeto(integer, integer)
Persistencia_GrupoLogico
«column»
*PK ID_GRUPO_LOGICO: decimal(20,1)
NOMBRE: varchar(250)
«PK»
+ PK_GrupoLogico(integer)
Persistencia_PosicionLimite
«column»
*PK ID_POSICION_DEL_LIMITE: decimal(20,1)
DESCRIPCION: varchar(250)
«PK»
+ PK_PosicionLimite(integer)
Objeto2D_independiente
«column»
*PK ID_OBJETO_2D: decimal(20,1)
* EXISTE: boolean
«PK»
+ PK_Objeto2D_independiente(integer)
Las tablas con prefijo cache,
unicamente existen en la base de datos
de cache
Y las que tienen prefijo persistencia,
unicamente existen en la base de datos
del repositorio.
Las demas tablas sin prefijo, existen en
ambas bases de datos.
Cache_consulta
«column»
*PK ID_CONSULTA: decimal(20,1)
*FK FK_ID_USUARIO: decimal(20,1)
«FK»
+ FK_Cache_consulta_Cache_usuario_en_session(decimal)
«PK»
+ PK_Cache_consulta(integer)
Cache_usuario_en_session
«column»
*PK ID_USUARIO: decimal(20,1)
«PK»
+ PK_Cache_usuario_en_session(integer)
Cache_objeto_3D
«column»
*pfK FK_ID_CONSULTA: decimal(20,1)
*pfK FK_ID_OBJETO_3D: decimal(20,1)
«FK»
+ FK_Cache_objeto_3D_Cache_consulta(decimal)
+ FK_Cache_objeto_3D_Objeto3D(decimal)
«PK»
+ PK_Cache_objeto_3D(integer, integer)
Archiv oObjeto3D
«column»
* archivo: bytea
*PK NOMBRE_DE_ARCHIVO: varchar(50)
*FK FK_OBJETO_3D: decimal(20,1)
«FK»
+ FK_ArchivoObjeto3D_Objeto3D(decimal)
«PK»
+ PK_ArchivoObjeto3D(varchar)
«unique»
+ UQ_ArchivoObjeto3D_FK_OBJETO_3D(decimal)
Archiv oObjeto2D
«column»
*PK ID: decimal(20,1)
* NOMBRE_DE_ARCHIVO: varchar(50)
* ARCHIVO: bytea
*FK FK_OBJETO_2D: decimal(20,1)
«FK»
+ FK_ArchivoObjeto2D_Objeto2D_independiente(decimal)
«PK»
+ PK_ArchivoObjeto2D(decimal)
«unique»
+ UQ_ArchivoObjeto2D_FK_OBJETO_2D(decimal)
Archiv oAnexoParaObjeto3D
«column»
*PK id: integer
* nombreDeArchivo: varchar(50)
* archivo: bytea
*FK fk_archivo_objeto_3d: varchar(50)
«FK»
+ FK_ArchivoAnexoParaObjeto3D_ArchivoObjeto3D(varchar)
«PK»
+ PK_ArchivoAnexoParaObjeto3D(integer)
+FK_Objeto2D_Objeto3D
0..*
(FK_ID_OBJETO_3D
= ID_OBJETO_3D)«FK»
+PK_Objeto3D
1
+FK_Metamodelo2D_Objeto2D_independiente
0..*
(FK_ID_OBJETO_2D
= ID_OBJETO_2D)«FK»
+PK_Objeto2D_independiente
1
+FK_Metamodelo2D_Metadata2D 0..*
(FK_ID_METADATA_2D
= ID_METADATA_2D)
«FK»
+PK_Metadata2D
1
+FK_Metamodelo2D_Objeto2D
0..*
(FK_OBJETO_2D =
ID_OBJETO_2D)«FK»
+PK_Objeto2D
1
+FK_Persistencia_Correlaciones_Persistencia_Corr... 0..*
(FK_ID_CORRELACION =
ID_CORRELACION) «FK»
+PK_Correlacion 1
+FK_Persistencia_Correlaciones_Persistencia_Grup...
0..*
(FK_ID_GRUPO_DE_OBJETOS_3D
= ID_GRUPO_DE_OBJETOS_3D)«FK»
+PK_GrupoObjetos
1
+FK_Persistencia_Limite_Persistencia_GrupoObjetos
0..*
(FK_ID_GRUPO_DE_OBJETOS_3D
= ID_GRUPO_DE_OBJETOS_3D)«FK»
+PK_GrupoObjetos 1
+FK_Persistencia_Limite_Persistencia_PosicionLimite
0..*
(FK_ID_POSICION_DEL_LIMITE
= ID_POSICION_DEL_LIMITE)«FK»
+PK_PosicionLimite 1
+FK_ArchivoObjeto3D_Objeto3D
0..*
(FK_OBJETO_3D =
ID_OBJETO_3D)«FK»
+PK_Objeto3D 1
+FK_Persistencia_GrupoDeObjeto_Objeto3D 1..*
(FK_ID_OBJETO_3D
= ID_OBJETO_3D)«FK»
+PK_Objeto3D
1
+FK_CaracteristicaObjeto2D_Objeto2D_independiente
0..*
(FK_ID_OBJETO_2D
= ID_OBJETO_2D)«FK»
+PK_Objeto2D_independiente 1
+FK_Valor_VectorCaracteristico
1..*
(FK_ID_VECTOR
= ID_VECTOR)«FK»
+PK_VectorCaracteristico
1
+FK_VectorCaracteristico_CaracteristicaObjeto3D 1..*
(FK_ID_CARACTERISTICA_OBJETO
= ID_CARACTERISTICA_OBJETO)«FK»
+PK_CaracteristicaObjeto3D 1
+FK_CaracteristicaObjeto3D_Caracteristica
1..*
(FK_ID_CARACTERISTICA
= ID_CARACTERISTICA)«FK»
+PK_Caracteristica
1
+FK_CaracteristicaObjeto3D_Objeto3D
1..*
(FK_ID_OBJETO_3D
= ID_OBJETO_3D)«FK»
+PK_Objeto3D
1
+FK_Metamodelo3D_Metadata3D 0..*
(FK_ID_METADATA_3D
= ID_METADATA_3D)«FK»
+PK_Metadata3D 1
+FK_Metamodelo3D_Objeto3D
0..*
(FK_ID_OBJETO_3D
= ID_OBJETO_3D)«FK»
+PK_Objeto3D
1
+FK_Objeto3D_Escena
1..*
(FK_ID_ESCENA =
ID_ESCENA) «FK»
+PK_Escena
1
+FK_Persistencia_GrupoDeObjeto_Persistencia_Grup...
0..*
(FK_ID_GRUPO_DE_OBJETO_3D
= ID_GRUPO_DE_OBJETOS_3D)«FK»
+PK_GrupoObjetos
1
+FK_Persistencia_Correlaciones2D_Persistencia_Co... 1..*
(FK_ID_CORRELACION_2D =
ID_CORRELACION_2D) «FK»
+PK_Correlacion2D 1
+FK_ArchivoObjeto2D_Objeto2D_independiente
0..*(FK_OBJETO_2D =
ID_OBJETO_2D)«FK»+PK_Objeto2D_independiente
1
+FK_Cache_Objeto_2D_Cache_consulta 0..*
(FK_ID_CONSULTA
= ID_CONSULTA)«FK»
+PK_Cache_consulta 1
+FK_Cache_Objeto_2D_Objeto2D
0..*
(FK_ID_OBJETO_2D
= ID_OBJETO_2D)«FK»
+PK_Objeto2D_independiente
1
+FK_Cache_objeto_3D_Objeto3D
0..*
(FK_ID_OBJETO_3D
= ID_OBJETO_3D)«FK»
+PK_Objeto3D 1
+FK_Cache_objeto_3D_Cache_consulta
0..*
(FK_ID_CONSULTA
= ID_CONSULTA)«FK»
+PK_Cache_consulta 1
+FK_Cache_consulta_Cache_usuario_en_session
1..*
(FK_ID_USUARIO =
ID_USUARIO) «FK»
+PK_Cache_usuario_en_session 1
+FK_Persistencia_GrupoLogicoObjeto_Persistencia_... 0..*
(FK_ID_GRUPO_LOGICO
= ID_GRUPO_LOGICO)«FK»
+PK_GrupoLogico 1
+FK_CaracteristicaObjeto2D_Objeto2D 1..*
(FK_ID_OBJETO_2D_3D
= ID_OBJETO_2D) «FK»
+PK_Objeto2D 1
+FK_Persistencia_Limite2D_Persistencia_GrupoObje... 0..*
(FK_ID_GRUPO_DE_OBJETOS_2D
= ID_GRUPO_DE_OBJETOS_3D)«FK»
+PK_GrupoObjetos2D 1
+FK_CaracteristicaObjeto2D_Caracteristica2D
0..*
(FK_ID_CARACTERISTICA_2D
= ID_CARACTERISTICA) «FK»
+PK_Caracteristica2D 1
+FK_Persistencia_Correlaciones2D_Persistencia_Gr...
0..*
(FK_ID_GRUPO_DE_OBJETOS_2D
= ID_GRUPO_DE_OBJETOS_3D)«FK»
+PK_GrupoObjetos2D
1
+FK_Persistencia_GrupoDeObjeto2D_Persistencia_Gr... 1..*
(FK_ID_GRUPO_DE_OBJETOS_2D
= ID_GRUPO_DE_OBJETOS_3D)«FK»
+PK_GrupoObjetos2D 1
+FK_Persistencia_GrupoDeObjeto2D_Objeto2D_indepe...
1
(FK_ID_OBJETO_2D
= ID_OBJETO_2D)«FK»
+PK_Objeto2D_independiente 1
+FK_Persistencia_GrupoDeObjeto2D_Objeto2D
1
(FK_OBJETO_2D =
ID_OBJETO_2D)
«FK»
+PK_Objeto2D
1
+FK_VectorCaracteristico2D_VectorCaracteristico
0..*
«FK»
+PK_VectorCaracteristico 1
+FK_VectorCaracteristico2D_CaracteristicaObjeto2D 1..*
(FK_ID_CARACTERISTICA_OBJETO_2D
= ID_CARACTERISTICA_OBJETO_2D)«FK»
+PK_CaracteristicaObjeto2D 1
+FK_Valor2D_VectorCaracteristico2D 1..*
(FK_ID_VECTOR_2D =
ID_VECTOR) «FK»
+PK_VectorCaracteristico2D 1
+FK_ArchivoAnexoParaObjeto3D_ArchivoObjeto3D
0..*
(fk_archivo_objeto_3d =
NOMBRE_DE_ARCHIVO)«FK»
+PK_ArchivoObjeto3D 1
+FK_Persistencia_GrupoLogicoObjeto_Objeto3D
0..*
(FK_ID_MODELO_3D =
ID_OBJETO_3D) «FK»
+PK_Objeto3D
1
Para información acerca de esta vista por favor revisar el documento en los anexos del
SAD:
Vista de datos EA_2011_11_28.rtf