He estado leyendo el libro The Data Model Resource Book: A Library of Universal Data Models for All Enterprises: 1 que lo compre desde amazon para el kindle, (lo pueden ver acá ) y lo estoy encontrando muy interesante, me recordó las clases de bases de datos con Edgardo Sepulveda, gran profesor de la usach, terriblemente difícil su ramo pero uno aprendía muchísimo, bueno, el libro trata principalmente de encontrar patrones comunes entre las problematicas de las diferentes empresas, mostrando modelos universales que pueden ser aplicados a diferentes tipos de negocios, esto lo encuentro muy interesante porque ya que existen los patrones de diseño para el software, que son soluciones estandarizadas a problemas comunes, no es tan extraño intentar hacer algo así con la problemática de guardar datos en la base de datos. Es un muy buen libro recomiendo que lo lean, pero no es eso lo que quería compartir, si no algo que encontré muy interesante al momento de guardar la información de una persona.
Contexto, en el libro explican cómo modelar el “negocio” de guardar información de personas, no voy a exponer todo lo que dicen porque me da más bien flojera, pero si el concepto general detrás de la importancia de la información para la persona. La idea es la siguiente, uno generalmente está acostumbrado a modelar la información en base a lo que necesita el sistema desde el punto de vista operativo, es por eso que al momento de pensar en lo importante de una persona lo pensamos en términos estáticos, por ejemplo, si modelamos una persona digamos que tiene identificador legal, nombres, apellidos, fecha nacimiento, estado civil (pensando que son esos los únicos elementos importantes para el sistema), por lo que al modelar la persona quedaría como una tabla plana con toda esa información.
Ahora para mejorar un poco el modelo y controlar mejor los distintos estados civiles a los cuales una persona puede pertenecer, se puede dejar el estado civil aparte y referenciar como una llave foránea a ese tipo de estado civil, eso mejora la calidad de los datos y lo restringe a una cantidad limitada de opciones, el modelo quedaría así.
Hasta ahí yo quedaría conforme y me daría una gran felicitación por la normalización y sería muy feliz, pero resulta que yo no había visto que en realidad esto debería ser sólo una parte, para el negocio de guardar información de personas no sólo es importante guardar la foto de la persona como un estado estático, si no que hay que verlo como una máquina de estados, el estado civil se comporta como eso, en un momento del tiempo estoy soltero despues casado y yo espero quedarme muuuuuuucho rato en ese estado, pero otra persona puede cambiar a separado a soltero de nuevo, viudo, y si se trata así solamente se perderían los cambios en el tiempo que es información muy útil para algunos negocios, sobre todo para los que tienen en mente explotar la información en algún momento del tiempo, ya que los solteros se comportan de una manera, los casados de otra, y lo que estuvieron casados y ahora son solteros de otra, por lo que es crucial poder registrar esta información y modelarla como tal. Una aproximación a este modelo sería.
Eso, concuerdo con el libro en la importancia que debe tener no sólo el estado final de la data si no los estados por los que pasa, siempre entendiendo la importancia de esta información para el negocio que se está soportando, pero como son modelos genéricos, es muy importante siempre tomar en cuenta este tipo de problemática.
Perdón por los modelos para la otra voy a buscar una herramienta para modelarlos más bonito porque google draw no es muy amigo mío parece.
Deja una respuesta