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

dudas para comenzar proyecto

Estas en el tema de dudas para comenzar proyecto en el foro de Mysql en Foros del Web. Y muchas. Hola, soy nuevo aquí, tengo algunos conocimintos de mysql pero no demasiados, pretendo crear una db para controlar un stock de lentes y ...
  #1 (permalink)  
Antiguo 22/11/2014, 07:33
 
Fecha de Ingreso: noviembre-2014
Mensajes: 76
Antigüedad: 6 años, 6 meses
Puntos: 0
Pregunta dudas para comenzar proyecto

Y muchas.

Hola, soy nuevo aquí, tengo algunos conocimintos de mysql pero no demasiados, pretendo crear una db para controlar un stock de lentes y la verdad me asaltan demasiadas dudas.

Os cuento un poco

Tenemos varios tipos de lentes, pueden ser unos 15 diferentes, cada lente puede tener una graduacion, ahi tenemos un importante numero de diferentes opciones, por ejemplo, un lente 1.49hc puede tener graduacion desde -4.00 esf -2.00 cil hasta +4.00 esf 0.00 cil y estas grduaciones se mueven de 0.25 en 0.25; con lo que por ejemplo las graduaciones irian....

-4.00 esf -2.00cil,-4.00 esf -1.75cil, -4.00 esf -1.50cil,-4.00 esf -1.25 cil,-4.00 esf -1.00 cil....... y asi hasta 0.00 cil, momento en que bajariamos a -3.75 y el cilindro comenzaria de nuevo en -2.00 para ir bajando. No se si se entiende bien.

Tenemos varios lentes de cada graduacion y lo que pretendo es hacer un stock para controlar entradas salidas y asi optimizar las reposiciones.

Me parece que una tabla tipo lentes y otra graduaciones seria el primcipio, os parece correcto?

Última edición por gralf; 22/11/2014 a las 14:09
  #2 (permalink)  
Antiguo 24/11/2014, 06:19
 
Fecha de Ingreso: noviembre-2014
Mensajes: 76
Antigüedad: 6 años, 6 meses
Puntos: 0
Respuesta: dudas para comenzar proyecto

empiezo a pensar que igual este no es el mejor sitio para este post, algun moderador sería tan amable de moverlo a BDs general??.

gracias y siento las molestias
  #3 (permalink)  
Antiguo 24/11/2014, 09:49
Avatar de David_Carrera_G  
Fecha de Ingreso: noviembre-2014
Ubicación: Santiago
Mensajes: 37
Antigüedad: 6 años, 6 meses
Puntos: 1
Respuesta: dudas para comenzar proyecto

Yo creo que si lo quieres realizar en MYSQL puede ser el lugar correcto, estimado según como describes el negocio el tema de los lentes seria tan fácil como crear una tabla la cual pueda almacenar las características de cada lente y otra tabla que pueda almacenar la graduación con las cuales vas a trabajar. Al menos así abordaría lo que especificas en el comentario.
  #4 (permalink)  
Antiguo 24/11/2014, 12:59
 
Fecha de Ingreso: noviembre-2014
Mensajes: 76
Antigüedad: 6 años, 6 meses
Puntos: 0
Respuesta: dudas para comenzar proyecto

una tabla para cada tipo de lente y otra con las diferentes graduaciones, eso es? y para cada cantidades, entradas, salidas y eso?
  #5 (permalink)  
Antiguo 24/11/2014, 14:08
Avatar de David_Carrera_G  
Fecha de Ingreso: noviembre-2014
Ubicación: Santiago
Mensajes: 37
Antigüedad: 6 años, 6 meses
Puntos: 1
Respuesta: dudas para comenzar proyecto

Cita:
Iniciado por gralf Ver Mensaje
una tabla para cada tipo de lente y otra con las diferentes graduaciones, eso es? y para cada cantidades, entradas, salidas y eso?

Claro de esa forma podrías gestionar de buena forma cada lente y sus respectiva graduación, para el tema de las cantidad este yo lo abordaría en una tabla diferente, en la cual controlaría las cantidades en stock, salida y entrada de productos, según mi visión esto debería quedar algo así:


GRADUACIÓN -----> con relación hacia PRODUCTO(lentes) ----> con relación hacia
STOCK_PRODUCTOS.

Ahora todo esto depende si la graduación(cristales) existe aparte de los lentes(marcos, según yo), osea dos productos separados que se venden como un solo producto. Hay tendríamos que controlar tanto el stock de los cristales, como el de los marcos y cambiaría el modelo. Saludos
  #6 (permalink)  
Antiguo 24/11/2014, 15:24
Avatar de solmedina87  
Fecha de Ingreso: noviembre-2014
Mensajes: 68
Antigüedad: 6 años, 6 meses
Puntos: 4
Respuesta: dudas para comenzar proyecto

En principio está bien lo que planteás, sería una tabla con los productos (lentes) y otra con graduaciones.
Para mi habría que tener una tercer tabla que relacione 1 lente--> n Graduaciones.
De esa forma podrías tener:
lente 1 --> graduación 1
lente 1 --> graduación 2
lente 1 --> graduación 3
lente 2 --> graduación 1
lente 2 --> graduación 4
  #7 (permalink)  
Antiguo 25/11/2014, 04:13
 
Fecha de Ingreso: noviembre-2014
Mensajes: 76
Antigüedad: 6 años, 6 meses
Puntos: 0
Respuesta: dudas para comenzar proyecto

una cuestion que me surje es

como tengo diferentes tipos de lentes, y cada uno de ellos tiene un rango de graduaciones, y no son iguales por cada tipo, aunque en algunos se solapan, no se si me explico, quiero decir

por ejemplo el 1.4 va de -4 a +4, pero el 1.6 va de +6 a -6 (lo cual incluye tambien el -4 a +4) que sería lo mejor, una tabla con cada rango para cada tipo de lente o una tabla con el rango de graduaciones mas amplio y de ahí cada lente usar el adecuado?


por cierto adjunto sql de la tabla lentes

https://www.dropbox.com/s/arateeo0io0r3ff/lentes.sql?dl=0

Última edición por gralf; 25/11/2014 a las 06:14 Razón: añadir información
  #8 (permalink)  
Antiguo 25/11/2014, 06:16
Avatar de David_Carrera_G  
Fecha de Ingreso: noviembre-2014
Ubicación: Santiago
Mensajes: 37
Antigüedad: 6 años, 6 meses
Puntos: 1
Respuesta: dudas para comenzar proyecto

Al menos yo lo trabajaría por separado, una tabla con lo mencionas(el aumento +4 - 4).

AUMENTO ---> LENTES ----> GRADUACIÓN ----> STOCK_PRODUCTOS
  #9 (permalink)  
Antiguo 25/11/2014, 06:17
 
Fecha de Ingreso: noviembre-2014
Mensajes: 76
Antigüedad: 6 años, 6 meses
Puntos: 0
Respuesta: dudas para comenzar proyecto

lo siento pero no entiendo lo que quieres decir

añado el sql de la tabla lentes

http://www.filedropper.com/lentes
  #10 (permalink)  
Antiguo 25/11/2014, 06:24
Avatar de David_Carrera_G  
Fecha de Ingreso: noviembre-2014
Ubicación: Santiago
Mensajes: 37
Antigüedad: 6 años, 6 meses
Puntos: 1
Respuesta: dudas para comenzar proyecto

Si nos adjuntas más información sobre tu problemas, como una descripción un poco más explicativa del negocio, quizás podamos dar una mejor observación. Saludos.
  #11 (permalink)  
Antiguo 25/11/2014, 06:40
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.323
Antigüedad: 13 años, 6 meses
Puntos: 2656
Respuesta: dudas para comenzar proyecto

A mi entender el problema que tienes es que estás mirando los detalles de los productos en lugar de hacer una abstraccion de los mismos y tratar de deterimar las características de las entidades que los contienen.
Antes de proceder a diseñar tablas y relaciones debes definir los objetos que contiene ese sistema y a partir de ellos definir cuales son los atributos que poseerán las entidades en un modelado relacional que las pueden incluir.

Si sigues pensando en los valores de los datos, en lugar de los datos como atributo, se volverá confuso.

Lamentablemente no tenemos un subforo dedicado al analisis de sistemas, que es el punto debil de todo este caso que describes, sino movería el post para alla.

En lo que parece ser, hay que definir algunas cosas:

- Qué atributos son propios de los Lentes como abstracción, es decir ¿qué atributos son comunes a TODOS los lentes?

- Qué Tipos de Lentes existen y en qué se diferencian. Esto determinará una cosa: Si no existen atributos que los diferencien, y sólo se diferencian en el uso que se da al lente fisicamente hablando (el objeto tangible), entonces los tipos no son parte del modelo de datos, sino del proceso de la aplicacion.
Pero si los tipos muestran una o más diferencias de atribuitos que son propios de uno u otro tipo, entonces la Entidad Lente puede tener una relacion con otra de Tipos de Lente, o bien existe una jerarquia de herencia, lo que implica que Lentes compondrá más de una tabla.

- ¿Qué es una graduación y en qué atributos se descompone? Cuando haces la descripcion de los valores pareces describir ciertos rangos de magnitudes quese usan respecto de un lente. Lo que edbes definir es qué describe cada magnitud y cuantas se necesitan para describir una sola graduacion.

- Si una graduación aplica a un único tipo de lente, la propia tabla degraduaciones (de necesitar existir) podría relacionarse con el tipo de lente sea en forma directa como transitiva. Hay que definir mejor eso.
Pero si una misma graduacion (con todas sus magnitudes) sólo apolica a un único tipo de lente, entonces es probable que las graduaciones sean parte de los atributos propios de Lente. Sólo se justificaría que graduaciones sea una tabla aparte si se forman conjuntos repeteitivos de magnitudes entre dos lentes diferentes.

- Finalmente, el stock apunta a una relacion de todos los elementos en un único registro. Pero para definir esa relacion hay que primero definir lo previo.

Nota bene: No confundas los valores que una graduación tiene, con los atributos que componen la graduación. A nivel de diseño bases de datos, los valores no existen, sólo existen los dominios que implica el rango de representacion que un mismo atributo tendrá.
Los valores que un registro contenga son propios de la instancia (registro físico), y no parte del modelado.

¿Se entiende?

Trata de describir los elemntos que te digo de un modo más abstracto. de ese modo te acercarás mejor a la estructura correcta de la base que necesitas. No te pierdas en los detalles.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #12 (permalink)  
Antiguo 25/11/2014, 07:39
 
Fecha de Ingreso: noviembre-2014
Mensajes: 76
Antigüedad: 6 años, 6 meses
Puntos: 0
Respuesta: dudas para comenzar proyecto

muchas gracias por tu respuesta. a ver si soy capaz de explicar un poco esto.

tengo diferentes tipos de lentes, vease el sql que he adjuntado arriba, que no se como poner el codigo aqui en la ventana de edicion.

voy a resumir en dos lentes aunque ya veis que hay mas.

1.49 hc , es un lente con un indice, un numero de abbe, una densidad y una geometria y un nombre mas cmpleto (para explicar las iniciales HC) todo ello lo he puesto en la tabla lenes, son datos invariables, quiero decir 1.49 hc tiene su abe, su dens, su geom y su nombre.

despues de esto cada lente puede tener una graduacion, las graduaciones vienen dadas por un cilindro y una esfera;

el cilindro en el caso del 1.49 va de -2.00 a 0 en pasos de 0.25 dioptrias, -2.00, -1.75,-1.50, -1.25, 1.00, -0.75, -0.50, -0.25, 0.00

en otros lentes el cilindro puede comenzar por ejemplo en -4.00 y llegara 0.00 del mismo modo.

la esfera pues es igual, lo único que abarca más dioptrías, por ejemplo en el aso que nos ocupa, el 1.49 va de -4.00 a +4.00, o sea -4.00, -3.75.......0.00, +0.25, +0.50.....+4.00

en otros lentes el rango es mayor, por eejmplo de -8.00 a +8.00.

la graduacion total del lente viene dad por la combinacion esfara cilindro, por ejemplo

-2.00 cil -4.00 esf
-1.75 cil -4.00 esf
-1.50 cil -4.00 esf
-1.25 cil --4.00 esf
-1.00cil -4.00esf
-0.75 cil -4.00esf
-0.50 cil -4.00 esf
-0.25 cil -4.00 esf
0.00 -4.00 esf
-2.00cil -3.75 esf
-1.75 cil -3.75 esf
-1.50 cil -3.75 esf
-1.25 cil --3.75 esf
-1.00cil -3.75esf
-0.75 cil -3.75esf
-0.50 cil -3.75 esf
-0.25 cil -3.75 esf
0.00 -3.75 esf
-2.00 cil -3.50esf

.
.
.
0.00 cil 0.00 esf
-2.00 cil +0.25 esf
........

hasta 0.00 cil +4.00 esf

se que es un rollo pero creo que así podeis enter lo que quiero decir.


cada línea que os hepuesto ahi arriba es una diferente graduación que cada lente puede tener, de hecho tenemos en stock pues lentes de cada graduacion.

Igual en este frase lo resumo, imaginemos que tengo dos camisetas mismo modelo color etc, pero tengo una en talla xl y otra en talla s. Cada lente tiene su graduacion, hay lentes de todas las graduaciones (dentro de su rango claro), y tenemosctodas las graduaciones de ese rango que he intentado plasmar ahí arriba, no hay mas cosa.

Siento explicarlo asin a lo bruto , pero creo que se entenderá

Última edición por gralf; 25/11/2014 a las 08:40
  #13 (permalink)  
Antiguo 25/11/2014, 09:40
Avatar de David_Carrera_G  
Fecha de Ingreso: noviembre-2014
Ubicación: Santiago
Mensajes: 37
Antigüedad: 6 años, 6 meses
Puntos: 1
Respuesta: dudas para comenzar proyecto

Estimado, estimado he tenido la oportunidad de ver como funciona un programa de generación de OT para lentes opticos y de contacto, por lo cual puedo imganinarme la funcionalidad, adjunto lo que enviaste en el TXT.


Código MySQL:
Ver original
  1. CREATE TABLE `lentes` (
  2.   `lente` varchar(100) NOT NULL,
  3.   `desc` varchar(100) NOT NULL,
  4.   `Abbe` int(2) NOT NULL,
  5.   `densidad` varchar(50) NOT NULL,
  6.   `geometrÃ*a` varchar(15) NOT NULL,
  7.   PRIMARY KEY (`id`),
  8.   UNIQUE KEY `tipo` (`lente`)


Yo generaría otras tablas, en las cuales capturare solo la graduación de la lentilla separando el cilindro de la esfera
seria algo así

Código MySQL:
Ver original
  1. CREATE TABLE graduacion_esfera(
  2. ID_esfera int(5) NOT NULL AUTO_INCREMENT,
  3. graduacion varchar(5) NOT NULL
  4. PRIMARY KEY(ID_esfera));
  5.  
  6. CREATE TABLE graduacion_cilindro(
  7. ID_cilindro int(5) NOT NULL AUTO_INCREMENT,
  8. graduacion varchar(5) NOT NULL
  9. PRIMARY KEY(ID_cilindro));


De esa forma podría capturar tanto la variación de la esfera como del cilindro, al elegir un lente.

Última edición por David_Carrera_G; 25/11/2014 a las 09:41 Razón: Cambio de lenguaje
  #14 (permalink)  
Antiguo 25/11/2014, 10:28
 
Fecha de Ingreso: noviembre-2014
Mensajes: 76
Antigüedad: 6 años, 6 meses
Puntos: 0
Respuesta: dudas para comenzar proyecto

supongo que de este modo no tengo que repetir tantas graduaciones, no?

por cierto que opcion eliges para mostrar el codigo mysql?
  #15 (permalink)  
Antiguo 25/11/2014, 10:38
Avatar de David_Carrera_G  
Fecha de Ingreso: noviembre-2014
Ubicación: Santiago
Mensajes: 37
Antigüedad: 6 años, 6 meses
Puntos: 1
Respuesta: dudas para comenzar proyecto

Claro de este modo, especificas las graduaciones de las esferas como los cilindros, y luego solo los vas eligiendo mediante la clave foránea que se debe generar entre cilindros y esferas con los lentes.

Y el SQL lo pegas, luego lo seleccionas y en HIGHLIGHT seleccionas SQL o MYSQL

Última edición por David_Carrera_G; 25/11/2014 a las 10:39 Razón: Corrección del taldo
  #16 (permalink)  
Antiguo 25/11/2014, 11:21
 
Fecha de Ingreso: noviembre-2014
Mensajes: 76
Antigüedad: 6 años, 6 meses
Puntos: 0
Respuesta: dudas para comenzar proyecto

muy bien pues esto es lo que tengo de momento



Con los datos de las graduaciones introducidos

Última edición por gralf; 25/11/2014 a las 12:08
  #17 (permalink)  
Antiguo 25/11/2014, 12:15
Avatar de David_Carrera_G  
Fecha de Ingreso: noviembre-2014
Ubicación: Santiago
Mensajes: 37
Antigüedad: 6 años, 6 meses
Puntos: 1
Respuesta: dudas para comenzar proyecto

Estimado, no se observa lo que adjuntas, favor revisar el post una vez lo hayas realizado, saludos.-
  #18 (permalink)  
Antiguo 25/11/2014, 13:03
 
Fecha de Ingreso: noviembre-2014
Mensajes: 76
Antigüedad: 6 años, 6 meses
Puntos: 0
Respuesta: dudas para comenzar proyecto

Pues yo veo la captura que he enviado......si te refieres a eso
  #19 (permalink)  
Antiguo 26/11/2014, 04:37
 
Fecha de Ingreso: noviembre-2014
Mensajes: 76
Antigüedad: 6 años, 6 meses
Puntos: 0
Respuesta: dudas para comenzar proyecto

Cita:
Iniciado por gnzsoloyo Ver Mensaje
A mi entender el problema que tienes es que estás mirando los detalles de los productos en lugar de hacer una abstraccion de los mismos y tratar de deterimar las características de las entidades que los contienen.
Antes de proceder a diseñar tablas y relaciones debes definir los objetos que contiene ese sistema y a partir de ellos definir cuales son los atributos que poseerán las entidades en un modelado relacional que las pueden incluir.

Si sigues pensando en los valores de los datos, en lugar de los datos como atributo, se volverá confuso.

Lamentablemente no tenemos un subforo dedicado al analisis de sistemas, que es el punto debil de todo este caso que describes, sino movería el post para alla.

En lo que parece ser, hay que definir algunas cosas:

- Qué atributos son propios de los Lentes como abstracción, es decir ¿qué atributos son comunes a TODOS los lentes?

- Qué Tipos de Lentes existen y en qué se diferencian. Esto determinará una cosa: Si no existen atributos que los diferencien, y sólo se diferencian en el uso que se da al lente fisicamente hablando (el objeto tangible), entonces los tipos no son parte del modelo de datos, sino del proceso de la aplicacion.
Pero si los tipos muestran una o más diferencias de atribuitos que son propios de uno u otro tipo, entonces la Entidad Lente puede tener una relacion con otra de Tipos de Lente, o bien existe una jerarquia de herencia, lo que implica que Lentes compondrá más de una tabla.

- ¿Qué es una graduación y en qué atributos se descompone? Cuando haces la descripcion de los valores pareces describir ciertos rangos de magnitudes quese usan respecto de un lente. Lo que edbes definir es qué describe cada magnitud y cuantas se necesitan para describir una sola graduacion.

- Si una graduación aplica a un único tipo de lente, la propia tabla degraduaciones (de necesitar existir) podría relacionarse con el tipo de lente sea en forma directa como transitiva. Hay que definir mejor eso.
Pero si una misma graduacion (con todas sus magnitudes) sólo apolica a un único tipo de lente, entonces es probable que las graduaciones sean parte de los atributos propios de Lente. Sólo se justificaría que graduaciones sea una tabla aparte si se forman conjuntos repeteitivos de magnitudes entre dos lentes diferentes.

- Finalmente, el stock apunta a una relacion de todos los elementos en un único registro. Pero para definir esa relacion hay que primero definir lo previo.

Nota bene: No confundas los valores que una graduación tiene, con los atributos que componen la graduación. A nivel de diseño bases de datos, los valores no existen, sólo existen los dominios que implica el rango de representacion que un mismo atributo tendrá.
Los valores que un registro contenga son propios de la instancia (registro físico), y no parte del modelado.

¿Se entiende?

Trata de describir los elemntos que te digo de un modo más abstracto. de ese modo te acercarás mejor a la estructura correcta de la base que necesitas. No te pierdas en los detalles.

intento comprender todo lo que explicas en tu respuesta, aunque no es fácil, hablas de conceptos "abstractos" que me cuesta entender, aún así lo intento, de hecho he echado mano de algunos apuntes y buceado por la red.

en conclusion en el punto que me encuentro, podemos decir que lentes cilindro y esfera son entidades?

cada lente junto con la union de una esfera y un cilindro forman un unico objeto, ¿no?

como debo relacionar estas tablas?

Última edición por gralf; 26/11/2014 a las 11:58
  #20 (permalink)  
Antiguo 26/11/2014, 19:59
Avatar de solmedina87  
Fecha de Ingreso: noviembre-2014
Mensajes: 68
Antigüedad: 6 años, 6 meses
Puntos: 4
Respuesta: dudas para comenzar proyecto

Por lo que he leido tenes un lente (con su abbe, dens, etc) y cada lente puede tener distintas esferas y cilindros entonces la relación que deberías hacer para relacionar elementos de cada una de esas 3 entidades es armar otra tabla donde guardes:
id de Lentes
id de Cilindros
id de Esferas
  #21 (permalink)  
Antiguo 27/11/2014, 04:13
 
Fecha de Ingreso: noviembre-2014
Mensajes: 76
Antigüedad: 6 años, 6 meses
Puntos: 0
Respuesta: dudas para comenzar proyecto

Cita:
Iniciado por solmedina87 Ver Mensaje
Por lo que he leido tenes un lente (con su abbe, dens, etc) y cada lente puede tener distintas esferas y cilindros entonces la relación que deberías hacer para relacionar elementos de cada una de esas 3 entidades es armar otra tabla donde guardes:
id de Lentes
id de Cilindros
id de Esferas
gracias por la respuesta.

y digo yo, y como guardo esos id?

quiero decir, creo la tabla

Código MySQL:
Ver original
  1. CREATE TABLE  `lentesrel` (
  2.  `id_lentesrel` INT( 20 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
  3.  `ID_cil` INT( 20 ) NOT NULL ,
  4.  `ID_esf` INT( 20 ) NOT NULL ,
  5.  `ID_lente` INT( 20 ) NOT NULL

en ella se guardarán las combinaciones posibles? o cómo funciona esta tabla?

quiero decir, cómo se guardan las posibles combinaciones aquí?

Última edición por gralf; 27/11/2014 a las 04:24
  #22 (permalink)  
Antiguo 28/11/2014, 04:48
 
Fecha de Ingreso: noviembre-2014
Mensajes: 76
Antigüedad: 6 años, 6 meses
Puntos: 0
Respuesta: dudas para comenzar proyecto

estoy pensando que igual me estoy adelantando y tal y como decís por ahí arriba necesitamos abstraernos para diseñar bien todo esto. Estoy viendo apuntes y tal y se me ha ocurrido que quizás sea mejor empezar por diseñar el modelo para ir viendo como desarollar luego las tablas y relaciones.

he empezado con esto

tengo estas entidades

-lentes
-graduacion esferica
-graduacion cilíndrica

y he hecho un diagrama en el que he intentado plasmar cardinalidades, no se si están bien, creo que si, pero pasaré a explicarlo, ospongo una captura.



lo que intento explicar con este diagrama es que

eso, tres entidades

una graduacion esferica puede tener 0 o varios lentes y un lente tiene una o varias graduacioes esfericas

en el caso de la graduacion cilindrica pues lo mismo

y entre las entidades graduacion esferica y g. cilindrica pues, una g. cilindrica tiene entre 0 y varias graduaciones efericas y viceversa.

creo qu elo tengo bien representado, ya me direis.

otra cosa será representar lo que necesito para luego inventariar, me refiero a las entidades que harán falta, pero me parece un buen comienzo.
  #23 (permalink)  
Antiguo 28/11/2014, 13:29
 
Fecha de Ingreso: noviembre-2014
Mensajes: 76
Antigüedad: 6 años, 6 meses
Puntos: 0
Respuesta: dudas para comenzar proyecto

siento la autorespuesta, pero despues de estar pensando en esto un rato me doy cuenta que no se si hay un error, bueno, creo que si lo hay

entre esfera y cilindro, la cardinalidad pienso que está mal, por pensar en los datos, y ya me habeis dicho que no hay que pensar en ellos en este paso.

el caso es que para tener una graduacion completa viene dada por un cilindro y una esfera; sería entonces una relacion (1,1) verdad?
  #24 (permalink)  
Antiguo 30/11/2014, 00:29
 
Fecha de Ingreso: noviembre-2014
Mensajes: 76
Antigüedad: 6 años, 6 meses
Puntos: 0
Respuesta: dudas para comenzar proyecto

pues despues de darle vueltas de nuevo, creo que no, que estaba bien, y sale una relacion muchos a muchos que entiendo es de donde luego se crea la tabla que dice solmedina87.

es asÍ?



de serlo, que os parece este modelo





de todos modos aquí hay algun error, porque esto es lo que dice phpmyadmin de las tablas Rx e Item






parece qeu no se lee el texto, pues pone esto

PRIMARY and INDEX keys should not both be set for column `Rx_cilindro_ID_cil`y en space usage/overhead sale en rojo

Última edición por gralf; 30/11/2014 a las 01:37
  #25 (permalink)  
Antiguo 03/12/2014, 06:52
 
Fecha de Ingreso: noviembre-2014
Mensajes: 76
Antigüedad: 6 años, 6 meses
Puntos: 0
Respuesta: dudas para comenzar proyecto

siento el up, pero en serio, no podeis intentar aconsejarme algo sobre este modelo? tengo dudas y muchas, pero el tema se ha estancado.
  #26 (permalink)  
Antiguo 03/12/2014, 19:16
Avatar de solmedina87  
Fecha de Ingreso: noviembre-2014
Mensajes: 68
Antigüedad: 6 años, 6 meses
Puntos: 4
Respuesta: dudas para comenzar proyecto

No estoy segura del error que te da phpmyadmin pero hablando sobre el modelo que pusiste, no entiendo para que la tabla RX... Con las demás entiendo que sería suficiente es decir:
Tus 3 entidades para mi están bien (lentes, esfera y cilindro).

Y se deberían relacionar en la tabla ITEM... Que también creo que la tenés bien, porque tenes los id de las otras tres entidades... Esos 3 id, en la tabla ITEM tienen que ser FOREING KEY, es decir que deben hacer referencia a sus tablas de origen (Lente, esfera y cilindro).

De nuevo, no entiendo el error que te da pero intenta sacar esa tabla RX o contame para que está? porque hasta donde entendí un lente tiene 1 esfera y 1 cilindro (mas alla de que una esfera pueda relacionarse con mas de un cilindro y vicebersa)
  #27 (permalink)  
Antiguo 03/12/2014, 23:47
 
Fecha de Ingreso: noviembre-2014
Mensajes: 76
Antigüedad: 6 años, 6 meses
Puntos: 0
Respuesta: dudas para comenzar proyecto

Cita:
Iniciado por solmedina87 Ver Mensaje
No estoy segura del error que te da phpmyadmin pero hablando sobre el modelo que pusiste, no entiendo para que la tabla RX... Con las demás entiendo que sería suficiente es decir:
Tus 3 entidades para mi están bien (lentes, esfera y cilindro).

Y se deberían relacionar en la tabla ITEM... Que también creo que la tenés bien, porque tenes los id de las otras tres entidades... Esos 3 id, en la tabla ITEM tienen que ser FOREING KEY, es decir que deben hacer referencia a sus tablas de origen (Lente, esfera y cilindro).

De nuevo, no entiendo el error que te da pero intenta sacar esa tabla RX o contame para que está? porque hasta donde entendí un lente tiene 1 esfera y 1 cilindro (mas alla de que una esfera pueda relacionarse con mas de un cilindro y vicebersa)


antes de nada, gracias por tu respuesta, pensaba que este tema quedaba estancado.

pues ahora que lo dices teniendo el cil y la esf puedo construir la Rx (graduacion) sinn necesidad de una tercera tabla.

Aún así , te cuento de donde me ha salido la tabla. tengo este diagrama



al estar relacionados n,m esfera y cilindro, no debe crearse una tabla entre las dos? pensaba que era así, pero igual el error es haber relacionado esas dos tablas.

me has abierto los ojos y claro, sería una redundancio, porque todas las combinacines de graduaciones pueden conseguirse con la esf y el cilindro ¿no?

quedaria el modelo de este modo entonces?



y con este esquema...
Código MySQL:
Ver original
  1. SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
  2. SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
  3. SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL,ALLOW_INVALID_DATES';
  4.  
  5. CREATE SCHEMA IF NOT EXISTS `stocklentes` DEFAULT CHARACTER SET utf8 ;
  6. USE `stocklentes` ;
  7.  
  8. -- -----------------------------------------------------
  9. -- Table `stocklentes`.`Index`
  10. -- -----------------------------------------------------
  11. CREATE  TABLE IF NOT EXISTS `stocklentes`.`Index` (
  12.   `id_index` INT(2) NOT NULL AUTO_INCREMENT ,
  13.   `nombre` VARCHAR(100) NOT NULL ,
  14.   `Abbe` INT(2) NOT NULL ,
  15.   `dens` VARCHAR(50) NOT NULL ,
  16.   `geom` VARCHAR(15) NOT NULL ,
  17.   `Indexcol` VARCHAR(45) NULL ,
  18.   PRIMARY KEY (`id_index`) ,
  19.   UNIQUE INDEX `nombre_UNIQUE` (`nombre` ASC) )
  20. DEFAULT CHARACTER SET = utf8;
  21.  
  22.  
  23. -- -----------------------------------------------------
  24. -- Table `stocklentes`.`esf`
  25. -- -----------------------------------------------------
  26. CREATE  TABLE IF NOT EXISTS `stocklentes`.`esf` (
  27.   `id_esf` INT(5) NULL AUTO_INCREMENT ,
  28.   `esf` DECIMAL(5,2) NULL ,
  29.   PRIMARY KEY (`id_esf`) ,
  30.   UNIQUE INDEX `esf_UNIQUE` (`esf` ASC) )
  31.  
  32.  
  33. -- -----------------------------------------------------
  34. -- Table `stocklentes`.`cil`
  35. -- -----------------------------------------------------
  36. CREATE  TABLE IF NOT EXISTS `stocklentes`.`cil` (
  37.   `id_cil` INT(5) NULL AUTO_INCREMENT ,
  38.   `cil` DECIMAL(5,2) NULL ,
  39.   PRIMARY KEY (`id_cil`) ,
  40.   UNIQUE INDEX `cil_UNIQUE` (`cil` ASC) )
  41.  
  42.  
  43. -- -----------------------------------------------------
  44. -- Table `stocklentes`.`Iem`
  45. -- -----------------------------------------------------
  46. CREATE  TABLE IF NOT EXISTS `stocklentes`.`Iem` (
  47.   `id_item` INT(5) NOT NULL AUTO_INCREMENT ,
  48.   `id_item_index` INT(5) NOT NULL ,
  49.   `id_cil` INT(5) NOT NULL ,
  50.   `id_esf` INT(5) NOT NULL ,
  51.   PRIMARY KEY (`id_item`) ,
  52.   INDEX `fk_index_rx_idx` (`id_item_index` ASC) ,
  53.   INDEX `fk_Iem_cil1_idx` (`id_cil` ASC) ,
  54.   INDEX `fk_Iem_esf1_idx` (`id_esf` ASC) ,
  55.   CONSTRAINT `fk_index_rx`
  56.     FOREIGN KEY (`id_item_index` )
  57.     REFERENCES `stocklentes`.`Index` (`id_index` )
  58.   CONSTRAINT `fk_Iem_cil1`
  59.     FOREIGN KEY (`id_cil` )
  60.     REFERENCES `stocklentes`.`cil` (`id_cil` )
  61.   CONSTRAINT `fk_Iem_esf1`
  62.     FOREIGN KEY (`id_esf` )
  63.     REFERENCES `stocklentes`.`esf` (`id_esf` )
  64.  
  65.  
  66.  
  67. SET SQL_MODE=@OLD_SQL_MODE;
  68. SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
  69. SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;

Última edición por gralf; 03/12/2014 a las 23:59
  #28 (permalink)  
Antiguo 04/12/2014, 09:08
Avatar de solmedina87  
Fecha de Ingreso: noviembre-2014
Mensajes: 68
Antigüedad: 6 años, 6 meses
Puntos: 4
Respuesta: dudas para comenzar proyecto

Para mi te quedó bien el esquema y el SQL :)
  #29 (permalink)  
Antiguo 04/12/2014, 09:42
 
Fecha de Ingreso: noviembre-2014
Mensajes: 76
Antigüedad: 6 años, 6 meses
Puntos: 0
Respuesta: dudas para comenzar proyecto

muy bien.
ahora lo siguiente sería el tema stock, lo que quiero es llevar el conteo de lo que tengo.
y dentro del stock querría hacer entradas (cuando compro mercancia) , hacer salidas (por dos motivos, por venta o por taller) y hacer regularizaciones.

supongo que una tabla entradas será algo así

id_entrada, id_item (para relacionarlo con item), timestamp (para saber fechas), y numero ¿os parece correcto?

de ser así?

necesito una tabla para cada una de las tres cosas, y como puedo resolver el tema de que haya dos tipos de salidas?



había pensado en estas tablas como entrada y salida

Código MySQL:
Ver original
  1. -- -----------------------------------------------------
  2.  
  3. -- Table `stocklentes`.`salida`
  4.  
  5. -- -----------------------------------------------------
  6.  
  7. CREATE  TABLE IF NOT EXISTS `stocklentes`.`salida` (
  8.  
  9.   `id_salida` INT(5) NOT NULL AUTO_INCREMENT ,
  10.  
  11.   `salida` INT(5) NULL ,
  12.  
  13.   `fecha_salida` TIME NULL ,
  14.  
  15.   `tipo_salida` ENUM('venta', 'taller') NULL ,
  16.  
  17.   `id_item` INT(5) NULL ,
  18.  
  19.   PRIMARY KEY (`id_salida`) ,
  20.  
  21.   INDEX `fk_salida_item_idx` (`id_item` ASC) ,
  22.  
  23.   CONSTRAINT `fk_salida_item`
  24.  
  25.     FOREIGN KEY (`id_item` )
  26.  
  27.     REFERENCES `stocklentes`.`Item` (`id_item` )
  28.  
  29.  
  30.  
  31.  
  32.  
  33.  
  34.  
  35.  
  36. -- -----------------------------------------------------
  37.  
  38. -- Table `stocklentes`.`entrada`
  39.  
  40. -- -----------------------------------------------------
  41.  
  42. CREATE  TABLE IF NOT EXISTS `stocklentes`.`entrada` (
  43.  
  44.   `id__entrada` INT(10) NOT NULL AUTO_INCREMENT ,
  45.  
  46.   `entrada` INT(5) NULL ,
  47.  
  48.   `fecha_entrada` TIMESTAMP NULL ,
  49.  
  50.   `id_item` INT(5) NULL ,
  51.  
  52.   PRIMARY KEY (`id__entrada`) ,
  53.  
  54.   INDEX `fk_entrada_item_idx` (`id_item` ASC) ,
  55.  
  56.   CONSTRAINT `fk_entrada_item`
  57.  
  58.     FOREIGN KEY (`id_item` )
  59.  
  60.     REFERENCES `stocklentes`.`Item` (`id_item` )
  61.  
  62.  
  63.  

no se si el campo enum solucionará lo de los dos tipos de salidas. Y el tema FK ¿estaría bien así?

y no se si necesitaría esa tercera table para regularizaciones, o bien puedo usar entradas y salidas y usar una opcion mas en el campo enum?.

bueno, ya me contareis.

gracias de antemano

Última edición por gralf; 05/12/2014 a las 13:39
  #30 (permalink)  
Antiguo 06/12/2014, 05:10
 
Fecha de Ingreso: noviembre-2014
Mensajes: 76
Antigüedad: 6 años, 6 meses
Puntos: 0
Respuesta: dudas para comenzar proyecto

bueno, me he echado palante y he llegado a esto


Código MySQL:
Ver original
  1. SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
  2.  
  3. --
  4. -- Database: `stocklentesbrujuleando`
  5. --
  6.  
  7. -- --------------------------------------------------------
  8.  
  9. --
  10. -- Table structure for table `cilindro`
  11. --
  12.  
  13. CREATE TABLE `cilindro` (
  14.   `ID_cil` int(2) NOT NULL AUTO_INCREMENT,
  15.   `cilindro` decimal(5,2) NOT NULL,
  16.   PRIMARY KEY (`ID_cil`)
  17.  
  18. -- --------------------------------------------------------
  19.  
  20. --
  21. -- Table structure for table `entrada`
  22. --
  23.  
  24. CREATE TABLE `entrada` (
  25.   `id_entrada` int(5) NOT NULL AUTO_INCREMENT,
  26.   `entrada` int(5) DEFAULT NULL,
  27.   `fecha_entrada` timestamp NULL DEFAULT NULL,
  28.   `tipo_entrada` enum('compra','regul') DEFAULT NULL,
  29.   `id_item` int(5) NOT NULL,
  30.   PRIMARY KEY (`id_entrada`),
  31.   KEY `fk_entrada_item1_idx` (`id_item`)
  32.  
  33. -- --------------------------------------------------------
  34.  
  35. --
  36. -- Table structure for table `esfera`
  37. --
  38.  
  39. CREATE TABLE `esfera` (
  40.   `ID_esf` int(5) NOT NULL AUTO_INCREMENT,
  41.   `esfera` decimal(5,2) NOT NULL,
  42.   PRIMARY KEY (`ID_esf`)
  43.  
  44. -- --------------------------------------------------------
  45.  
  46. --
  47. -- Table structure for table `item`
  48. --
  49.  
  50. CREATE TABLE `item` (
  51.   `item_ID` int(5) NOT NULL AUTO_INCREMENT,
  52.   `ID_Item_Rx_cil` int(2) NOT NULL,
  53.   `ID_Item_RX_esf` int(5) NOT NULL,
  54.   `ID_Item_RX_lente` int(2) NOT NULL,
  55.   PRIMARY KEY (`item_ID`)
  56.  
  57. -- --------------------------------------------------------
  58.  
  59. --
  60. -- Table structure for table `lentes`
  61. --
  62.  
  63. CREATE TABLE `lentes` (
  64.   `ID_lente` int(2) NOT NULL AUTO_INCREMENT,
  65.   `lente` varchar(25) NOT NULL,
  66.   `desc` varchar(45) NOT NULL,
  67.   `Abbe` int(2) NOT NULL,
  68.   `densidad` varchar(15) NOT NULL,
  69.   `geometría` varchar(15) NOT NULL,
  70.   `id_item` int(5) NOT NULL,
  71.   PRIMARY KEY (`ID_lente`),
  72.   UNIQUE KEY `tipo` (`lente`),
  73.   KEY `fk_lentes_item1_idx` (`id_item`)
  74.  
  75. -- --------------------------------------------------------
  76.  
  77. --
  78. -- Table structure for table `rx`
  79. --
  80.  
  81. CREATE TABLE `rx` (
  82.   `Id_Rx` int(2) NOT NULL DEFAULT '0',
  83.   `ID_Rx_cil` int(2) NOT NULL,
  84.   `ID_Rx_esf` int(5) NOT NULL,
  85.   `id_item` int(5) NOT NULL,
  86.   `rxcol` varchar(45) DEFAULT NULL,
  87.   PRIMARY KEY (`Id_Rx`),
  88.   KEY `fk_cilindro_has_esfera_idx_idx` (`ID_Rx_cil`),
  89.   KEY `fk_esfera_has_cilindro_idx_idx` (`ID_Rx_esf`),
  90.   KEY `fk_rx_item1_idx` (`id_item`)
  91.  
  92. -- --------------------------------------------------------
  93.  
  94. --
  95. -- Table structure for table `salida`
  96. --
  97.  
  98. CREATE TABLE `salida` (
  99.   `id_salida` int(5) NOT NULL AUTO_INCREMENT,
  100.   `salida` int(5) DEFAULT NULL,
  101.   `fecha_salida` timestamp NULL DEFAULT NULL,
  102.   `tipo_salida` enum('venta','taller','regul') DEFAULT NULL,
  103.   `id_item` int(5) NOT NULL,
  104.   PRIMARY KEY (`id_salida`),
  105.   KEY `fk_salida_item1_idx` (`id_item`)
  106.  
  107. --
  108. -- Constraints for dumped tables
  109. --
  110.  
  111. --
  112. -- Constraints for table `entrada`
  113. --
  114. ALTER TABLE `entrada`
  115.   ADD CONSTRAINT `fk_entrada_item1` FOREIGN KEY (`id_item`) REFERENCES `item` (`item_ID`) ON DELETE NO ACTION ON UPDATE NO ACTION;
  116.  
  117. --
  118. -- Constraints for table `lentes`
  119. --
  120. ALTER TABLE `lentes`
  121.   ADD CONSTRAINT `fk_lentes_item1` FOREIGN KEY (`id_item`) REFERENCES `item` (`item_ID`) ON DELETE NO ACTION ON UPDATE NO ACTION;
  122.  
  123. --
  124. -- Constraints for table `rx`
  125. --
  126.   ADD CONSTRAINT `fk_cilindro_has_esfera_idx` FOREIGN KEY (`ID_Rx_cil`) REFERENCES `cilindro` (`ID_cil`) ON DELETE NO ACTION ON UPDATE NO ACTION,
  127.   ADD CONSTRAINT `fk_esfera_has_cilindro_idx` FOREIGN KEY (`ID_Rx_esf`) REFERENCES `esfera` (`ID_esf`) ON DELETE NO ACTION ON UPDATE NO ACTION,
  128.   ADD CONSTRAINT `fk_rx_item1` FOREIGN KEY (`id_item`) REFERENCES `item` (`item_ID`) ON DELETE NO ACTION ON UPDATE NO ACTION;
  129.  
  130. --
  131. -- Constraints for table `salida`
  132. --
  133. ALTER TABLE `salida`
  134.   ADD CONSTRAINT `fk_salida_item1` FOREIGN KEY (`id_item`) REFERENCES `item` (`item_ID`) ON DELETE NO ACTION ON UPDATE NO ACTION;

os pongo el err



creo que está bien para ese control de stock.

mis dudas están en las FK, os parece que están puestas correctamente?

gracias de antemano

Etiquetas: dudas, sql, tabla
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 01:07.