
paulo1205
(usa Ubuntu)
Enviado em 06/03/2017 - 18:57h
LaraW escreveu:
1) Diante de tudo que você colocou, ao escolhar uma locale como C ou POSIX por exemplo, de que forma o banco se comportaria, visto que pelo que entendi em outras documentações esse tipo de locale(C) é o mesmo que não definir nada. Dessa forma ele aceitaria um número que NÃO fosse de 0 a 9 dentro de um campo numerico por exemplo ?
Não. A locale C não habilitaria esse comportamento. Um efeito potencialmente ruim de usar locale C talvez seja a impossibilidade de trabalhar com letras acentuadas.
2) Pelo sua explicação, as variaveis que são definidas em locale(lc_ctype, lc_collate, etc) é que dizem respeito ao idioma dos dados que serão preenchidos? O encoding é só uma representação dos caracteres , não tendo nada a ver com idioma?
Não deixa de ter uma certa relação, pois você terá de escolher uma codificação que permita representar os caracteres do idioma escolhido. Não faria muito sentido, por exemplo, definir uma locale como “pt_BR.ASCII”, já que ASCII só usa sete bits, e os caracteres acentuados ocupam posições que precisam de um oitavo bit (a não ser, talvez, se se trabalhar com transliteração com supressão dos acentos, mas aí você perderia as distinções entre maçã, maça e maçã, por exemplo).
3) Outra dúvida, você citou collation. Collation e locale são a mesma coisa? Em SQL Server por exemplo, podemos escolher uma collation que não seja sensitiva a acentos e nem a maiúscula e minúscula. No PostgreSQL, tem essa opção?
Collation é um aspecto de locales.
Eu não tenho conhecimento de BD. Nas locales do UNIX, algumas, tais como C e POSIX, consideram maiúsculas e minúsculas distintas para fins de ordenação, por exemplo, mas dispõem de formas de conversão que permitem fazer busca e ordenação independente de capitalização. Outras locales já trabalham com equivalência entre maiúsculas e minúsculas por padrão, e eventuais distinções teriam de ser tratadas particularmente.