Quando tive que fazer algo similar, criamos uma tabela de regras com uma coluna indicando se está ativa ou não. Ao cadastrar algo que dependa da regra, ela aponta para o ID da regra. Quando ela muda, o sistema cria um novo registro e desativa o anterior. Assim, eu tenho todo o histórico de regras, permitindo-me reconstruir qualquer período histórico, mas a tela de associação só permite usar as regras ativas, com a versão mais recente dela.
Nós tínhamos ainda colunas de dt_criacao, dt_desativacao, usuario_criacao, usuario_desativacao. Assim temos rastreio de quem criou e desativou cada uma das regras, bem como data e hora em que isso ocorreu.