I have a semi-complex question about a design issue. My Access database tracks people through a step-by-step process. For example each person goes through step A, to step B, to step C, to step D, and so on until they reach step X. Some steps can be skipped along the way and others cannot. As they go through each step their “status” is considered to be in one of number of pre-determined states. For instance, when a person has completed step A and step B, his or her status is “Under Review,” or when a person has completed step A and steps C and D, his or her status is “Ready for Briefing.”
For simplicity’s sake, let’s say that steps A-X are recorded all in one table which I’ll call Table1. Each person’s status is decided based on each whether or not there is a value in each of the steps (ie, not what the value is).
As it is now, Table1 also includes a field for Status although Status actually is a redundancy since the null or non-null state of FieldA, FieldB, FieldC, and so on, are what determines the status of each person.
I have a form which contains a subform in datasheet view that shows each person, all the steps, and their status. This is where the user will enter the data into the FieldA, FieldB, etc. As they enter data, FieldStatus automatically updates to the appropriate status through a series of AfterUpdate events for each of the step Fields. The user NEVER enters anything in the Status field. It is all done programmatically.
OK. Phew. Hope this is making sense –
This all works nicely but it strikes me as being against the standards of sound data modeling and design to have the Status redundancy in Table1. Like a calculated value, I’d prefer to see it only at run-time in the form – a sort of virtual status.
My question is:
Which is more advisable, the way I am doing it now (redundancy) or the way I think it should be (shown virtually but not stored in a table)?
If it’s the latter, I’ll have to post again because I’m not sure how to do this or if it’s even possible in Access.
For simplicity’s sake, let’s say that steps A-X are recorded all in one table which I’ll call Table1. Each person’s status is decided based on each whether or not there is a value in each of the steps (ie, not what the value is).
As it is now, Table1 also includes a field for Status although Status actually is a redundancy since the null or non-null state of FieldA, FieldB, FieldC, and so on, are what determines the status of each person.
I have a form which contains a subform in datasheet view that shows each person, all the steps, and their status. This is where the user will enter the data into the FieldA, FieldB, etc. As they enter data, FieldStatus automatically updates to the appropriate status through a series of AfterUpdate events for each of the step Fields. The user NEVER enters anything in the Status field. It is all done programmatically.
OK. Phew. Hope this is making sense –
This all works nicely but it strikes me as being against the standards of sound data modeling and design to have the Status redundancy in Table1. Like a calculated value, I’d prefer to see it only at run-time in the form – a sort of virtual status.
My question is:
Which is more advisable, the way I am doing it now (redundancy) or the way I think it should be (shown virtually but not stored in a table)?
If it’s the latter, I’ll have to post again because I’m not sure how to do this or if it’s even possible in Access.