Olá a todos! estou montando um sistema e criei as tabelas do meu banco de dados, só que como sou iniciante não tenho certeza se está certo o relacionamento delas, minha lógica pode estar errada, alguém pode me dizer se a minha lógica está correta?
Primeiro o sistema possui 4 tabelas: Usuário, ContaBancaria, DespesasSaidas e ReceitasEntradas. Quero poder fazer todo tipo de busca, pegar valores no banco, gerar gráficos com os valores, etc, isso para cada usuário logado no sistema, tipo um usuário se logou e cada informação dessa tem que estar certa para os ids dele.
Ai modelei essas tabelas assim:
CREATE TABLE CONTA (
ID_CONTA INT NOT NULL AUTO_INCREMENT,
ID_DESPESAS INT,
ID_RECEITA INT,
CONTA_TIPO VARCHAR(255) NOT NULL,
BANCO VARCHAR(255) NOT NULL,
NUMERO BIGINT NOT NULL,
SALDO DOUBLE NOT NULL,
PRIMARY KEY(ID_CONTA),
FOREIGN KEY (ID_DESPESAS) REFERENCES DESPESAS(ID_DESPESAS),
FOREIGN KEY (ID_RECEITA) REFERENCES RECEITA(ID_RECEITA)
);
CREATE TABLE DESPESAS (
ID_DESPESAS INT NOT NULL AUTO_INCREMENT,
DESCRICAO VARCHAR(255) NOT NULL,
VALOR DOUBLE NOT NULL,
FORMA_PAGAMENTO VARCHAR(255) NOT NULL,
TIPO VARCHAR(255) NOT NULL,
DATA_DIA DATE NOT NULL,
PRIMARY KEY(ID_DESPESAS)
);
CREATE TABLE RECEITA (
ID_RECEITA INT NOT NULL AUTO_INCREMENT,
DESCRICAO VARCHAR(255) NOT NULL,
VALOR DOUBLE NOT NULL,
FORMA_RECEBIMENTO VARCHAR(255) NOT NULL,
TIPO VARCHAR(255) NOT NULL,
DATA_DIA DATE NOT NULL,
PRIMARY KEY(ID_RECEITA)
);
CREATE TABLE USUARIO (
ID_USUARIO INT NOT NULL AUTO_INCREMENT,
ID_CONTA INT,
USERNAME VARCHAR(255) NOT NULL,
EMAIL VARCHAR(255) NOT NULL,
SENHA VARCHAR(255) NOT NULL,
NOME VARCHAR(255) NOT NULL,
SOBRENOME VARCHAR(255) NOT NULL,
CPF BIGINT NOT NULL,
RG BIGINT NOT NULL,
PRIMARY KEY(ID_USUARIO),
FOREIGN KEY (ID_CONTA) REFERENCES CONTA(ID_CONTA)
);
A tabela USUARIO tem chave estrangeira da CONTA, e a CONTA tem chave estrangeira das RECEITA e DESPESAS, ai minha duvida é se está certo assim ou precisa de mais alguma ligação? agradeço desde já a atenção!