出生和死亡是否建模为家谱配置文件中某个人的事件或该人的属性。每种方法的优缺点是什么?
如果您认为每个事件都有工件,那么它们实际上应该是事件,因此您可以将所有文档等与它们关联。
另一方面,你能想象一个没有出生/死亡日期作为属性的人物记录吗?你不想为了按日期排序而加入那些让你出生/死亡的事件。
所以有优点也有缺点,但也有一个想法,你可以两者兼得。如果你愿意使用一个没有完全规范化的数据库,你可以将它们作为事件,对于每个有出生/死亡事件的人,将这些值复制到属性中。
当然,请记住,一个人可能有多个出生/死亡事件,这些记录可能存在冲突,在这种情况下,用户只会复制其中一个用户指定的出生/日期属性。
家谱(以及家谱软件)中的"事件"通常被认为是在给定时间和地点发生的事情。它们可以是个人的事件,例如出生、死亡、洗礼、入籍、移民等,也可以是家庭(丈夫/妻子)的事件,如结婚、订婚、离婚。
"属性"(或"事实")通常被认为是真实的,例如学术成就、部落出身、职业、宗教信仰、头衔。
以下是GEDCOM如何定义它们,以及它们如何试图让程序员对它们进行编程。
就我个人而言,我对"事件"的概念是一种状态变化的转变。例如,从某人出生之前到他们活着。这不需要很短的时间,但可能需要很长的时间,例如,第二次世界大战是一个事件。事件可以包含其他事件(例如,第三次世界大战中的特定战斗)。
还有一个例子是头发颜色,它被认为是一种属性。但有些人天生就有金色的头发,头发会脱落,换成棕色,然后随着年龄的增长,头发会变灰,然后再脱落。头发颜色是在一定时间内真实的属性,并且在事件发生时会"模糊",从而将其从一种颜色更改为另一种颜色。
我对"属性"的概念是,它们有时间段。属性是可以通过事件更改的状态。例如,"职业"随"被解雇"事件而变化,以及在"被雇佣"事件发生之前,"失业者"将接管。
因此,属性在事件之间,而事件将不同的属性分开。
我主要想说的是,在我的家谱程序中,我真的没有区分事件和属性。我对他们一视同仁。两者都可能包括日期或时间段,事件通常包括地点,而属性通常不包括。
由于它们的相似性,我认为没有必要对它们单独建模。