UNIVERSIDAD MAYOR DE SAN ANDRES Facultad de Ciencias Puras y Naturales Postgrado en Informática Maestría en Ingeniería del Software Bases de Datos I
Proyecto Final Modelo de Base de Datos para Estructuras Planas Campo de Aplicación: Ingeniería Civil
Presentado a: Dra. Judith Pavón Presentado por: Roger Saravia
La Paz, Bolivia – Agosto de 2007
Resumen En el presente artículo se expone una aplicación de las bases de datos distribuidas al área de la consultoría en ingeniería civil. Esencialmente, se diseñará e implementará una base de datos relacional que servirá como plataforma de almacenamiento para un hipotético software de análisis de estructuras en dos dimensiones. Primero, se describirán detalladamente las entidades y relaciones que participan en el proyecto. Luego, se construirá el modelo E-R. Se desarrollará el diseño lógico. Y se continuará con el diseño físico. También se probará la implementación del diseño relacional aprovechando un caso de estudio (una estructura plana sencilla) y hasta se hará una fragmentación de la relación para ejemplificar la valiosa utilidad de las bases de datos distribuidas. Al final, se hacen algunas consideraciones importantes sobre el estudio.
Palabras Clave Bases de Datos Relacionales Distribuidas, Entidad, Relación, Diseño Conceptual, Diseño Lógico, Diseño Físico, Fragmentación Horizontal Primaria, Fragmentación Horizontal Derivada, Fragmentación Vertical, Fragmentación Híbrida.
Índice
1
INTRODUCCIÓN .....................................................................................................................2 1.1
2
OBJETIVO PRINCIPAL ............................................................................................................2
DISEÑO DE LA BASE DE DATOS RELACIONAL ............................................................2 2.1
DISEÑO CONCEPTUAL ...........................................................................................................2
2.1.1 Descripción del Proyecto.................................................................................................2 2.1.2 Entidades, Relaciones y Diagrama E-R...........................................................................3 2.2 3
4
DISEÑO LÓGICO ....................................................................................................................6
ESPECIFICACIÓN EN SQL DE LA BASE DE DATOS RELACIONAL .........................7 3.1
DEFINICIÓN DE TABLAS ........................................................................................................7
3.2
RESTRICCIONES DE INTEGRIDAD REFERENCIAL ....................................................................9
3.3
INSERCIÓN DE VALORES .......................................................................................................9
3.4
ACTUALIZACIÓN DE VALORES ............................................................................................11
DISEÑO DE LA BASE DE DATOS DISTRIBUIDA...........................................................13 4.1
FRAGMENTACIÓN PRIMARIA HORIZONTAL .........................................................................13
4.2
FRAGMENTACIÓN HORIZONTAL DERIVADA ........................................................................13
4.3
FRAGMENTACIÓN VERTICAL ...............................................................................................14
4.4
FRAGMENTACIÓN HÍBRIDA .................................................................................................15
5
CONCLUSIONES....................................................................................................................16
6
REFERENCIAS .......................................................................................................................16
1
1
Introducción
Este proyecto se desarrolla en las ciencias de computación, específicamente en el área de las bases de datos relacionales distribuidas. El campo de aplicación elegido es la rama estructural del área de la ingeniería civil. Uno de los principales problemas identificados en las aplicaciones o software para el cálculo de estructuras (obras civiles) es la carencia o el no-uso de una base de datos para almacenar ordenadamente un elemento tan complejo y tan relacionado como una estructura. Se puede abordar este problema mediante el diseño conceptual, lógico y también físico de una base de datos para que permita la inserción de todo el conjunto de información correspondiente a una estructura. En este proyecto, para simplificar, se hará uso de las estructuras en dos dimensiones que se corresponden con los denominados marcos planos pórticos.
1.1
Objetivo Principal
El objetivo principal del proyecto elaborado en la materia de Bases de Datos I es mostrar un caso práctico con el diseño e implementación de una base de datos relacional, y definir diferentes tipos de fragmentación sobre los datos del dominio del problema.
2
Diseño de la Base de Datos Relacional
2.1
Diseño Conceptual
2.1.1 Descripción del Proyecto Breve Reseña del Análisis Estructural El análisis estructural es una rama de la física y tiene que ver con el comportamiento de las estructuras bajo determinadas condiciones de diseño. Las estructuras se definen como sistemas que soportan cargas y la palabra comportamiento se entiende como su tendencia a deformarse, vibrar, pandearse o fluir dependiendo de las condiciones a las que estén sometidas. Los resultados del análisis se usan para determinar la forma de las estructuras deformadas y verificar si son adecuadas para soportar las cargas para las cuales se han diseñado.
2
2.1.2 Entidades, Relaciones y Diagrama E-R Una empresa consultora en estructuras (campo de la ingeniería civil) desea diseñar una base de datos con el objeto de establecer una sólida plataforma para el posterior desarrollo de un programa de análisis estructural en dos dimensiones. El mencionado programa de análisis estructural debe crear una base de datos por cada estructura a ser analizada. Una estructura se compone de nudos y elementos. Cada elemento parte de un solo nudo y termina en un solo nudo. No obstante, puede haber varios elementos que parten de un mismo nudo o que terminen en un mismo nudo. Un elemento puede tener un solo conjunto de propiedades de la sección (módulo de elasticidad, área y momento de inercia). Pero puede haber varios elementos que tengan en común las mismas propiedades de la sección. Un elemento puede tener un solo conjunto de componentes de fuerzas internas (fuerza axial, fuerza cortante y momento). Y un conjunto de fuerzas internas solo puede pertenecer a un elemento. Un elemento puede compartir simultáneamente varias condiciones de carga; sin embargo, cada condición de carga debe pertenecer solo a un elemento. Un nudo puede tener un solo conjunto de coordenadas planas (X, Y). Y un conjunto de coordenadas planas puede pertenecer únicamente a un nudo. Un nudo puede compartir simultáneamente varias condiciones de carga puntual pero cada condición de carga puntual debe pertenecer a un solo nudo. Cada nudo puede tener como máximo un solo conjunto de condiciones de borde o de frontera. Pero un conjunto de condiciones de borde puede pertenecer a varios nudos. Un nudo puede tener como máximo un solo conjunto de desplazamientos. A su vez, un conjunto de desplazamientos debe pertenecer como máximo a un solo nudo. Un nudo puede tener como máximo un solo conjunto de reacciones. Y un conjunto de reacciones puede pertenecer como máximo a un nudo. La información correspondiente a un elemento debe incluir código de elemento y tipo de elemento (viga, columna, ménsula u otro). Las propiedades de los elementos deben incluir un código además del módulo elasticidad, el momento de inercia y el área. Las cargas en los elementos deben incluir un código, tipo de carga (puntual, rectangular o triangular), el punto inicial de aplicación, la longitud de aplicación, la carga horizontal (Fx), la carga vertical (Fy) y la carga de momento (Mz). Las fuerzas internas en los elementos deben incluir un código, la fuerza interna local horizontal (fix), la fuerza interna local vertical (fiy) y el momento local (fiz). La información correspondiente a un nudo debe incluir un código de nudo y tipo de nudo (articulado o rígido). Las coordenadas deben incluir un código, la coordenada horizontal X y la coordenada vertical Y. Las cargas puntuales en los nudos deben incluir un código, la carga horizontal (Px), la carga vertical (Py) y la carga de momento (Mz). Las condiciones de borde para los nudos deben incluir un código y la descripción de libertad para la horizontal (Borx), la vertical (Bory) y giro (Borz). Los desplazamientos en los nudos deben incluir un código, el desplazamiento horizontal (Dx), el desplazamiento vertical (Dy) y el ángulo de giro (Gz). Cada reacción debe incluir un código, la fuerza de reacción horizontal (Rx), la fuerza de reacción vertical (Ry) y la reacción a momento (Rz).
3
4
Borde
Elemento
CodEle TipoE
CargElem
DespNud
CodDN Dx Dy Gz
Diseño Conceptual: Entidades
CodBor Borx Bory Borz
CodCE Tipo Inicio Longitud Fx Fy Mz
CargNud
Propiedades
CodCN Px Py Pz
Nudo
Coordenadas
CodNud TipoNu
CodProp Elasticidad Inercia Área
CodCoor X Y
CodReac
CodFI
FuerInter
Reacciones
fix fiy fiz
Rx Ry Rz
5
CargElem
(0,N)
Propiedades
FuerInter
(1,1)
(1,1)
POSEE
TIENE
POSEE
Diseño Conceptual: Modelo E-R
CodProp Elasticidad Inercia Área
CodCE Tipo Inicio Longitud Fx Fy Mz
CodFI fix fiy fiz
(1,1)
(1,1)
(1,N)
CodEle TipoE Elemento (1,N)
(1,N)
TERMINA
PARTE
(1,1)
(1,1)
TIENE
TIENE
(1,1)
(1,1)
(1,1) (1,1) (1,N) Nudo
CodNud TipoNu
Coordenadas
TIENE
TIENE
TIENE
(0,1)
(1,1)
CodCoor X Y Reacciones
CodReac Rx Ry Rz
(1,1)
(0,1)
(0,N)
CargNud
CodCN Px Py Pz Borde
CodBor Borx Bory Borz DespNud
CodDN Dx Dy Gz
2.2
Diseño Lógico
Tablas de Partida
(planteamiento inicial a partir de la lectura del problema)
ELEMENTO
(codele, tipoe)
PROPIEDADES
(codprop, elasticidad, inercia, area)
CARGELEM
(codce, tipo, inicio, longitud, fx, fy, mz)
FUERINTER
(codfi, fix, fiy, fiz)
NUDO
(codnud, tiponu)
COORDENADAS
(codcoor, x, y)
CARGNUD
(codcn, px, py, pz)
BORDE
(codbor, borx, bory, borz)
DESPNUD
(coddn, dx, dy, gz)
REACCIONES
(codreac, rx, ry, rz)
Mapeo
( consultando or denad amen te el diagr a ma E- R)
1aN
ELEMENTO
(codele, tipoe, codprop)
1aN
CARGELEM
(codce, tipo, inicio, longitud, fx, fy, mz, codele)
1a1
ELEMENTO
(codele, tipoe, codprop, fix, fiy, fiz)
1aN
ELEMENTO
(codele, tipoe, codprop, fix, fiy, fiz, codnudini)
1aN
ELEMENTO
(codele, tipoe, codprop, fix, fiy, fiz, codnudini, codnudfin)
1a1
NUDO
(codnud, tiponu, x, y)
1aN
CARGNUD
(codcn, px, py, pz, codnud)
1aN
NUDO
(codnud, tiponu, x, y, codbor)
1a1
NUDO
(codnud, tiponu, x, y, codbor, dx, dy, gz)
1a1
NUDO
(codnud, tiponu, x, y, codbor, dx, dy, gz, rx, ry, rz)
Tablas
(recopilación y compactación final)
ELEMENTO
(codele, tipoe, codprop, fix, fiy, fiz, codnudini, codnudfin)
PROPIEDADES
(codprop, elasticidad, inercia, area)
CARGELEM
(codce, tipo, inicio, longitud, fx, fy, mz, codele) 6
NUDO
(codnud, tiponu, x, y, codbor, dx, dy, gz, rx, ry, rz)
CARGNUD
(codcn, px, py, pz, codnud)
BORDE
(codbor, borx, bory, borz)
3
Especificaciรณn en SQL de la Base de Datos Relacional
3.1
Definiciรณn de Tablas
CREATE TABLE ELEMENTO (codele number not null, tipoe varchar(15), codprop char(2), fix number, fiy number, fiz number, codnudini number, codnudfin number, CONSTRAINT PK_ELEMENTO PRIMARY KEY(codele));
CREATE TABLE PROPIEDADES (codprop char(2) not null, elasticidad number, inercia number, area number, CONSTRAINT PK_PROPIEDADES PRIMARY KEY(codprop));
CREATE TABLE CARGELEM (codce number not null, tipo varchar(15), inicio number, longitud number, fx number, fy number, 7
mz number, codele number, CONSTRAINT PK_CARGELEM PRIMARY KEY(codce));
CREATE TABLE NUDO (codnud number not null, tiponu varchar(15), x number, y number, codbor number, dx number, dy number, gz number, rx number, ry number, rz number, CONSTRAINT PK_NUDO PRIMARY KEY(codnud));
CREATE TABLE CARGNUD (codcn number not null, px number, py number, pz number, codnud number, CONSTRAINT PK_CARGNUD PRIMARY KEY(codcn));
CREATE TABLE BORDE (codbor number not null, borx char(1), bory char(1), borz char(1), CONSTRAINT PK_BORDE PRIMARY KEY(codbor));
8
3.2
Restricciones de Integridad Referencial
ALTER TABLE ELEMENTO ADD CONSTRAINT FK1_ELEMENTO FOREIGN KEY (codprop) REFERENCES PROPIEDADES ADD CONSTRAINT FK2_ELEMENTO FOREIGN KEY (codnudini) REFERENCES NUDO ADD CONSTRAINT FK3_ELEMENTO FOREIGN KEY (codnudfin) REFERENCES NUDO;
ALTER TABLE CARGELEM ADD CONSTRAINT FK_CARGELEM FOREIGN KEY (codele) REFERENCES ELEMENTO;
ALTER TABLE NUDO ADD CONSTRAINT FK_NUDO FOREIGN KEY (codbor) REFERENCES BORDE;
ALTER TABLE CARGNUD ADD CONSTRAINT FK_CARGNUD FOREIGN KEY (codnud) REFERENCES NUDO;
3.3
Inserciรณn de Valores
Para la inserciรณn de valores se aprovecharรก la estructura plana mostrada en la ilustraciรณn de a continuaciรณn:
9
INSERT INTO PROPIEDADES VALUES ('P1', 30000, 600, 40);
INSERT INTO PROPIEDADES VALUES ('P2', 30000, 1000, 50);
INSERT INTO BORDE VALUES (1, 'F', 'F', 'L');
INSERT INTO BORDE VALUES (2, 'F', 'F', 'F');
INSERT INTO NUDO (codnud, tiponu, x, y, codbor) VALUES (1, 'Apoyo', 0, 4, 2);
INSERT INTO NUDO (codnud, tiponu, x, y) VALUES (2, 'Rigido', 0, 16);
INSERT INTO NUDO (codnud, tiponu, x, y) VALUES (3, 'Rigido', 10, 16);
INSERT INTO NUDO (codnud, tiponu, x, y, codbor) VALUES (4, 'Apoyo', 10, 24, 1);
INSERT INTO NUDO (codnud, tiponu, x, y, codbor) VALUES (5, 'Apoyo', 22, 0, 2);
INSERT INTO CARGNUD VALUES (1, 20, 0, 0, 2);
INSERT INTO CARGNUD VALUES (2, 10, 0, 0, 3); 10
INSERT INTO ELEMENTO (codele, tipoe, codprop, codnudini, codnudfin) VALUES (1, 'Columna', 'P1', 1, 2);
INSERT INTO ELEMENTO (codele, tipoe, codprop, codnudini, codnudfin) VALUES (2, 'Viga', 'P1', 2, 3);
INSERT INTO ELEMENTO (codele, tipoe, codprop, codnudini, codnudfin) VALUES (3, 'Columna', 'P1', 3, 4);
INSERT INTO ELEMENTO (codele, tipoe, codprop, codnudini, codnudfin) VALUES (4, 'Otro', 'P2', 3, 5);
INSERT INTO CARGELEM VALUES (1, 'Puntual', 6, 0, 6, -8, 0, 2);
INSERT INTO CARGELEM VALUES (2, 'Puntual', 8, 0, 0, -5, 0, 2);
INSERT INTO CARGELEM VALUES (3, 'Rectangular', 2.5, 12.5, 2, 0, 0, 4);
INSERT INTO CARGELEM VALUES (4, 'Puntual', 5, 0, 0, -8, 0, 4);
Importante: Toda esta información introducida hasta aquí será tomada en cuenta para el análisis estructural por parte del hipotético programa a ser desarrollado. Una vez dicho programa haya concluido con el cálculo, los resultados del mismo deberán ser actualizados en la base de datos de la estructura tal como se muestra a continuación:
3.4
Actualización de Valores
UPDATE NUDO SET dx = 0.0014, dy = 0.0000035, gz = -0.000084 WHERE codnud = 2; 11
UPDATE NUDO SET dx = 0.0012, dy = 0.00017, gz = 0.0000011 WHERE codnud = 3;
UPDATE NUDO SET rx = -0.78, ry = -0.35, rz = 5.59 WHERE codnud = 1;
Comentario: Esta estructura fue calculada con un programa llamado Kardestuncer desarrollado por el autor y disponible en www.geocities.com/rgusarav
UPDATE NUDO SET dx = 0, dy = 0, gz = 0.00023, rx = -0.91, ry = -25.06, rz = 0 WHERE codnud = 4;
UPDATE NUDO SET rx = -28.31, ry = 38.42, rz = -1.06 WHERE codnud = 5;
UPDATE ELEMENTO SET fix = 0.35, fiy = -0.78, fiz = 5.59 WHERE codele = 1;
UPDATE ELEMENTO SET fix = -19.22, fiy = 0.35, fiz = -3.83 WHERE codele = 2;
UPDATE ELEMENTO SET fix = -25.06, fiy = 0.91, fiz = -7.28 WHERE codele = 3;
UPDATE ELEMENTO SET fix = -41.32, fiy = -4.40, fiz = 16.96 WHERE codele = 4;
12
4
Diseño de la Base de Datos Distribuida
4.1
Fragmentación Primaria Horizontal
ESTRUC1
=
SELECT * FROM ELEMENTO WHERE tipoe = 'Viga';
ESTRUC2
=
SELECT * FROM ELEMENTO WHERE tipoe = 'Columna';
BD COMPLETA Gabinete de Cálculo
ESTRUC1
Armado de Vigas
Armado de Columnas
ESTRUC2
Justificación: En la práctica, se puede tener un edificio de muchos pisos que involucra miles de elementos como vigas y columnas. Por motivos de costos de comunicación, concurrencia de transacciones y rendimiento de la BD, se ha propuesto una fragmentación horizontal primaria para la distribución de la información de los elementos de la estructura a los correspondientes campamentos de Armado de Vigas y Armado de Columnas situados con relación a la obra. La base de datos completa reside en el gabinete de cálculo de la oficina central que a su vez podría estar muy distante.
4.2
Fragmentación Horizontal Derivada
ELEMA
=
SELECT * FROM ELEMENTO, (SELECT * FROM PROPIEDADES WHERE elasticidad <= 50000) B WHERE ELEMENTO.codprop = B.codprop; 13
ELEMB
=
SELECT * FROM ELEMENTO, (SELECT * FROM PROPIEDADES WHERE elasticidad > 50000) B WHERE ELEMENTO.codprop = B.codprop;
BD COMPLETA Gabinete de Cálculo
ELEMA
Especialistas en Inelásticos
Especialistas en Elásticos
ELEMB
Justificación: Por motivos de costos de comunicación, concurrencia de transacciones y rendimiento de la BD, se ha propuesto una fragmentación horizontal derivada. Los ingenieros expertos en el diseño de elementos de baja elasticidad (módulo de elasticidad menor a 50000 Kg/cm²) tendrán a su disposición el fragmento ELEMA. Y los ingenieros expertos en el diseño de elementos de alta elasticidad (módulo de elasticidad mayor a 50000 Kg/cm²) podrán contar con el fragmento ELEMB de la base de datos.
4.3 NUD1
Fragmentación Vertical =
SELECT codnud, x, y FROM NUDO;
NUD2
=
SELECT codnud, dx, dy, gz FROM NUDO;
BD COMPLETA Gabinete de Cálculo
NUD1
Dpto. de Topografía
Control de Asentamientos
NUD2
14
Justificación: La construcción de las estructuras como edificios exige el trabajo por especialidades. Por motivos de costos de comunicación, concurrencia de transacciones y rendimiento de la BD, se ha propuesto una fragmentación vertical. El equipo de topografía podrá usar la fragmentación NUD1 que contiene las coordenadas de las uniones. Y el equipo de control de asentamientos podrá usar la fragmentación NUD2 que tiene la información sobre los desplazamientos de los nudos.
4.4 DISE1
Fragmentación Híbrida =
SELECT codele, fix, fiz FROM ELEMENTO WHERE tipoe = 'Columna';
DISE2
=
SELECT codele, fiy FROM ELEMENTO WHERE tipoe = 'Viga';
BD COMPLETA Gabinete de Cálculo
DISE1
Diseñadores a Flexo-Compresión
Diseñadores a Cortante
DISE2
Justificación: Por cuestiones de costos de comunicación, concurrencia de transacciones y rendimiento de la BD, se ha propuesto una fragmentación híbrida. De esta manera, los ingenieros que calculan a partir de los esfuerzos de flexo-compresión, dispondrán de las filas y columnas pertinentes. Y los ingenieros que calculan a partir del esfuerzo a cortante, tendrán a su disposición solo las filas y columnas correspondientes. Ambos cuerpos de calculistas están en la ciudad de la obra y la oficina central puede estar en otra ciudad. Finalmente, recordar que, la base de datos completa de la estructura es grande y reside en la oficina central.
15
5
Conclusiones
Se ha comprobado la gran importancia de las bases de datos sobre todo por su apoyo transversal a otras áreas del conocimiento y servicio como la ingeniería civil. Sin una base de datos, la organización y consecuente almacenamiento (digital) de una estructura sería algo sumamente dificultoso de lograr. Además, el tener la información almacenada ordenadamente en una base de datos, hasta podría ser útil para el intercambio de información entre aplicaciones del área. Se ha visto que la necesidad de la distribución fragmentada de una base de datos está relacionada principalmente con: localidad de referencia, costos de comunicación, ejecución concurrente de transacciones en partes diferentes de la relación, vistas que no pueden ser definidas en un único fragmento que requieren procesamiento extra, y la necesidad de aumentar el rendimiento de la BD. La fragmentación horizontal permite el procesamiento paralelo de una relación estando presentes solamente aquellas filas que se utilizan frecuentemente. La fragmentación vertical permite que una tabla pueda ser distribuida en función del uso de sus atributos y permite descomposiciones adicionales. Además, el atributo especial facilita las combinaciones de fragmentos verticales. Las bases de datos y las redes son una realidad y hay gran campo para su aplicación.
6
Referencias •
JUDITH PAVON M. (2007)
"Bases de Datos Distribuidas". Presentación PowerPoint. Postgrado en Informática. UMSA. LP-BOL.
•
DIANA LORENTZ (2001)
“Oracle9i SQL Referente (9.0.1)”. ORACLE. Estados Unidos.
•
H. KARDESTUNCER (1975)
"Introducción al Análisis Estructural con Matrices". Mcgraw-Hill. Estados Unidos.
16