I hear that each address has one private key. Is it possible generate three public key address by only one private key?
What do you mean by "public key address" ?
From one private key, you can generate:
- A pay-to-pubkey hash address that uses the uncompressed form of the public key.
- Pay-to-script hash address, where the script is (1)
- Pay-to-script hash address, with a OP_CHECKSIG script
- Pay-to-script hash addresses, paying to 1-of-1 OP_CHECKMULTISIG with uncompressed pubkey.
And all of the above could use the compressed form of the pubkey to get another 4 addresses.
So one private key can be represented by eight different addresses.
Not directly, no. Each private key corresponds to exactly one public key. This public key can be represented in two ways that give different addresses: uncompressed and compressed. This gives you two addresses for a private key.
You could, however, use the private key as a seed to generate more private keys, much like Electrum's 128-bit seed. For example, if your seed were the 24-bit 6B8ABC in hex, use the following numbers as private keys
(note: do not use a 24-bit seed or private key, as someone could easily steal your bitcoins)
You could create 2: one address using the public key in compressed form and a second using the public key in uncompressed form.