Buenas tardes.
 
Llevo días buscando la opción más óptima de diseñar una base de datos y me ha surgido una duda de la que no encuentro mucha documentación clara.
 
Creo una tabla con muchos campos o troceo los identificadores en varias tablas.
 
Por ejemplo:
 
 - Opción 1, creando varias tablas con index y claves foráneas.
 
 tabla usuarios
 
id_usuario int(5) PRIMARY AI
nombre char(50)
tipo smallint(2) INDEX
 
 tabla usuarios_tipo
 
id smallint(2) PRIMARY AI
titulo char(50)
 
 tabla usuarios_datos
 
id int(5) PRIMARY AI
id_usuario int(5) INDEX
direccion char(100)
municipio int(4) INDEX
provincia int(4) INDEX
email varchar(100)
telefono char(15)
 
 tabla municipios:
 
id smallint(2) PRIMARY AI
titulo char(50)
 
 tabla provincias:
 
id smallint(2) PRIMARY AI
titulo char(50)
 
 - Opción 2, crear una tabla con todo en campos y me ahorro trabajar con JOIN a la hora de llamarlos:
 
 tabla usuarios
 
id_usuario int(5) PRIMARY AI
nombre char(50)
tipo char(50)
direccion char(100)
municipio char(50)
provincia char(50)
email varchar(100)
telefono char(15)
 
A mi forma de ver, la opción 1 es más optimizada, permite indexación y relacionar tablas para update y delete y me parece más escalable, pero claro, para consultar habría que hacer varios JOINS para obtener todos los datos.
 
Me guataría saber confirmar que esto es así o saber qué motiva sus respuestas.
 
Gracias.
 
Un saludo. 
  
 

