Olá, Mauricio, tudo bem?
Uau! Projeto completo, hein? hehehe... Vou te ajudar a identificar quais são as entidades e atributos para que você possa construir o modelo. Em seguida quais são os relacionamentos entre as entidades, o MER e por fim sugestões de códigos SQL.
Passo 1: Criar o Diagrama Entidade Relacionamento (DER)
Entidades e Atributos:
Livro
- ISBN (Identificador)
- título
- ano de publicação
Autor
- id_autor (Identificador)
- nome
- nacionalidade
Membro
- id_membro (Identificador)
- nome
- e-mail
- endereço (atributo composto: CEP, rua, número e complemento)
- telefones (atributo composto: número e tipo)
Empréstimo
- id_emprestimo (Identificador)
- data_emprestimo
- data_devolucao
Categoria
- id_categoria (Identificador)
- nome
- descrição
Editora
- id_editora (Identificador)
- nome
- cidade
- CNPJ
Relacionamentos:
- Livro-Tem-Autor (N) entre Livro e Autor (criação de uma tabela associativa).
- Livro-É-Publicado-Por-Editora (N:1) entre Livro e Editora.
- Livro-Pertence-A-Categoria (N:1) entre Livro e Categoria.
- Empréstimo-É-Feito-Por-Membro (N:1) entre Empréstimo e Membro.
- Empréstimo-Envolve-Livro (N:1) entre Empréstimo e Livro.
Passo 2: Criar o Modelo Entidade Relacionamento (MER)
No MER, vamos traduzir o DER para um modelo lógico, considerando chaves primárias e estrangeiras.
Tabelas:
Livro
- ISBN (PK)
- titulo
- ano_publicacao
- id_editora (FK)
- id_categoria (FK)
Autor
- id_autor (PK)
- nome
- nacionalidade
Membro
- id_membro (PK)
- nome
- email
- cep
- rua
- numero
- complemento
- telefone_numero
- telefone_tipo
Emprestimo
- id_emprestimo (PK)
- data_emprestimo
- data_devolucao
- id_membro (FK)
- ISBN (FK)
Categoria
- id_categoria (PK)
- nome
- descricao
Editora
- id_editora (PK)
- nome
- cidade
- CNPJ
Escreve
Passo 3: Criar o projeto físico com código SQL
Aqui deixo como sugestões códigos SQL para criação das tabelas:
CREATE TABLE Editora (
id_editora INT PRIMARY KEY,
nome VARCHAR(100),
cidade VARCHAR(100),
CNPJ VARCHAR(20)
);
CREATE TABLE Categoria (
id_categoria INT PRIMARY KEY,
nome VARCHAR(100),
descricao TEXT
);
CREATE TABLE Livro (
ISBN VARCHAR(20) PRIMARY KEY,
titulo VARCHAR(100),
ano_publicacao INT,
id_editora INT,
id_categoria INT,
FOREIGN KEY (id_editora) REFERENCES Editora(id_editora),
FOREIGN KEY (id_categoria) REFERENCES Categoria(id_categoria)
);
CREATE TABLE Autor (
id_autor INT PRIMARY KEY,
nome VARCHAR(100),
nacionalidade VARCHAR(100)
);
CREATE TABLE Membro (
id_membro INT PRIMARY KEY,
nome VARCHAR(100),
email VARCHAR(100),
cep VARCHAR(10),
rua VARCHAR(100),
numero INT,
complemento VARCHAR(100),
telefone_numero VARCHAR(20),
telefone_tipo VARCHAR(20)
);
CREATE TABLE Emprestimo (
id_emprestimo INT PRIMARY KEY,
data_emprestimo DATE,
data_devolucao DATE,
id_membro INT,
ISBN VARCHAR(20),
FOREIGN KEY (id_membro) REFERENCES Membro(id_membro),
FOREIGN KEY (ISBN) REFERENCES Livro(ISBN)
);
CREATE TABLE Escreve (
id_autor INT,
ISBN VARCHAR(20),
PRIMARY KEY
Mauricio, como complemento, recomendo o curso Modelagem de banco de dados relacional: modelagem lógica e física. O projeto deste curso é baseado em um Clube do Livro, o que se assemelha ao seu projeto, podendo servir de inspiração e apoio para a construção da sua modelagem, além de apresentar as ferramentas utilizadas no processo.
Espero ter ajudado.
Qualquer dúvida, não hesite em compartilhar no fórum.
Abraços e bons estudos!
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!