Opinion de crear tablas online

warrior_
04 de Julio del 2005
Hola a todos, soy novato en el diseño de bases de datos ya que mi experiencia es sólo a nivel de asignaturas de la universidad.

Ha llegado la hora de diseñar una base de datos para una aplicación web en un hosting. Tengo que diseñarla intentando imitarl la base de una aplicación monousuario donde la base de datos son muchas tablas dependientes, es decir, la última tabla tiene identificadores de todas las anteriores.

He pensado que el nuevo administrador web de la aplicación gestione a los usuarios (dando altas=permiso para entrar en la aplicacion).

Yo siempre he visto que el diseño de la base de datos no cambia una vez hecha (o eso creo). Mi borrador de diseño de la base de datos son muchas tablas dependientes de de otras (claves foraneas, por eje: tabla3 depende de tabla2, tabla2 depende de tabla1).

El caso es que tendré unas 7 u 8 tablas siendo la 8º tabla la "supertabla" ya que tendra que almacenar muchos datos para cada usuario. He pensado que cuando el administrador de de alta a un usuario, cree una nueva tabla (una por nuevo usuario) y así separar la "supertabla" en varias "minitablas". Usaría código jdbc para crear la tabla online (create tabla_dni etc...)

Cada una de estas minitablas tendrían los mismos campos y casi la misma información (pero cada una sirve para cada usuario).

Mi pregunta es si este tipo de diseño es bueno o malo, y si se suele hacer esto o bien una vez creada la bd, es mejor no tocar el diseño.

Agradecería opiniones.

warrior_
04 de Julio del 2005
Veo que no ha triunfado el post así que intentaré explicarme mejor.

Suponed una aplicación web donde los usuarios registrados pueden almacenar/modificar/borrar datos de muchas tablas (sólo sus datos). Un ejemplo hipotético serían 3 tablas (años, meses, días). Cada usuario debe insertar datos en cada una de estas tablas ya que quiere diseñar unas dietas para cada día.

Cada una de estas tablas es dependiente de la anterior, es decir, que para añadir una dieta en un día debe seleccionar el año, mes y día. Para ese día crea una dieta de alimentación (el ejemplo es hipotético y ridiculo).

Es decir, para cada tabla tendremos que almacenar un código que identifique al usuario y además otro código que referencie a la tabla que depende (tabla día tendrá que tener #usuario, #año, #mes, #dia).

Si hay muchos usuarios o si en vez de 3 tablas hay 6 del mismo estilo, creo que las tablas empezarán a almacenar demasiada información.

Lo que quiero saber es si es correcto crear para cada usuario (cuando se da de alta) 3 tablas (años_nombreusu, meses_nombreusu, dias_nombreusu) (nombreusu sería distinto para cada usuario para poder utilizarlas después). Creo que con esto, las nuevas tablas estarían menos cargadas que si hay 3 supertablas para todos los usuarios.

El diseño sería diferente ya que:

Opcion1) TablaUsuarios + TablaAños + TablasMeses + TablasDias = TOTAL 4 tablas

Opcion2) TablaUsuarios + 3 Tablas * Usuario = TOTAL indefinido ya que el nº de usuarios puede variar.

Este es un caso típico de intentar convertir una aplicación Monousuario a una aplicación web Multiusuario. Claro está, en cada una de esas tablas (años, meses, días) hay bastante información.

¿Existen aplicaciones webs con este diseño variable o siguen la opcion1 teniendo supertablas para todos los usuarios?

Yo pensaba que los diseños de BD se hacían siguiendo la Opcion1 pero veo que la Opcion2 no es mala idea, aunque no se si sigue un buen diseño.

Saludos y decirme algo aunque sea la hora :)