Preventing duplicate entries from online profile form
You should have an unsupervised dedupe rule setup for individuals. This is used to check if a contact is already in the dB when they complete a form as an anonymous (not logged in) user. The default unsupervised rule is to match email. You can create a new one that looks at other fields. It is important that all the fields used in your unsupervised rule are in the profile used. 

Also, you may want to look at the advanced settings in your profile setup. There are options there with what to do with duplicate contacts.

There is some more info about the dedupe rule types here:
https://docs.civicrm.org/user/en/latest/common-workflows/deduping-and-merging/#understanding-dedupe-rules-supervised-unsupervised-and-general

Hope this helps.