2009-04-03 27 views
8

Estoy desarrollando aplicaciones que se pueden construir en parte a partir de módulos. Por ejemplo, podría desarrollar alguna comunidad en línea que contenga los módulos 'foro', 'blog', 'galería', etc.herramientas de diseño de esquema de base de datos/diseño de base de datos modular

Actualmente tengo una gran base de datos ERM que contiene todas las tablas de todos los módulos con conexiones clave y estoy usando dbwrench para construir este ERM. Sin embargo, no estoy muy contento con este enfoque. Me gustaría tener un diseñador de ERM, que pueda funcionar de forma orientada a módulos. Me gustaría guardar las tablas de la base de datos en un archivo de esquema separado para cada módulo, pero mantener las referencias de clave externa entre estos diferentes esquemas.

Sin embargo, no he podido encontrar ninguna herramienta que admita esto: ¿es esta la manera incorrecta de hacerlo o cómo diseñar esquemas de bases de datos modulares ERM modulares?

gracias!

Respuesta

1

Guardo scripts de compilación de bases de datos separados para cada esquema de módulos y solo anoto en los comentarios de qué otros módulos dependen. Luego agrego esquemas a la base de datos que corresponde a una aplicación según sea necesario. Uso de índices normales en lugar de claves externas. Siempre he encontrado que hacer cosas manualmente es mejor para tareas extremadamente modulares.

2

Estoy absolutamente convencido, este es el enfoque correcto. Lamentablemente, la comunidad de bases de datos aún no ha adoptado conceptos tan nuevos como el diseño modular, el desarrollo de software ágil y similares.

Si tengo una opción, dejo que una herramienta ORM cree la base del script y agregue detalles que no pertenecen a un ORM (por ejemplo, índices especiales, espacios de tabla, particiones) manualmente y también crea scripts de migración manualmente (. que es bastante sencillo cuando se tiene los diferenciales basados ​​en texto, entre el guión completo en dos versiones

Así que terminan con tres tipos de guiones:. script generado automáticamente que genera una nueva base de datos script generado manualmente que hace lo mismo, pero con algunos detalles agregados, que son irrelevantes para los requisitos funcionales. un conjunto de secuencia de comandos de migración que mueve una base de datos de una versión al paso siguiente paso a paso.

También tengo un montón de pruebas, que crean varios esquemas, usando la combinación de estos guiones y los comparo.

Si necesito diagramas, los creo a partir del esquema o el código del modelo de objetos, usando ingeniería inversa.

2

Estoy de acuerdo en que el diseño modular es el camino a seguir. Cuando creamos aplicaciones para clientes, tendemos a venderles una colección de widgets que ya hemos creado. Entonces, ¿qué sucede cuando un cliente dice "Visité el sitio web X y me gusta su widget Y. ¿Puede agregar esto a mi aplicación/sitio web?"

Esto es algo bueno, el cliente A paga por el widget Z que luego podemos vender a todos los demás clientes. El truco es construir estos widgets de tal manera que encajen sin romper la aplicación actual.

Consulte este enlace y las fuentes identificadas en las notas.

MediaWiki Design - See notes at the bottom

+1

hola, ¿es este el enlace correcto que publicaste? No estoy seguro, lo cual significa que te refieres. ¡Gracias! – aurora

+0

Sí, ver la referencia "FUENTE" debajo de la imagen: Creado por mí, con el Diseñador de DB 4.0.5.6 Beta en Windows, pero también contiene información de archivo tables.sql de MediaWiki y de las descripciones de mesa en MediaWiki.org (ver: mw : Manual: diseño de la base de datos). –

1

Yo prefiero usar esquemas.Es una forma natural de encapsular un área de interés (ya sea un esquema para un módulo o un esquema para cubrir un área de información).

Estoy usando PostgreSQL y prefiero escribir la iniciación de db (quiero tener el 100% de control y SQL es lo más explícito posible). Yo uso SchemaSpy para generar los diagramas ER. No he tenido problemas con varios esquemas y claves externas en todos los esquemas, no estoy seguro de cómo funciona en MySQL.

No estoy familiarizado con la herramienta que ha mencionado, sin embargo, una captura de pantalla parece revelar que son compatibles con los esquemas. Puede valer la pena volver a verificar. http://www.dbwrench.com/screenshots/xp_explorer.shtml

cuanto a diseño modular, no estoy seguro de esquemas serán suficientes, en mi humilde opinión esquemas hace que sea más fácil para el cerebro para hacer suposiciones acerca de cómo se relacionan los datos, que no tiene nada más modular per se. Por favor aclare sus necesidades sobre cómo deberían ser modulares.

+0

gracias por su respuesta, voy a retirar de su sugerencia con respecto a los esquemas! – aurora

-1

Un buen diseño de base de datos comienza con una lista de los datos que desea incluir en su base de datos y lo que desea hacer con la base de datos más adelante. Todo esto puede escribirse en su propio idioma, sin ningún SQL. En esta etapa, debes tratar de no pensar en tablas o columnas, solo piensa: "¿Qué necesito saber?" No tome esto muy a la ligera, porque si descubre más tarde que olvidó algo, generalmente debe comenzar de nuevo. Agregar cosas a su base de datos es principalmente mucho trabajo.

Hay una gran cantidad de herramientas que pueden ayudarle a:

Archi

Una fuente libre y abierto de modelado visual y herramienta de diseño, Archi se utiliza para crear modelos y bocetos de modelado. Al proporcionar una implementación de referencia de código abierto de ArchiMate, Archi es actualmente una de las herramientas utilizadas para implementar el formato de archivo de intercambio de Open Group ArchiMate Model. Precio: gratuito

PowerDesigner

PowerDesigner es posiblemente la herramienta de modelado de datos más importantes del sector. Sus características incluyen: modelos completamente integrados, diferentes técnicas de modelado que se adaptan a una audiencia centrada en TI y no centrada en TI. También es compatible con un potente repositorio de metadatos y varios formatos de salida. Tiene una interfaz de usuario agradable y pulida con documentación de ayuda fácilmente legible que ayuda al usuario a resolver rápidamente problemas ad hoc.

Precio: $ 2,000

SQLDbm

• Precio: gratuito

• Ingeniería Adelante: Uso SQLDBM para crear un modelo físico o ERD de su base de datos

• La ingeniería inversa: Utiliza el revertir la ingeniería característica para exportar el esquema de base de datos como una secuencia de comandos SQL

Características:

• Creación de objetos de base de datos como tablas, objetos, relaciones, índices, rápida e intuitiva

• alterar y editar objetos de base de datos en línea en su diagrama

• copiar o mover columnas a través de tablas

• acercar y alejar de diagramas

• en el diseño-el-lugar en cualquier lugar en cualquier navegador Precio: gratuito

Cuestiones relacionadas