Arquitectura del Software

Vamos a ver de principio a fin la arquitectura de una aplicación completa. Para ello vamos a imaginar que esta empresa es de logística que se encarga de llevar paquetería del punto A al punto B de manera internacional, es decir muy probablemente es una aplicación que usan administradores, clientes y operadores en puertos

Llega le barco cargado de containers, descargamos los containers y dentro se encuentran cajas, esas cajas tienen un código de barras, el operario toma su aplicación móvil y con la cámara del teléfono escanea el código de barras

Una vez escaneado el código de barras se le puede escanear los detalles del paquete, si está okay, algún daño menos o completamente roto.

El siguiente paso después de colocar el estado del paquete, es mencionar cual fue el tipo de transporte, si es un camión, tren, barco. Luego usando el GPS podemos ubicar en que puerto estamos, y usando los datos del OS del teléfono podemos colocar la hora y la fecha

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/a480460d-b6fc-4e95-954a-d636689e7fa2/Untitled.png

Los administradores, operadores tienen acceso a otras cosas como ver todas las ordenes que el cliente tiene, como qué están enviando y para dónde y el ver los detalles de registro del estado, en qué momento y en que puerto estuvo? y cual fue el registro

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/50a5c072-2a5f-4863-8d21-537c1dd383a3/Untitled.png

Arquitectura de Bases de Datos

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/a480460d-b6fc-4e95-954a-d636689e7fa2/Untitled.png

Pensemos en cada uno de los roles y diferentes estructuras de datos que tiene nuestra aplicación. Tenemos cajas, entonces tenemos paquetes, paquetes es uno de los conceptos básicos y centrales de esta aplicación. Los paquetes tienen un código de identificación. Porque un código de barras es una forma gráfica de ver un número.

Los paquetes tienen un status y los status pueden ser múltiples. Un paquete puede tener varios status. Cada status depende de cada etapa del transporte, dentro de todo el sistema de logística y los status tienen códigos, el código que está okay, que tiene daños menores o que está roto. También cada uno de los status te dice el medio de transporte en el que estaba, la locación, el lugar donde fue reportado el problema, la hora y fecha. Entonces pensemos inicialmente en cuales son los detalles del paquete

El paquete sería una tabla, tenemos una tabla dónde están los paquetes

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/30fbf5ce-f162-4680-8030-2ed273930315/Untitled.png

La regla N1 de bases de datos es. Evita la redundancia de datos

Si replicas datos múltiples veces, la base de datos está mal hecha. Entonces en la tabla dónde está el paquete no podemos tener el status, tenemos que crear una tabla aparte para el status

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/043ebb24-cf9f-4f80-a509-4b60d2fb1c75/Untitled.png

Acá encontramos algo muy interesante, status_id y package_id son identificadores únicos, pero package_id es el identificado del paquete en la tabla de paquetes. Entonces está relacionada la tabla de paquetes y la tabla de status. Las relaciones de las tablas son la clave para eliminar la redundancia de los datos. Y hay muchas otras tablas aquí presentes que no estamos representando

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/9055f27a-4d81-4660-9881-cabb935e88b9/Untitled.png

Ahora veámoslo de una manera gráfica

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/0cb7341a-be54-4986-a166-1c51fdbccffd/Untitled.png

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/d4e00bcd-cf2b-40c9-803b-97e8221732ae/Untitled.png

Esto es una base de datos pero ahora tenemos que ir al siguiente concepto, y es que no podemos conectar una base de datos directamente a la aplicación, porque resulta que no le podemos dar acceso a todos los datos, para que no los puedan manipular. Ahí vamos a hablar de un concepto que se llama "CRUD" Create Read Update Delete

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/30278629-cd05-476d-ba28-1823b37dd76f/Untitled.png

Tercera forma normal