Array
(
)

2 tabelas e 1 relacionamento

Vanderson Dutra
   - 13 set 2012

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

Bruno Leandro
   - 14 set 2012

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

Joel Rodrigues
   - 14 set 2012

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?