Which one is the best practice and Why?
Foreign key is from user.type to type.i
user.type
type.i
I prefer to use the surrogate key. It is often people will identity and use the natural key which will be fine for a while, until they decide they want to change the value. Then problems start.