Android - Duda Base de Datos para camareros en un bar

Iniciado por Zepovop, Agosto 27, 2016, 10:29:29 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Agosto 27, 2016, 10:29:29 PM Ultima modificación: Agosto 28, 2016, 11:45:17 AM por Zepovop
Buenas, llevo un tiempo en este foro, porque lo considero de los mas completos y actualmente me encuentro programando en Android. Tengo una duda para una app que estoy programando. Esta app sirve para ayudar a los camareros a servir, y su funcionamiento seria el de crear un bar, añadirle los productos que tiene el local, los trabajadores que hay, y la localizacion del mismo. Y ademas, permite servir mesas, y añadir los productos que van pidiendo o marcarlos como pagado. Sin embargo, he estado buscando por Internet y no he encontrado la forma de guardar objetos en una base de datos(Unica tabla, en la cual guardo objetos de tipo bar, y atraves de metodos añado los productos...), ni de como crearlas desde la aplicacion (Varias tablas, cada una de un bar, y las columnas serian Trabajadores, Localizacion, Productos, Mesas...). Gracias por dedicar su tiempo a leer esta duda y espero que puedan ayudarme. Un saludo
Zepovop

Hola. Pues en Android para las bases de datos se usa mucho sqlite.

Android brinda soporte nativo para la gestión de base de datos sqlite a través de las APIs contenidas en android.database.sqlite (No tienes permitido ver los links. Registrarse o Entrar a mi cuenta). Pero si quieres un desarrollo mejor organizado puedes utilizar un ORM Framework como OrmLite o greenDAO.

Una introducción en español a OrmLite:
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Código de ejemplo básico para utilizar relaciones con OrmLite:
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Saludos

Dependiendo del manejo de datos te puede interesar una cosa u otra también tienes sQLite;

SQLite es un sistema de gestión de bases de datos relacional compatible con ACID, contenida en una relativamente pequeña (~275 kiB) biblioteca escrita en C. SQLite es un proyecto de dominio público creado por D. Richard Hipp.

Por otro lado la creación de la Base de Datos en principio no es complicada por los requerimientos que veo que solicitas, yo estudiaría bien a fondo esos requeriemientos, crearía tablas ejemplo(Empleados,Productos,Mesas,Localización) comprobaría que tipo de relaciones surgen es decir 1:1,1:N,M:M, comprobaría la Normalización en 1FN,2FN,3FN e implementariá esos datos en el sistema gestor de base de datos de mi preferencia.

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Perdón por desvirtuar el tema,

pero algunas de tus ideas no cumplen con un buen diseño de una base de datos:

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
- Una Tabla con Tres Columnas [ID, Nombre Bar, Localización Bar].

Si la base de datos es local al dispositivo en el cual se encuentra funcionando la aplicación, entonces solo tendrás un registro que contiene la información del bar al que pertenece el dispositivo. Además, si tienes más de un dispositivo con la misma aplicación entonces tendrás este registro en cada uno de los mismos.

En un principio no está mal que una tabla tenga solamente un registro, pero que muchas bases de datos tengan el mismo registro no es algo bueno. Si el objetivo es que todos los dispositivos compartan los mismos datos, entonces los datos deberían ser almacenados y obtenidos a través de un servicio RESTful o Webservice funcionando en el bar o en un servidor común para todos los bares.


No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
- Una Tabla para cada Bar creado con "x" columnas para almacenar los Productos [ID, SinCategoria, Cervezas, Comidas...].

En lo posible, no agreges columnas, distribuye los datos en registros y táblas relacionadas (o foráneas). Un mejor diseño podría ser:
- Productos [ID, ID de Marca , Descripción, Stock]
- Marcas de Productos [ID, Descripción]
- Categoría de producto [ID, ID de Categoría padre, Descripción]


No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
- Una Tabla para cada Bar creado con 4 columnas para cada Mesa creada [ID, Mesa1(Pedido), Mesa1(CantidaPedido), Mesa1(Pagado), Mesa1(CantidadPagado)].

Igual que lo anterior, un diseño podría ser:
- Mesa [ID, Descripción]
- Atención [ID (para encontrar la suma de pedidos en una atención), ID de Mesa, fecha, Descripción]
- Pedido [ID, ID de atención, hora]
- Productos Por Pedido [ID, ID de pedido, ID de producto, Cantidad]


De esta forma se obtiene una base de datos con diseños flexibles y escalables. Estas ideas son parte de los "Fundamentos de la normalización de bases de datos":

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Saludos

+1 a todo lo que dijo grep


Ahora una consulta. Cada mozo va a tener un dispositivo con su propia copia de la db? no te conviene tener una db sola en un servidor y pegarle por una api?

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Ahora una consulta. Cada mozo va a tener un dispositivo con su propia copia de la db? no te conviene tener una db sola en un servidor y pegarle por una api?

Así debería ser,

Saludos


Hola @No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Pues sobre base de dados creo que@No tienes permitido ver los links. Registrarse o Entrar a mi cuenta y @No tienes permitido ver los links. Registrarse o Entrar a mi cuenta te han aclarado lo suficiente(Eso y que tengo un nivel basico de BD), en cuanto a lo de contratar un servidor quiero que sepas que un servidor puede ser incluso una PC de baja gamma que configures dentro de la misma red de tu casa.

Saludos.
El talento se parece al tirador que da en un blanco que los demás no pueden alcanzar; el genio se parece al tirador que da en un blanco que los demás no pueden ver.


Agosto 29, 2016, 03:26:04 PM #8 Ultima modificación: Agosto 29, 2016, 03:28:59 PM por Hu3c0
CREATE OR REPLACE  TRIGGER  sipuedoteayudo
Before update or insert
on thisthread
For each row
declare
v_sipuedo varchar2(15);
v_otra varchar2(20);
v_finalstring ;
controlexception exception;
Begin
Select id_thread into v_sipuedo from ayuda where thead in (''104663);
IF (v_sipuedo='tengopaciencia') then DBMS_OUTPUT.PUT_LINE('Lo mismo este fin de semana intento diseñarte la BD ');
ELSE IF
Raise controlexception;
END IF;
v_otra:='Estoy de exámen y no puedo descentrarme ';
FOR entradafor IN REVERSE  1..LENGTH(v_otra) LOOP
v_finalstring=v_finalstring||Substring(v_otra,entradafor,1);
END LOOP;
DBMS_OUTPUT.PUT_LINE('Su string inreverse  '||v_finalstring );

EXCEPTION
when controlexception then
DBMS_OUTPUT.PUT_LINE('Okey lo comprendo que no tengas paciencia te deseo lo mejor en tu proyecto Android  a mi también me gusta ' );

END;

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Aprende sql con cualquier tutorial que encuentres, una vez que sepas los basico, pasarte a sqlite es muy facil. Yo use No tienes permitido ver los links. Registrarse o Entrar a mi cuenta pero capaz encontras algo mejor

Si bien el diseño ya lo tenes mas o menos hecho, podes googlear sobre modelado conceptual, modelado fisico y normalizacion de bases de datos


Lo del servidor yo pensaba que, por ejemplo, podes querer ver desde la computadora del que maneja la caja cuanto se recaudó en el dia. No vas a pedirle a todos los mozos que te digan cuando tienen sumado y hacer la cuenta a mano, lo mas logico seria tener toda la informacion en una sola db. Un servidor puede ser tranquilamente una computadora que esta atras de la barra o metida abajo de tu cama (no va a ser lo mas confiable, pero una vez que sabes que funciona todo, el costo de un vps es muy bajo para un bar)
Igual no te compliques, segui con una db por dispositivo como lo tenes pensado