Polymorphic Associations é um conceito em bancos de dados relacionais, usado em conjunto com linguagens de programação, para modelar relacionamentos flexíveis entre tabelas. Em um contexto de programação orientada a objetos, isso se aplica quando um modelo ou entidade pode pertencer a mais de um outro modelo usando um único conjunto de chaves.
Exemplo básico:
Imagine que você tem uma aplicação com comentários que podem ser associados a diferentes tipos de conteúdo, como postagens de blog e vídeos. Em vez de criar tabelas separadas para cada tipo de conteúdo (ex.: BlogComments e VideoComments), você cria uma única tabela de Comments que pode se relacionar tanto com uma tabela de BlogPosts quanto com uma de Videos.
Para implementar isso, a tabela Comments geralmente terá duas colunas adicionais: uma para armazenar o ID do item ao qual o comentário pertence (por exemplo, commentable_id) e outra para armazenar o tipo desse item (por exemplo, commentable_type). Assim, um comentário pode identificar a que tipo de conteúdo ele está relacionado e qual item específico dentro desse tipo ele está comentando.
Esse método é útil em ORMs (Object-Relational Mapping) como Ruby on Rails, onde simplifica a estrutura de dados e evita a necessidade de múltiplas tabelas para comportar relações semelhantes entre diferentes tipos de entidades. No entanto, ele também pode introduzir complexidade adicional na consulta de dados e na garantia de integridade referencial.