i'm not sure what a pattern is, but one common way of doing what you ask is to have two additional datetime columns in the table, effective_from and effective_to
effective_to would be set to NULL for the current address
when the contact changes, set effective_to to the change datetime, and insert a new row with the change datetime as effective_from and NULL as effective_to
to find the current address, just use
Code:
... WHERE effective_to is null
to find the address at any time in the past, use
Code:
... WHERE '2002-11-15' between effective_from and effective_to