1
resposta

Considere os requisitos para o banco de dados de uma livraria.

Bom dia. poderiam verificar se está correto?

  1. A livraria deseja manter um cadastro de clientes;

  2. Sobre cada cliente, é importante manter seu endereço, telefone, CPF e lista dos livros que este cliente já comprou. Para cada compra, é importante guardar a data em que esta foi realizada;

  3. Um cliente pode comprar muitos livros. Um livro pode ser vendido para mais de um cliente pois geralmente há vários livros em estoque;

  4. Um cliente pode ser pessoa física ou jurídica. Se for pessoa jurídica, o seu identificador deve ser o CNPJ e caso seja física seu identificador será o CPF.

  5. A livraria compra livros de editoras;

  6. Sobre as editoras, a livraria precisa de seu código, endereço, telefone de contato, e o nome de seu gerente;

  7. Cada cliente tem um código único;

  8. Deve-se manter um cadastro sobre cada livro na livraria. Para cada livro, é importante armazenar o nome do autor, assunto, editora, ISBN e a quantidade dos livros em estoque. Cada livro pode ter vários autores e somente uma editora;

  9. Editoras diferentes não fornecem o mesmo tipo de livro.

essa é a minha resposta.


create database livraria;

use livraria;

create table pessoafisica(
    cpf varchar(11) primary key not null
);

create table pessoajuridica(
    cnpj varchar(15) primary key not null
);

clientecreate table cliente(
    codigo int primary key not null,
    telefone varchar(11),
    endereço varchar(45),
    cpf varchar(11) primary key not null,
    foreign key (cpf) references 
    pessoafisica (cpf),
    cnpj varchar(15) primary key not null,
    foreign key (cnpj) references 
    pessoajuridica (cnpj)
);

create table compras(
    codigocliente int not null,
    isbn int not null,
    datacompra date,
    primary key (codigocliente, isbn)
    );

create table livro(
    isbn int primary key not null,
    qtd_estoque int,
    assunto varchar(45),
    autor varchar(45),
    codigoeditora varchar(45) 

);

create table editora(
    codigo int primary key not null,
    endereco varchar(45),
    telefone varchar(11),
    gerente varchar(45)

);

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

1 resposta

Oii Marcos, tudo bem?

Desculpa pela demora em responder você, vamos lá.

Olha, do jeito que está com certeza funciona, mas podemos fazer algumas melhorias para seu banco de dados ficar melhor.

  • A tabela pessoa fisica e juridica, não precisa ser criada. Você pode criar direto na tabela de clientes, usando um campo varchar(15), funciona perfeito. E para saber se é fisica ou juridica você pode adicionar um campo boolean, onde informa se é fisico ou juridico.
  • Na tabela de cliente, como tem um código, não precisamos usar o cpf como chave primaria, certo? Poderia fazer o mesmo a tabela de livros, criar um id sequencial e deixar o isbn como atributo.

O restante eu não tenho nenhuma consideração, está perfeito. Obrigada por compartilhar com a gente e mais uma vez, desculpa pela demora.

Qualquer coisa estamos por aqui :)