sql >> Base de Datos >  >> RDS >> Database

Sirviendo Comida Deliciosa (y Datos) – Un Modelo de Datos para Restaurantes

¿Qué papel juega el diseño de la base de datos en la gestión de un restaurante? ¿Cómo sería el modelo de datos para la base de datos de un restaurante? Descúbrelo en este artículo.

Un restaurante sirve a la gente con comida preparada. Este es un tipo de negocio que está prosperando en todo el mundo y, a menudo, con mucho brillo. Las personas se sienten muy cómodas yendo a restaurantes y comienzan a esperar una amplia variedad de opciones cuando se trata de su próxima comida.

Solo en la ciudad de Nueva York, hay más de 24,000 establecimientos de comidas. Estos incluyen comida para llevar (es decir, pizza, tiendas secundarias, comida china para llevar), delicatessen, cafés y restaurantes de alta cocina. El siguiente dicho encaja muy bien en la industria de los restaurantes; es prácticamente su declaración de misión universal:

Haz lo que haces tan bien que querrán volver a verlo y traer a sus amigos y familiares.

Walt Disney

¿Por qué los restaurantes necesitan bases de datos?

La gestión de restaurantes no es una tarea fácil. Cuando se trata de realizar un seguimiento y ejecutar las tareas diarias, incluso el restaurador más experimentado puede tener más de lo que puede manejar fácilmente. Dirigir un restaurante rentable requiere administrar el inventario/existencias, minimizar el desperdicio, administrar las mesas (especialmente en las horas pico), mantener un menú amigable para el cliente, ejecutar los pedidos de manera eficiente y supervisar al personal del restaurante. ¡Eso es mucho!

Un sistema de gestión de restaurantes debe realizar la mayoría de estas actividades con una intervención manual mínima. Tiene que presentar a los gerentes información precisa para que puedan mantener contentos a los clientes. Esto puede significar realizar cambios apropiados en el menú e incluso en la forma en que funciona el restaurante.

El modelo de datos del restaurante

Este artículo trata sobre el diseño de un modelo de datos completo para un restaurante (para cenar o para llevar). También abordaremos dos grandes problemas que enfrentan las personas en el negocio de los restaurantes en sus actividades diarias. Finalmente, pensaremos en los cambios necesarios para incorporar esas capacidades en un sistema existente.

A medida que nos sumerjamos en el modelo de datos, mencionaré ciertos roles de usuario. Estos roles son en realidad para los miembros del personal, como:

  • Gerente:gestiona el inventario, la nómina, la programación de empleados y las métricas del restaurante
  • Anfitrión:sienta a los invitados y asigna servidores a las mesas
  • Camarero (también conocido como mesero):lleva los pedidos de los clientes a la cocina y entrega el pedido preparado al cliente
  • Supervisor (también conocido como chef o jefe de cocina):supervisa las tareas en la cocina y asigna tareas a los cocineros
  • Cocinar:lee los detalles del pedido recibido del supervisor, prepara la comida e informa al supervisor cuando está lista
  • Mesero:realiza un seguimiento de las mesas que se utilizan; limpia tablas y actualiza su estado según sea necesario

Un modelo de datos para un negocio de restaurante debe tener las siguientes características elementales:

  • Gestión de KOT (token de orden de cocina)
  • Gestión de KOD (entrega de pedidos de cocina)
  • Gestión de menús

Veamos cada una de estas características en detalle.

Gestión de KOT (Token de pedido de cocina)

Esta es la parte más importante de nuestro modelo de datos:se trata de recopilar los detalles de los pedidos de los clientes a través de varios canales. ¿Por qué varios canales? Porque hay varias formas de hacer los pedidos:en línea o a través de una aplicación móvil, por llamadas telefónicas o a través de meseros u otros empleados. Cada vez que un cliente realiza un pedido, se genera un KOT (token de pedido de cocina). Eventualmente, el personal de cocina preparará el KOT.

Crearé una tabla, kot , para celebrar los detalles del pedido preliminar. Esta tabla tiene las siguientes columnas:


Nombre de columna Descripción
Id La clave principal de esta tabla
order_channel_id El canal a través del cual se realiza el pedido.
dine_in_table_sitting_id La tabla donde se origina el pedido. Esta columna se completará solo en el caso de pedidos para cenar.
order_in_time La marca de tiempo cuando el pedido se registra en el sistema
order_out_time La marca de tiempo cuando el personal de cocina entrega el pedido
staff_id El DNI de la persona que recoge el pedido. En el caso de pedidos para cenar, esta columna contiene el DNI del camarero que recoge el pedido. En otras configuraciones, este ID sería 'SISTEMA'.
kot_status_id Define el estado actual de un KOT.


Me gustaría señalar que un pedido recopilado de una mesa a la vez se etiqueta bajo un kot_id . Si la misma mesa luego ordena más artículos, el sistema generará otro kot_id y etiquetará todos estos nuevos artículos bajo esa ID. Al final, todos los kot_ids para la misma mesa se sumarán en la factura final.

La gestión de KOT requiere tablas estáticas y transaccionales adicionales, que son:

  • order_channel – Esta tabla contiene detalles sobre los canales que utiliza un restaurante para aceptar pedidos. Los ejemplos comunes incluyen en línea, cenar en casa, llevar (llevar a cabo), etc.
  • dine_in_table_sitting – Esta es una tabla transaccional que almacena datos de ocupación de la mesa. Sus columnas incluyen dine_in_table_id , dine_in_time , dine_out_time , num_person_sitting y customer_id . Tan pronto como el anfitrión asigna un cliente a una mesa e ingresa la información en el sistema, se inserta un registro en esta tabla. Para obtener el estado de ocupación actual de las mesas en un momento dado, esta es la mesa que se utilizará.

    Suponga que desea crear esta característica. Aquí está el SQL que le indicará el estado de ocupación actual de todas las mesas del restaurante:

    SELECT 
      b.id as table_id,
      c.area_desc,
      CASE 
        WHEN a.dine_in_table_id IS NULL THEN ‘VACANT’ 
        ELSE ‘OCCUPIED’
      END AS current_table_status
    FROM dine_in_table_sitting a, dine_in_table b, dine_in_table_area
    WHERE a.dine_in_table_id (+) = b.id
    	AND b.dine_in_table_area = c.id
    	AND a.dine_out_time IS NULL;
    

  • kot_status – Esta tabla contiene todos los estados posibles para un KOT:pedido recibido , pedido en proceso , pedido entregado , etc.
  • kot_menu_item – Esta tabla transaccional almacena los detalles de todos los artículos en un KOT. También define la relación entre el KOT y un menu_item . El menu_item_id y quantity campos contra un kot_id indicar el artículo en orden y cuánto se necesita.

Gestión de KOD (Entrega de pedidos de cocina)

Una gran parte del desempeño de un restaurante se reduce a la gestión de KOT dentro de la cocina. Por lo general, un supervisor recopila los KOT de los meseros, otros empleados o un sistema en línea. Luego, el supervisor asigna los elementos del menú a uno o más cocineros. El cocinero prepara los artículos y se los entrega al supervisor. Luego, el mesero u otro miembro del personal recoge el pedido y se lo entrega al cliente.

Pero eso no es todo lo que incluye la gestión de KOD. La gestión de recursos, el almacenamiento de ingredientes, la actualización periódica del inventario restante y la solicitud de nuevo inventario según sea necesario también forman parte del funcionamiento diario de la cocina. El supervisor juega un papel destacado en el buen funcionamiento de la cocina, especialmente durante las horas pico. Un sistema se considera "inteligente" o "inteligente" si puede replicar las funciones de trabajo de un supervisor, lo que es casi imposible en la mayoría de los lugares.

Para construir un modelo para esta parte compleja de administración, crearé otra tabla, llamada KOD . Esta tabla consta de las siguientes columnas:


Nombre de columna Descripción
Id Clave principal para esta tabla
kot_menu_item_id Significa el artículo KOT en el que el personal de cocina está trabajando actualmente
staff_id Almacena la identificación del cocinero que está preparando el artículo
kod_status_id Muestra el estado actual del elemento


Gestión de menús

Este componente es tan importante como la gestión de KOT y KOD. El menú, tanto en su presentación visual como en los platos que ofrece, es una de las primeras cosas que atrae a los clientes. Por eso, todos los restauradores intentan que su menú sea lo más atractivo posible.

Vamos a crear otra tabla para contener los detalles del menú. Añadiré columnas para todos los detalles que solemos ver en un menú:


Nombre de columna Descripción
Id La clave principal de la tabla
Item_name Un nombre corto para un elemento del menú
Item_category_id Significa la categoría de cocina del artículo:italiano, continental, etc.
Item_desc Contiene detalles del artículo, como una lista de ingredientes o cómo se prepara el artículo (al horno, al vapor, etc.)
Item_image Una imagen llamativa del artículo.
cost El costo del artículo


Resolviendo problemas de restaurantes del mundo real con datos

Algunos problemas son extremadamente comunes en el mundo del servicio de alimentos. En particular, estoy pensando en largos tiempos de espera, tanto para sentarse en una mesa como para obtener su comida. Estos problemas a menudo se pueden resolver, al menos parcialmente, organizando y utilizando mejor los datos de los restaurantes.

En un entorno de comedor, pocas cosas son más molestas para los clientes que tener que esperar mucho tiempo por una mesa. Minimizar los tiempos de espera de los clientes durante las horas pico requiere vigilar de cerca el estado de las mesas individuales. Si no hay una adecuada gestión de mesas y personal, los tiempos de espera de los clientes empiezan a crecer. Si los tiempos de espera son demasiado largos, los clientes pueden irse y buscar otro restaurante que los atienda rápidamente.

Se puede abordar esta preocupación introduciendo ciertos cambios en este modelo de datos. Estos cambios:

  1. Agregue administración de mesas en tiempo real, una forma digitalizada de administrar la disponibilidad de mesas, el seguimiento del estado y las tasas de utilización.
  2. Reduzca el tiempo de respuesta de la mesa midiendo la eficiencia del personal y permitiendo una planificación eficaz de la fuerza laboral, por ejemplo, reuniendo un equipo de limpieza y asignando personal a una mesa o grupo de mesas.
  3. Publica el estado en tiempo real de las mesas individuales en las pantallas de los gerentes, para que puedan estar al tanto de cualquier actividad pendiente desde hace mucho tiempo.

Otro problema es hacer que los clientes esperen por su comida. Para los clientes que cenan en el lugar y para llevar, esto se puede ayudar proporcionando actualizaciones de estado directamente al comensal. Monitorear el estado de los KOT individuales es vital aquí. A medida que avanza el KOT en la cocina, su estado se actualiza en el KOT mesa. Este mecanismo brinda una actualización en tiempo real a los clientes sobre el estado de sus pedidos.




¿Cómo podemos mejorar este modelo de datos de restaurantes?

Hay tantas ideas innovadoras que se les ocurren a los dueños y operadores de restaurantes para atraer y retener a sus clientes. Por ejemplo:

  • Muchos ejecutan programas de fidelización de clientes. Estos mantienen una cuenta de lealtad para los clientes y otorgan puntos a los invitados por cada visita, compra, etc. Los comensales pueden canjear estos puntos cuando lo deseen por varias recompensas (generalmente algo de comida gratis, un porcentaje de descuento en su cheque o una comida gratis) .
  • Algunos restaurantes hacen que los elementos de su menú sean lo más personalizables posible. Permiten que sus comensales elijan ingredientes para ensaladas o pastas, o sustituyen alimentos para cumplir con ciertas restricciones dietéticas.

La gestión de inventario es otra área que juega un papel destacado en la rentabilidad de un restaurante.

¿Podemos incorporar estas capacidades en este modelo de datos? Comparta sus pensamientos en la sección de comentarios a continuación.