Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 

Repository files navigation

temp

temp El esquema de Transcendence representa la base operativa de un restaurante, gestionando usuarios, clientes, empleados, un menú multi-idioma, inventario y ventas [1, 2]. Permite operar el negocio de forma integral, cubriendo desde pedidos y pagos hasta interacciones sociales y notificaciones [2].

Diseñado en PostgreSQL, utiliza herencia TPT para usuarios [1, 2]. Aplica borrado lógico (estado Activo), congelamiento de precios en transacciones y múltiples restricciones de unicidad mediante índices compuestos para asegurar la integridad referencial en reseñas, amistades y traducciones [2].

A continuación te presento el esquema de la base de datos en formato de texto plano (DBML) [1-11]:

Project TracendenceDB { database_type: 'PostgreSQL' Note: 'DB for restaurant' }

Table RolesUsuario{ RolID integer [pk, increment, unique] NombreRol varchar(255) Descripcion tinytext }

Table ApiKeys { KeyID integer [pk, increment, unique] UsuarioID integer [ref: > Usuarios.UsuarioID, not null] Token varchar(255) [unique, not null] LimitePeticiones integer [default: 100] PeticionesUsadas integer [default: 0] FechaExpiracion timestamp Activo bool [default: true] }

Table Usuarios { UsuarioID integer [pk, increment, unique] Email varchar(255) [unique] PasswordHash varchar(255) [null] ProveedorOAuth varchar(50) [null] OAuthID varchar(255) [null] FotoPerfil varchar(255) RolUsuarioID integer [ref: > RolesUsuario.RolID, not null] IdiomaID integer [ref: > Idiomas.IdiomaID, not null] Activo bool EmailVerificado bool UltimoAcceso timestamp FechaCreacion timestamp }

Table Amigos { AmistadID integer [pk, increment, unique] UsuarioSolicitudID integer [ref: > Usuarios.UsuarioID, not null] UsuarioReceptorID integer [ref: > Usuarios.UsuarioID, not null] Estado varchar(20) FechaCreacion timestamp indexes { (UsuarioSolicitudID, UsuarioReceptorID) [unique] } }

Table Notificaciones { NotificacionID integer [pk, increment, unique] UsuarioID integer [ref: > Usuarios.UsuarioID, not null] TipoAccion varchar(50) Mensaje text Leido bool [default: false] FechaHora timestamp indexes { UsuarioID } }

Table Clientes { ClienteID integer [pk, increment, unique] UsuarioID integer [ref: - Usuarios.UsuarioID, not null] Nombre varchar(255) Apellido varchar(255) Telefono varchar(255) PaisID integer [ref: > Paises.PaisID, not null] Ciudad varchar(255) FechaNacimiento date FechaPrimerPedido timestamp [null] }

Table CargosEmpleado { CargoEmpleadoID integer [pk, increment, unique] NombreCargo varchar(255) Descripcion tinytext }

Table Empleados { EmpleadoID integer [pk, increment, unique] UsuarioID integer [ref: - Usuarios.UsuarioID, not null] Nombre varchar(255) Apellido varchar(255) Telefono varchar(255) SucursalID integer [ref: > Restaurante.RestauranteID, not null] CargoEmpleadoID integer [ref: > CargosEmpleado.CargoEmpleadoID, not null] FechaNacimiento date FechaIngreso timestamp FechaDespido timestamp [null] Activo bool }

Table Idiomas { IdiomaID integer [pk, increment, unique] CodigoIdioma varchar(10) Idioma varchar(255) }

Table Paises { PaisID integer [pk, increment, unique] CodigoPais varchar(10) NombrePais varchar(255) Continente varchar(255) }

Table Restaurante { RestauranteID integer [pk, increment, unique] Nombre varchar(255) Ciudad varchar(255) PaisId integer [ref: > Paises.PaisID, not null] Direccion tinytext Activo bool }

Table TraduccionesMenu { TraduccionID integer [pk, increment, unique] ItemID integer [ref: > ItemsMenu.ItemID, not null] IdiomaID integer [ref: > Idiomas.IdiomaID, not null] NombreTraduccion varchar(255) DescripcionTraduccida text indexes { (ItemID, IdiomaID) [unique] } }

Table CategoriasMenu { CategoriaID integer [pk, increment, unique] Nombre varchar(255) Descripcion tinytext }

Table ItemsMenu { ItemID integer [pk, increment, unique] Nombre varchar(255) Imagen varchar(255) Descripcion text Precio decimal(10,2) CategoriaID integer [ref: > CategoriasMenu.CategoriaID, not null] Disponible bool indexes { CategoriaID } }

Table UnidadesMedida { UnidadID integer [pk, increment, unique] Abreviatura varchar(10) Nombre varchar(50) }

Table Insumos { InsumoID integer [pk, increment, unique] Nombre varchar(255) UnidadID integer [ref: > UnidadesMedida.UnidadID, not null] CostoUnidad decimal(10,2) SotockActual decimal (10,3) }

Table Recetas { RecetaID integer [pk, increment, unique] ItemID integer [ref: > ItemsMenu.ItemID, not null] InsumoID integer [ref: > Insumos.InsumoID, not null] Cantidad decimal (10,3) indexes { ItemID } }

Table EstadosPedido { EstadoID integer [pk, increment, unique] Nobre varchar(50) }

Table Mesas { MesaID integer [pk, increment, unique] Numero varchar(10) Capacidad integer Ubicacion varchar(50) }

Table Pedidos { PedidoID integer [pk, increment, unique] MesaID integer [ref: > Mesas.MesaID, null] ClienteID integer [ref: > Clientes.ClienteID, not null] RestauranteID integer [ref: > Restaurante.RestauranteID, not null] EmpleadoID integer [ref: > Empleados.EmpleadoID, not null] EstadoID integer [ref: > EstadosPedido.EstadoID, not null] FechaHora timestamp Total decimal(10,2) }

Table DetallePedidos { DetallePedidoID integer [pk, increment, unique] PedidoID integer [ref: > Pedidos.PedidoID, not null] ItemID integer [ref: > ItemsMenu.ItemID, not null] Cantidad integer PrecioUnitario decimal(10,2) Notas text indexes { PedidoID ItemID } }

Table MetodosPago { MetodoID integer [pk, increment, unique] Nombre varchar(50) }

Table Pagos { PagoID integer [pk, increment, unique] PedidoID integer [ref: > Pedidos.PedidoID, not null] MetodoID integer [ref: > MetodosPago.MetodoID, not null] Monto decimal(10,2) FechaHora timestamp }

Table Facturas { FacturaID integer [pk, increment, unique] PedidoId integer [ref: - Pedidos.PedidoID, not null] NumeroFactura varchar(50) [unique] FechaEmision timestamp ClienteDocumento varchar(50) ClienteNombre varchar(255) ClienteDireccion text BaseImponible decimal(10,2) PorcentajeIVA decimal(10,2) MontoIVA decimal TotalFactura decimal(10,2) }

Table HistorialEstadoPedido { HistorialID integer [pk, increment, unique] PedidoID integer [ref: > Pedidos.PedidoID, not null] EstadoID integer [ref: > EstadosPedido.EstadoID, not null] FechaHora timestamp indexes { PedidoID } }

Table Resenas { ResenaID integer [pk, increment, unique] ClienteID integer [ref: > Clientes.ClienteID, not null] ItemID integer [ref: > ItemsMenu.ItemID, not null] Calficacion integer Comentario text FechaHora timestamp indexes { (ClienteID, ItemID) [unique] } }

Table MensajesChat { MensajeID integer [pk, increment, unique] RemitenteID integer [ref: > Usuarios.UsuarioID, null] ReceptorID integer [ref: > Usuarios.UsuarioID, null] PedidoID integer [ref: > Pedidos.PedidoID, null] Mensaje text FechaHora timestamp Leido bool indexes { PedidoID } }

Table ResenasRestaurante { ResenaRestauranteID integer [pk, increment, unique] ClienteID integer [ref: > Clientes.ClienteID, not null] RestauranteID integer [ref: > Restaurante.RestauranteID, not null] Calificacion integer Comentario text FechaHora timestamp indexes { (ClienteID, RestauranteID) [unique] } }

Releases

Packages

Contributors