stringtranslate.com

Modelo entidad-relación

Diagrama de relación entidad-atributo para un MMORPG que utiliza la notación de Chen

Un modelo entidad-relación (o modelo ER ) describe cosas interrelacionadas de interés en un dominio específico de conocimiento. Un modelo ER básico se compone de tipos de entidades (que clasifican las cosas de interés) y especifica las relaciones que pueden existir entre entidades (instancias de esos tipos de entidades).

En ingeniería de software , un modelo ER se forma comúnmente para representar cosas que una empresa necesita recordar para realizar procesos comerciales . En consecuencia, el modelo ER se convierte en un modelo de datos abstracto , [1] que define una estructura de datos o información que se puede implementar en una base de datos , generalmente una base de datos relacional .

El modelado de entidad-relación fue desarrollado para bases de datos y diseño por Peter Chen y publicado en un artículo de 1976, [2] con variantes de la idea que existían previamente. [3] Hoy en día se utiliza comúnmente para enseñar a los estudiantes los conceptos básicos de la estructura de bases de datos. Algunos modelos ER muestran entidades super y subtipos conectadas por relaciones de generalización-especialización, [4] y un modelo ER también se puede utilizar para especificar ontologías específicas del dominio .

Introducción

Un modelo ER suele ser el resultado de un análisis sistemático para definir y describir los datos creados y necesarios por los procesos de un área de negocio. Normalmente, representa registros de entidades y eventos supervisados ​​y dirigidos por procesos de negocio, en lugar de los procesos en sí. Suele dibujarse en forma gráfica como cuadros ( entidades ) que están conectados por líneas ( relaciones ) que expresan las asociaciones y dependencias entre entidades. También se puede expresar en forma verbal, por ejemplo: un edificio puede estar dividido en cero o más apartamentos, pero un apartamento solo puede estar ubicado en un edificio.

Las entidades pueden definirse no sólo por relaciones, sino también por propiedades adicionales ( atributos ), que incluyen identificadores llamados "claves primarias". Los diagramas creados para representar atributos, así como entidades y relaciones, pueden llamarse diagramas entidad-atributo-relación, en lugar de modelos entidad-relación.

Un modelo ER se implementa típicamente como una base de datos . En una implementación de base de datos relacional simple, cada fila de una tabla representa una instancia de un tipo de entidad y cada campo de una tabla representa un tipo de atributo. En una base de datos relacional, una relación entre entidades se implementa almacenando la clave principal de una entidad como un puntero o "clave externa" en la tabla de otra entidad.

Existe una tradición de construir modelos ER/datos en dos o tres niveles de abstracción. La jerarquía conceptual-lógica-física que se muestra a continuación se utiliza en otros tipos de especificaciones y es diferente del enfoque de tres esquemas para la ingeniería de software .

Modelo de datos conceptual
Este es el modelo ER de más alto nivel, ya que contiene el menor nivel de detalle granular, pero establece el alcance general de lo que se incluirá en el conjunto de modelos. El modelo ER conceptual normalmente define entidades de datos de referencia maestras que la organización utiliza habitualmente. El desarrollo de un modelo ER conceptual para toda la empresa es útil para respaldar la documentación de la arquitectura de datos de una organización.
Un modelo ER conceptual puede utilizarse como base para uno o más modelos de datos lógicos (véase más adelante). El objetivo del modelo ER conceptual es establecer una similitud de metadatos estructurales para las entidades de datos maestros entre el conjunto de modelos ER lógicos. El modelo de datos conceptual puede utilizarse para formar relaciones de similitud entre los modelos ER como base para la integración de modelos de datos.
Modelo de datos lógicos
Un modelo ER lógico no requiere un modelo ER conceptual, especialmente si el alcance del modelo ER lógico incluye únicamente el desarrollo de un sistema de información específico. El modelo ER lógico contiene más detalles que el modelo ER conceptual. Además de las entidades de datos maestros, ahora se definen las entidades de datos operacionales y transaccionales. Se desarrollan los detalles de cada entidad de datos y se establecen las relaciones entre estas entidades de datos. Sin embargo, el modelo ER lógico se desarrolla independientemente del sistema de gestión de bases de datos específico en el que se puede implementar.
Modelo de datos físicos
Se pueden desarrollar uno o más modelos ER físicos a partir de cada modelo ER lógico. El modelo ER físico normalmente se desarrolla para ser instanciado como una base de datos. Por lo tanto, cada modelo ER físico debe contener suficiente detalle para producir una base de datos y cada modelo ER físico depende de la tecnología ya que cada sistema de gestión de bases de datos es algo diferente.
El modelo físico normalmente se instancia en los metadatos estructurales de un sistema de gestión de bases de datos como objetos de bases de datos relacionales, como tablas de bases de datos , índices de bases de datos como índices de clave única y restricciones de bases de datos como una restricción de clave externa o una restricción de características comunes. El modelo ER también se utiliza normalmente para diseñar modificaciones a los objetos de bases de datos relacionales y para mantener los metadatos estructurales de la base de datos.

La primera etapa del diseño de un sistema de información utiliza estos modelos durante el análisis de requisitos para describir las necesidades de información o el tipo de información que se va a almacenar en una base de datos . La técnica de modelado de datos se puede utilizar para describir cualquier ontología (es decir, una descripción general y clasificaciones de los términos utilizados y sus relaciones) para un área de interés determinada . En el caso del diseño de un sistema de información que se basa en una base de datos, el modelo de datos conceptual se asigna, en una etapa posterior (generalmente llamada diseño lógico), a un modelo de datos lógico , como el modelo relacional . Este, a su vez, se asigna a un modelo físico durante el diseño físico. A veces, ambas fases se denominan "diseño físico".

Componentes

Dos entidades relacionadas
Una entidad con un atributo
Una relación con un atributo
Clave primaria

Una entidad puede definirse como una cosa que es capaz de tener una existencia independiente, que puede ser identificada de manera única y que es capaz de almacenar datos. [5] Una entidad es una abstracción de las complejidades de un dominio. Cuando hablamos de una entidad, normalmente nos referimos a algún aspecto del mundo real que puede distinguirse de otros aspectos del mundo real. [6]

Una entidad es una cosa que existe física o lógicamente. Una entidad puede ser un objeto físico como una casa o un coche (existen físicamente), un acontecimiento como la venta de una casa o un servicio de reparación de un coche, o un concepto como una transacción o un pedido de un cliente (existen lógicamente, como un concepto). Aunque el término entidad es el que se utiliza con más frecuencia, siguiendo a Chen, se debe distinguir entre entidades y tipos de entidad. Un tipo de entidad es una categoría. Una entidad, en sentido estricto, es una instancia de un tipo de entidad determinado. Normalmente hay muchas instancias de un tipo de entidad. Como el término tipo de entidad es algo engorroso, la mayoría de la gente tiende a utilizar el término entidad como sinónimo.

Las entidades pueden considerarse como sustantivos . [7] Algunos ejemplos incluyen una computadora, un empleado, una canción o un teorema matemático.

Una relación captura cómo se relacionan las entidades entre sí. Las relaciones pueden considerarse como verbos que unen dos o más sustantivos. [7] Algunos ejemplos incluyen una relación de posee entre una empresa y una computadora, una relación de supervisa entre un empleado y un departamento, una relación de realiza entre un artista y una canción y una relación de prueba entre un matemático y una conjetura.

El aspecto lingüístico del modelo descrito anteriormente se utiliza en el lenguaje de consulta de bases de datos declarativo ERROL, que imita las construcciones del lenguaje natural . La semántica y la implementación de ERROL se basan en el álgebra relacional reformada (RRA), un álgebra relacional que se adapta al modelo entidad-relación y captura su aspecto lingüístico.

Tanto las entidades como las relaciones pueden tener atributos. Por ejemplo, una entidad de empleado puede tener un atributo de número de seguro social (SSN), mientras que una relación comprobada puede tener un atributo de fecha .

Todas las entidades, excepto las débiles, deben tener un conjunto mínimo de atributos de identificación única que puedan usarse como clave única / principal .

Los diagramas de entidad-relación (ERD) no muestran entidades individuales o instancias individuales de relaciones. En cambio, muestran conjuntos de entidades (todas las entidades del mismo tipo de entidad) y conjuntos de relaciones (todas las relaciones del mismo tipo de relación). Por ejemplo, una canción en particular es una entidad, la colección de todas las canciones en una base de datos es un conjunto de entidades, la relación de comida entre un niño y su almuerzo es una relación única, y el conjunto de todas esas relaciones de niño-almuerzo en una base de datos es un conjunto de relaciones. En otras palabras, un conjunto de relaciones corresponde a una relación en matemáticas , mientras que una relación corresponde a un miembro de la relación.

También se pueden indicar ciertas restricciones de cardinalidad en conjuntos de relaciones.

Las vistas físicas muestran cómo se almacenan realmente los datos.

Relaciones, roles y cardinalidades

El artículo original de Chen ofrece un ejemplo de relación y sus roles. Describe una relación llamada "matrimonio" y sus dos roles, "marido" y "esposa".

Una persona desempeña el papel de marido en un matrimonio (relación) y otra persona desempeña el papel de esposa en el (mismo) matrimonio. Estas palabras son sustantivos.

La terminología de Chen también se ha aplicado a ideas anteriores. Las líneas, flechas y patas de gallo de algunos diagramas deben más a los diagramas de Bachman anteriores que a los diagramas de relaciones de Chen.

Otra extensión común del modelo de Chen es “nombrar” relaciones y roles como verbos o frases.

Nomenclatura de roles

También se ha vuelto común nombrar roles con frases como es el dueño de y es propiedad de . Los sustantivos correctos en este caso son propietario y posesión . Por lo tanto, persona desempeña el papel de propietario y coche desempeña el papel de posesión en lugar de persona desempeña el papel de , es el dueño de , etc.

El uso de sustantivos tiene un beneficio directo a la hora de generar implementaciones físicas a partir de modelos semánticos. Cuando una persona tiene dos relaciones con un coche, es posible generar nombres como owner_person y driver_person , que tienen un significado inmediato. [9]

Cardinalidades

Las modificaciones a la especificación original pueden resultar beneficiosas. Chen describió las cardinalidades transversales. Como acotación al margen, la notación Barker-Ellis , utilizada en Oracle Designer, utiliza el mismo lado para la cardinalidad mínima (análoga a la opcionalidad) y el rol, pero la cardinalidad transversal para la cardinalidad máxima (la pata de gallo). [ Aclaración necesaria ]

Las investigaciones de Merise , Elmasri y Navathe y otros han demostrado que existe una preferencia por el mismo lado para los roles y las cardinalidades mínimas y máximas, [10] [11] [12] y los investigadores (Feinerer, Dullea et al.) han demostrado que esto es más coherente cuando se aplica a relaciones n-arias de orden mayor que 2. [13] [14]

Dullea et al. afirman: "Una notación de 'mirada transversal' como la utilizada en UML no representa eficazmente la semántica de las restricciones de participación impuestas en las relaciones donde el grado es mayor que el binario".

Feinerer dice: "Los problemas surgen si operamos bajo la semántica de look-across que se utiliza para las asociaciones UML. Hartmann [15] investiga esta situación y muestra cómo y por qué fallan diferentes transformaciones". (Aunque la "reducción" mencionada es espuria ya que los dos diagramas 3.4 y 3.5 son de hecho el mismo) y también "Como veremos en las próximas páginas, la interpretación de look-across introduce varias dificultades que impiden la extensión de mecanismos simples de asociaciones binarias a n-arias".

Diversos métodos para representar la misma relación de uno a muchos. En cada caso, el diagrama muestra la relación entre una persona y un lugar de nacimiento: cada persona debe haber nacido en un solo lugar, pero en cada lugar puede haber nacido cero o más personas.
Dos entidades relacionadas que se muestran utilizando la notación de pata de gallo. En este ejemplo, se muestra una relación opcional entre Artista y Canción; el símbolo compuesto por líneas ramificadas, más cercano a la entidad de canción representa "cero, uno o muchos", mientras que una canción tiene "un y solo un" Artista, enfatizado por el símbolo compuesto por líneas paralelas. Por lo tanto, el primero se lee como que un Artista (puede) interpretar "cero, uno o muchos" temas.

La notación de Chen para el modelado de entidades y relaciones utiliza rectángulos para representar conjuntos de entidades y rombos para representar relaciones apropiadas para objetos de primera clase : pueden tener atributos y relaciones propios. Si un conjunto de entidades participa en un conjunto de relaciones, se conectan con una línea.

Los atributos se dibujan como óvalos y se conectan con una línea a exactamente una entidad o conjunto de relaciones.

Las restricciones de cardinalidad se expresan de la siguiente manera:

Los atributos suelen omitirse porque pueden saturar el diagrama. Otras técnicas de diagramación suelen incluir atributos de entidad dentro de los rectángulos dibujados para los conjuntos de entidades.

Técnicas de convención de diagramas relacionadas

Notación de pata de gallo

La notación de pata de gallo, cuyo comienzo se remonta a un artículo de Gordon Everest (1976), [16] se utiliza en la notación de Barker , el método de análisis y diseño de sistemas estructurados (SSADM) y la ingeniería de tecnologías de la información . Los diagramas de pata de gallo representan las entidades como cajas y las relaciones como líneas entre las cajas. Diferentes formas en los extremos de estas líneas representan la cardinalidad relativa de la relación.

La notación de pata de gallo se utilizaba en ICL en 1978, [17] y se utilizaba en la práctica de consultoría CACI . Muchos de los consultores de CACI (incluido Richard Barker) provenían de ICL y posteriormente se trasladaron a Oracle UK, donde desarrollaron las primeras versiones de las herramientas CASE de Oracle , presentando la notación a un público más amplio.

Con esta notación, las relaciones no pueden tener atributos. Cuando es necesario, las relaciones se convierten en entidades por derecho propio: por ejemplo, si es necesario capturar dónde y cuándo un artista interpretó una canción, se introduce una nueva entidad, "interpretación" (con atributos que reflejan el tiempo y el lugar), y la relación de un artista con una canción se convierte en una relación indirecta a través de la interpretación (artista-interpreta-interpretación, interpretación-presenta-canción).

Se utilizan tres símbolos para representar la cardinalidad:

Estos símbolos se utilizan en pares para representar los cuatro tipos de cardinalidad que puede tener una entidad en una relación. El componente interno de la notación representa el mínimo y el componente externo representa el máximo.

Problemas de usabilidad del modelo

Los usuarios de una base de datos modelada pueden encontrarse con dos problemas bien conocidos en los que los resultados devueltos difieren de lo que supuso el autor de la consulta. Estos problemas se conocen como trampa del abanico y trampa del abismo, y pueden generar resultados de consulta inexactos si no se manejan adecuadamente durante el diseño del modelo de entidad-relación (modelo ER).

El primer problema es la trampa del abanico. Se produce cuando una tabla (principal) se vincula a varias tablas en una relación de uno a muchos. El problema deriva su nombre de la apariencia visual del modelo cuando se dibuja en un diagrama de entidad-relación, ya que las tablas vinculadas se "despliegan" a partir de la tabla principal. Este tipo de modelo se asemeja a un esquema en estrella , que es un diseño común en los almacenes de datos. Al intentar calcular sumas sobre agregados utilizando consultas SQL estándar basadas en la tabla principal, los resultados pueden ser inesperados y, a menudo, incorrectos debido a la forma en que se estructuran las relaciones. El error de cálculo ocurre porque SQL trata cada relación individualmente, lo que puede dar lugar a un doble conteo u otras imprecisiones. Este problema es particularmente común en los sistemas de soporte de decisiones. Para mitigarlo, se debe ajustar el modelo de datos o la propia consulta SQL . Algunos programas de consulta de bases de datos diseñados para el soporte de decisiones incluyen métodos integrados para detectar y abordar las trampas del abanico.

El segundo problema es la trampa del abismo, que se produce cuando un modelo sugiere la existencia de una relación entre tipos de entidades, pero la vía entre estas entidades está incompleta o no existe en ciertos casos.

Por ejemplo, imagine una base de datos donde un edificio tiene una o más salas, y estas salas contienen cero o más computadoras. Se podría esperar consultar el modelo para enumerar todas las computadoras en un edificio. Sin embargo, si una computadora no está asignada temporalmente a una sala (tal vez en reparación o almacenada en otro lugar), no se incluirá en los resultados de la consulta. La consulta solo devolvería las computadoras actualmente asignadas a las salas, no todas las computadoras en el edificio. Esto refleja una falla en el modelo, ya que no tiene en cuenta las computadoras que están en el edificio pero no en una sala. Para resolver esto, se requeriría una relación adicional que vincule directamente el edificio y las computadoras. La trampa del abismo, como la trampa del abanico, a menudo es el resultado de no representar completamente las relaciones del mundo real en el modelo de la base de datos.

Tanto la trampa del abanico como la trampa del abismo subrayan la importancia de garantizar que los modelos ER no solo sean técnicamente correctos, sino que también reflejen con precisión las relaciones del mundo real que están diseñados para representar. Identificar y resolver estas trampas en las primeras etapas del proceso de diseño ayuda a evitar problemas importantes más adelante, especialmente en bases de datos complejas destinadas a inteligencia empresarial o soporte de decisiones.

En modelado semántico

Modelo semántico

Un modelo semántico es un modelo de conceptos y a veces se lo denomina "modelo independiente de la plataforma". Es un modelo intensional. Al menos desde Carnap , es bien sabido que: [18]

"...el significado pleno de un concepto está constituido por dos aspectos, su intención y su extensión. La primera parte comprende la inserción de un concepto en el mundo de los conceptos en su conjunto, es decir, la totalidad de todas las relaciones con otros conceptos. La segunda parte establece el significado referencial del concepto, es decir, su contraparte en el mundo real o en un mundo posible".

Modelo de extensión

Un modelo extensional es aquel que se asigna a los elementos de una metodología o tecnología en particular y, por lo tanto, es un "modelo específico de la plataforma". La especificación UML establece explícitamente que las asociaciones en los modelos de clases son extensionales y esto es, de hecho, evidente si se considera la amplia gama de "adornos" adicionales que proporciona la especificación además de los que proporciona cualquiera de los "lenguajes de modelado semántico" candidatos anteriores. "UML como notación de modelado de datos, parte 2"

Orígenes de las relaciones entidad-relación

Peter Chen, el padre del modelado ER, dijo en su artículo fundamental:

" El modelo entidad-relación adopta la visión más natural de que el mundo real está formado por entidades y relaciones. Incorpora parte de la información semántica importante sobre el mundo real " . [2]

En su artículo original de 1976, Chen contrasta explícitamente los diagramas entidad-relación con las técnicas de modelado de registros:

" El diagrama de estructura de datos es una representación de la organización de registros y no es una representación exacta de entidades y relaciones " .

Varios otros autores también apoyan el programa de Chen: [19] [20] [21] [22] [23]

Alineación filosófica

Chen está de acuerdo con las tradiciones filosóficas de la época de los filósofos griegos antiguos: Platón y Aristóteles . [24] El propio Platón asocia el conocimiento con la aprehensión de Formas inmutables (es decir, arquetipos o representaciones abstractas de los muchos tipos de cosas y propiedades) y sus relaciones entre sí.

Limitaciones

Véase también

Referencias

  1. ^ Bagui y Earp 2022, pag. 72, §4.2.1.
  2. ^ ab Chen, Peter (marzo de 1976). "El modelo entidad-relación: hacia una visión unificada de los datos". ACM Transactions on Database Systems . 1 (1): 9–36. CiteSeerX  10.1.1.523.6679 . doi :10.1145/320434.320440. S2CID  52801746.
  3. ^ APG Brown, "Modelado de un sistema del mundo real y diseño de un esquema para representarlo", en Douque y Nijssen (eds.), Data Base Description , Holanda Septentrional, 1975, ISBN 0-7204-2833-5
  4. ^ "Lección 5: Supertipos y subtipos". docs.microsoft.com .
  5. ^ Bagui y Earp 2022, pag. 73-74, §4.3.
  6. ^ Beynon-Davies, Paul (2004). Sistemas de bases de datos . Basingstoke, Reino Unido: Palgrave: Houndmills. ISBN 978-1403916013.
  7. ^ ab Bagui y Earp 2022, p. 112-116, §5.5.
  8. ^ "Diagramas en inglés, chino y ER" de Peter Chen
  9. ^ "El Pangrammaticon: emoción y sociedad". 3 de enero de 2013.
  10. ^ Hubert Tardieu, Arnold Rochfeld y René Colletti La método MERISE: Principes et outils (rústica - 1983)
  11. ^ Elmasri, Ramez, B. Shamkant, Navathe, Fundamentos de sistemas de bases de datos, tercera ed., Addison-Wesley, Menlo Park, CA, EE. UU., 2000.
  12. ^ Atzeni, Paolo; Chu, Wesley; Lu, Hongjun; Ling, Tok Wang; Zhou, Shuigeng (27 de octubre de 2004). ER 2004: 23ª Conferencia Internacional sobre Modelado Conceptual, Shanghai, China, 8 al 12 de noviembre de 2004. ISBN 9783540237235.
  13. ^ "Un tratamiento formal de los diagramas de clases UML como un método eficiente para la gestión de la configuración 2007" (PDF) .
  14. ^ "James Dullea, Il-Yeol Song, Ioanna Lamprou - Un análisis de la validez estructural en el modelado entidad-relación 2002" (PDF) .[ enlace muerto permanente ]
  15. ^ Hartmann, Sven. "Razonamiento sobre las restricciones de participación y las restricciones de Chen Archivado el 10 de mayo de 2013 en Wayback Machine ". Actas de la 14.ª conferencia de bases de datos de Australasia, volumen 17. Australian Computer Society, Inc., 2003.
  16. ^ G. Everest, "MODELOS BÁSICOS DE ESTRUCTURA DE DATOS EXPLICADOS CON UN EJEMPLO COMÚN", en Computing Systems 1976, Actas de la Quinta Conferencia de Texas sobre Sistemas de Computación, Austin, TX, 18-19 de octubre de 1976, páginas 39-46. (Long Beach, CA: Oficina de Publicaciones de la IEEE Computer Society).
  17. ^ "Introducción al análisis de datos", publicación de capacitación ICL T2384, número 2, noviembre de 1978
  18. ^ "El papel de la interpretación intensional y extensional en las representaciones semánticas".
  19. ^ Kent en "Datos y realidad":
    "Una cosa que debemos tener clara en nuestras mentes al comenzar un proyecto de modelado es si nuestro objetivo es describir una parte de la "realidad" (alguna iniciativa humana) o una actividad de procesamiento de datos".
  20. ^ Abrial en "Semántica de datos": "... la llamada definición "lógica" y la manipulación de los datos todavía están influenciadas (a veces inconscientemente) por los mecanismos "físicos" de almacenamiento y recuperación actualmente disponibles en los sistemas informáticos".
  21. ^ Stamper: "Pretenden describir tipos de entidades, pero el vocabulario proviene del procesamiento de datos: campos, elementos de datos, valores. Las reglas de denominación no reflejan las convenciones que utilizamos para nombrar personas y cosas; reflejan, en cambio, técnicas para localizar registros en archivos".
  22. ^ En palabras de Jackson : "El desarrollador comienza creando un modelo de la realidad con la que el sistema se relaciona, la realidad que proporciona su objeto [el sistema]..."
  23. ^ Elmasri, Navathe: "Los conceptos del modelo ER están diseñados para acercarse más a la percepción de los datos por parte del usuario y no pretenden describir la forma en que se almacenarán los datos en la computadora".
  24. ^ Paolo Rocchi, Probabilidad frente a Jano , Springer, 2014, pág. 62.
  25. ^ P. Chen. Direcciones de investigación sugeridas para una nueva frontera: modelado conceptual activo. ER 2006, volumen 4215 de Lecture Notes in Computer Science, páginas 1–4. Springer Berlin / Heidelberg, 2006.
  26. ^ Carte, Traci A.; Jasperson, Jon (Sean); y Cornelius, Mark E. (2020) "Integración de conceptos ERD y UML al enseñar modelado de datos", Journal of Information Systems Education: Vol. 17: Iss. 1, Artículo 9.
  27. ^ El poder y los límites de la tecnología relacional en la era de los ecosistemas de información Archivado el 17 de septiembre de 2016 en Wayback Machine . On The Move Federated Conferences, 2010.
  28. ^ A. Badia y D. Lemire. Un llamado a las armas: revisitando el diseño de bases de datos. Citeseerx,
  29. ^ Gregersen, Heidi; Jensen, Christian S. (1999). "Modelos entidad-relación temporales: una encuesta". IEEE Transactions on Knowledge and Data Engineering . 11 (3): 464–497. CiteSeerX 10.1.1.1.2497 . doi :10.1109/69.774104. 
  30. ^ RICCARDO TORLONE (2003). "Modelos multidimensionales conceptuales" (PDF) . En Maurizio Rafanelli (ed.). Bases de datos multidimensionales: problemas y soluciones . Idea Group Inc (IGI). ISBN 978-1-59140-053-0.

Lectura adicional

Enlaces externos