Beware... Polymorphism is a lie. While sometimes necessary to facilitate dynamic forms, I'm finding it's more avoidable than ever through the use of document stores like elastic search. You can index your data into a document store and query that at higher speeds. Elastic search queries are a lot more powerful than relational database queries too!

Polymorphism on the other hand is expensive and maybe these days... could be used for complex objects that adhere to an interface and actually do different things. Like a dynamic form with fields types that need to render different form fields and later fetch back values in distinct ways.