Story Transcript
Arquitectura de un modulo I/O para objetos 3D
Andrés Harker Gutiérrez Gutierrez
Tabla de contenido 1.
2.
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
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 A B C
DEFINICIÓN, ABREVIATURAS Y ACRÓNIMOS ¥ ¥ ¥ ¥
D ¥ ¥
E ¥
F
¥
G
¥
H
¥
I
¥
J
¥ ¥ ¥ ¥ ¥
K
¥
L
¥
M
¥
N
Browser: Software especial que se ejecuta en una computadora conectada a internet, mediante el cual los usuarios pueden ver páginas web. [5]
¥
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. 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]
JEE: Java Enterprise Edition JPA: Java Persistence Api. JMS: Java Message Service. JDK: Java Develpment Kit. JRE: Java Runtime Enviroment.
.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
¥ ¥
¥
¥ S ¥ ¥ ¥ ¥
¥ T ¥
U
¥ ¥ ¥
V
¥
W
¥
X
¥
Y
¥
Z
¥
Requerimiento: Condición o capacidad necesaria por un usuario para solucionar un problema o logar un objetivo. [4] 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. 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] 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] 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.
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 Externos a VITRAL
Sistemas de 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:
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.
Ilustración 1: Vistas de la Arquitectura
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 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) +FK_Valor2D_VectorCaracteristico2D
1..*
(FK_ID_VECTOR_2D = ID_VECTOR) «FK»
+PK_VectorCaracteristico2D
1 VectorCaracteristico2D
«column» *PK ID_VECTOR: decimal(20,1) *FK FK_ID_CARACTERISTICA_OBJETO_2D: decimal(20,1) INDICE: decimal(20,1) +FK_VectorCaracteristico2D_VectorCaracteristico * FK_ID_VECTOR_CARACTERISTICO: decimal(20,1) 0..* «FK» + FK_VectorCaracteristico2D_CaracteristicaObjeto2D(decimal)
Caracteristica2D «column» *PK ID_CARACTERISTICA: decimal(20,1) * DESCRIPCION: varchar(250) * NOMBRE: varchar(250)
«PK» + PK_VectorCaracteristico2D(integer)
«PK» + PK_Caracteristica2D(integer)
«FK»
+PK_VectorCaracteristico
+FK_VectorCaracteristico2D_CaracteristicaObjeto2D 1..* (FK_ID_CARACTERISTICA_OBJETO_2D = ID_CARACTERISTICA_OBJETO_2D) «FK»
1
+PK_CaracteristicaObjeto2D
+PK_Caracteristica2D
VectorCaracteristico
Valor
1
(FK_ID_CARACTERISTICA_2D = ID_CARACTERISTICA) «FK»
1
CaracteristicaObj eto2D «column» *PK ID_VECTOR: decimal(20,1) *FK FK_ID_CARACTERISTICA_OBJETO: decimal(20,1) +FK_Valor_VectorCaracteristico (FK_ID_VECTOR +PK_VectorCaracteristico * INDICE: decimal(20,1) = ID_VECTOR) «FK» 1..* 1
«column» *PK ID_VALOR: decimal(20,1) * VALOR: real * INDICE: decimal(20,1) *FK FK_ID_VECTOR: decimal(20,1)
+FK_VectorCaracteristico_CaracteristicaObjeto3D
+FK_CaracteristicaObjeto2D_Objeto2D_independiente 0..*
1..*
Metadata2D «column» *PK ID_METADATA_2D: decimal(20,1) * DESCRIPCION: varchar(250)
«PK» + PK_CaracteristicaObjeto2D(integer)
(FK_ID_CARACTERISTICA_OBJETO = ID_CARACTERISTICA_OBJETO) «FK» +PK_CaracteristicaObjeto3D
0..*
«FK» + FK_CaracteristicaObjeto2D_Caracteristica2D(decimal) + FK_CaracteristicaObjeto2D_Objeto2D(decimal) + FK_CaracteristicaObjeto2D_Objeto2D_independiente(decimal)
«PK» + PK_VectorCaracteristico(integer)
«PK» + PK_Valor(integer)
+FK_CaracteristicaObjeto2D_Caracteristica2D
«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_VectorCaracteristico_CaracteristicaObjeto3D(decimal)
«FK» + FK_Valor_VectorCaracteristico(decimal)
+FK_CaracteristicaObjeto2D_Objeto2D
1
+PK_Metadata2D 1
(FK_ID_METADATA_2D = ID_METADATA_2D)
«PK» + PK_Metadata2D(integer)
1..*
«FK»
CaracteristicaObj eto3D
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.
Caracteristica «column» *PK ID_CARACTERISTICA: decimal(20,1) * DESCRIPCION: varchar(250) * NOMBRE: varchar(250) «PK» + PK_Caracteristica(integer)
Cache_usuario_en_session
(FK_ID_OBJETO_2D = ID_OBJETO_2D) «FK»
«column» *FK FK_ID_CARACTERISTICA: decimal(20,1) +PK_Caracteristica +FK_CaracteristicaObjeto3D_Caracteristica *FK FK_ID_OBJETO_3D: decimal(20,1) (FK_ID_CARACTERISTICA *PK ID_CARACTERISTICA_OBJETO: decimal(20,1) = ID_CARACTERISTICA) «FK» 1 1..* «FK» + FK_CaracteristicaObjeto3D_Caracteristica(decimal) + FK_CaracteristicaObjeto3D_Objeto3D(decimal)
«column» *PK ID_USUARIO: decimal(20,1)
+FK_CaracteristicaObjeto3D_Objeto3D
(FK_ID_OBJETO_2D_3D = ID_OBJETO_2D) «FK»
1..*
Archiv oObj eto2D
Cache_consulta «PK» + PK_Cache_usuario_en_session(integer)
+FK_Metamodelo2D_Metadata2D 0..*
«FK» 1..* + FK_Cache_consulta_Cache_usuario_en_session(decimal) «PK» + PK_Cache_consulta(integer) 1
Obj eto3D
«column» *PK ID_ESCENA: decimal(20,1) * NOMBRE: varchar(250) * ARCHIVO_ESCENA: bytea
«FK» +FK_Cache_consulta_Cache_usuario_en_session
+PK_Cache_consulta
+PK_Objeto2D
Escena
«column» *PK ID_CONSULTA: decimal(20,1) *FK FK_ID_USUARIO: decimal(20,1)
+PK_Cache_usuario_en_session (FK_ID_USUARIO =1 ID_USUARIO)
+PK_Escena 1
«column» *pfK FK_ID_CONSULTA: decimal(20,1) *pfK FK_ID_OBJETO_3D: decimal(20,1)
«FK» + FK_ArchivoObjeto3D_Objeto3D(decimal)
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)
Persistencia_GrupoObj etos «column» +FK_Persistencia_Correlaciones_Persistencia_Grup... +PK_GrupoObjetos *PK ID_GRUPO_DE_OBJETOS_3D: decimal(20,1) (FK_ID_GRUPO_DE_OBJETOS_3D * DESCRIPCION: varchar(250) = ID_GRUPO_DE_OBJETOS_3D) «FK» 0..* 1 «PK» + PK_GrupoObjetos(integer)
«PK» + PK_Correlaciones(integer, integer) +FK_Persistencia_Correlaciones_Persistencia_Corr...
0..*
Archiv oObj eto3D «column» * archivo: bytea *PK NOMBRE_DE_ARCHIVO: varchar(50) *FK FK_OBJETO_3D: decimal(20,1)
«PK» + PK_Cache_Objeto_2D(integer, integer)
+PK_GrupoObjetos
+PK_Objeto3D 1
(FK_ID_OBJETO_3D = ID_OBJETO_3D) «FK»
+PK_Objeto3D
(FK_OBJETO_3D = +PK_Objeto3D ID_OBJETO_3D) (FK_ID_OBJETO_3D «FK» = ID_OBJETO_3D) «FK»
+PK_Objeto2D
(FK_OBJETO_2D = ID_OBJETO_2D) «FK»
1
«FK»
+FK_Persistencia_GrupoDeObjeto2D_Objeto2D
+PK_Metadata3D (FK_ID_MODELO_3D = ID_OBJETO_3D) «FK»
«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)
1
Metadata3D
1
«PK» + PK_Metadata3D(integer)
1..*
(FK_ID_GRUPO_DE_OBJETOS_2D = ID_GRUPO_DE_OBJETOS_3D) «FK» +PK_GrupoObjetos2D
1
Persistencia_GrupoObj etos2D «column» *PK ID_GRUPO_DE_OBJETOS_3D: decimal(20,1) * DESCRIPCION: varchar(250)
0..*
(FK_ID_CORRELACION = ID_CORRELACION) «FK»
Archiv oAnexoParaObj eto3D «column» *PK id: integer * nombreDeArchivo: varchar(50) * archivo: bytea *FK fk_archivo_objeto_3d: varchar(50)
+PK_PosicionLimite
«PK» + PK_Correlacion(integer)
«PK» + PK_ArchivoAnexoParaObjeto3D(integer)
0..*
1
0..*
«FK» + FK_Persistencia_GrupoLogicoObjeto_Objeto3D(decimal) + FK_Persistencia_GrupoLogicoObjeto_Persistencia_GrupoLogico(decimal) «PK» + PK_GrupoLogicoObjeto(integer, integer)
+FK_ArchivoAnexoParaObjeto3D_ArchivoObjeto3D
+FK_Persistencia_GrupoLogicoObjeto_Persistencia_... Persistencia_Limite
«FK» + FK_ArchivoAnexoParaObjeto3D_ArchivoObjeto3D(varchar)
Persistencia_GrupoLogicoObj eto «column» *pfK FK_ID_GRUPO_LOGICO: decimal(20,1) +FK_Persistencia_GrupoLogicoObjeto_Objeto3D *pfK FK_ID_MODELO_3D: decimal(20,1)
«PK» + PK_PosicionLimite(integer)
(FK_ID_GRUPO_DE_OBJETOS_3D = ID_GRUPO_DE_OBJETOS_3D) «FK»
1
Persistencia_Correlacion «column» *PK ID_CORRELACION: decimal(20,1) DESCRIPCION: varchar(250)
Persistencia_PosicionLimite «column» *PK ID_POSICION_DEL_LIMITE: decimal(20,1) DESCRIPCION: varchar(250)
«column» *pfK FK_ID_GRUPO_DE_OBJETOS_3D: decimal(8,2) *pfK FK_ID_POSICION_DEL_LIMITE: decimal(20,1) * LIMITE_INFERIOR: real +FK_Persistencia_Limite_Persistencia_GrupoObjetos * LIMITE_SUPERIOR: real 0..*
(FK_ID_POSICION_DEL_LIMITE = ID_POSICION_DEL_LIMITE) «FK»
«FK» + FK_Persistencia_Limite_Persistencia_GrupoObjetos(decimal) + FK_Persistencia_Limite_Persistencia_PosicionLimite(decimal)
0..*
(FK_ID_GRUPO_LOGICO = ID_GRUPO_LOGICO) «FK»
«PK» + PK_GrupoObjetos2D(integer) +PK_GrupoObjetos2D
1
Persistencia_Correlaciones2D «column» *pfK FK_ID_CORRELACION_2D: decimal(20,1) +PK_GrupoObjetos2D +FK_Persistencia_Correlaciones2D_Persistencia_Gr... *pfK FK_ID_GRUPO_DE_OBJETOS_2D: decimal(20,1) (FK_ID_GRUPO_DE_OBJETOS_2D = ID_GRUPO_DE_OBJETOS_3D) «FK» 1 0..* «FK» + FK_Persistencia_Correlaciones2D_Persistencia_Correlacion2D(decimal) + FK_Persistencia_Correlaciones2D_Persistencia_GrupoObjetos2D(decimal)
(FK_ID_GRUPO_DE_OBJETOS_2D = ID_GRUPO_DE_OBJETOS_3D) «FK»
+FK_Persistencia_Limite2D_Persistencia_GrupoObje... 0..* 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_GrupoLogico
1
Persistencia_GrupoLogico
+FK_Persistencia_Limite_Persistencia_PosicionLimite
«column» *PK ID_GRUPO_LOGICO: decimal(20,1) NOMBRE: varchar(250)
0..*
«PK» + PK_Limite(integer, integer)
«PK» + PK_GrupoLogico(integer)
(FK_ID_OBJETO_2D = ID_OBJETO_2D) «FK»
+FK_Persistencia_GrupoDeObjeto2D_Objeto2D_indepe...
«FK» + FK_Persistencia_GrupoDeObjeto2D_Objeto2D(decimal) + FK_Persistencia_GrupoDeObjeto2D_Objeto2D_independiente(decimal) + FK_Persistencia_GrupoDeObjeto2D_Persistencia_GrupoObjetos2D(decimal)
+FK_Persistencia_GrupoDeObjeto2D_Persistencia_Gr...
1
«column» *PK ID_METADATA_3D: decimal(20,1) * DESCRIPCION: varchar(250)
«PK» + PK_GrupoDeObjeto(integer, integer)
1
(FK_ID_OBJETO_2D = ID_OBJETO_2D) «FK»
«PK» + PK_Persistencia_GrupoDeObjeto2D(decimal)
Persistencia_GrupoDeObj eto
+PK_ArchivoObjeto3D 1 +PK_GrupoObjetos +FK_Persistencia_GrupoDeObjeto_Persistencia_Grup... «FK» (FK_ID_GRUPO_DE_OBJETO_3D = ID_GRUPO_DE_OBJETOS_3D) FK_Persistencia_GrupoDeObjeto_Objeto3D(decimal) «FK» 1 0..* + + FK_Persistencia_GrupoDeObjeto_Persistencia_GrupoObjetos(decimal)
1
0..*
«PK» + PK_Limite2D(integer)
+FK_ArchivoObjeto2D_Objeto2D_independiente «FK» + FK_ArchivoObjeto2D_Objeto2D_independiente(decimal) 0..* (FK_OBJETO_2D = «PK» + PK_ArchivoObjeto2D(decimal)
«PK» + PK_Correlaciones2D(integer, integer) +FK_Persistencia_Correlaciones2D_Persistencia_Co...
1..*
(FK_ID_CORRELACION_2D = ID_CORRELACION_2D) «FK» +PK_Correlacion2D
1
Persistencia_Correlacion2D «column» *PK ID_CORRELACION_2D: decimal(20,1) * DESCRIPCION: varchar(250) «PK» + PK_Correlacion2D(integer)
ID_OBJETO_2D) «FK» +PK_Objeto2D_independiente 1
+PK_Objeto2D_independiente «PK» + PK_Objeto2D_independiente(integer) 1
+PK_Objeto2D_independiente
«PK» + PK_Metamodelo2D(integer)
Persistencia_GrupoDeObj eto2D
(FK_ID_METADATA_3D = ID_METADATA_3D) «FK»
«column» *pfK FK_ID_OBJETO_3D: decimal(20,1) *pfK FK_ID_GRUPO_DE_OBJETO_3D: decimal(20,1)
+FK_Metamodelo2D_Objeto2D_independiente (FK_ID_OBJETO_2D = ID_OBJETO_2D) «FK» 0..*
«FK» + FK_Metamodelo2D_Metadata2D(decimal) + FK_Metamodelo2D_Objeto2D(decimal) + FK_Metamodelo2D_Objeto2D_independiente(decimal)
(FK_OBJETO_2D = ID_OBJETO_2D)
«FK» + FK_Metamodelo3D_Metadata3D(decimal) + FK_Metamodelo3D_Objeto3D(decimal)
+FK_Metamodelo3D_Metadata3D
1
Obj eto2D_independiente «column» +PK_Objeto2D_independiente *PK ID_OBJETO_2D: decimal(20,1) * EXISTE: boolean 1
1
Metamodelo3D «column» +FK_Metamodelo3D_Objeto3D *pfK FK_ID_OBJETO_3D: decimal(20,1) 0..* *pfK FK_ID_METADATA_3D: decimal(20,1)
«PK» + PK_Metamodelo3D(integer, integer)
«unique» + UQ_ArchivoObjeto3D_FK_OBJETO_3D(decimal)
0..*
+PK_Objeto2D
«PK» + PK_Objeto2D(integer)
0..* +FK_Persistencia_GrupoDeObjeto_Objeto3D 1..*
«PK» + PK_ArchivoObjeto3D(varchar)
«column» *FK FK_ID_OBJETO_2D: decimal(20,1) *FK FK_OBJETO_2D: decimal(20,1) +FK_Metamodelo2D_Objeto2D *pfK FK_ID_METADATA_2D: decimal(20,1)
«FK» + FK_Objeto2D_Objeto3D(decimal)
1 (FK_ID_OBJETO_3D = ID_OBJETO_3D) «FK»
1
+PK_Objeto2D_independiente
Metamodelo2D
«column» +FK_Objeto2D_Objeto3D *PK ID_OBJETO_2D: decimal(20,1) * ARCHIVO_ASOCIADO: bytea 0..* * EXISTE: decimal(20,1) *FK FK_ID_OBJETO_3D: decimal(20,1)
+FK_ArchivoObjeto3D_Objeto3D
(fk_archivo_objeto_3d = NOMBRE_DE_ARCHIVO) «FK»
+PK_Correlacion
1
«PK» + PK_Objeto3D(integer)
(FK_ID_OBJETO_3D = ID_OBJETO_3D) «FK» +FK_Cache_objeto_3D_Objeto3D
«PK» + PK_Cache_objeto_3D(integer, integer)
Cache_Obj eto_2D
«FK» + FK_Cache_Objeto_2D_Cache_consulta(decimal) + FK_Cache_Objeto_2D_Objeto2D(decimal)
+PK_Objeto3D
1
Obj eto2D
1
«FK» + FK_Objeto3D_Escena(decimal)
+PK_Objeto3D +PK_Objeto3D 1 1
+FK_Cache_objeto_3D_Cache_consulta «FK» + FK_Cache_objeto_3D_Cache_consulta(decimal) 0..* + FK_Cache_objeto_3D_Objeto3D(decimal)
«column» *pfK FK_ID_CONSULTA: decimal(20,1) +FK_Cache_Objeto_2D_Objeto2D *pfK FK_ID_OBJETO_2D: decimal(20,1)
+PK_Objeto3D
«column» +FK_Objeto3D_Escena *PK ID_OBJETO_3D: decimal(20,1) * EXISTE: boolean 1..* FK FK_ID_ESCENA: decimal(20,1)
Cache_obj eto_3D
1
(FK_ID_CONSULTA = ID_CONSULTA) «FK»
+FK_Cache_Objeto_2D_Cache_consulta 0..*
0..*
(FK_ID_ESCENA = ID_ESCENA) «FK»
«PK» + PK_Escena(integer) +PK_Cache_consulta
(FK_ID_CONSULTA = ID_CONSULTA) «FK»
«column» *PK ID: decimal(20,1) * NOMBRE_DE_ARCHIVO: varchar(50) * ARCHIVO: bytea *FK FK_OBJETO_2D: decimal(20,1)
(FK_ID_OBJETO_3D = ID_OBJETO_3D) «FK»
«PK» + PK_CaracteristicaObjeto3D(integer)
«unique» + UQ_ArchivoObjeto2D_FK_OBJETO_2D(decimal)
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