If you have a ServiceCall database table that records lower all of the service calls designed to you. All of this record consists of a many to 1 relationship to Customer record, where it stores which customer made the Service Call.
Ok, imagine that the Customer has stop using the services of you and also you don't need the Customer's record inside your database. No more require the Customer's title to look within the dropdown list whenever you produce a new ServiceCall record.
Where do you turn? Would you permit the user to remove the Customer's record in the database?
Would you set a unique column IsDeleted to true for your Customer's record, then make certain all dropdown list won't load all records which has IsDeleted set to true? Even though this keeps that old records from breaking at innerjoins, additionally, it prevents user from adding a brand new record with similar title because the old Customer, will not it?
Would you disallow deletion whatsoever? Just let it 'disable' it?
Every other methods you used? I'm speculating everybody get their way, I simply need to call at your opinions :)
Obviously the above mentioned is very simplified, often a ServiceCall record will link with other entity tables. All of which face exactly the same problem when they're needed to become erased.
Thank you ahead of time for you :)
I favor to create an IsDeleted flag, one benefit is that you could still set of historic information (all teh data remains).
Regarding the problem of the inability to place another customer with similar title, this is not an issue if you are using an ID column (eg CustomerId) that is generally auto populated.
To be sure with @Tetraneutron's answer.
Furthermore, you may create a VIEW that lists just the active clients, to really make it easier to populate drop-lower lists and the like.