SóProvas


ID
1340296
Banca
CESPE / CEBRASPE
Órgão
BACEN
Ano
2013
Provas
Disciplina
Banco de Dados
Assuntos

CREATE TABLE Pessoa

(
Id int NULL,
Matricula int NOT NULL,
Nome varchar(255) NOT NULL,
DataNascimento date NULL)
CREATE TABLE EnderecoPessoa 
    (Id int NOT NULL,
TipoEndereco char (1) NOT NULL,
Endereco varchar(255),
Cidade char(55),
UF varchar (2)
)

Considerando os scripts acima para criação das Tabelas Pessoa e EnderecoPessoa, julgue o  item seguinte.

Considerando que o campo Id na tabela Pessoa esteja corretamente configurado como chave primária simples, para se criar uma chave estrangeira entre as tabelas Pessoa e EnderecoPessoa, deve-se executar o comando a seguir.
ALTER TABLE EnderecoPessoa 

ADD CONSTRAINT fk_Endereco_Pessoa 
FOREIGN KEY (P_id) 
REFERENCES Pessoa (Id)

Alternativas
Comentários
  • Questões maliciosas... Acredito que esteja errado por a tabela EnderecoPessoa não possuir a coluna P_id, desta forma não tem como fazer a referência...


    Acredito que seja isto, me corrijam se eu estiver errado...

  • Danilo, o erro na verdade é dizer que para criar uma chave estrangeira entre essa tabela, DEVE utilizar esse comando. É possível criar chaves estrangeiras com outros campos, não precisa ser necessariamente chave primária da outra tabela, assim não existe essa obrigatoriedade como consta na questão.

  • eu acho que é pq  o id não pode ser pk pois ele aceita null



    Ano: 2013

    Banca: CESPE

    Órgão: BACEN

    Prova: Analista - Análise e Desenvolvimento de Sistemas

    Resolvi errado

    texto associado [img src="/assets/internas/seta-laranja-cima.png" width="9" height="9" alt="Texto associado">

    CREATE TABLE Pessoa

    (

    Id int NULL,

    Matricula int NOT NULL,

    Nome varchar(255) NOT NULL,

    DataNascimento date NULL)

    CREATE TABLE EnderecoPessoa 

        (Id int NOT NULL,

    TipoEndereco char (1) NOT NULL,

    Endereco varchar(255),

    Cidade char(55),

    UF varchar (2)

    )

    Considerando os scripts acima para criação das Tabelas Pessoa e EnderecoPessoa, julgue os itens seguintes. 

    Para criar uma chave primária composta na Tabela Pessoa, deve-se executar o seguinte comando. 
    ALTER TABLE Pessoa ADD CONSTRAINT pk_PessoaID PRIMARY KEY (Id, Matricula)


  • Rodrigo, na verdade, a resposta do Danilo está certa sim. Não é possível criar uma chave estrangeira usando um campo inexistente (no caso, P_id). Eu sempre testo estes comandos SQL para verificar se realmente estão condizentes.

    Ao testar o comando da questão, obtive o resultado: [Error] - Key column 'P_id' doesn't exist in table

  • O erro está em P_id que não existe na tabela pessoa. É necessário já existir a referência. Não é criada ao alterar outra tabela.

     

    ALTER TABLE `EnderecoPessoa ` ADD CONSTRAINT `fk_Endereco_Pessoa ` FOREIGN KEY ( `P_id` ) REFERENCES Pessoa(id)

     

    fonte: http://www.devmedia.com.br/criando-uma-chave-estrangeira-no-mysql/20299

     

  • Pelo que entendi, na tabela pessoa a chave primária poderia ser NULL. Eu pensava que isso não poderia existir... Alguém saberia explicar este ponto da questão?

    Sei que a pergunta é muito básica. É que eu não sou da área de TI e a maioria das questões (de TI) não tem comentários de professores :-/

    Abs e obrigado!