Complete o trecho a seguir com a alternativa CORRETA.
Vários atributos de um banco de dados podem ter o mesmo tipo de dados. Um exemplo disso seriam atributos como nome_cliente e nome_funcionário, que podem ter o mesmo domínio: o conjunto de todos os nomes de pessoa. Por outro lado, é possivel também que existam atributos cujo tipo de dado é, aparentemente, semelhante, mas que, na pratica, o tipo de dados nao é o mesmo. Um exemplo disso são os atributos saldo_em_dolares e saldo_em_reais. Embora, ambos os atributos sejam moedas, eles não deveriam ser diretamente comparáveis no contexto do banco de dados, uma vez que U$ 10,00 não é o mesmo que R$ 10,00, ainda que os números sejam iguais. Pensando nisso, ________.
-
A recomenda-se que o programador crie algum mecanismo no código para impedir a realização desse tipo de comparação, visto que não há como lidar com ela por meio dos recursos da linguagem SQL.
-
B recomenda-se, ao criar atributos de mesmo tipo e que não deveriam ser comparados, que sejam definidos parâmetros distintos de valores que podem ser aceitos por cada atributo, conforme exemplo a seguir: create table cliente (conta_cliente char(20), saldo_em_dolares numeric(12,2), saldo_em_reais char(10,3), primary key (conta_cliente))
Note que para dólares é possível ter valores com até 12 dígitos, dos quais dois são colocados após a vírgula decimal, enquanto para reais é possível ter valores com até 10 dígitos, sendo três colocados após a vírgula decimal. Portanto, os parâmetros são distintos e isso permite lidar com o problema de comparação de tipos de dados distintos, embora semelhantes.
-
C recomenda-se que o programador, ao modelar o banco de dados, não permita que atributos dessa natureza sejam criados, visto que não há uma forma adequada para lidar com esse problema.
-
D recomenda-se que o programador, na criação da tabela contendo esses atributos distintos, embora semelhantes, proceda da seguinte forma: create table cliente (conta_cliente char(20), saldo_em_dolares numeric(12,2), saldo_em_reais char(12,2), saldo_em_dolares isNot(saldo_em_reais) primary key (conta_cliente))
Com o uso do tipo isNot é possível impedir a realização de comparações entre os atributos saldo_em_dolares e saldo_em_reais.
-
E recomenda-se considerar que a linguagem SQL admite a possibilidade de criação de tipos distintos por meio da cláusula create type, conforme exemplo a seguir:
create type Dolares as numeric(12,2) final
create type Reais as numeric(12,2) final