Otra opción
Pedidos = {idPedido, idMesa, tFechaHora, idMozo}
Detalles = {idPedido, iLugar default(1), idFactura, idProducto, nCantidad, yPrecio}
Facturas = {idFactura, dFecha, <<otros datos requeridos>>}
negrita: PK; itálica: FK; itálica subrayado: FK que admite nulos
Cuando se empieza a atender una mesa desde cero, se crea una orden, a medida que se van cargando los consumos, si es consumo de nuevo elemento, se agrega una fila en detalle, con la cantidad, si es más de lo mismo, se suma la cantidad a la fila ya creada para ese pedido-producto.
iLugar contiene el lugar en la mesa del cliente, si es un solo cliente o no quieren cuentas separadas, todos van al lugar 1.
Si piden cuentas separadas, el mozo deberá a cada entrada, indicar el lugar que corresponda para cada cliente en el producto correspondiente, si varios pidieron el mismo, deberá crearse una entrada en detalles para cada producto y lugar diferentes y poner las cantidades respectivas.
La gracia va a estar en la flexibilidad que le imprimas a la interfaz de usuario.
También te pueden pedir cuentas separadas por productos que consumen en común. Por ejemplo piden una cocucha efervescente, un trago amargo y una pizza de muzzarella y quieren cuentas separadas miti y miti la pizza.
Saludos: Miguel, La Pampa (RA)