Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Datos que se Repiten Mucho

Estas en el tema de Datos que se Repiten Mucho en el foro de Mysql en Foros del Web. Buenos dias estoy haciendo un proyecto el cual consta de una db de un restaurante, y tengo las siguientes tablas: componentes detalle_menu grupos menu productos ...
  #1 (permalink)  
Antiguo 19/03/2011, 09:34
 
Fecha de Ingreso: marzo-2011
Ubicación: Colombia
Mensajes: 17
Antigüedad: 13 años, 1 mes
Puntos: 0
Datos que se Repiten Mucho

Buenos dias estoy haciendo un proyecto el cual consta de una db de un restaurante, y tengo las siguientes tablas:
componentes
detalle_menu
grupos
menu
productos

En productos registro los ingredientes que necesito para crear un menú (tabla menu)
la tabla productos tiene los campos "cod_producto", "nombre_producto", "cantidad", "unidad_medida" y "precio".

Hay muchos menús que requieren de los mismos productos, pero en diferente cantidad, ejemplo:

Ensalada Verde:
Lechuga(1 libra), sal(5 grs), aceite(10 ml),etc

Carne Frita:
Carne(2 libras), sal(20 grs), aceite (500 ml),etc

Los datos los llamo a mi proyecto que está hecho en vb.net, la caja de texto de cantidad la dejo habilitada para que el usuario digite la cantidad que se necesita del producto para cada menú, ésto implica que el campo cantidad se modificará constantemente.

El problema es que el usuario va agregando cada uno de los productos hasta completar el menú y eso de ir escribiendo la cantidad me parece engorroso porque son muchos productos. Quisiera saber una manera de agilizar el proceso de armado del menú, no sé si me falta otra tabla o qué?...les pido porfavor una idea. Espero haber sido claro, si necesitan más detalles preguntenme.

Gracias!
  #2 (permalink)  
Antiguo 19/03/2011, 09:53
Avatar de Nano_  
Fecha de Ingreso: febrero-2006
Ubicación: Bogotá, Colombia
Mensajes: 1.866
Antigüedad: 18 años, 2 meses
Puntos: 96
Respuesta: Datos que se Repiten Mucho

Saludos

Podrías categorizar los productos!
__________________
:.:Nano.:: @nano_hard - Retornando al foro
  #3 (permalink)  
Antiguo 19/03/2011, 09:55
 
Fecha de Ingreso: marzo-2011
Ubicación: Colombia
Mensajes: 17
Antigüedad: 13 años, 1 mes
Puntos: 0
Respuesta: Datos que se Repiten Mucho

Hola Nano me podrías dar más detalles???????
  #4 (permalink)  
Antiguo 19/03/2011, 10:11
Avatar de Nano_  
Fecha de Ingreso: febrero-2006
Ubicación: Bogotá, Colombia
Mensajes: 1.866
Antigüedad: 18 años, 2 meses
Puntos: 96
Respuesta: Datos que se Repiten Mucho

Saludos

Cuando te indico categorizar es separar los productos ya sean por productos frios, o carnes, o verduras, ensaladas.... con el fin de que el usuario cuando ingrese al formulario lo primero que va a seleccionar va ser la categoría del producto, después de eso otro combo para seleccionar lo productos de esa categoría.
__________________
:.:Nano.:: @nano_hard - Retornando al foro
  #5 (permalink)  
Antiguo 19/03/2011, 10:23
 
Fecha de Ingreso: marzo-2011
Ubicación: Colombia
Mensajes: 17
Antigüedad: 13 años, 1 mes
Puntos: 0
Respuesta: Datos que se Repiten Mucho

Eso lo tengo en la tabla "grupos"
  #6 (permalink)  
Antiguo 19/03/2011, 10:51
 
Fecha de Ingreso: marzo-2011
Ubicación: Veracruz
Mensajes: 92
Antigüedad: 13 años, 1 mes
Puntos: 3
Respuesta: Datos que se Repiten Mucho

Puedes poner tus tablas con todos sus campos y relaciones para que sea más facil ayudarte?
  #7 (permalink)  
Antiguo 19/03/2011, 18:39
 
Fecha de Ingreso: febrero-2008
Ubicación: Sevilla
Mensajes: 91
Antigüedad: 16 años, 2 meses
Puntos: 15
Respuesta: Datos que se Repiten Mucho

Segun he entendido, no quieres que cada vez que el usuario diseñe un menu se registre un nuevo producto que sea igual en todo salvo por la cantidad, no?

Evidentemente eso conlleva a repetir la informacion del producto inutilmente solo para almacenar cantidades diferentes. Para eso se utilizan las relaciones y referencias.

Por ejemplo:

Si tu tienes un menu (id: 1, nombre: menu1) y un producto (id: 1, nombre: sal) y ese menu usa 5 gramos de sal, has de crear una tercera tabla que contenga el menu, el ingrediente asociado a ese menu y la cantidad.

Seria asi: tabla menu_producto(id_menu, id_producto, cantidad), de tal manera que podriamos tener los datos asi:

Menu | Producto | Cantidad
1 1 5
1 2 3
2 1 4

Asi eliminariamos la redundancia.

Recuerda que en la tabla menu_producto, el id_menu debe ser una foreign key de la id de la tabla menu, y id_producto una foreign key de la id de la tabla producto

Un saludo!
  #8 (permalink)  
Antiguo 19/03/2011, 19:18
 
Fecha de Ingreso: marzo-2011
Ubicación: Colombia
Mensajes: 17
Antigüedad: 13 años, 1 mes
Puntos: 0
Respuesta: Datos que se Repiten Mucho

Ésta es la estructura de mi base de datos:

# MySQL-Front 3.1 (Build 6.4)


# Host: giusepe Database: restaurante
# ------------------------------------------------------
# Server version 4.1.6-gamma-nt

CREATE DATABASE `restaurante`;
USE `restaurante`;

#
# Table structure for table componentes
#

CREATE TABLE `componentes` (
`cod_grupo` varchar(15) NOT NULL default '',
`cod_menu` varchar(4) NOT NULL default '',
`nombre_menu` varchar(30) NOT NULL default '',
`total` varchar(20) NOT NULL default ''
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

#
# Dumping data for table componentes
#

INSERT INTO `componentes` VALUES ('CARNE DE CERDO','0003','PATICAS DE CERDO','7000');
INSERT INTO `componentes` VALUES ('CARNE DE RES','0005','CARNE ASADA','11400');
INSERT INTO `componentes` VALUES ('CARNE DE CERDO','0006','LOMITOS DE CERDO','2000');
INSERT INTO `componentes` VALUES ('CARNE DE RES','0007','CARNE EN SALSA MIXTA','38000');
INSERT INTO `componentes` VALUES ('CARNE DE POLLO','0008','POLLO ASADO','4000');
INSERT INTO `componentes` VALUES ('CARNE DE POLLO','0009','POLLO GUISADO','20000');
INSERT INTO `componentes` VALUES ('CARNE DE RES','0010','CARNE EN BISTE','24000');


#
# Table structure for table detalle_menu
#

CREATE TABLE `detalle_menu` (
`cod_grupo` varchar(5) NOT NULL default '',
`cod_menu` varchar(4) NOT NULL default '',
`nombre_menu` varchar(40) NOT NULL default '',
`ingredientes` varchar(30) NOT NULL default '',
`cantidad` varchar(4) NOT NULL default '',
`medida` varchar(15) NOT NULL default '',
`precio` varchar(15) NOT NULL default ''
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

#
# Dumping data for table detalle_menu
#

INSERT INTO `detalle_menu` VALUES ('CARNE','0001','CARNE EN SALSA','PAPAS','KILO','5','10000');
INSERT INTO `detalle_menu` VALUES ('CARNE','0001','CARNE EN SALSA','APIO','LIBR','5','2500');
INSERT INTO `detalle_menu` VALUES ('CARNE','0002','PECHUGA ASADA','PECHUGA','UNID','59','236000');
INSERT INTO `detalle_menu` VALUES ('CARNE','0004','PATICAS DE CERDO','TOMATES','LIBR','3','3000');
INSERT INTO `detalle_menu` VALUES ('CARNE','0004','PATICAS DE CERDO','TOMATES','LIBR','4','4000');
INSERT INTO `detalle_menu` VALUES ('CARNE','0005','CARNE ASADA','ARROZ','LIBR','2','3400');
INSERT INTO `detalle_menu` VALUES ('CARNE','0005','CARNE ASADA','PAPAS','KILO','4','8000');
INSERT INTO `detalle_menu` VALUES ('CARNE','0006','LOMITOS DE CERDO','APIO','LIBR','4','2000');
INSERT INTO `detalle_menu` VALUES ('CARNE','0007','CARNE EN SALSA MIXTA','CARNE BLANDA','KILO','4','28000');
INSERT INTO `detalle_menu` VALUES ('CARNE','0007','CARNE EN SALSA MIXTA','ACEITE','LITR','4','10000');
INSERT INTO `detalle_menu` VALUES ('CARNE','0008','POLLO ASADO','CEBOLLA','LIBR','4','4000');
INSERT INTO `detalle_menu` VALUES ('CARNE','0009','POLLO GUISADO','PECHUGA','UNID','5','20000');
INSERT INTO `detalle_menu` VALUES ('CARNE','0010','CARNE EN BISTE','CEBOLLA','LIBR','3','3000');
INSERT INTO `detalle_menu` VALUES ('CARNE','0010','CARNE EN BISTE','CARNE BLANDA','KILO','3','21000');


#
# Table structure for table grupos
#

CREATE TABLE `grupos` (
`cod_grupo` int(6) unsigned NOT NULL auto_increment,
`nombre_grupos` varchar(30) NOT NULL default '',
PRIMARY KEY (`cod_grupo`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

#
# Dumping data for table grupos
#

INSERT INTO `grupos` VALUES (1000,'CARNE DE RES');
INSERT INTO `grupos` VALUES (1001,'CARNE DE CERDO');
INSERT INTO `grupos` VALUES (1002,'CARNE DE POLLO');
INSERT INTO `grupos` VALUES (1003,'CARNE DE PESCADO');
INSERT INTO `grupos` VALUES (1004,'ARROCES');
INSERT INTO `grupos` VALUES (1005,'ENSALADAS');
INSERT INTO `grupos` VALUES (1006,'ADICIONALES');
INSERT INTO `grupos` VALUES (1007,'POSTRES');
INSERT INTO `grupos` VALUES (1008,'JUGOS');

#
# Table structure for table menu
#

CREATE TABLE `menu` (
`registro` varchar(5) NOT NULL default '',
`fecha` varchar(10) NOT NULL default '',
`nombre_grupo` varchar(20) NOT NULL default '',
`nombre_menu` varchar(40) NOT NULL default '',
`valor_menu` varchar(20) NOT NULL default ''
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

#
# Dumping data for table menu
#

INSERT INTO `menu` VALUES ('0001','15/03/2011','CARNE DE CERDO','kkkkk','2000');

#
# Table structure for table productos
#

CREATE TABLE `productos` (
`cod_producto` varchar(4) NOT NULL default '',
`nombre_producto` varchar(30) NOT NULL default '',
`cantidad` varchar(4) NOT NULL default '',
`umedida` varchar(20) NOT NULL default '',
`precio` varchar(15) NOT NULL default ''
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

#
# Dumping data for table productos
#

INSERT INTO `productos` VALUES ('0001','PECHUGA','1','UNIDAD','4000');
INSERT INTO `productos` VALUES ('0002','PAPAS','1','KILOS','2000');
INSERT INTO `productos` VALUES ('0003','CEBOLLA','1','LIBRAS','1000');
INSERT INTO `productos` VALUES ('0004','TOMATES','1','LIBRAS','1000');
INSERT INTO `productos` VALUES ('0005','ARROZ','1','LIBRAS','1700');
INSERT INTO `productos` VALUES ('0006','APIO','1','LIBRAS','500');
INSERT INTO `productos` VALUES ('0007','CARNE BLANDA','1','KILOS','7000');
INSERT INTO `productos` VALUES ('0008','ACEITE','1','LITROS','2500');
INSERT INTO `productos` VALUES ('0010','COSTILLA','1','KILOS','6000');
INSERT INTO `productos` VALUES ('0011','salchicha','1','UNIDAD','300');
  #9 (permalink)  
Antiguo 19/03/2011, 19:39
 
Fecha de Ingreso: febrero-2008
Ubicación: Sevilla
Mensajes: 91
Antigüedad: 16 años, 2 meses
Puntos: 15
Respuesta: Datos que se Repiten Mucho

Busca algun tutorial que te explique como diseñar bases de datos, porque la base de datos que has hecho esta bastante mal, hay redundancia e inconsistencia a matar...corregirte esa base de datos es hacer que no aprendas en lo que estas fallando, y tienes un fallo muy grave, no saber diseñar...no te lo tomes a mal =)

Lo principal en una base de datos no es crearla, es crearla correctamente, si no tu base de datos no sera eficiente, consumira mucho espacio y lo mas grave, estara llena de inconsistencias, y no sera una bd, sera como un txt con datos al tuntun.

Empieza buscando lo que es la normalizacion (1ª, 2ª y 3ª forma normal) y realiza un modelo entidad relacion y un modelo relacional al que le apliques esa normalizacion, y del modelo relacional en 3ª forma normal pasas a construir la bd, que eso se hace del tiron.

Con el tiempo y experiencia, no necesitaras hacer los esquemas y cuando pienses en como hacer la base de datos, directamente te saldra normalizada, es cuestion de practica.

Un saludo!
  #10 (permalink)  
Antiguo 22/03/2011, 06:09
 
Fecha de Ingreso: marzo-2011
Ubicación: Colombia
Mensajes: 17
Antigüedad: 13 años, 1 mes
Puntos: 0
Respuesta: Datos que se Repiten Mucho

Hola JaviDP, no me molesta tu comentario, al contrario, te agradezco por los temas que me propones, puesto que apenas estoy aprendiendo.

Veo que la solución va por el ejemplo que pusiste de la tabla menu_producto. Voy a modificar la DB quitando los campos cantidad y precio de la tabla productos y los voy a agregar a esa nueva tabla.

Gracias!

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:27.