Tengo que hacer un diseño de tablas para una empresa supervisora y tengo una
duda en una parte del diseño.
La lógica del negocio es, a grandes rasgos, la que sigue:
La empresa ofrece varios servicios, hasta el momento once, pero es una
empresa que espera crecer y que en el futuro ofrecerá más servicios. En cada
uno de estos servicios toma datos, por ejemplo, las observaciones, el lugar
donde se hacen algunos pesajes, etc.
La empresa, para poder llevar a cabo los servicios, toma muchos datos en
común, para darles una mejor idea, para el servicio UNO, toma los datos A, B,
C y D, para el servicio DOS, toma los datos B, C y D, en general, cada uno de
los once servicios toma datos en común.
Cada vez que se ofrece un servicio tengo que llevar el registro del mismo, y
es esa la razón por la que acudo a ustedes.
Había pensado en crear una tabla llamada RegistroServicio en la cual pondría
todos los campos de todos los servicios, algo así como el mínimo común
múltiplo de todos los campos, y un campo en el que se indique de qué clase de
servicio se trata. Con lo cual, a la hora de ingresar los datos habrían
campos que se dejarían en blanco, puesto que ningún servicio rellenaría todos
los campos, por ejemplo, la tabla tendría 50 campos, entonces uno de los
servicios llenaría 35 campos, dejando 15 en blanco y así.
Me asaltan las dudas porque a la hora de que me pidan el reporte mensual de
un determinado servicio tendría que hacer un filtro pasando como parámetro el
tipo de servicio del cual se quiere saber los movimientos, lo que me
ralentizaría el proceso de búsqueda. Además, como esperan ofrecer más
servicios, el día que aparezca un servicio en el cual tengan que tomar un
dato que antes no tomaban, me vería obligado a crear un nuevo campo a esa
tabla general, no sé si eso de cambiar la estructura de una tabla está bien,
así sea, simplemente, agregarle un nuevo campo, a simple vista, no me parece
bien.
También he pensado en crear una tabla para cada uno de los servicios, por lo
que habría varias tablas con la mayoría de atributos iguales y no sé si eso
sea correcto.
Otra opción que se me ha ocurrido es crear una tabla "padre" con los datos
comunes y luego crear tablas hijas por cada uno de los servcios en las cuales
sólo se tendrían los datos no comunes, pero me generaría el problema que
cuando aparezca un nuevo servicio que no use todos los campos de la tabla
"padre" dejaría campos en blanco a la hora de ingresar datos, con lo que, de
alguna manera, se parecería a la primera solución que planteé.
Hasta ahora sólo se me han ocurrido esas opciones, espero que alguno de
ustedes me pueda orientar y decir cuál es la forma correcta de solucionar un
caso como este.
Gracias por su tiempo.
Leer las respuestas