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.
1
Índice
1 INTRODUCCIÓN .....................................................................................................................2
1.1 OBJETIVO PRINCIPAL ............................................................................................................2
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 DISEÑO LÓGICO ....................................................................................................................6
3 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
4 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
2
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.
3
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).
4
Pro
pied
ades
CodPropElasticidadInerciaÁrea
Coo
rden
adas
CodCoorX
Car
gEle
m
CodCETipo
Car
gNud
CodCNPx
Nud
o
CodNud
Dis
eño
Con
cept
ual:
Ent
idad
es
Y
InicioLongitud
PyPz
Rea
ccio
nes
CodReacRxRyRz
FxFyMz
Fuer
Inte
r
CodFIfixfiyfiz
Des
pNud
CodDNDxDyGz
TipoNu
Ele
men
to
CodEleTipoE
Bor
de
CodBorBorxBoryBorz
5
Nudo
CodNudTipoNu
Coor
dena
das
CodCoorXY
TIEN
E(1
,1)
(1,1
)
Carg
Nud
CodCNPxPyPz
TIEN
E
(1,1
)
(0,N
)
Bord
e
CodBorBorxBoryBorz
TIEN
E(0
,1)
Desp
Nud
CodDNDxDyGz
(1,N
)
TIEN
E
(1,1
)
(1,1
)
Reac
cione
s
CodReacRxRyRz
TIEN
E(0
,1)
(1,1
)
Elem
ento
CodEleTipoE
PART
E
TERM
INA
(1,N
)(1
,1)
(1,N
)(1
,1)
Prop
ieda
des
CodPropElasticidadInerciaÁrea
POSE
E
(1,N
)
(1,1
)
Carg
Elem
CodCETipoInicioLongitudFxFyMz
TIEN
E(0
,N)
(1,1
)
Fuer
Inte
r
CodFIfixfiyfiz
POSE
E(1
,1)
(1,1
)
Dis
eño
Con
cept
ual:
Mod
elo
E-R
6
2.2 Diseño Lógico
TTaabb ll aa ss ddee PPaa rr tt ii dd aa (( pp ll aann tt eeaa mmii eenn ttoo ii nn ii cc ii aa ll aa pp aa rr tt ii rr ddee ll aa ll eecc tt uu rr aa dd ee ll pprroobb ll ee mmaa))
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)
MM aapp eeoo (( ccoo nn ssuu ll tt aann dd oo oorrddeennaadd aammeenn tt ee ee ll dd ii aagg rr aammaa EE -- RR))
1 a N ELEMENTO (codele, tipoe, codprop)
1 a N CARGELEM (codce, tipo, inicio, longitud, fx, fy, mz, codele)
1 a 1 ELEMENTO (codele, tipoe, codprop, fix, fiy, fiz)
1 a N ELEMENTO (codele, tipoe, codprop, fix, fiy, fiz, codnudini)
1 a N ELEMENTO (codele, tipoe, codprop, fix, fiy, fiz, codnudini, codnudfin)
1 a 1 NUDO (codnud, tiponu, x, y)
1 a N CARGNUD (codcn, px, py, pz, codnud)
1 a N NUDO (codnud, tiponu, x, y, codbor)
1 a 1 NUDO (codnud, tiponu, x, y, codbor, dx, dy, gz)
1 a 1 NUDO (codnud, tiponu, x, y, codbor, dx, dy, gz, rx, ry, rz)
TTaabb ll aa ss (( rr eeccoo pp ii ll aacc ii óó nn yy ccoo mmpp aacc tt aacc iióónn ff ii nnaa ll ))
ELEMENTO (codele, tipoe, codprop, fix, fiy, fiz, codnudini, codnudfin)
PROPIEDADES (codprop, elasticidad, inercia, area)
CARGELEM (codce, tipo, inicio, longitud, fx, fy, mz, codele)
7
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,
8
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));
9
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:
10
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);
11
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);
IImmppoorrttaannttee:: 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;
12
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;
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;
Comentario: Esta estructura fue calculada con un programa llamado Kardestuncer desarrollado por el autor y disponible en www.geocities.com/rgusarav
13
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';
Gabinete de Cálculo
Armado de Vigas
Armado de Columnas ESTRUC2ESTRUC1
BD COMPLETA
JJuussttiiffiiccaacciióónn:: 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;
14
ELEMB = SELECT *
FROM ELEMENTO, (SELECT * FROM PROPIEDADES
WHERE elasticidad > 50000) B
WHERE ELEMENTO.codprop = B.codprop;
Gabinete de Cálculo
Especialistas en Inelásticos
Especialistas en Elásticos ELEMBELEMA
BD COMPLETA
JJuussttiiffiiccaacciióónn:: 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 Fragmentación Vertical
NUD1 = SELECT codnud, x, y
FROM NUDO;
NUD2 = SELECT codnud, dx, dy, gz
FROM NUDO;
Gabinete de Cálculo
Dpto. de Topografía
Control de Asentamientos NUD2NUD1
BD COMPLETA
15
JJuussttiiffiiccaacciióónn:: 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 Fragmentación Híbrida
DISE1 = SELECT codele, fix, fiz
FROM ELEMENTO
WHERE tipoe = 'Columna';
DISE2 = SELECT codele, fiy
FROM ELEMENTO
WHERE tipoe = 'Viga';
Gabinete de Cálculo
Diseñadores a Flexo-Compresión
Diseñadores a Cortante DISE2DISE1
BD COMPLETA
JJuussttiiffiiccaacciióónn:: 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.
16
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.
Top Related