Itens como chaves estrangeiras, restrições, valores padrão etc. devem ser manipulados pelo sistema de gerenciamento de banco de dados (neste caso, MS SQL 2005) ou pelo aplicativo? Ouvi opiniões de ambos os lados e sinceramente não tenho certeza de qual caminho seguir.
Há uma chance de estarmos abrangendo vários servidores / bancos de dados e não acho que Chaves Estrangeiras possam ser usadas em servidores vinculados. Além disso, existem algumas referências circulares no design do banco de dados que me impedem de usar ON UPDATE CASCADE
em tudo.
O banco de dados é o MS SQL 2005 (possivelmente 2008) e todas as interações com ele devem passar pelo aplicativo.