What is the best index implementation for a really large databse
Can i replace the non-clustered indices with one covering index ?


No. Suppose you sometimes find people by LastName and sometimes by FirstName. An index on (LastName, FirstName) won't help you find people by FirstName.


  If not, is there any way to get rid of RID Lookup rather than a covering index ?


Not in a way that's particularly useful.


  Does each query require a different covering index depending on the columns in the select list and the search conditions ?


Pretty much. Your job is to come up with a compromise.


  I have no clustered indexes in the table , does adding a unique column and setting it as a primary key helps in getting rid of RID Lookups ?


A PK doesn't necessarily mean a clustered index. And having a CIX just means your RID Lookups will become Key Lookups, which are potentially worse. But without CIXs you have heaps which can fragment when you change or delete data. So CIXs are fine, but won't improve performance of your Lookups.