Skip to content

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 

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] } }

About

temp

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors