What is user defined datatypes and when you should go for them?