Ao projetar o esquema de banco de dados relacional para aplicativos da Web, geralmente encontro um caso em que acabo criando uma tabela apenas para conter uma linha e apenas uma linha. Parece que esse é o caminho errado para projetá-lo, mas não consigo encontrar nada significativamente melhor, ou esse é obviamente "o caminho certo para fazê-lo".
Um exemplo recente é um site que permite aos usuários controlar manualmente o conteúdo na página inicial. Bem, há apenas uma página inicial. Criei uma tabela com todos os campos necessários para construir a página inicial, como um campo de texto para uma área que continha texto descritivo. Um campo para armazenar o nome de um arquivo de imagem grande. Algumas chaves estrangeiras que apontam para artigos que serão apresentados na página inicial etc. Isso funciona, mas parece errado ter uma tabela com apenas uma linha.
No passado, eu tentei muitos outros designs, como permitir várias linhas na tabela da página inicial e selecionar uma aleatoriamente. Tentei adicionar um campo booleano chamado "ativo" e selecionar aleatoriamente uma das páginas iniciais ativas. Tentei forçar apenas uma linha a estar ativa a qualquer momento na lógica do aplicativo. Tentei nem criar uma tabela da página inicial e ter todos os outros itens, como artigos, para ter campos booleanos com nomes como featured_on_homepage.
Na maioria dos casos, eu poderia criar a página inicial com várias constantes em um arquivo de configurações. O principal problema com o arquivo de configurações é que ele está sob controle do desenvolvedor. Como algo como o conteúdo da página inicial é algo a ser editado pelo usuário, ele precisa estar no banco de dados.
Em muitos sites, não tenho esse problema porque posso criar coisas como a página inicial com uma consulta, como selecionar os cinco artigos mais recentes. Mas quando tenho páginas que são selecionadas manualmente com requisitos rígidos, fica difícil modelá-las no banco de dados. Mas imagine que você tenha uma mesa de fotos e uma mesa de artigos. O requisito é que a página inicial exiba exatamente cinco fotos, exatamente três artigos e dois blocos de texto arbitrário controlados manualmente pelo usuário. Como você modela isso no banco de dados da maneira certa?
Além disso, tenho esse problema de modelagem em muitos outros casos, além de apenas páginas iniciais. É apenas o exemplo mais fácil e mais aplicável que eu poderia inventar.