Tablas de catálogos tales como Colonias Calles etc.
Una tabla principal llamada Encuesta en la cual tengo una llave única en el campo Folio ya que ningún folio se debe repetir.
Como las encuestas son de opción múltiple ejemplo :
Pregunta 1 estado civil:
1) soltero 2) casado 3) unión libre 4) viudo 5) divorciado
En la tabla Encuesta los campos los defino numéricos de dos posiciones (o de una posición) dependiendo del número de respuestas a las preguntas y les pongo el nombre de la pregunta:
Folio
pregunta_01 numerico(02)
pregunta_02 numerico(02)
etc
pregunta_nn numerico(02)
y grabo el numero de la respuesta que seleccionaron en la encuesta, si seleccionaron la opción 3) unión libre grabo un numero 3, si seleccionaron la opción 5) divorciado grabo un 5, de tal forma que la tabla solo tiene grabados puros dígitos correspondientes a las opciónes seleccionadas y a su vez valido que no me capturen un digito diferente del rango de respuestas, en la pregunta 1 no me pueden teclear un número mayor de 5 porque solo existen 5 opciónes , pero si no respondieron a esa pregunta grabo un cero.
Al teclear un folio lo valido y si no existe ese folio en la tabla les permito capturarlo pero si ya existe les muestro la información capturada para que puedan hacer modificaciones, muestro un mensaje en una etiqueta indicando si es una Alta ó si es un Cambio para que el usuario se de cuenta.
El formulario lo hago con un Control ficha para ir poniendo tantas pestañas necesite según el numero y tamaño de las preguntas y respuestas, a las pestañas les pongo como titulo el rango de preguntas que estan en esa pestaña para que el usuario pueda ubicarlas con facilidad.
Como trabajo con código al 100% no me meto en broncas de definir relaciones, creo mis tablas con sus llaves y todo lo hago con codigo y consultas.
Espero te sea de ayuda esta breve explicación.