Máster Universitario en Historia de la Monarquía Hispánica, Noviembre 2010. UCM.
2.3.2 Recursos electrónicos para historiadores.
Bases de datos, representación y análisis de redes complejas
de cooperación
*
R. Maestre-Martínez
**Consejo Superior de Investigaciones Científicas
Centro de Ciencias Humanas y Sociales
Unidad de Sistemas de Información Geográfica
Madrid 2010,España
Resumen
Mostraremos el enfoque técnico aplicado en el proyecto Dyncoopnet con el objectivo de identificar los procesos necesarios para diseñar un Sistema de Información que permita al Investigador en Historia diseñar modelos de datos específicos y ajustados a sus necesidades utilizando metodologías que aseguren la calidad de los datos. También se proporcionará información de herramientas de diseño, operación y análisis. Se introducirá un ejemplo para modelar una red de parentesco y se analizaran los resultados obtenidos. Introduciremos dos tipos de análisis: redes y SIG. Para finalizar se propondrá un supuesto práctico y una posterior ampliación.
1.
Introducción
Las bases de datos proporcionan un método a través del cual un investigador puede recopilar datos y almacenarlos, para más tarde, realizar estudios apoyándose en dicha información. Sin una correcta estructuración de los datos, no se podrá mas tarde extraer información de una manera fiable, ordenada y rápida. A menudo no se tiene en cuenta los principios básicos en informática, bases de datos e ingeniería del software para abordar este cometido, pero pueden darse unas nociones básicas para acometer dicha tarea. Introduciremos los principios básicos de diseño para asegurar la calidad de la base de datos y sus datos almacenados, y así poder formalizar las mejores prácticas para crear un modelo de datos robusto.
*Referencias ESF: FP: 004DynCoopNet y Acciones Complementarias del Ministerio de Ciencia e Innovación: SEJ2007-29226. Este proyecto también está siendo financiado por el Programa MacroGrupos de la Comunidad de Madrid: Red de investigación: ‘Sólo Madrid es Corte. La construcción de la Corte de la Monarquía Católica’, Programa MacroGrupos de la Comunidad de Madrid. Referencia CAM: HUM2007-29143-E/HIST
Podemos abordar la problemática de la creación de bases de datos históricas con herramientas informáticas, las cuales nos permitirán diseñar y construir modelos de datos, que una vez implementados en un Sistema Gestor de Bases de Datos, soportará las operaciones necesarias para la extracción de la información. Dichas herramientas nos permitirán automatizar todo el proceso desde el diseño a la explotación.
Tomaremos como Gestor de Base de datos Microsoft Access (2007) por ser el SGBD más utilizado en proyectos individuales, e indicaremos los pasos básicos para diseñar un pequeño modelo de anális de redes de parentesco entre agentes. Pero lo expuesto aquí son los fundamentos teóricos que permitirán realizar un diseño para cualquier Sistema Gestor de Bases de Datos del mercado.
Es especial cabe destacar PostgreSQL[7] con la extensión PostGIS[8] que añade funciones de procesamiento espacial, y además son software libre y multiplataforma.
Diseño SGDB
Operación
Modelo /Extracción Análisis
Figura 1. Metodología
Visión global
2.
Bases de datos
Las bases de datos[2] son programas informáticos que gestionan una cierta información de una manera estructurada. Nos permiten establecer reglas de integridad para los datos como puede ser la no duplicidad de datos o la integridad referencial que significa que una entidad (fila o registro) siempre se relaciona con otras entidades válidas. Además tienen un especial control en los borrados, pudiendo trazar una entidad a lo largo de las relaciones que se establezcan en la base de datos.
Un modelo de datos[1] es un lenguaje orientado a describir una Base de Datos. Típicamente un modelo de datos permite describir:
Las estructuras de datos de la base: El tipo de los datos que hay en la base y la forma en que se relacionan.
Las restricciones de integridad: Un conjunto de condiciones que deben cumplir los datos para reflejar correctamente la realidad deseada.
Operaciones de manipulación de los datos: típicamente, operaciones de agregado, borrado, modificación y recuperación de los datos de la base.
3.
Diseño
Siempre que nos enfrentemos a un diseño en una base de datos tenemos que pensar el objetivo del mismo. ¿Quiero crear un pequeño diseño para comprobar una cierta característica de mis datos? ¿quiero hacer un diseño global y flexible que permita incorporar todos los posibles datos? En el ejemplo de diseño propuesto partimos de que disponemos unos datos simples en hojas excell con información acerca de agentes comerciales y otro investigador dispone de información sobre el parentesco de estos.
En este escenario diseñaremos un modelo de datos para estudiar el impacto, la cohexión, ... de las relaciones entre agentes comerciales a través de sus parentescos.
En este punto introduciremos el concepto de relación , cardinalidad de la relación, e integridad referencial de una manera práctica. En el diseño propuesto puede observarse la tabla “Agente” que puede verse como la tabla principal, la tabla “Parentesco” que relaciona la tabla “Agente” y la tabla “Tipoparentesco” que tipifica las tipologías de parentescos y proporcionará unicidad y coherencia en la información de la tabla “Parentesco”. Este tipo de tablas de tipologías es muy importante, ya que a través de ellas podemos controlar la integridad semántica de los datos del modelo evitando así duplicar datos, agilizando la inserción de datos ya que solamente hay que buscarlo (en el caso de que no esté, solamente lo daremos de alta una vez), y nos proporcionará un gran rendimiento en las consultas y ahorro de espacio en disco.
A continuación explicaremos los siguientes puntos: Establecer integridad referencial básica Clave primaria
Acceso a los datos de una manera eficiente y ordenada Diseño final
Figura 2. Integridad referencial
Identificadores de entidades
En la Figura 2 establecemos que el campo “idagente2” de la tabla “parentesco” debe ser un valor del campo “id” de la tabla “agente”, de esta manera estamos asegurando que el identificador de un agente
siempre existe, y a su vez, este no se podrá borrar siempre y cuando esté referenciado en la tabla “parentesco” (borrado en cascada desactivado).
Figura 3. Acceso a campos
Acceso a campos de una manera restringida y controlada
En la Figura 3, se observa como se fuerza al usuario a elegir un identificador de la tabla “agente” de un alista, facilitando así la búsqueda de información. En “Columna dependiente” indicamos la columna de la tabla indicada en“Tipo de origen de la fila” que se grabará y además podemos mostrar información ampliada sobre ese registro indicándolo en “Número de columnas’.’
Figura 4. Acceso a campos 2
Acceso a campos a través de una consulta
La lista mostrada en la Figura 4 puede ser ordenada por cualquiera de sus campos. El usuario podrá buscar con facilidad el nombre y se grabará el identificador correspondiente de una manera transparente.
Figura 5. Diseño
Diseño propuesto
4.
Análisis I - Redes
Una vez diseñado el modelo de datos e implementado en un Sistema Gestor de Base de datos, aplicaremos los métodos de análisis para los que fue diseñado el modelo de datos. En el ejemplo propuesto podemos utilizar análisis de redes sociales[3] a través de una potente herramienta como Ucinet[4] utilizando snGraph como herramienta de apoyo[5]. Por medio de un código muy sencillo (ver apéndice B) podemos obtener los datos de la tabla parentesco y formar nuestra red. A partir de esta red podremos trabajar con los algoritmos específicos de Ucinet. Figura 6. Datos Datos de prueba 2 1 1.0 3 1.0 5 1.0 8 1.0 1.0 7 1.0 9 1.0 Figura 7. Graphviz
Red visualizada a través de Graphviz
En la Figura 7 obtenemos una representación gráfica con la herramienta Graphviz[6] de los datos de la Figura 6. Con esta representación podemos hacernos una primera idea de la estructura de la red, se puede observar que los nodos que no tienen conexión no aparecen en la representación. Exportando en código para trabajar con la herramienta Ucinet, obtenemos la siguiente red, donde ahora sí podemos ejecutar los análisis
definidos en la herramienta. 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1 2 3 4 5 6 7 8 9 Figura 8. Ucinet
Red visualizada a través de Netdraw (Ucinet)
5.
Análisis II - SIG
Los análisis con Sistemas de Información Geográfica[12, 13], proporcionan una potente herramienta de análisis ya que podemos manejar la componente geográfica en nuestros estudios. Para ello, debemos incorporar una tabla de coordenadas geográficas en nuestro modelo de datos y relacionar las coordenadas expresadas en esta tabla con las entidades que creamos de interés para nuestro estudio.
A partir de una tabla de cooperaciones que integre un punto geográfico (también podrían ser varios puntos geográficos o podrían ser otras figuras como polígonos, ect..), se podría realizar un análisis KernelDensity[10, 11] para estudiar los núcleos geográficos mas fuertes de cooperación.
6.
Extensión del supuesto
Se propone como ejercicio extender la tabla “tipoparentesco” añadiendo un número que asigne un peso a cada tipo de parentesco, utilizándolo más tarde en la generación de la red para establecer los pesos de los enlaces.
A continuación se desea extender el modelo ya existente para que pueda recoger los datos de cooperaciones comerciales entre agentes. En estas cooperaciones se tiene en cuenta solamente los dos agente implicados y las coordenadas geográficas de cada agente en el momento de la cooperación; en algunos casos se podrá tener estas coordenadas y en otros no. Utilizaremos la tabla “tipoparentesco” como base pero añadiremos las relaciones que existan en la tabla “cooperacionciomercial” estableciendo el peso correspondiente a la
distancia física que existió entre los agentes en el momento de cooperación. Se pueden tomar las coordenadas con google maps donde un punto se define comopn= (xn,yn). Dado que las coordenadas que obtenemos mediante google maps son UTM[9], podemos aproximar la distancia entre dos puntos puede ser calculada a través de la fórmula de la distancia euclídeaφ(p1,p2) =
q
((x22)−(x21)) + ((y22)−(y21))
A.
APÉNDICE: Material
-idagente : int Agente -idpunto : int -x : double -y : double Punto Parentesco -idtipoparentesco : int -tipoparentesco : string -peso : double Tipoparentesco -idnombreagente : int -nombreagente : string Nombreagente -idcooperacion : int Cooperacion 0..* 0..* 1..* 0..* 0..* 1 1 0..* 0..* 1 1Figura 9. Diseño propuesto extendido
Diseño Entidad relación
+idagente integer(10) Nullable = false #Nombreagenteidnombreagente integer(10) Nullable = false
Agente
+idnombreagente integer(10) Nullable = false nombreagente varchar(255) Nullable = false
Nombreagente
#Agenteidagente integer(10) Nullable = false #Agenteidagente2 integer(10) Nullable = false #Tipoparentescoidtipoparentesco integer(10) Nullable = false
Parentesco +idtipoparentesco integer(10) Nullable = false
tipoparentesco varchar(255) Nullable = false peso real(10) Nullable = true
Tipoparentesco
+idpunto integer(10) Nullable = false x real(10) Nullable = false y real(10) Nullable = false
Punto
+idcooperacion integer(10) Nullable = false Cooperacion
+#Cooperacionidcooperacion integer(10) Nullable = false +#Agenteidagente integer(10) Nullable = false
Cooperacion_Agente
+#Cooperacionidcooperacion integer(10) Nullable = false +#Puntoidpunto integer(10) Nullable = false
Cooperacion_Punto
Figura 10. Diseño propuesto extendido
Diseño físico
El material del curso puede ser solicitado a través de: [email protected] y se enviará en un archivo comprimidorarlos diseños, el código, la base de datos y este artículo en PDF.
B.
APÉNDICE: Código
1 /∗ 2 ∗ C o p y r i g h t 2009−2011 3 ∗ C o n s e j o S u p e r i o r de I n v e s t i g a c i o n e s C i e n t i f i c a s 4 ∗ C e n t r o de C i e n c i a s Humanas y S o c i a l e s 5 ∗ U n i d a d de s i s t e m a s de i n f o r m a c i o n g e o g r a f i c a 6 ∗ A t t r i b u t i o n−N o n c o m m e r c i a l 3 . 0 U n p o r t e d − h t t p : / / c r e a t i v e c o m m o n s . o r g / l i c e n s e s / by−nc / 3 . 0 / 7 ∗/ 8 p a c k a g e m a s t e r h i s t o r i a ; 9 10 i m p o r t j a v a . s q l . C o n n e c t i o n ; 11 i m p o r t j a v a . s q l . D r i v e r M a n a g e r ; 12 i m p o r t j a v a . s q l . R e s u l t S e t ; 13 i m p o r t j a v a . s q l . S Q L E x c e p t i o n ; 14 i m p o r t j a v a . s q l . S t a t e m e n t ; 15 i m p o r t s n g r a p h . n o d e . S n g r a p h ; 16 17 /∗ ∗ 18 ∗ 19 ∗ @ a u t h o r R o b e r t o M a e s t r e M a r t i n e z r o b e r t o . m a e s t r e < a t > c c h s . c s i c . e s 20 ∗/ 21 p u b l i c c l a s s Main { 22 23 /∗ ∗ 24 ∗ @param a r g s t h e command l i n e a r g u m e n t s 25 ∗/ 26 p u b l i c s t a t i c v o i d main ( S t r i n g [ ] a r g s ) t h r o w s S QL E x ce p ti o n , E x c e p t i o n { 27 28 t r y{ 29 C l a s s . forName ( " s u n . j d b c . o d b c . J d b c O d b c D r i v e r " ) ; 30 }c a t c h( E x c e p t i o n e ) { 31 S y s t e m . o u t . p r i n t l n ( "No s e ha p o d i d o c a r g a r e l D r i v e r JDBC−ODBC" ) ; 32 } 33 C o n n e c t i o n con = D r i v e r M a n a g e r . g e t C o n n e c t i o n ( " j d b c : o d b c : h i s t o r i a b d d " , " " , " " ) ; 34 S t a t e m e n t s t a t = con . c r e a t e S t a t e m e n t ( ) ; 35 36 / / C r e a t e n o d e s 37 s t a t . e x e c u t e Q u e r y ( " s e l e c t ∗ f r o m a g e n t e ; " ) ; 38 R e s u l t S e t r e s = s t a t . g e t R e s u l t S e t ( ) ; 39 40 S n g r a p h g = new S n g r a p h ( ) ; 41 w h i l e ( r e s . n e x t ( ) ) { 42 g . i n s e r t N o d e ( r e s . g e t I n t ( 1 ) ) ; 43 } 4445 / / C r e a t e r e l a t i o n s 46 s t a t . e x e c u t e Q u e r y ( " s e l e c t ∗ f r o m p a r e n t e s c o ; " ) ; 47 r e s = s t a t . g e t R e s u l t S e t ( ) ; 48 49 w h i l e ( r e s . n e x t ( ) ) { 50 g . i n s e r t W e i g h t B e t w e e n N o d e s ( r e s . g e t I n t ( 1 ) , r e s . g e t I n t ( 2 ) , 1 , t r u e) ; 51 } 52 53 S y s t e m . o u t . p r i n t l n ( g . t o G r a p h v i z ( ) ) ; 54 55 S y s t e m . o u t . p r i n t l n ( g . t o U c i n e t (n u l l) ) ; 56 } 57 58 }
C.
APÉNDICE: Dyncoopnet complex network
a3 a5 a7 a6 a8 a9 a10 a11 a12 a13 a14 a16 a17 a18 a19 a20 a21 a22 a24a25 a26 a27 a30 a29 a28 a31 a23 a15 a2 a4 a33 a34 a32 a35 a36 a37a 38 a39 a40 a41 a44 a43 a46 a47 a48 a49 a50 a51 a52 a54 a55a56a57a58 a59
a60 a61 a62a63 a64 a66 a67 a68 a42 a69 a45 a53 a70 a71 a72 a73 a74 a75 a76 a78 a77 a79 a80 a81 a82 a83 a84 a85 a86 a65 a87 a88 a89 a91 a92a93 a94 a95 a96 a97 a90 a98 a99 a100 a101 a102 a103 a104 a105 a106 a107 a108 a109 a110 a111 a112 a113 a114 a115 a116 a118 a117 a119 a120 a121 a122 a123 a124 a125 a126 a127 a128 a129 a130 a132 a133 a134 a135 a131a 136 a137 a138a 139 a140 a141 a142 a143 a144 a145 a146 a147 a148 a149 a150 a151 a153 a154 a155a156 a157 a158 a159 a160 a162 a163 a166 a167 a152 a170 a172 a176 a177 a174 a178 a168 a179 a173 a171 a161 a180 a181 a182 a183 a184 a185 a186 a187 a188 a189 a 195a 196 a198 a197 a194 a191 a193 a192 a200 a201 a202 a203 a204 a205 a206 a207 a208 a190a209 a210 a211 a212 a199 a213 a214
a215 a216a217
a218 a220 a221 a222 a223 a224 a225 a226 a227 a228 a229 a230a231 a232 a233 a235 a236 a238 a239 a240 a237 a243 a241 a169 a242 a219 a234 a244 a245 a246 a247 a248 a251 a250 a249 a252a253 a254 a255 a256 a258 a259 a260 a261 a263 a265 a266 a257 a264 a262 a268 a270 a271 a272
a274 a269 a275
a276 a273 a277 a278 a279 a280 a282a281 a283 a284 a285 a286 a287 a288 a289 a290 a291 a292 a293 a294
a295 a296 a297
a298 a299 a302 a304 a306 a307 a309 a310 a311 a312 a313 a305 a314a315 a308 a301 a316a317 a318 a319 a320 a321 a322 a323 a324 a325 a326 a327 a328 a329 a330 a331 a332 a333 a334 a336 a337 a338 a303 a339 a340 a341 a342 a343 a345 a344 a346 a347 a348 a349 a350 a351 a352 a353 a354 a355
a356 a357 a358 a359 a360 a361 a362 a363 a364 a365 a366 a367 a369 a368 a371 a372a373 a375 a374 a376 a377 a378 a379 a380 a382 a383 a384 a385 a386 a387 a388 a389 a390 a391 a392 a393a394 a395 a396 a397 a398 a399
a401a400 a402
a403 a404 a405 a406 a407a 408 a409 a410 a411 a412 a413 a414 a415 a416 a417 a418 a419 a421 a422 a423 a424 a425 a427 a429 a430 a428 a431 a433 a432 a434 a435 a436 a437 a426 a439 a440 a441 a442a438 a443 a444 a445a446 a447 a448 a449 a450 a451 a452 a453 a455
a456 a457 a454
a458a459 a460 a461 a462 a463a464 a465 a466 a467 a468 a469 a470 a471 a472 a473 a474 a475 a476 a477 a478 a479 a480 a481 a482 a483 a484 a486
a485 a487a488 a489 a490 a491 a492 a493 a494 a495 a496 a497 a498a499 a500 a501 a502 a503a504 a505 a506 a507 a508 a509 a510 a511 a513 a514 a515 a516 a517 a519 a520 a521 a518 a522 a523 a524 a525
a526 a528 a527
a529 a530 a531 a532 a533 a534 a535 a536 a539 a540 a541 a542 a543 a544 a545 a546 a547 a548 a549 a550 a551 a552 a553 a554
a555 a556a557
a558 a559 a560 a561 a562a512 a563 a564 a565 a566 a567 a568 a569 a570 a571 a572 a573 a574 a575 a576 a577 a578 a579 a580 a581 a582 a583 a584 a585 a586 a587 a588 a589 c1 c2 c3 c4 c5 c6 c7 c8 c10 c11 c62 c13 c14 c15c12 c16 c17 c18 c19 c20 c21 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36 c37 c38 c39 c40 c41 c42 c43 c44 c45 c46 c47 c48 c49 c50 c51 c52 c53 c54 c55 c58 c59 c60 c61 c64 c65 c66 c67 c69 c70 c71 c68 c72 c74 c75 c76 c77 c73 c78 c80 c82 c138 c81 c79 c83 c84 c85 c86 c87 c88 c89 c90 c91 c92 c94 c95 c96 c97 c98 c99 c100 c101 c102 c105 c106 c107 c109 c110 c111 c112 c113 c114 c115 c117 c119 c118 c120 c122 c123 c124 c125 c126 c127 c128 c108 c129 c130 c131 c133 c134 c135 c139 c140 c141 c142c144 c146 c147 c148 c149 c150 c153 c154 c155 c156 c157 c158 c159 c160 c161 c162 c163 165c164c c167 c168 c170 c171 c172c173 c174 c175 c176 c177 c178 c179 c180 c182 c183 c184 c185 c186 c187 c189 c188 c190 c191 c192 c193 c194 c195 c196c 197 c198 c199 c200 c203 c222 c204 c205 c206 c209 c210 c207c208 c211 c212 c213 c214 c215 c217 c216 c201 c218 c219 c202 c220 c221 c226 c227 c229 c231 c232 c234 c235 c236 c237 c242 c243 c244 c245 c246 c247 c248 c249 c250
Figura 11. Complex network
Referencias
[1] El modelo racional de datos: De los fundamentos a los modelos deductivos. Baizán, M.C.F., isbn 9788486251611, 1987, Díaz de Santos
[2] Sistemas de bases de datos: diseño, implementación y administración, Rob, P. and Coronel, C., isbn 9789706862860, 2003. Thomson
[3] Introduction to social network methods. R. Hanneman, M. R. University of California 2005. Riverside. [4] Steve Borgatti, Martin Everett, L. F. (2010). Ucinet. http://www.analytictech.com/ucinet/.
[5] snGraph. R. Maestre-Martinez, 2010. http://digital.csic.es/handle/10261/27556
[6] Ellson, J., Gansner, E., Koutsofios, E., S.C.North, and G.Woodhull (2003). Graphviz and dynagraph – static and dynamic graph drawing tools. In Junger, M. and Mutzel, P., editors, Graph Drawing Software, pages 127–148. Springer-Verlag. http://www.graphviz.org/
[7] PostgreSql (2010). PostgreSql. http://www.postgresql.org/. [8] PostGIS. Holl, Stephan and Plum, Hans. GeoInformatics, 2009.
http://fluidbook.microdesign.nl/geoinformatics/03-2009/?page=34 [9] Defense Mapping Agency Technical Manual 8358 2
The Universal Grids: Universal Transverse Mercator (UTM) and Universal Polar Stereographic (UPS). http://earth-info.nga.mil/GandG/publications/tm8358.2/TM8358_2.pdf
[10] Gibin, M., Longley, P. A., Atkinson, P. (2007). Kernel Density Estimation and Percent Volume Contours in General Practice Catchment Area Analysis in Urban Areas. GISRUK. http://ncg.nuim.ie/gisruk/materials/proceedings/PDF/5A3.pdf
[11] Kernel Density on line resource. http://www.spatialanalysisonline.com/output/html/Pointdensity.html [12] Goodchild, Michael F., (2010). Twenty years of progress: GIScience in 2010. Journal of spatial
information science Number 1 pp. 3–20 doi:10.5311/JOSIS.2010.1.2. July 27, 2010. [13] On line resources and information. http://humanidades.cchs.csic.es/cchs/sig/