How to check the balance of a person when his public keys are different on different input transactions? A person can use a different public key/private key generated from his eWallet for each transaction. How the miner check the balance of that person from his multi-input transactions with different public keys?
Contrary to popular belief, Bitcoin does not use an accounts system with balances nor do addresses actually exist on a technical level.

A transaction spends transaction outputs and it creates transaction outputs. It directly references which transaction outputs it is spending, so when verifying a transaction, you just need to lookup what the previous transaction output is. There is no need to know any balances (except that of the transaction output which is provided in the output itself) nor anything else about the wallet of the sender(s).