Estoy tratando de sopesar las ventajas y desventajas relativas de una estructura de base de datos simple como esto:diseño de base de datos: flexibilidad frente a la simplicidad
1.
CREATE TABLE x (
my_id INT PRIMARY KEY,
...,
text_attribute_blah TEXT,
text_attribute_blah_blah TEXT
);
vs:
2.
CREATE TABLE x (
my_id INT PRIMARY KEY,
...
)
CREATE TABLE attributes (
my_id INT, /* foreign key to x.my_id */
text_attribute_type INT,
text_attribute TEXT
)
Donde attribute_type podría ser blah o blah_blah.
La opción 1 ofrece simplicidad: la tabla es más fácil de leer/escribir; La opción 2 ofrece flexibilidad (si queremos agregar otro atributo como blah_blah_blah, no necesitamos hacer cambios de esquema y, por lo tanto, probablemente menos cambios de código).
¿Hay una respuesta correcta/incorrecta para este enigma? ¿Una de estas opciones se considera una mejor práctica que las demás? ¿Puede indicarme una lectura adicional que podría ayudar a determinar el camino a seguir?
La flexibilidad está sobrevalorado, si usted hace su trabajo correcly cambios de esquema deben ser raras. En mi experiencia, los usuarios odian usar programas que son "flexibles", incluso si eso es lo que dicen que quieren. – HLGEM