none
Duda estructura para tabla de impresoras y tinta RRS feed

  • Pregunta

  • Buen día compañeros, soy principiante en base de datos y estoy armando una base de datos para organizar las impresoras y cartuchos de la empresa. Actualmente tengo las tablas de este modo:

    introducir la descripción de la imagen aquí

    introducir la descripción de la imagen aquí

    Hatsa aqui todo bien, puedo saber la informacion completa de las impresoras y tambien manejar la informacion de los cartuchos. Pero lo que busco tambien es saber cuantas impresoras utilizan el "MODELO" de cartucho que tenga en la tabla tinta.

    Ahora no se si mis tablas sean correctas, ya que por ejemplo en "tipo" guardo si la impresora es de tinta o de toner, en conexion pongo si es por USB o IP, en direcion su IP.

    introducir la descripción de la imagen aquí

    Busco que después de existencia vaya un campo que indique la cantidad de impresoras que utilizan este "MODELO" de tinta, para saber cuantos hay que pedir al proveedor (si en existencia hay 2 y tengo 3 impresoras que utilizan este modelo entonces el pedido es 1 cartucho).

    Pienso que podria hacer los calculos solo con la tabla tinta (contando los modelos) pero no hay relacion con la tabla impresora.

    Si pongo el campo idtinta en mi tabla de impresoras para reemplazar los demas campos de toner, magenta, cyan amarillo y negro tendria muchoas registros por ejempl una impresora tendria 4 registros uno por cada tipo de tinta.

    ¿Como podria saber cuantas impresoras utilzan el mimso modelo de cartucho?

    Gracias

    jueves, 23 de mayo de 2019 20:00

Respuestas

  • Hola Eduardo Velazquez:

    Estas modelando de un modo no normalizado.

    Lo primero que tienes que entender, es que no hay limite de tablas, da igual que tengas 3 que 30000. Las bases de datos, se utilizan para almacenar información no repetida, de un modo óptimo.

    Una de las maneras más lógicas de intentar llegar a 3ª forma normal es, preguntar.

    ¿Una impresora, es quien debe de tener unos atributos llamados amarillo rojo....?

    Yo diría que no. A lo mejor, tendrá una relación con una tabla de componentes o toners o como quieras.

    Por ejemplo Tabla toners id identity 1,1, impresora int, color int

    Tabla colores int color.

    Por tabla toners, tienes la impresora relacionada de 1 a n y en 1 a 1 con colores.

    Si te sientes más cómodo toners puede ser Toner (idImpresora int, línea int, color int, 

    Y tu tabla de toners, es la que se relaciona con tabltinta.

    Mencionas también tipo y le pones un varchar. No se hace así. Utiliza una tabla de tipos y le pones un smallint, por ejemplo contra esa tabla de tipos y en esa tabla de tipos tienes el id y la descripción.

    Conexiones, ídem de ídem. 

    Te lo planteo en bytes, si un varchar ocupa 2 bytes, y tienes 35 millones de registros de impresoras. Te has comido 70 millones de bytes * 5 caracteres=350.000.000, para almacenar siempre la misma información.

    Cuando estés repitiendo datos en las mismas filas, es el momento de pensar en poner una tabla y relacionarlo con esa tabla.

    Espero haberte mostrado una pequeña luz en el camino

    Normalizar

    https://platzi.com/blog/normalizar-una-base-de-datos-y-no-morir-en-el-intento/

    jueves, 23 de mayo de 2019 20:29