Duda en diseño de BD

Buenas, a ver si puedes ayudarme a orientarme con un problema básico al diseñar una BD...
Estoy montando una base de datos para un centro educativo.
Uno de los datos que desean almacenar en la misma es los distintos cursos de los que solicite información un posible cliente. Los cursos que se imparten en este centro son un número elevado (digamos redondeando que 50) y serán más en el futuro y están divididos en dos tipos: Grados y Máster, aunque pueden añadirse nuevos tipos más adelante.
Un cliente que solicite información puede hacerlo sólo de un curso, de varios o, teóricamente, de todos ellos y aquí es donde veo el problema:
La primera solución más obvia que he pensado es, directamente, añadir 50 campos a la tabla "Lead" (tabla con un ID único para cada cliente, donde se guarda toda la información relacionada con el mismo) de tipo booleano e ir marcando aquellos de los que se le envíe información. Esto supone crear una tabla de un tamaño inmenso, teniendo en cuenta que la tabla ya es muy grande de por sí.
No sé si existirá alguna manera de recoger esta información de manera más eficiente sin tener que recurrir a una tabla con tantísimos campos.
He leído algo por ahí acerca de los controles ActiveX y concretamente del "treeview" donde se puede desplegar cada tipo e ir marcando en casillas de verificación cada dato que quieras. No sé si esto podría valer aunque realmente no sé ni cómo se usa ¿estos controles son capaces de almacenar información "por fuera" de la tabla?
Muchas gracias por tu ayuda.

1 respuesta

Respuesta
1
Una solución para el problema que expones podría ser la siguiente:
1.- Creas una tabla que te recogerá la información solicitada por el cliente. De hecho, puedes aprovechar esa tabla para incluir una fecha de petición de información, lo que te permitiría ver la "evolución" de los gustos de ese cliente.
2.- Esta tabla, llamémosla TInfoClientes, debería tener, como mínimo, los siguientes campos:
- [Id] -> Autonumérico y clave principal
- [IdCli] -> Numérico que te relacionaría el identificador de cliente
- [IdCurso] -> Numérico que te relacionaría el identificador de curso (doy por supuesto que tienes un identificador único para curso)
- [FechaSol] -> Fecha/hora (que recogería la fecha de solicitud del curso)
3.- Tras esto podrías construir un formulario basado en la tabla de clientes, y un subformulario (relacionado por el [IdCli] con el formulario principal) con los datos de la información que solicite el cliente.
4.- Cuando quieras recabar información sobre cursos más demandados, cursos que ha solicitado un cliente, etc, podrías hacer una consulta basada en esa tabla TInfoClientes (con las otras tablas que pudieras necesitar) y en un santiamén tendrías la información que necesitas.
Dado que lo anterior es un poco "abstracto" te pongo un link de una BD creada "a lo rápido" para que puedas ver lo que te comento. Verás el formulario principal con un combo (lleva código), y he preparado una consulta para que puedas ver su estructura. La puedes bajar aquí: http://www.filebig.net/files/XnrHkHUr7p
Si tienes alguna duda me comentas.
Pues me parece una solución perfectamente válida, la verdad es que viéndola resulta bastante obvia... :S
Gracias por la rapidez y por el ejemplo que adjuntas.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas