Regra de negócios para exibir dados em maiúsculas - como manipular?

5

Parte de um sistema em que estou trabalhando gerencia algumas informações de títulos (ações, títulos, etc ...) e regras de negócios especificam que determinados campos sejam exibidos somente em todos os CAPS (símbolos de ações e CUSIPs, por exemplo). Os usuários terão que analisar os dados exibidos na tela, bem como realizar operações de criação / edição de entrada de dados.

Onde é o melhor lugar para lidar com isso?

1. Camada de apresentação apenas

o usuário insere "ibm" como símbolo de ação, armazenado no banco de dados como "ibm", convertido em maiúsculas quando exibido no aplicativo ("IBM")

2. Converter para CAPS antes de armazenar no banco de dados

o usuário digita "ibm", classe de modelo convertida para maiúscula e enviada para o banco de dados, armazenada como "IBM"

Algo como um setter personalizado:

private string _StockSymbol;
public string StockSymbol
{
    get { return _StockSymbol; }
    set 
    {
        if (value != null)
            value = value.ToUpper();
        _StockSymbol = value;
    }
}

3. Converter para CAPS no DB

o usuário digita "ibm", a consulta de inserção do banco de dados é convertida para "IBM" (por exemplo, usando a função UPPER no SQL)

O resultado final é o mesmo para os usuários - eles veem seus dados em todas as CAPS e o sistema não se importa se a entrada de dados está no caso correto ou não. A resposta mais "complacente com o MVC" parece ser # 1, mas se esses dados nunca forem usados em qualquer outro formato que não seja o CAPS, eu diria que ele deve ser validado como tal antes de ser armazenado no banco de dados. Isso se torna mais uma preocupação de controlador ou modelo de exibição, certo?

Eu ouvi pessoas falarem sobre realizar esse lado do cliente com Java (e até CSS), mas isso parece ser uma solução muito ruim.

Acho que a pergunta é independente de idioma / sistema, mas se isso importa, estou usando o MS SQL com Entity Framework / ASP.Net MVC.

O que estou pensando é se uma regra de negócio de apresentação como essa deve influenciar como os dados são armazenados no banco de dados (CAPS vs no CAPS). O aplicativo não se importa se o símbolo da ação IBM é inserido como "iBm" ou "ibM", mas parece errado armazenar os dados dessa forma (ele só será usado / exibido no CAPS).

Você consideraria isso um problema de validação de dados a ser tratado no nível do controlador / modelo ou um detalhe de apresentação a ser tratado apenas na exibição?

    
por Jim 09.10.2013 / 23:32
fonte

4 respostas

5

Acho que basicamente se trata de um requisito de exibição ou uma propriedade dos dados em si.

Para dar um exemplo diferente, se fosse necessário exibir um nome com o sobrenome maiúsculo para ênfase, eu o capitalizaria na interface de saída, como em seu (1). Esse é um requisito de exibição, pois os sobrenomes não são maiúsculas "naturalmente" - outras exibições podem usar a capitalização original.

Para voltar ao seu caso, embora eu não seja um especialista em símbolos de ações, mas pelo que entendi, eles são sempre maiúsculos. Ou seja, um símbolo de ação é inerentemente maiúsculo e, portanto, eu verifico isso como parte da validação de entrada, como em seu (2).

    
por 10.10.2013 / 16:02
fonte
1

Eu acho que é bom ter os mesmos dados sempre formatados da mesma maneira no banco de dados.

Há muitos casos em que um aplicativo pode se importar se algo está formatado como "iBm" ou "ibM" . Depois de tudo "iBm"!="ibM"

Um desenvolvedor que solicita ao banco de dados o nome de um estoque pode razoavelmente esperar que o mesmo estoque seja sempre formatado da mesma maneira. Especialmente se muitos dados são armazenados em maiúsculas, seu aplicativo pode ter bugs se alguns exemplos não forem formatados como esperado. Isso pode introduzir erros.

O banco de dados, portanto, não deve permitir que você adicione dados que não estão formatados corretamente, então você deve resolver o problema na camada de banco de dados.

    
por 10.10.2013 / 15:31
fonte
0

Se alguns valores estiverem sempre em maiúsculas, eu os armazenaria em maiúsculas pelos seguintes motivos:

  1. Para reduzir o número de conversões no código.
  2. Para diminuir o possibilidade de que futuras atualizações no código não levem Regra Empresarial em conta.
  3. Para facilitar a solução de problemas. E se     alguém na indústria é usado para ver certas coisas na parte superior     Nesse caso, ela facilitará sua vida ao depurar / solucionar problemas se     os valores aparecem em formato familiar.

Dito isto, eu converteria na entrada e validaria / converteria, se necessário, no backend antes de salvar no banco de dados.

    
por 10.10.2013 / 16:20
fonte
0

Eu os armazenaria sempre em letras minúsculas. Desta forma, você pode assumir que está sempre procurando no DB por palavra minúscula (neste caso particular). A chave é ser uniforme no banco de dados. Isso evita o problema descrito por Christian .

Esse tipo de coisa é apenas um problema de exibição, então você deve formatar quando mostrar os dados para o usuário (# 1 na sua pergunta). Isso oferece mais flexibilidade, se por algum motivo você precisar exibir esses valores em um formato diferente, você poderá facilmente.

    
por 10.10.2013 / 17:10
fonte