Análise de banco

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

[code]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)
);[/code]

Obrigada!!

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.

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.

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!!

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

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?

[quote=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

[code]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)
);[/code]

Obrigada!![/quote]