Single Table Inheritance (STI) é um padrão de projeto utilizado em bancos de dados relacionais para implementar herança em sistemas orientados a objetos. Nesse padrão, diferentes classes de objetos (que compartilham uma relação hierárquica) são armazenadas em uma única tabela no banco de dados. A tabela contém uma coluna adicional especialmente dedicada para discriminar qual tipo de classe cada registro representa.
Por exemplo, em um sistema de gerenciamento de veículos, você pode ter uma classe base "Veículo" e subclasses como "Carro" e "Motocicleta". Usando STI, todos os dados de "Carro" e "Motocicleta" são armazenados na tabela "veículos". A tabela inclui uma coluna "tipo" que indica se um registro é um "Carro" ou uma "Motocicleta".
Este padrão simplifica o esquema do banco de dados, evitando a necessidade de tabelas separadas para cada entidade. No entanto, pode levar à inclusão de muitas colunas não utilizadas para certos tipos de entidades, porque as tabelas têm colunas suficientes para acomodar todos os atributos de todas as subclasses. Isso pode tornar a tabela mais complexa e a leitura das consultas um pouco mais complicada devido à presença de muitos campos potencialmente nulos.