En el mundo del software en general, véase programación en diferentes lenguajes: java, python, groovy, php, …, por citar algunos, en las diferentes bases de datos MySQL, MariaDB, PostgreSQL, Oracle, Firebird, generadores de informes, el uso de múltiples framework para los diferentes lenguajes: java (OpenXava, Primefaces, Spring Roo, Spring Framework, Struts 2, Play, Vaadin,…), php (Laravel, Symfony, Zend Framework, …), …, surge una necesidad de aprendizaje rápido para desarrollar aplicaciones empresariales según las necesidades del cliente o del programador, las condiciones, el mejor marco de trabajo según las necesidades del proyecto, es en este proceso cuando surge la idea del crear Learning Project.
Por estas cuestiones nace inicialmente Learning Project, como una necesidad propia de aprendizaje, por eso me parece interesante desarrollar el mismo proyecto en diferentes bases de datos, plataformas y lenguajes, creando tutoriales para la programación en cada una de las plataformas, esto nos va a permitir hacer diferentes análisis.
En primer lugar, aprender diferentes plataformas de forma ágil al partir de un proyecto conocido y poder ir directamente a la programación pudiendo comparar con el lenguaje o plataforma que controlemos más, permitiéndonos evaluar como se hacen las cosas en un uno y otro.
En segundo lugar, podemos establecer una comparativa real de la complejidad, versatilidad, rapidez de programación, comportamientos, configuraciones,… , en definitiva hacer comparativas entre diferentes plataformas
Learning Project
Tutoriales de programación con el mismo proyecto principal como base, para facilitar el aprendizaje y la comparación de software. Código Xules
A continuación, vamos a describir el esquema básico del proyecto que desarrollaremos en diferentes plataformas, se parte de un esquema básico de 8 tablas para facilitar el aprendizaje y se contempla la ampliación de tablas para ver nuevas necesidades en función de cada plataforma.
Definición
Learning Project se basa en el desarrollo de un proyecto que consiste en la administración de clientes para diferentes empresas, para ello se plantea la necesidad de tener la información de la empresa y de los clientes. Cada empresa podrá tener múltiples clientes, para el caso de estudio se plantea que ambas entidades tengan los campos básicos y direcciones que podrán ser una o varias, aunque inicialmente solo desarrollaremos las direcciones para los clientes por optimización del desarrollo, ya que la extensión es fácil y no aportaría nada nuevo al proyecto.
Así mismo, para completar el proyecto con el desarrollo que creemos necesario, se plantea que la tabla clientes tenga como tablas asociadas las tablas de: monedas, idiomas y países que serán tablas de uso general en la aplicación, y una tabla más específica de los clientes que será métodos de pago.
Esquema inicial
Este no es un diagrama entidad relación clásico sino una simple estructura de las tablas que se van a implementar y de sus relaciones que utilizaremos en los manuales de Learning Project:
Tablas del esquema
Para desarrollar este esquema vamos a necesitar las siguientes tablas, a continuación se explica su utilidad y algunas características básicas, el resto irá directamente sobre el código SQL:
Learning Project
|
||
TABLA
|
DESCRIPCIÓN
|
CARACTERÍSTICAS DE DISEÑO
|
cb_enterprise |
Empresas de la aplicación, cada empresa tendrá sus clientes. |
Las empresas tendrán definido inicialmente: idioma, país y moneda, así como los campos básicos para hacer pruebas. |
cb_customer |
Tabla general de cliente, donde se almacenarán los clientes de las diferentes empresas, se entiende cliente como aquel que compra a una empresa. |
Los tendrán definido inicialmente: idioma, país, direcciones, empresas, métodos de pago y moneda, así como los campos básicos para hacer pruebas. |
cb_addresses |
Tabla de registro de las direcciones, se asocian aquí las direcciones que tienen un cliente, cada cliente tendrá un número ilimitado de direcciones con cb_address relacionado mediante cb_addresses (es básicamente una tabla relacional). |
Registro para asociar las direcciones al cliente. |
cb_address |
Tabla de dirección donde se guardan los datos de la dirección en sí. |
Tabla de dirección que tendrá los campos generales de una dirección, así como números de teléfono, transportista y tipos de dirección. |
cb_language |
Tabla con los idiomas registrados en la aplicación, se podrá relacionar con múltiples tablas. |
|
cb_country |
Tabla con los países registrados en la aplicación, se podrá relacionar con múltiples tablas. |
Para cada país se especificará la moneda y el idioma utilizado por defecto. |
cb_currency |
Tabla con las monedas registradas en la aplicación, se podrá relacionar con múltiples tablas. |
|
cb_paymentmethod |
Métodos de pago definidos para el cliente u otras entidades. |
Esquema Entidad Relación
En el esquema entidad relación de Learning Project podemos ver como se relacionan las tablas entre si, los nombre de las claves primarias y foráneas y en definitiva un esquema general de la implementación de la base de datos:
Funcionalidad de las aplicaciones
En Learning Project buscamos que desde las aplicaciones se pueda gestionar toda la entrada de registros de todas entidades, además, como cualquier aplicación empresarial proporcionaremos los informes básicos en pdf y excel, así como una gestión eficiente.
Veamos un ejemplo del resultado final que esperamos: