I am currently planning an application that has 3 record types. At the moment I am planning to create a table for each type since each type holds different information but I am thinking about a better way to do it since each type has some basic informations.
The types (and currently Models) are Event, Hotel, Shop. They all share some basic informations like title, description, user_id, category_id, times and so on.
What I was thinking about is to create a table called "Places" instead and create records with a "type"-column instead of a Model for each type and then add a meta_id for a meta table which would hold the optional/extra informations for each record type.
So which approach would be better? Should I keep the types in separate tables and models so each type is complete isolated?
The better way to do is to keep the types in separate tables. this will help you to add multiple information.
I'm going to reinterpret your question as follows: when it is better to model distinct types as distinct subtypes of some common supertype? And when is it better to simply consider them as distinct types representing distinct entities?
The answer is that it depends. If you are doing object modeling, every type you come up with is a subtype of the universal type "object". But if you are doing ER modeling, or relational data modeling, that concept can be helpful or unhelpful, depending on the case at hand.
In your case, the common features of Events, Hotels, and Shops are so trivial that combining them into specializations of some common supertype seems to buy you less than it costs. At least that's the way it seems to me at first glance.
It depends on your design goals. What are you trying to achieve? Typically, designers are pursuing multiple goals, among them speed, flexibility, ease of use, and ease of programming. How important are these goals to you?