Armazenamento de Dados SQL

SQL | Java

Tenho o seguinte cenário; Existe uma entidade (Carrinho) que armazena (Pedidos) que por sua vez possuem o ID do (Produto) que armazenam. Também, existe uma entidade (Compras) que armazena (Vendas), que por sua vez também possui o ID do (Produto) que foi vendido e o ID do (Endereço) para qual foi enviado. Diagrama ER:

Quando um (Cliente) fecha seu (Carrinho) seus (Pedidos) são registrados como uma venda concretizada em (Vendas), para que um (Administrador) possa consultar esses dados depois!

Quando algum (Cliente) é excluído, tanto seu (Carrinho) como seus (Pedidos) e (Endereços) são excluídos também, e não há problema nisso. No entanto, o mesmo não pode acontecer com as (Vendas) já que independentemente do (Cliente) sumir do sistema, ou o (Produto) comprado não estiver mais disponível ou o (Endereço) tiver sido excluído também, ainda há a necessidade de ter o histórico do que foi vendido e para aonde foi enviado, mas isso se torna impossível quando os dados registrados em (Vendas) foi excluído de (Produto) ou (Endereços).

Por isso, me surge a dúvida sobre se criar novas entidades somente para registrar esses dados permanentemente se torna viável, seriam entidades praticamente identicas as originais, mas com o ID de qual venda pertencem, como no novo diagrama ER abaixo:

Exclusão lógica não seria uma alternativa a ser considerada?

Seria mais simples que replicar tudo só por histórico, com a exclusão lógica você consegue isso sem precisar duplicar tudo!