Gedean e demais participantes da thread.
Vai aqui, como o Gedean solicitou a minha experiência relativamente
recente (tive esta discussão num grupo de aprendizado que participei a
cerca de um ano).
Como tenho muita experiência em TI (eufemismo pra "tô ficando velho"),
e tenho raízes muito fortes em DB relacionais (já dei aula, fui DBA, e
sempre desenvolvi orientado a modelagem de banco primeiro), quando
comecei a aprender Rails, questionei MUITO as "opiniões",
principalmente em relação a implementar relacionamentos fora do banco,
pois tenho problemas sérios numa aplicação VB desktop até hoje por
conta da falta de integridade referencial no banco.
Outra questão que eu questionei muito foi a da performance (criação e
administração de índices).
Vamos ao que concluímos lá neste grupo de estudo:
1 - Rails é ideal para aplicações novas. Dá pra adaptar aplicações
legadas? Dá, mas vai dar bastante trabalho.
2 - Quanto à ferramentas CASE, já tinha parado de usar a algum tempo.
Como eles mudavam toda hora lá no trabalho e variam também de cliente
para cliente, prefiro fazer o design no papel, como o colega já citou,
documentar muito bem no banco (comentários para tabelas, colunas, e se
o banco permitir para os demais objetos), e depois usar a ferramenta
CASE da ocasião aplicando engenharia reversa no banco.
3 - A questão do plural no nome das tabelas, é uma simples questão de
convenção, e existem adeptos das duas possibilidades: CUSTOMER ou
CUSTOMERS, qual é a melhor? No plural porque a tabela armazena
instâncias daquele objeto, ou no singular porque a tabela representa a
classe dos objetos? Eu, até então sempre usava no singular, mas
preferi me adaptar ao Rails do que ter mais trabalho (Eehh
preguiça...), mas como já disseram dá pra fazer do outro jeito.
4 - Tudo que for complementar (do seu gosto pessoal) dá pra criar
scripts específicos no migrations e fazer o que você quiser, até de
forma explícita (comandos SQL diretos), para, por exemplo, colocar
comentários no banco, criar índices, etc.).
5 - Procure pensar TODA a solução, incluindo o banco de dados, em
Inglês, depois use as facilidades de "internacionalização" para
"nacionalizar" (essa foi boa... he he...). Dá menos trabalho e a
solução já fica "universal".
Espero ter ajudado.
Grande abraço.