A questão maior é: você dirige com os olhos vendados? É assim que se desenvolve um sistema sem restrições referenciais. Lembre-se de que os requisitos de negócios mudam, as alterações no design do aplicativo, as respectivas suposições lógicas no código são alteradas, a própria lógica pode ser refatorada e assim por diante. Em geral, as restrições nos bancos de dados são postas em prática sob suposições lógicas contemporâneas, aparentemente corretas para um conjunto específico de asserções e suposições lógicas.
Durante o ciclo de vida de um aplicativo, as verificações referenciais e de dados restringem a coleta de dados por meio do aplicativo, especialmente quando novos requisitos geram alterações lógicas no aplicativo.
Para o assunto desta listagem - uma chave estrangeira por si só "não melhora o desempenho", nem "prejudica o desempenho" significativamente do ponto de vista do sistema de processamento de transações em tempo real. No entanto, há um custo agregado para a verificação de restrições no sistema "lote" de alto volume. Então, aqui está a diferença, em tempo real versus processo de transação em lote; processamento em lote - onde um custo elevado, incorrido por verificações de restrição, de um lote processado sequencialmente representa um impacto no desempenho.
Em um sistema bem projetado, as verificações de consistência dos dados seriam feitas "antes" do processamento de um lote (no entanto, há um custo associado aqui também); portanto, as verificações de restrição de chave estrangeira não são necessárias durante o tempo de carregamento. De fato, todas as restrições, incluindo chave estrangeira, devem ser desabilitadas temporariamente até que o lote seja processado.
DESEMPENHO DA CONSULTA - se as tabelas forem unidas em chaves estrangeiras, esteja ciente do fato de que as colunas de chave estrangeira NÃO SÃO INDEXADAS (embora a respectiva chave primária seja indexada por definição). A indexação de uma chave estrangeira, nesse caso, a indexação de qualquer chave e a junção de tabelas em indexadas ajudam a obter melhores desempenhos, e não a junção de chaves não indexadas com restrição de chave estrangeira.
Mudando de assunto , se um banco de dados estiver apenas suportando a exibição do site / renderizando conteúdo / etc e registrando cliques, um banco de dados com restrições completas em todas as tabelas será eliminado para esse fim. Pense nisso. A maioria dos sites nem usa um banco de dados para tal. Para requisitos semelhantes, onde os dados estão sendo gravados e não referenciados, por exemplo, use um banco de dados na memória, que não possui restrições. Isso não significa que não há modelo de dados, sim modelo lógico, mas nenhum modelo de dados físico.