2 tabelas e 1 relacionamento

13/09/2012

0

Boa noite galera, eu sou novo por aqui e estou fazendo um programa pequeno que um usuario terá um gasto em um mes e ano ..
Só que estou com uma duvida em fazer o codigo, pois o relacionamento vai ter 2 atributos como ano e mês.

CREATE TABLE USUARIO(
ID_USUARIO INT NOT NULL IDENTITY(1,1),
NOME VARCHAR(50) NOT NULL,
SENHA VARCHAR(10) NOT NULL,
PRIMARY KEY (ID_USUARIO));

CREATE TABLE CONTROLE(
MES VARCHAR(50) NOT NULL,
ANO INT NOT NULL,
ID_USUARIO INT NOT NULL ,
ID_CONTA INT NOT NULL,
CONSTRAINT CONTROLE_ANO_PK PRIMARY KEY (ANO),
CONSTRAINT CONTROLE_USUARIO_ID_USUARIO_FK FOREIGN KEY(ID_USUARIO) REFERENCES USUARIO(ID_USUARIO),
CONSTRAINT CONTROLE_CONTA_ID_CONTA_FK FOREIGN KEY(ID_CONTA) REFERENCES CONTA(ID_CONTA));


CREATE TABLE CONTA(
ID_CONTA INT NOT NULL IDENTITY(1,1),
ID_USUARIO INT,
DESCRICAO VARCHAR(100) NOT NULL,
VALOR DECIMAL NOT NULL,
DATA_VENC DATETIME NOT NULL,
PRIMARY KEY(ID_CONTA));


UM USUARIO POSSUI 0:N GASTO E GASTO POSSUI 1:1 USUARIO
Estaria certo este codigo?
Por favor me ajudem, estou precisando muito... Desde já agradeço
Vanderson Dutra

Vanderson Dutra

Responder

Posts

14/09/2012

Bruno Leandro

o que voce precisa retornar no seu select, pra mim ficou dificil entender
Responder

14/09/2012

Joel Rodrigues

Um USUARIO possui 0:N CONTA, certo? Por que não há uma chave estrangeira na tabela CONTAS ligando-a a tabela USUARIOS?
Uma CONTA possui 0:N CONTROLE, certo? Se CONTROLE está ligado a CONTA que está ligada a USUARIO, por que a referência à tabela USUARIO também na tabela CONTROLE? Uma vez que o CONTROLE está ligado à CONTA e essa CONTA pertence a um USUARIO, o CONTROLE também pertence ao USUARIO.

DIcas e perguntas:
- Por que o mês é um VARCHAR(50)? Se você pretende armazenar a descrição do mês, nenhum tem um nome com 50 caracteres. Poupe recursos.
- Por que não usar o mês como inteiro?
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar