Prácticas recomendadas: ¿Se deben mezclar los metadatos y los datos de definición funcional?
-
03-07-2019 - |
Pregunta
Considere el caso de una aplicación web de artículos de noticias simple que tiene una columna de la tabla de base de datos de " Estado " que es accesible por un conjunto de botones de radio de:
Estado - [x] Publicar [] Borrador [] Archivo
... donde " Publicar " muestra un artículo públicamente y " Borrador " y " Archivo " no haga. Funcionalmente " Borrador " y " Archivo " haga lo mismo pero lleve significados de metadatos adicionales. Los dos estados funcionales de " mostrar " y " ocultar " junto con los metadatos de " publish " ;, " draft " y " archivo " se entremezclan en la misma columna de " estado " ;.
¿Es esta una buena práctica? Si bien este es un caso muy simple, los casos más grandes pueden revelar fallas con tal práctica (o no ...).
Solución
Los estados funcionales tienen que ver con el comportamiento, no es necesario que estén modelados en su base de datos. Si a su lógica empresarial solo le importa " mostrar " Artículos con un estado de " Publicado " - no hay razón para duplicar la complejidad de sus datos con una columna Mostrar.
En el momento en que decida que su lógica de negocios necesita datos adicionales para tomar la decisión de mostrar u ocultar un artículo (quizás un indicador aprobado por IsA), entonces puede almacenar esos datos.
Mirándolo desde un ángulo diferente: si agregaras otra columna de " Mostrar " ;, entonces, ¿qué diría un artículo con un estado de " Borrador " y " Mostrar " = 1 hacer? Según las reglas de su negocio, ese es un estado no válido.
Otros consejos
En este caso, diría que esta es la funcionalidad adecuada.
Todos hemos visto WTF's en los medios de comunicación donde alguien accidentalmente golpeó show [x] y borrador [x] al mismo tiempo.
Tal como está ahora, es imposible mostrar accidentalmente un borrador. Esto es importante en los periódicos, ya que los periodistas son conocidos por cosas como:
John Doe, de StackOverflow dijo, " --- No puedo recordar lo que dijo ese feo f * cker: compruebe la cinta y rellénelo más tarde "
Lo que probablemente no debería imprimirse.