schema Database
Como ya sabras la base de datos esta compuesta por 17 tablas, como son varias se explicará las más importantes, las cuales son:
-
carroCompra: Sitio donde los usuarios van a poder persistir por un determinado tiempo los productos que desean adquirir, esto con el fin de poder acceder a ellos desde cualquier parte, los campos son:
- idCarroCompra: Es el identificador de la tabla, es de tipo TEXT y es un UUID.
- usuarioId: Llave foránea de la tabla Usuario, es de tipo TEXT y es de tipo UUID.
- estadoActual: Llave foránea de la tabla estadoCarro, es de tipo INTEGER.
- fechaCreacion: Campo que muestra la fecha de creación del carro, campo importante para la versión 2, es de tipo TEXT.
- createdAtTimestamp: Campo fundamental para la versión 2, ya que en caso de aplicar la paginación basada en cursor, se necesitará este campo que una fecha en formato numerico auto-incremental.
-
Usuario: Contiene la información acerca de los usuarios, sus campos son:
- id: Es el identificador de la tabla, es de tipo TEXT y es un UUID.
- nombre: Campo que guarda el nombre del usuario.
- apellidos: Campo que guarda los apellidos del usuario.
- password: Campo que guarda a manera incriptada la contraseña.
- correo: Correo del usuario, debe ser único.
- telefono: Telefono del usuario, debe ser único.
- fechaCreacion: Campo que muestra la fecha de registro del usuario.
- createdAtTimestamp: Campo fundamental para la versión 2, ya que en caso de aplicar la paginación basada en cursor, se necesitará este campo que una fecha en formato numerico auto-incremental.
- rolActual: Campo que determina el nivel de acceso dentro del aplicativo del usuario.
Por el momento, manejamos solo tres roles, los cuales son:
- admin
- cliente
- vendedor
- estadoActual: Identifica si el usuario esta activo o eliminado.
- foto: Campo de tipo TEXT que almacena la url de la imagen de perfil del usuario.
- nombreCompleto: Campo que es conformado por los campos nombre y apellidos, es un campo virtual, lo que significa que no ocupa espacio en disco, pero el costo esta a la hora de la lectura y no de escritura, se optó por implementar este campo para evitar la tarea de tener que manipular los datos, ya que el dato ya viene como se necesita.
-
userStatusHistory: Contiene los expedientes del usuario. Un expediente se genera cada vez que el administrador decide borrar, bloquear o desbloquear a cualquier usuario con un rol que no sea el de admin.
- id: Es el identificador de la tabla, es de tipo TEXT y es un UUID.
- userId: Llave foránea de la tabla Usuario, es de tipo TEXT y es de tipo UUID.
- razon: Campo de tipo TEXT, se creo este campo para ayudarle al admin el saber por qué cambio el estatus(eliminarlo,etc) de un usuario.
- mensaje: Campo de tipo TEXT, que le permite al admin añadir una descripción de la razón que lo originó a cambiar el estatus de dicho usuario.
- fechaCambio: Campo que se va a actualizar cada vez que se haga una modificación al registro.
- createdAtTimestamp: Campo fundamental para la versión 2, ya que en caso de aplicar la paginación basada en cursor, se necesitará este campo que una fecha en formato numerico auto-incremental.
-
Producto: Contiene toda la información básica de un producto. Sus campos son:
- id: Es el identificador de la tabla, es de tipo TEXT y es un UUID.
- nombre: Nombre del producto, debe ser único.
- marcaId: Llave foránea de la tabla Marca, es de tipo INTEGER.
- estadoActual: Identifica la situación del producto, es la llave foránea de la tabla estadoProducto, la razón de implementar estos estados como tabla te lo puede responder un integrante del equipo, habla con él.
- calificaPorMayor: Campo que determina la cantidad de unidades que debe adquirir el usuario para que se le aplique el precio al por mayor, que es más económico en comparación al por menor. Es de tipo REAL.
- costoProduccion: Valor de producción, puede ser null.
- descuento: Valor del descuento, puede ser null.
- precioMenor: Valor del precio al por menor.
- precioMayor: Valor del precio al por mayor.
- descripcion: Muestra la descripción del producto.
- fechaCreacion: Campo que muestra la fecha de registro del producto.
- createdAtTimestamp: Campo fundamental para la versión 2, ya que en caso de aplicar la paginación basada en cursor, se necesitará este campo que una fecha en formato numerico auto-incremental.
- ultimoCambio: Campo que se va a actualizar cada vez que se haga una modificación al registro.
- creadoPor: Guarda el id del usuario que haya creado el registro, es de tipo TEXT.
- modificadoPor: Guarda el id del usuario que realice el cambio más reciente sobre el registro, es de tipo TEXT.