sql >> Base de Datos >  >> RDS >> Mysql

¿Usar una tabla maestra para columnas compartidas es una buena práctica para una base de datos completa?

¿Por qué? Hacer todo sus entidades requieren ser extensible de esta manera? Probablemente no, en la mayoría de las aplicaciones hay una o dos entidades como máximo que se beneficiarían de este nivel de flexibilidad. Las otras entidades en realidad se benefician de la estabilidad y claridad de no cambiando todo el tiempo.

EAV es un ejemplo del Efecto de plataforma interna :

En otras palabras, ahora es su responsabilidad escribir el código de la aplicación para hacer todas las cosas que ya proporciona un RDBMS adecuado, como restricciones y tipos de datos. Incluso algo tan simple como hacer que una columna sea obligatoria como NOT NULL no funciona en EAV.

Es cierto que a veces un proyecto requiere muchas tablas. Pero te estás engañando a ti mismo si crees que has simplificado el proyecto haciendo solo dos tablas. Seguirás teniendo tantas Entidades distintas como mesas, pero ahora depende de ti evitar que se conviertan en un montón de basura.

Antes de invertir demasiado tiempo en EAV, lea esta historia sobre una empresa que casi dejó de funcionar porque alguien intentó hacer que su depósito de datos fuera arbitrariamente flexible:Bad CaRMa .

También escribí más sobre EAV en una publicación de blog, EAV FAIL , y en un capítulo de mi libro, Antipatrones de SQL:Cómo evitar las trampas de la programación de bases de datos .