One table with many empty field or two linked tables

Like mentioned by @cmarchan you should have one entity for ‘person’. I would make sure that has all the fields necessary for being a client or a lead, and no more than that.

Then I would have a type client and a type lead each would have a related field to the single entity you created for ‘person’. As you move the ‘person’ through the pipeline from lead to client you don’t need to make updates to multiple data types on the fields that are shared (ie: every field that is on the ‘person’ because it is used for ‘lead’ and ‘client’)…then if the ‘person’ after being a ‘lead’ becomes a ‘client’ you can add the fields associated on the ‘client’ data type.

What you do is simply create a ‘client’ data type and relate it to the ‘person’ data type and then add the fields specific to client.

Not sure exactly the reason that you would need to keep a ‘lead’ after they have been converted to a ‘client’ though as once a lead becomes a client they are no longer a lead and instead a client. So personally, I’d set up the system to delete the ‘lead’ data entry as soon as I create the ‘client’ data entry because my ‘person’ entry is not changing at all.

The ‘lead’ and the ‘client’ are the same ‘person’ the only thing that really changes is their designation as a ‘lead’ or ‘client’.

Always lots of ways to structure a database model based on how you want your app to function.

Check out this thread for more ideas.