2009-04-21 11 views
6

¿Cómo hacen las personas bases de datos reutilizables que se pueden usar para muchos productos?¿Cómo crean las personas bases de datos reutilizables?

Por ejemplo, si tenemos una base de datos diseñada para una escuela ... ¿Se puede modificar fácilmente para otorgarla a una universidad?

¿Cuál es la manera de crear una base de datos que pueda usarse como un producto para dar solución a muchos clientes con codificación solo una vez?

Gracias

Respuesta

0

Una aplicación como esta requeriría un modelo de datos bastante complejo para dar cuenta de los requisitos. Diferentes tipos de escuelas tendrían diferentes requisitos. Una universidad puede permitirle agregar o eliminar cursos, pero una escuela primaria generalmente no lo hace. Una universidad necesita programar cursos en las salas, mientras que una escuela primaria necesita poner a los estudiantes en grados y dividir las calificaciones en clases basadas en el espacio disponible y los maestros.

Su diseño debe tener en cuenta todos los requisitos que se espera que resuelva y luego implementarlos. Cuanto más genérico sea el programa, más difícil será satisfacer a sus clientes. La pregunta dice "escribir el código una vez". Si desea escribir un programa único que resuelva las necesidades de cada escuela, necesitará cientos de características; en algunos casos, algunas escuelas requerirán una característica opuesta de otra escuela; por ejemplo, algunas escuelas necesitarán hacer cumplir a un maestro por materia o aula mientras que otra escuela puede requerir varios maestros. Cuantos más requisitos espere cumplir, más compleja se vuelve la aplicación.

En la industria, las aplicaciones grandes tienden a escribirse para que se puedan extender; se proporciona un conjunto básico de funcionalidades, pero la aplicación debe ser modificada y personalizada para un cliente en particular. Esto facilita su desarrollo porque no necesita anticipar cada necesidad; de hecho, no tendrá que anticiparse a muchas necesidades hasta que tenga un cliente con esas necesidades. Pero con "personalización" no está escribiendo código solo una vez.

El paso más importante es crear un modelo de datos que sea lo suficientemente flexible como para extenderlo más adelante, pero no tan flexible como para que sea imposible desarrollarlo. La parte más difícil suele ser corregir la cardinalidad de las relaciones. Por ejemplo, podrías decir que una clase tiene un maestro. Luego, cuando resulta que una clase necesita dos profesores, debes reescribir una gran cantidad de código y arreglar una gran cantidad de datos. Este tipo de cambios son molestos y consumen mucho tiempo. Sin embargo, al final siempre puedes corregir los errores si se le da suficiente tiempo al programador.

2

No hay una bala de plata simple para esto. Solo necesita mantener el diseño de su base de datos lo suficientemente general, pero trate de evitar una generalización excesiva, ya que generalmente genera pesadillas en el mantenimiento y otras trampas desagradables.

Con experiencia, comenzará a apreciar un equilibrio perfecto entre generalizado y especializado. Esa es la clave para un diseño de código/base de datos comprensible y reutilizable.

+0

Podría ser cierto, si la aplicación en el mismo dominio, en ese caso, la aplicación actúa como un producto para cada uno ... –

0

el mejor consejo que puedo dar es la construcción al denominador común más bajo ....

Así que .... Código como un proyecto orientado a los servicios de educación :-)

0

Dedique tiempo a pensar sobre el tipo de datos que desea almacenar, resúmalo para hacerlo extensible, y luego construya su base de datos en consecuencia. No sé si puede obtener una reutilización perfecta del código de la forma en que podría hacerlo, pero puede crear una estructura de base de datos (donde todavía tiene que modificar los componentes individuales) que se puede reutilizar si planifica con anticipación.

1

La respuesta es encontrar un sweet spot de abstraction.

+0

lol @ linking 'sweet spot' – mpen

+0

Para personas de ESL para quienes puedan encontrar el término impar –

0

Depende de sus necesidades. Por ejemplo, muchas muchas bases de datos de negocio basado en productos utilizan un formato que incluye:

  • una tabla de clientes
  • una tabla de pedidos
  • una tabla de productos, etc

En su situación que podría tienen

  • una mesa de clase
  • un Studen ts mesa
  • una tabla de calificaciones, etc.

Este formato de tabla general podría reutilizar en muchas aplicaciones.

0

Todo está en el diseño. En muchos casos (si no en la mayoría), las bases de datos necesitarán algún nivel de personalización para instituciones individuales; pero las bases de datos generalizadas pueden proporcionar un nivel básico de funcionalidad. Es posible diseñar algo que sea lo suficientemente general como para satisfacer muchas necesidades básicas; pero el problema es que esa generalidad del diseño tiende a conducir a una alta complejidad. Por ejemplo, PUEDE diseñar su base de datos para que sea impulsada por datos para un gran conjunto de necesidades potenciales del usuario; pero, por lo general, es mejor personalizar el esquema según las necesidades individuales de la institución.

Hay considerables concesiones involucradas en el diseño para una situación de reutilización; generalmente implican tiempo y complejidad; es decir, es más fácil diseñar algo que NO es reutilizable; y, por lo general, la cantidad adicional de tiempo invertida en hacer el diseño general y usarlo no vale la pena.

0

Encuentre el equilibrio correcto de generalidad y especificidad en el diseño de su base de datos para que la aplicación que construya a su alrededor solucione suficientes problemas en sus mercados objetivo que todos los comprarán.

3

Normalmente, cuando las personas hacen esto, tienen varios clientes en la misma industria. Entonces, si usted es un desarrollador web de comercio electrónico, entonces se encontrará con los mismos productos, orden, detalles de la orden, tipo de escenario de tabla una y otra vez. Cuando esto sucede, es muy fácil construir una base de datos inicial.

+0

Y si van a seguir esta ruta, también deben mantener las secuencias de comandos de actualización entre cada nueva versión que haga para que pueda ir más fácilmente respaldar y actualizar a más clientes. –

0

¿Cada cliente utilizará todas las funcionalidades o está intentando construir un producto de talla única para todos? Siempre he descubierto que el tiempo adicional dedicado a planificar y modificar una base de datos para adaptarse a una aplicación en particular vale la pena en el futuro. Es mucho más fácil trabajar con una estructura de base de datos concisa que una en la que haya tratado de dar cuenta de todas las posibilidades.

Si tengo una base de datos existente que es similar o una plantilla, generalmente uso una herramienta de modelado de base de datos como this para modificarla y luego utilizo la funcionalidad generar SQL (bajo carga/guardar) para crear la base de datos actual.

Otro truco que recogí recientemente que me ha ahorrado mucho tiempo es guardar el SQL utilizado para generar la base de datos como un script. Si deseo configurar una nueva base de datos, realizo modificaciones en el código fuente y luego cargo la página. Por ejemplo, si quería generar una nueva tabla de clientes, cargo http://localhost/load.php?generate=customer.

Espero que ayude!

1

El primer paso, hable con una gran variedad de clientes potenciales y descubra sus necesidades, lo que están utilizando actualmente y lo que desean que sus productos actuales puedan hacer. Gaste 10 veces más tiempo en esto que crea que necesita hacerlo en este momento. Dibuje posibles GUI en papel y haga que las personas entrevistadas observen los dibujos y hagan sugerencias. Si es posible, contrate a algunas personas en la industria como analistas de negocios para ayudar con este paso. Pregunte sobre los requisitos legales. Algunas industrias tienen muchos problemas de complicación legal y otras no. Cualquier cosa relacionada de alguna manera con el mundo médico y tendrá que investigar y comprender completamente los requisitos de HIPPA, por ejemplo.

Diseñe la estructura de la base de datos y una GUI luego obtenga algunos usuarios reales para jugar con ella. Refactor basado en lo que dicen (es sorprendente la cantidad de cosas que los usuarios dejan en la recopilación de requisitos en las que no piensan hasta que se enfrentan con una GUI real).

Piense en lo que debe ser común a todos los clientes potenciales y en dónde podría necesitar personalización: sus entrevistas deberían guiarlo aquí. Decida cómo manejar la personalización. O incluso si lo permite. Esto puede depender en gran medida de la industria y cuán estándar son sus prácticas.

Si se trata de un software de caja, a menudo el diseño incluye una tabla con campos personalizables que se pueden agregar a formularios e informes por parte del usuario. En una solución basada en web, cada usuario que desee personalización puede tener su propia base de . Si toma esta ruta, la segunda vez que realice una personalización similar para un segundo cliente, considere si necesita refactorizar para que esta sea una nueva característica del software disponible para todos. No es necesario escribir 17 informes de asistencia personalizada que varían solo en uno o dos campos cuando el cliente puede obtener un informe estándar por menos dinero.

En el modelo web, también puede crear un grupo de módulos y hacer que los clientes seleccionen y elijan qué agregar a su solución personalizada. Pagarían en función del número y la complejidad de los módulos que elijan. Entonces, el cliente que quiere solo tres de los informes estándar pagaría menos que el cliente que quiere los 27. Cuando se sugiere una nueva personalización, el cliente paga por el desarrollo si la sugerencia no parece aplicarse de manera inmediata a los demás, pero el módulo está hecho para que otros puedan comprarlo también. Si otros lo compran, el cliente original que solicitó el cambio podría obtener parte del dinero hasta que se paguen los costos de desarrollo. También podrían requerir que algo permanezca como un módulo personalizado y pagar un precio mucho más alto por este trabajo. Tenemos algunos clientes que ni siquiera quieren sus datos en los mismos servidores en la misma ubicación que otros clientes. No hace falta decir que cobramos una gran prima por hacer algo como eso.

La personalización es costosa y puede llevar a que se necesiten muchos más programadores. Considere con mucha fuerza antes de ir a la ruta de personalización. Realmente puede ser lo que vende su solución de software, pero no escala bien. No está mal cuando tienes diez cutomers, pero cuando tienes un par de cientos puede perder el control rápidamente. Es mucho más difícil retractarse de la personalización una vez que la ofreces, que agregar personalización más adelante desde una suite estándar. A menudo, la necesidad de personalización se basa más en la organización de informes corporativos. Si puede crear una interfaz de informes donde las personas puedan seleccionar y elegir la información que desean y guardar sus propios informes personalizados, es posible que se encargue de la mayoría de las necesidades de personalización en su industria sin necesidad de una personalización a gran escala.

Cuestiones relacionadas