¿Puede la edad ser un atributo compuesto en DBMS?

7

Mi pregunta sería: ¿Se puede considerar la edad como un atributo compuesto? Porque nombre es un atributo compuesto y se puede dividir en nombre, segundo nombre y apellido. Y, por lo tanto, ¿la edad puede ser un atributo compuesto, ya que se puede dividir en años, meses y días?

    
pregunta Chandima Gayan 12.12.2016 - 12:01

4 respuestas

31

¿Puede age ser un atributo compuesto? No. La edad es una función de la fecha de nacimiento y ahora.

age = now - birthdate

Entonces, ¿qué pasa con la fecha de nacimiento? ¿Puede ser un atributo compuesto?

Sí, puede, pero solo tiene sentido almacenar las fechas como un compuesto en situaciones de almacenamiento de datos.

A menudo, cuando almacena datos, almacena el año, el mes y el día como elementos separados para facilitar la escritura de consultas como

  

¿Cuántas personas nacieron en marzo?

O

  

De todas las personas nacidas en 1982, cuántas tienen ojos azules.   ¿Cómo se compara eso con abril de 1992?

También es probable que tengas una tabla que asigne fechas a trimestres, por lo que puedes preguntar cosas como:

  

¿Cómo se comparan las tasas de natalidad entre Q1 y Q2 en la última década?

Estos son ejemplos artificiales, pero esperamos ilustrar el punto. Recomiendo hacer una investigación sobre las bases de datos de "esquemas en estrella" y "métricas que cambian lentamente".

    
respondido por el RubberDuck 12.12.2016 - 12:45
6

Sí, usted puede almacenar la Edad como un compuesto de año, mes, fecha, hora, minuto, segundo en la base de datos, si lo desea.

Sin embargo, es probable que esto no sea una buena idea en la mayoría de los casos, ya que la Edad se puede derivar de otros valores que normalmente es preferible tener almacenados en la base de datos. La razón principal es que es mejor almacenar la fecha de nacimiento en lugar de la Edad; porque la fecha de nacimiento es constante pero la edad depende de la hora actual. Tan pronto como guarde su Edad, (a menos que sea algún tipo de valor para "Edad en un momento determinado", en lugar de la edad dinámica), será cada vez más incorrecto con el tiempo.

El almacenamiento de datos que se pueden derivar de otros datos también es una violación de algunos niveles de la Forma normal y puede provocar problemas como la redundancia y la inconsistencia de los datos.

    
respondido por el Brad Thomas 12.12.2016 - 22:27
2

En términos sencillos:

  • Por lo general, la edad no se almacena, ya que es un atributo volátil . Cambia por el segundo. Así que almacenarlo es una mala idea universalmente reconocida.

  • Por lo general, fecha de nacimiento se almacena en su lugar.

  • Lo que desea es un requisito de representación que se puede calcular fácilmente en el momento de la presentación o en una vista de base de datos escribiendo una función bastante trivial: En caso de que aún no haya una función de formato integrada en RDBMS o el lenguaje de desarrollo que ya lo hace.

En conclusión: sí, podrías hacerlo, pero eso sería muy desaconsejable .

    
respondido por el Tulains Córdova 13.12.2016 - 10:40
0

almacena la fecha de nacimiento y calcula la edad cada vez

Como decían los demás, no tiene sentido almacenar directamente la edad.

no es eficiente descomponer o normalizar demasiado

Aunque puede representar las fechas como 3 columnas día, mes y año, esto no es eficiente en absoluto.

Solo hay una ventaja de rendimiento en la división de campos que se pueden indexar. Y indexar cualquier combinación de día, mes y año es mucho menos eficiente que indexar el campo de fecha.

Para los sistemas de software administrativo, el cuello de botella del rendimiento generalmente es la transferencia de datos que no se procesa.

    
respondido por el Lucas 13.12.2016 - 17:56

Lea otras preguntas en las etiquetas