Need the name value of the enterprise to be the same as it was when it was registered and not the value it currently has
I'd simply store the register_name (meaning the first value that was taken by the name of the enterprise) in the enterprise table :


identerprise
code        
name        
register_name


Then I think you shouldn't use varchar(n) to store your text value (see that documentation page)