Roenbaeck,
Thanks for the speedy reply. On a side note I will add that I am a big fan of the research of Snodgrass on bitemporal databases and I understand the complexities of this type of temporal model, and I must say that yours is the best solution for this I have seen to date. Hats off to you.
About the solution you proposed, what you are saying logically makes sense to me. However, I couldn't get it to work properly with the designer:
I created two anchors - Person and Employee. As stated previously they have a one-to-one relationship through a tie that I desire to historize because it can change over time through termination and rehiring of employment. (All employees are of the person table, but not all people are employees. Employees have additional sensitive data that a generic person does not have.)
From this tie, I added a knot called Expired, similar to your recommendation. The endpoint connecting this tie to the knot is in the "many" state, while the other two endpoints linking Person to the tie and Employee to the tie are in the "one" state.
After these constructs are in place I historize the tie. When doing so I still get the same error message within the designer. When generating the SQL script though, there are no compilation errors, though I am not sure this is giving me what I want. The tie linking these three objects is called 'PE_of_EM_is_EXP_until', and it has the primary key ('EXP_ID_until', 'PE_of_EM_is_EXP_until_ChangedAt'). The Person ID 'PE_ID_of' and the Employee ID 'EM_ID_is' are referenced through foreign keys but are not part of the primary key. Correct me if I'm wrong, but if I am understanding it right, in this case there can only be a single instance of a datestamp and the Expired flag.
For example, say we have Employee 1 and Employee 2. In the knot Expired, 0 = false, and 1 = true. So if i wanted to denote in the database that both of these employees are terminated on June-20-2012, I couldn't do it because the primary key would not allow two rows with the same values of (6/20/2012, 1) and (6/20/2012, 1), even though their foreign keys reference different anchor IDs.
Can you please clarify?