Put a somewhat less descriptive, but more conceptual way,
basically you want to provide two different means to get to the
same key. This is the idea of having a data key, typically
unique to a record, or perhaps to all of a user's records,
depending on security needs. You then encrypt that key with a
key derived from their password and a key derived by some other
piece of information. It could be an alternate thing that they
know or it could be something that your server knows. This can
either be symmetric cryptography, or for greater security, the
information your server knows can use a public key for a private
key that is not held on the server. Then if the user ever loses
there password and is thus unable to access the data key, the
alternate encryption of it can be decrypted to retrieve the key.
In order of security, symmetrically storing the key on the
server is least secure as if both the server and DB are
compromised, the encryption is rendered useless. The user
information might be a little better, bu