Ver Mensaje Individual
  #5 (permalink)  
Antiguo 23/07/2008, 10:03
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Quien sabe como hacerlo?

eN En esencia, lo que Genetix te está comentando es lo que deberías hacer.
El proceso, como anticipo, terminará con un conjunto de tablas que se deberán consultar, sea por una consulta directa o a través de una vista, pero de esa forma podrás cambiar solamente un dato para saber dónde está el artículo.
Deberás establecer primero un esquema de ordenamiento del área de almacenaje:
1. Sala.
2. Área (si cada sala se subdivide)
3. Estantería.
4. Lado del estante (si es accesible desde ambos lados).
5. Estante.

Así, cada uno de los elementos terminará siendo una tabla distinta, si la normalización se hace completa, para finalmente tener una tabla a la que podemos llamar UBICACIONARTICULO, con los datos:
UBICACIONARTICULO(IDArticulo, IDEstante, IDLadoEstante, IDEstantería, IDArea, IDSala)

En definitiva es un caso típico de los que se usa como ejercitación en las cátedras de Bases de Datos en las universidades. Suele darse un ejemplo similar, pero referido a administrar una biblioteca.
¿Por qué tantas tablas? Para evitar redundancia de datos, lo que conlleva inconsistencias al momento de insertar registros.
¿Por qué tantas tablas distintas para un sólo estante? Porque a priori no sabes si todos los estantes son iguales, si en todos los casos hay salas en juego, tampoco sabes si la cantidad de estantes es igual en cada mueble y un largo etcétera. Y en el caso de algunos que no cubran todos los campos, tendrás el problema de campos vacíos que solamente aumentan el volumen de la tabla sin utilidad.

Puede perfeccionarse, pero la cosa mas o menos andará por allí.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)