Análise de banco

6 respostas
Mariana.Vecci

Oii gente, estou tentando fazer o banco de dados de uma loja, mas estou com dúvidas e queria a opinião de vocês para ver se está certo e até mesmo alguma dica para melhora-lo, resumindo, tenho dúvidas quanto a tabela pedido, pois dentro de cada pedido podem ter vários produtos Uso
OBS: Uso Postgresql

CREATE TABLE Cliente (
  codc serial PRIMARY KEY,
  nomec varchar(30) not null,
  fonec varchar(10) not null,
  endc varchar(30),
  cpfc varchar(20)
);

CREATE TABLE Videogame (
  codvg serial PRIMARY KEY,
  modelovg varchar(15) not null,
  precovg float not null,
  qtdvg int not null
);

CREATE TABLE Pedido (
  codp integer PRIMARY KEY,
  FKcodc integer,
  FOREIGN KEY(FKcodc) REFERENCES Cliente (codc)
);

CREATE TABLE ItemPedido (
  coditemp serial PRIMARY KEY,
  qtdcomprada integer not null,
  valorunt float not null,
  FKcodvg integer,
  FKcodp integer,  
  FOREIGN KEY(FKcodvg) REFERENCES Videogame (codvg),
  FOREIGN KEY(FKcodp) REFERENCES Pedido (codp)
);

Obrigada!!

6 Respostas

thiagobaptista

Pelo que pude entender, sua tabela ItemPedido tem uma chave estrangeira para o produto (um videogame) e para um pedido. Assim, do jeito que está, me parece que já atende o que você quer, afinal, um Pedido vai ter muitos ItensPedido, não é isso?

Deixe suas dúvidas mais explícitas.

Mariana.Vecci

Olá, sim, minha dúvida era se estava certo, e se há alguma coisa que eu poderia fazer para melhorar este banco, sei lá uma sujestão.
Mas obrigada querido.

Pichot

Eu não sou expert no assunto, mas estudo e gosto muito da área, uma coisa que reparei e que vc usa nome abreviados, tipo codc para codigo_cliente, axo que especificar o nome ou seja usar o codigo_cliente em vez do codec facilita numa posterior compreensão do seu banco.
Abraços, Ivan Joaquim!!

S

Eu acho que o campo nome cliente tá pequeno, deixaria com 50 caracteres

O campo endc também tá muito pequeno, até porque ele vai armazenar todo o endereço do cliente. Aconselharia até a desmembrá-lo:

endc
bairroc
cidadec
ufc
cepc

Notei que só tem um campo telefone, seria bom pelo menos dois: um residencial e um celular.

Por que a tabela tem o nome do produto, nessa loja só vai vender videogame? E se quiser vender jogos pra videogame ou outros eletrônicos?

Abs,
Salomão

Andre_Rosa

Outra dica: não sei qual SGBD você está utilizando, mas se puder, use o tipo VARCHAR2(). Ele funciona da seguinte forma, comparando com o VARCHAR():

Tamanho do campo: 30
Tamanho da string: 20

No Varchar(), seria preenchido com 20 caracteres, e o espaço de 10, continuaria lá, com um “vácuo”. Já no Varchar2(), o campo se redimensiona para o tamanho específico, de acordo com a quantidade de caracteres. Vale lembrar que com o Varchar2(), se você precisar usar o espaço 30 do campo, e estiver preenchido com 20, ele se dimensiona de volta.

Entendeu minha explicação?

diegodtsa
Mariana.Vecci:
Oii gente, estou tentando fazer o banco de dados de uma loja, mas estou com dúvidas e queria a opinião de vocês para ver se está certo e até mesmo alguma dica para melhora-lo, resumindo, tenho dúvidas quanto a tabela pedido, pois dentro de cada pedido podem ter vários produtos Uso OBS: Uso Postgresql
CREATE TABLE Cliente (
  codc serial PRIMARY KEY,
  nomec varchar(30) not null,
  fonec varchar(10) not null, // fone cliente do mesmo modo que o CPF.
  endc varchar(30), // ENDEREÇO cliente aumentar de (30) para no minino (60) eu uso (80)!!!
  cpfc varchar(18) // UMA DAS DICAS!! Mudar o campo para (18) se você usar o Jformatedfield para mascaras de campo para CPF
);

CREATE TABLE Videogame (
  codvg serial PRIMARY KEY,
  modelovg varchar(15) not null,
  precovg float not null,
  qtdvg int not null
);

CREATE TABLE Pedido (
  codp integer PRIMARY KEY,
  FKcodc integer,
  FOREIGN KEY(FKcodc) REFERENCES Cliente (codc)
);

CREATE TABLE ItemPedido (
  coditemp serial PRIMARY KEY,
  qtdcomprada integer not null,
  valorunt float not null,
  FKcodvg integer,
  FKcodp integer,  
  FOREIGN KEY(FKcodvg) REFERENCES Videogame (codvg),
  FOREIGN KEY(FKcodp) REFERENCES Pedido (codp)
);

Obrigada!!

Criado 2 de maio de 2011
Ultima resposta 2 de mai. de 2011
Respostas 6
Participantes 6