Importancia de los diagramas ER

10

Soy estudiante y estoy desarrollando varios proyectos como parte de mi academia.

Al desarrollar la base de datos para uno de los proyectos, nos encontramos con una situación en la que pensamos si ERD es necesario o no. En este momento, no todos estamos de acuerdo en desarrollar el ERD primero, y luego desarrollar la base de datos a partir de él.

La mayoría de las personas prefiere desarrollar la base de datos sobre la marcha verbalmente de acuerdo con el sistema requerido en papel directamente.

Ahora, soy un seguidor estricto de los principios de la base de datos. Creo que la base de datos debe desarrollarse solo desde el ERD. Entonces, solo quiero saber lo siguiente:

  • ¿La industria sigue estos principios?
  • ¿Estoy perdiendo el tiempo desarrollando un ERD?
  • ¿Cuáles son los beneficios de desarrollar un ERD?
trapaank
fuente
El diagrama ER / EER muestra las interrelaciones entre entidades y también magnifica a los funcionalistas del sistema.
Si desea una herramienta gratuita para hacer un ERD para SQL Server ... Puede encontrar información aquí ... facebook.com/DataModelerTool o aquí ... plus.google.com/108968161662966473138
Carter Medlin
En mi humilde opinión, los ERD no capturan todo lo importante: los cambios en las relaciones a lo largo del tiempo, el volumen de transacciones, la herencia en los sistemas modelados por objetos, "se convierten en" relaciones, etc. Específicamente, los ERD factorizan todos los verbos, dejando grandes brechas en el diseño de la base de datos. Imagina leer una novela que consiste en nada más que sustantivos. Me parece que son herramientas útiles, pero ciertamente no críticas, mejor dibujadas en el dorso de las servilletas después de un buen almuerzo.
pojo-guy

Respuestas:

13

Simple y simple, piense en desarrollar una base de datos sin ERD como construir una casa sin un plan de construcción. Puede ser factible porque cree que simplemente colocar un ladrillo uno sobre otro es suficiente para construir algo, sin embargo, en el momento en que alguien más se responsabiliza del proyecto, existe un potencial de desastre.

En mi experiencia, no se beneficiará mucho de los ERD a menos que los use junto con las herramientas CASE (ERWin, MySQL Workbench, etc.) que además le permitirán realizar algunas operaciones realmente útiles, como la ingeniería directa e inversa. Incluso sin estas funciones, tener un esquema centralizado de la base de datos completa es útil porque a veces las restricciones implementadas en la base de datos en sí no son suficientes para contar la historia completa sobre las relaciones entre entidades de bases de datos particulares.

Aquí hay un ejemplo que involucra a MySQL que, como ya sabrá, implementa varios motores de almacenamiento interno, especialmente MyISAM e InnoDB. Hay diferencias significativas entre ellos, uno de los más importantes es que MyISAM no admite restricciones. A pesar de ese hecho, MyISAM se usa mucho para aplicaciones web, lo que significa que la lógica relacional debe implementarse a través de la lógica de negocios (código de aplicación) o de otra manera. El problema es cuando reenvías un ERD con tablas (entidades) MyISAM MySQL ignorará silenciosamente las restricciones establecidas por el ERD y terminarás con una base de datos que no identifica claramente la naturaleza de las relaciones entre las entidades. En otras palabras, después de desarrollar el diseño de la base de datos, no hay forma de que los desarrolladores de código implementen una lógica comercial adecuada sin un ERD.

brezanac
fuente
1
Si hacemos todo lo posible con su comparación de "plan de construcción", tenemos que construir un sistema y nunca podemos cambiarlo a menos que tengamos que demoler todo. Esto no va a funcionar en un entorno dinámico.
AK
1
El propósito del "plan de construcción" no es cimentar el proceso de desarrollo o el proyecto en sí mismo, sino que siempre proporciona una visión general del estado en el que se encuentra el proyecto actual. En realidad, nadie está impidiendo que alguien agregue nuevas entidades o relaciones (por lo tanto, realiza cambios en el plan), pero otros también necesitan saber sobre esos cambios.
brezanac
5

Los ERD son realmente agradables para tener una imagen clara de la estructura de su base de datos. Además de ser un artefacto de documento importante para su proyecto, se facilita cuando necesita implementar consultas, especialmente las uniones entre tablas. Imagine lo bueno que es tener una configuración de monitor dual, en el lado izquierdo tiene su ERD y en el lado derecho su editor de consultas. Puede ver claramente las relaciones entre las tablas y escribir sus consultas en función de eso. Si su proyecto de base de datos es bastante simple y su proyecto no lo requiere, tal vez esté bien vivir sin él.

gsb
fuente
4

ERD le ahorrará mucho más tiempo de lo que piensa. Si hace todo sobre la marcha, se quedará atascado cuando desee generar tablas de unión.

Si se encuentra con la base de datos unos años más tarde sin ERD, tiene que pasar mucho tiempo para ver qué está sucediendo en su proyecto.

Tengo compañía y diseñamos ERD, nunca piense en una base de datos sin ERD (en realidad, este es mi propio experimento personal)

ALH
fuente
4

Los ERD solían ser más convencionales hace algún tiempo. OMI son más o menos opcionales ahora.

Actualmente, algunos equipos altamente exitosos no se molestan en absoluto con los ERD, pero ofrecen sistemas excelentes: robustos, de alto rendimiento y fáciles de mantener a largo plazo. Esto es especialmente cierto en el desarrollo ágil, cuando comenzamos de a poco, con un conjunto minimalista de herramientas.

Los ERD son una buena forma de comunicación, por supuesto, pero de ninguna manera son la única o la mejor en todas las circunstancias. Algunos equipos prefieren otras formas de documentación y comunicación.

No hay reglas generales en esta industria.

Alaska
fuente
+1 pero, ¿de qué otras formas se utilizan la documentación y la comunicación con respecto a las bases de datos?
milagro173
@ miracle173 Un buen libro es: "Principios, patrones y prácticas ágiles en C #". También me gustan los artículos sobre Behavior Driven Development de Dan North en dannorth.net
AK
1
¿Qué quieres decir con some teams prefer other ways? ¡Creo que esto podría haber terminado con muchos votos negativos si se publicó como respuesta en Stackoverflow!
Pmpr
2

Es importante diseñar antes de escribir el código de producción. También es importante hacer un prototipo; la gente de la base de datos desarrolla prototipos escribiendo SQL. (¿Recuerdas lo que dijo Fred Brooks sobre los prototipos?)

Los lenguajes gráficos, de los cuales ER es solo uno, no han demostrado ser muy buenos para capturar toda la semántica de una base de datos de una manera fácil y simple de entender.

Tampoco han demostrado ser herramientas de comunicación muy efectivas, excepto entre desarrolladores. Pero al diseñar bases de datos, la comunicación crucial no es entre desarrolladores; es entre desarrolladores y expertos en dominios (entre desarrolladores y gente de negocios).

El modelado de roles de objetos (ORM) tiene un lenguaje gráfico, pero se basa en "hechos" (oraciones simples). La gente de negocios puede validar los hechos con bastante facilidad. La gente de negocios no puede validar fácilmente un diagrama ER o un diagrama ORM.

Mike Sherrill 'Retiro del gato'
fuente
1
+1 pero, ¿conoce alguna figura o estudio que respalde sus afirmaciones sobre los problemas de comunicación usando lenguajes gráficos?
milagro173
No estoy en el mundo académico, por lo que no sigo la investigación de cerca. Un lenguaje gráfico que no puede capturar toda la semántica de una base de datos (un ERD, por ejemplo) obviamente no puede comunicar toda la semántica; eso es parte de la investigación de Terry Halpin. En cuanto a comunicarse con expertos en dominios, realmente no necesita investigación para eso. Solo necesita tratar de explicar un diagrama de ER a un experto en el dominio que solo tiene una educación de octavo grado. Luego compare esa experiencia al tratar de explicar la oración "Cada dirección tiene un único código postal". La oración gana cada vez.
Mike Sherrill 'Cat Recall'