I have a table contact which store all contact information of a person name, address, phone number. The contact records will be entered by some employees.
I want to know that should I check for duplication when a contact record is saved?
Each and every "Contact" [record] should have a unique identifier which. IMO, cannot be any of the things you mention (they can all change over time). This identifier should be application-generated, probably meaningless, and should not change from the moment the record is created to the moment that it is finally destroyed (systems like this are unlikely to physically delete records very often; keeping long-term records of people is a very common legal requirement these days).
So yes, your records should be uniquely identified, so that you only have one record per Person (without this constraint, your table will be of little practical use).
Given this, your question then becomes one of finding out whether or not you've seen this particular "Person" before - this is a De-Duplication issue and, again, is very common to systems like this.
One way to tackle it might be to provide a "Search" facility that people can use to locate a Person before creating a new record for them.
Alternatively, you'll need to run numerous database queries looking for data items that are "like" the ones entered; addresses are poorly standardised in the way that they are entered and so will be problematical to match. Phone numbers are easier so long as you have a standardised format for storing them.
If you find your queries containing lots of "like" clauses, especially those with leading wildcards, then you're probably heading in the general direction of poor application performance.
And, even after all of this, remember that you will probably have to create the "sledgehammer" process that "merges" two Contact records - and every other record in every other table that relates to them - into one.