¿Qué proyecto de base de datos web debería elegir implementar?

Hubo un proyecto con el que jugué un poco pero que hace mucho que abandoné. Es posible que pueda completarlo y lanzarlo como código abierto, además de cumplir con los requisitos de su tarea de clase.

Muchas organizaciones mantienen listas de correo … especialmente para noticias y alertas críticas. Quieren un flujo de trabajo para controlar cómo se envían los mensajes a dichas listas y para asegurarse de que siguen una plantilla o formato dado; quizás también requiera que los mensajes de una lista dada sean revisados, revisados ​​y aprobados por terceros adicionales.

Entonces, escriba una aplicación web que permita al usuario crear y administrar plantillas (sugeriría el motor de plantillas Jinja2 de Python), crear y administrar listas de correo (sugeriría SQLAlchemy de Python con pruebas para SQLite3 y MySQL (y / o PostgreSQL) ) y posiblemente tenga su interfaz de código para un sistema de administración de listas de correo electrónico existente (sugeriría GNU Mailman, que también está en Python).

La interfaz de usuario principal simplemente debe presentar un inicio de sesión y una lista de las listas de correo a las que un usuario determinado tiene acceso de publicación. La selección de uno de ellos debería ofrecer una plantilla para completar. Completar eso debería activar la notificación de revisión / aprobación (tal vez por correo electrónico y / o SMS).

Los aprobadores deben iniciar sesión a través de la misma interfaz de usuario. Deberían recibir una lista de todos los mensajes / anuncios / alertas que estén pendientes de aprobación en la parte superior de su página de inicio posterior al inicio de sesión; y, por supuesto, una lista de cualquiera de las listas en las que podrían iniciar una publicación a continuación (al igual que con cualquier otro usuario).

Una opción que debe tener es implementar la política que cada mensaje necesita revisión. Si un aprobador designado intenta enviar un mensaje a alguna lista con esta configuración habilitada, entonces algún * otro * aprobador (o un mínimo de n-otros aprobadores) debe aprobar el mensaje que se enviará.

En cuanto al lenguaje de programación: sugeriría Python con cualquiera de Bottle, Flask, Django o Turbogears como marco.

Su modelo de base de datos debe incluir tablas de listas, una tabla de destinatarios / suscriptores, una tabla de uniones M: N de membresías de listas / destinatarios, una tabla de usuarios de aplicaciones, una tabla de aprobadores de uniones M: N, probablemente una tabla de plantillas ( con otra unión M: N o quizás solo 1: N que relaciona plantillas con listas, dependiendo de si desea que las plantillas se puedan compartir / reutilizar entre múltiples listas de distribución.

También deberá admitir algunas funciones administrativas para agregar usuarios, listas, plantillas, etc.

Supongo que depende de a) cuánto sabes ya b) cuánto tiempo tienes yc) qué tan difícil puedes manejar. Sin esta información, sugeriría las siguientes ideas que son simples, pero lo suficientemente difíciles como para que tenga que pensar en algunos enfoques diferentes y manejar muchas trampas:

  • Un sistema de comentarios. Sé que esto suena muy simple, pero si tiene algún anidamiento, encontrará que hay al menos 5 enfoques válidos. Sé cuál prefiero, pero te lo dejaré a ti. También puede agregar una votación positiva para hacerlo más interesante.
  • Una serie temporal de algún evento, como los precios del mercado de valores o el historial de ventas de la empresa. El desafío aquí es encontrar una buena manera de normalizar, presentarlo de una manera atractiva y hacer que funcione rápidamente.
  • Una lista de productos. Esto suena simple hasta que agrega cosas como, por ejemplo, camisas con diferentes tamaños y colores, versiones m / f, etc.
  • Un sistema de inventario muy simple. Pronto descubrirá que esto es una especie de madriguera de conejo y se vería obligado a tomar algunas decisiones sobre qué características son posibles y qué se debe sacrificar.

Puede usar el idioma web que desee, pero le sugiero que se adhiera a lo que ya sabe. Cualquier lenguaje que pueda usar tiene algunas buenas bibliotecas que puede usar. Solo asegúrese de seguir las mejores prácticas de seguridad si está tomando alguna entrada del usuario.

Hay un montón de iniciativas de datos de código abierto por ahí. Simplemente encuentre un tema que le interese y descubra cómo trabajar con los datos desordenados disponibles. Trabajar con bases de datos es mucho más que simplemente almacenar datos. Es un tema asombrosamente grande y solo pensaría en mantener las cosas lo más simples posible para su primer proyecto.

Podrías recrear un pequeño sitio de Twitter. Aunque el twitter real no se basa mucho en bases de datos relacionales, es un buen caso de uso con el que las personas podrán relacionarse.

Intenta pensar en las relaciones durante el diseño. Hay usuarios y tweets, hay usuarios que siguen a otros usuarios. Un tweet puede referirse a otro tweet (retweet). Un tweet puede referirse a una etiqueta hash.

Haga un buen modelo ER de cómo describiría su mundo de Twitter y agréguelo a su documentación.

El backend y el frontend deben estar escritos en el idioma con el que sea más competente. de lo contrario corre el riesgo de no terminar a tiempo o de buena calidad.

Personalmente, implementaría una aplicación web básica pero agradable que es capaz de mostrar una línea de tiempo, enviar tweets, filtrar hashtags y administrar mis relaciones con los seguidores. También debe implementar la actualización y eliminación de tweets para usar las funciones de SQL. También puede unir metadatos a tweets como Geo o datos basados ​​en tiempo y proporcionar filtros o buscar en la interfaz de usuario.

Si tuviera que hacerlo, iría con un backend Java EE que se ejecuta en Websphere Liberty o Payara, que expone las API REST para la interfaz y administra la base de datos a través de JPA, lo que facilitará su desarrollo. Si necesita hacer SQL a mano, vaya con JDBC entonces.

En la interfaz, iría con Angular 2 y crearía una buena aplicación de página única basada en JavaScript que se alimenta y lee desde el backend a través de AJAX / XHR.

No ha dicho qué lenguajes de programación ya conoce. Cada idioma tiene una curva de aprendizaje, algunos son bastante fáciles, pero la mayoría toma más tiempo para aprender.

Para un proyecto de clase de este tipo, si necesita aprender un nuevo lenguaje de computadora, un lenguaje más simple le permitirá concentrarse mucho más tiempo para concentrarse en la aplicación misma.

QuickBase es un lenguaje de desarrollo basado en la web fácil de usar que se está utilizando en las compañías Fortune 500.

Estas aplicaciones una vez desarrolladas ya están alojadas en la nube sin dolor de cabeza adicional.

Creo que este tipo de aplicaciones son la ola del futuro.

QuickBase | Soluciones de bases de datos

Revisión de QuickBase

MySQL

MySQL Community Server le permite escribir y leer datos usando llamadas API de descanso. Es de código abierto, fácil de usar, puede encontrar toneladas de documentación para leer y comprender.

Supongo que también puedes buscar en Google para encontrar el mejor

esquema

para su proyecto

Puede optimizar sus consultas, puede configurar un maestro-esclavo o simplemente puede tener un servidor de base de datos simple en su máquina local.

¡MySQL es genial aquí!

Cinco bases de datos basadas en web.