Imagine a seguinte estrutura hipotética de banco de dados. Basicamente é uma estrutura de cima para baixo (Country tem Orders, Order tem OrderLines, OrderLine tem ShipLines, etc...).
Desejo particionar meu banco de dados SQL Server 2008 por CountryID. Como você pode ver, CountryID está apenas nas 2 primeiras tabelas (por exemplo, amCountries e amOrders). Dado que (pelo que entendi) esse particionamento é feito no nível da tabela, preciso adicionar CountryID às tabelas restantes para poder particioná-las? Ou existe algum tipo de cascata disponível no SQL Server que me permitirá pular a adição de CountryID a tudo?
O particionamento é apenas no nível da tabela e é para gerenciar as partições dessa tabela. Normalmente, a vantagem do particionamento está na troca de dados e na obtenção de controle adicional da granularidade do armazenamento e do backup. Até certo ponto, também pode ajudar no desempenho se houver colunas de partição compartilhada em uma junção, mas isso provavelmente não deve ser um motivo para particionar.
Eu entendo seu pensamento sobre as tabelas filhas, mas se você quiser que os dados também sejam particionados por país (por alguns dos motivos acima), você teria que adicionar uma coluna porque a função de partição é restrita.
O que você pensa sobre por que deseja particionar em primeiro lugar?
http://msdn.microsoft.com/en-us/library/ms190787
Normalmente, o particionamento ocorre em intervalos de datas. Dito isso, sua ideia de migrar a coluna País para as tabelas filhas parece inevitável. Nesse caso, descarte as chaves substitutas que você possui e use as chaves compostas, assim: