Considere os seguintes comandos: CREATE TABLE Livro( CodL...
CREATE TABLE Livro( CodLivro NUMBER(6) PRIMARY KEY, Titulo VARCHAR2(50) NOT NULL, Paginas NUMBER(4) NOT NULL, Edicao NUMBER(2) NOT NULL, ISBN NUMBER(11), CodEditora NUMBER(4) NOT NULL REFERENCES Editora(CodEditora) ) CREATE TABLE Autor( CodAutor NUMBER(5) PRIMARY KEY, nome VARCHAR2(50) NOT NULL, )
Agora analise as três assertivas a seguir para criação de tabela que relaciona a tabela livro com a tabela autor, de forma que um livro pode ter diversos autores e um autor pode escrever diversos livros:
Sobre as assertivas acima, analise as seguintes afirmações:
I. A assertiva III é mais simples e cria corretamente a tabela que relaciona Livros com Autores.
II. A assertiva II define constraints de tabela para as chaves estrangeiras que, nesse caso, são correspondentes às constraints de coluna, pois são definidas sobre um campo simples.
III. A assertiva I não precisaria definir uma constraint de tabela para a chave primária, pois é possível definir uma chave primária composta diretamente nos campos.
Quais afirmações estão corretas?
Comentários
Veja os comentários dos nossos alunos
sobre I. A assertiva III é mais simples e cria corretamente a tabela que relaciona Livros com Autores. Está errada.
Não é possível ter duas colunas como chaves primárias em uma mesma tabela.
Uma correção possível seria:
CREATE TABLE LIVROAUTOR (
CODLIVRO NUMBER(6) NOT NULL,
CODAUTOR NUMBER(5) NOT NULL,
PRIMARY KEY (CODLIVRO, CODAUTOR),
FOREIGN KEY (CODLIVRO) REFERENCES LIVRO (CODLIVRO),
FOREIGN KEY (CODAUTOR) REFERENCES AUTOR (CODAUTOR)
);
Sobre "III. A assertiva I não precisaria definir uma constraint de tabela para a chave primária, pois é possível definir uma chave primária composta diretamente nos campos."... eu não achei o erro! Ajuda por favor.
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo