@loaded,
Basically, what you are doing is hashing. In this case using MD5 as a hash algorithm, which is perfectly fine. The advantage of doing that, which I'm sure you already know, is that you don't actually need to store the hash result since you can recompute it at any time.
With the above out of the way, _any_ hash algorithm cannot guarantee general uniqueness. It can provide a very high probability of uniqueness. This is because a hash is a function that maps points from one domain to another but the first domain is larger than the second one, therefore duplicates can always occur but if the second domain is very large, e.g, a 128 or 256 bit number, the probability of a duplicate/collision is very small (provided a reasonably decent hash algorithm which MD5 is.)
if the consequences of having a duplicate are "benign", you may want to accept the possibility. if the consequences are "dire", you may want to detect the occurrence and perform and additional transformation to eliminate the collision (the double-hashing principle.)
As far as other people having done it before, yes, it's extremely common and it has been done in countless ways. A search for "hashing algorithm" will yield a lot of information.
HTH.