- Banco de Dados RelacionalTipos de ChavesChave Estrangeira
- Banco de Dados RelacionalTipos de ChavesChave Primária
- SQLDDLCREATE TABLE
Considere os seguintes comandos:
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:
I.
CREATE TABLE LivroAutor( CodLivro NUMBER(6) NOT NULL REFERENCES Livro (CodLivro), CodAutor NUMBER(5) NOT NULL REFERENCES Autor (CodAutor), CONSTRAINT LA_PK PRIMARY KEY (CodLivro, CodAutor) ) |
II.
CREATE TABLE LivroAutor( CodLivro NUMBER(6) NOT NULL, CodAutor NUMBER(5) NOT NULL, CONSTRAINT LA_PK PRIMARY KEY (CodLivro, CodAutor), CONSTRAINT LA_FK_LIVRO FOREIGN KEY (CodLivro) REFERENCES Livro (CodLivro), CONSTRAINT LA_FK_AUTOR FOREIGN KEY (CodAutor) REFERENCES Autor (CodAutor) ) |
III.
CREATE TABLE LivroAutor( CodLivro NUMBER(6) NOT NULL PRIMARY KEY REFERENCES Livro (CodLivro), CodAutor NUMBER(5) NOT NULL PRIMARY KEY REFERENCES Autor (CodAutor) ) |
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?