No meu local de trabalho atual, alguém decidiu colocar IDs em uma coluna delimitada por vírgulas. Estou procurando dividi-los em um relacionamento adequado de muitos para muitos. No entanto; não está nos cartões do aplicativo que referencia esses dados para mudar agora. Portanto, preciso modificar uma exibição para ainda mostrar a coluna delimitada por vírgulas. Qual é a melhor maneira de configurar a exibição para exibir a coluna delimitada por vírgula? Existe uma maneira de fazer isso que não envolva sair da coluna original?
Uma versão simplificada das definições de tabela é a seguinte.
ID
ProductName
FeatureIDs
ID ProductName FeatureIDS
1 Hot dog 1,5,4
2 Hamburger 1,3
3 Fish 2
ID
FeatureName
ID FeatureName
1 Mayo
2 TarTar Sauce
3 Pickle
4 Relish
5 Onion
Por fim, gostaria de combiná-los em uma única tabela de produtos e em um relacionamento muitos para muitos
ID ProductName ProductType
onde o tipo de produto seria 'produto' ou 'recurso'
ID do produto ID do recurso
para a tabela de mapeamento.
Sim, a visualização configurada precisa ser uma visualização atualizável.
A visão poderia fazer algo assim (obviamente eu adivinhei nomes de tabelas/colunas):
No entanto, como @Martin apontou em um comentário, essa exibição interromperá o aplicativo se ele esperar executar qualquer DML na exibição, em vez das tabelas base. Você pode evitar esse problema configurando
INSTEAD OF
gatilhos conforme ele explicou.Uma postagem relacionada que pode ser útil de outras maneiras além do aspecto de apresentação:
http://www.mssqltips.com/sqlservertip/2074/make-your-sql-server-database-changes-backward-compatível-quando-alterar-um-relacionamento/