SóProvas


ID
5429686
Banca
FGV
Órgão
SEFAZ-ES
Ano
2021
Provas
Disciplina
Banco de Dados
Assuntos

Utilize as tabelas T, R e S para resolver a próxima questão

Considere um banco de dados relacional contendo as tabelas T, R e S, cujas instâncias são exibidas a seguir. 

T
A         B                                                                                      C
10       LPG Participações                                                           S
20       Serviços & Gerenciamento Remoto                                N
50       Academia Americana                                                       S
70       Distribuidora São João de Artigos para Festas               S

R
D                E                                     F
12040         21/06/2021                    200,00
12041         23/06/2021                    548,00
1497           15/06/2021                    147,10
1498           15/06/2021                      85,00
214             18/06/2021                      99,00
215             19/06/2021                    997,45 

S
G          H              I
10        12040       12
10        12041       12
50        1497         12
50        1498         10
70         214          20
50         215          12

Assinale o script SQL de criação das tabelas T, R e S, que esteja correto sintaticamente e seja compatível com as respectivas instâncias exibidas anteriormente.

Alternativas
Comentários
  • Pontos importantes para resolução:

    Tipos de dados:

    o   Int – Número.

    o   Varchar(n) – Representa um texto com quantidade de carateres inferior ou giaul a “n”.

    o   primary key – Chave primária, servindo de identificador único.

    o   datetime – DD-MM-YYYY

    Create: Representa um dos comandos do DDL (Data Definition Language) responsáveis pela definição do esquema do Bando de Dados.

    Resolução:

    Será necessário identificar cada tipo de dados das tabelas:

    Tabela T:

    o   Coluna A: Número inteiro, sem valores vazios. Como seu valor não repete, podemos considerar como uma chave primária (Int e primary key).

    o   Coluna B: Coluna tipo texto, que possuir possui com número máximo de caracteres 41 (“Distribuidora São João de Artigos para Festas”). OBS: Com essa informação já poderíamos excluir a letra “b”, “d” e “e” pois determinam o varchar (32)

    o   Coluna C: Coluna tipo texto, que possui com número máximo de caracteres 1.

    Tabela R:

    o   Coluna D: Coluna do tipo número (int e primary key).

    o   Coluna E: Coluna tipo data (Datetime).

    o   Coluna F: Coluna do tipo moeda (Float, real).

    Tabela S:

    o   Coluna G: Coluna do tipo número (int) e possui relação direta com a coluna “A” da tabela “T” (foreign key (G) references T(A)).

    o   Coluna H: Coluna do tipo número (int) e possui relação direta com a coluna “D” da tabela “R” (foreign key (H) references R(D)).

    o   Coluna I: Coluna do tipo número (int).

    Gabarito: A

  • Você nunca sai perdendo quando ganha CONHECIMENTO!

  • Em T.B temos um VARCHAR de 45 caracteres, então elimina B, D e E porque o VARCHAR deles só cabe até 32.

    Elimina letra C porque as FKs S.H e S.G estão com as referências trocadas. GAB A

    OBS: só deus sabe onde foi parar o T.C

  • Devemos verificar, dentre as opções fornecidas, qual script está sintaticamente correto (segue as regras da linguagem SQL) e é compatível com os dados apresentados.

    Nesse tipo de questão há algumas coisas que você deve verificar:

    - Erros básicos de sintaxe: comandos que não seguem o padrão da linguagem SQL

    - Compatibilidade entre tipo da coluna e os valores presentes nela (imagine uma coluna do tipo varchar preenchida com números inteiros e vice-versa)

    - Chave primária: valores da chave não podem se repetir

    - Integridade referencial: valores da chave estrangeira devem aparecer no atributo referenciado

    Nessa questão em específico, todas as alternativas têm um problema: está faltando a coluna C em T, que está na tabela, mas não aparece em nenhum comando CREATE TABLE das alternativas. No entanto, a questão não foi anulada. Como todas apresentam esse mesmo erro, vamos ignorá-lo e verificar os demais problemas.

    a) É o único comando DDL compatível com o que as estruturas e valores das tabelas. CERTA

    b) O campo T(B) é criado com tipo varchar (32), em que só cabem 32 dígitos. No entanto, o valor “Distribuidora São João de Artigos para Festas” tem 45 caracteres. Além disso, há a criação de duas chaves primárias para S, o que não é permitido. ERRADA

    c) O problema aqui é de integridade referencial. Veja que S(H) estaria referenciando T(A) e S(G) referenciando R(D). O correto seria inverter essas referências, pois nenhum valor de S(H) aparece em T(A) e nenhum valor de S(G) aparece em R(D). ERRADA

    d) A coluna T(B) também está do tipo varchar (32). Há também a criação de duas chaves primárias. ERRADA

    e) A coluna T(B) também está do tipo varchar (32). Há erro de sintaxe na criação das chaves estrangeiras, você deve fornecer o nome da coluna referenciada, e não o número referente à ordem em que ela aparece na tabela. ERRADA

  • GABARITO: Letra A (com ressalvas)

    Direto ao ponto:

    Alternativas B e D estão erradas, pois só pode haver 1 chave primária por tabela. Veja que elas definem duas chaves primárias.

    Alternativa E está errada, pois a chave estrangeira (H) deveria fazer referência a R(D), e não R(1).

    Alternativa C está errada, pois trocou a referência das chaves estrangeiras.

    Alternativa A é a menos errada, pois esqueceram de criar a coluna "C"., porém esse erro acontece em todas as alternativas. Sendo criterioso, não há alternativa correta.

  • Nesse tipo de questão há algumas coisas que você deve verificar:

    - Erros básicos de sintaxe: comandos que não seguem o padrão da linguagem SQL

    - Compatibilidade entre tipo da coluna e os valores presentes nela (imagine uma coluna do tipo varchar preenchida comb e vice-versa)

    - Chave primária: valores da chave não podem se repetir

    - Integridade referencial: valores da chave estrangeira devem aparecer no atributo referenciado

    Nessa questão em específico, todas as alternativas têm um problema: está faltando a coluna C em T, que está na tabela, mas não aparece em nenhum comando CREATE TABLE das alternativas.

    No entanto, a questão não foi anulada.

    Como todas apresentam esse mesmo erro, vamos ignorá-lo e verificar os demais problemas.

    a) É o único comando DDL compatível com o que as estruturas e valores das tabelas. CERTA

    b) O campo T(B) é criado com tipo varchar(32), em que só cabem 32 dígitos. No entanto, o valor “Distribuidora São João de Artigos para Festas” tem 45 caracteres. Além disso, há a criação de duas chaves primárias para S, o que não é permitido. ERRADA

    c) O problema aqui é de integridade referencial. Veja que S(H) estaria referenciando T(A) e S(G) referenciando R(D).

    O correto seria inverter essas referências, pois nenhum valor de S(H) aparece em T(A) e nenhum valor de S(G) aparece em R(D). ERRADA

    d) A coluna T(B) também está do tipo varchar(32). Há também a criação de duas chaves primárias. ERRADA

    e) A coluna T(B) também está do tipo varchar(32). Há erro de sintaxe na criação das chaves estrangeiras, você deve fornecer o nome da coluna referenciada, e não o número referente à ordem em que ela aparece na tabela. ERRADA

    O gabarito é letra A, mas a questão deveria ter sido anulada, como discutimos acima.

  • Erros na questão:

    1) Não há criação da coluna C;

    2) O campo para ser PK deve ser NOT NULL. Faltou isso em S(H).

    Tirando isso resta a letra A como menos errada.

  • alguém poderia me ajudar com uma duvida? :D:D

    o varchar conta os espaços?

  • E o T.C não precisa né? Que sacanagem!