realno tabela ovde koja se zove "glavna" ne treba da postoji :D
da je odma rekao sta hoce mozda bi svima bilo lakse da mu pomognemo ... realno imas
Code:
CREATE TABLE uplata_tip (
uplata_tip_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
uplata_tip_ime VARCHAR(255) NOT NULL,
uplata_tip_opis VARCHAR(255) NOT NULL
);
CREATE TABLE isplata_tip (
isplata_tip_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
isplata_tip_ime VARCHAR(255) NOT NULL,
isplata_tip_opis VARCHAR(255) NOT NULL
);
CREATE TABLE uplata (
uplata_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
uplata_tip_id INT NOT NULL,
uplata_vrednost DECIMAL,
uplata_datum TIMESTAMP NOT NULL DEFAULT(NOW()),
uplata_opis VARCHAR(255),
INDEX (uplata_tip_id), FOREIGN KEY (uplata_tip_id) REFERENCES uplata_tip(uplata_tip_id) ON DELETE RESTRICT ON UPDATE RESTRICT
);
CREATE TABLE isplata (
isplata_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
isplata_tip_id INT NOT NULL,
isplata_vrednost DECIMAL,
isplata_datum TIMESTAMP NOT NULL DEFAULT(NOW()),
isplata_opis VARCHAR(255),
INDEX (isplata_tip_id), FOREIGN KEY (isplata_tip_id) REFERENCES isplata_tip(isplata_tip_id) ON DELETE RESTRICT ON UPDATE RESTRICT
);
ne moras da imas uplate i isplate u istoj tabeli ako ne zelis da ih vodis kao + i - za "vrednost"
varijanta da imas tabelu transakcija u kojoj imas kolonu uplata i kolonu isplata je pogresna ... dakle ili ides sa dve tabele, jedna za uplate druga za isplate ili ides sa jednom tabelom i koristis jednu kolonu za uplate i isplate stim da je jedno u plusu a drugo u minusu ...
takodje moze da se spoji uplata_tip i isplata_tip u jednu tabelu mada lepse ovako odvojeno
ono sto moze da se uradi dodatno je da uplata_id i isplata_id ne budu AUTO_INCREMENT i da nemaju uplata/isplata_datum vec da imas ovako nesto
Code:
CREATE TABLE transakcija_tip (
transakcija_tip_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
transakcija_tip_ime VARCHAR(255) NOT NULL,
transakcija_tip_opis VARCHAR(255) NOT NULL
);
CREATE TABLE transakcija (
transakcija_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
);
CREATE TABLE uplata (
uplata_id INT NOT NULL PRIMARY KEY, -- obrati paznju nije AUTOINC
transakcija_tip_id INT NOT NULL,
uplata_vrednost DECIMAL,
uplata_datum TIMESTAMP NOT NULL DEFAULT(NOW()),
uplata_opis VARCHAR(255),
INDEX (transakcija_tip_id),
CONSTRAINT `fk1` FOREIGN KEY (transakcija_tip_id) REFERENCES transakcija_tip(transakcija_tip_id) ON DELETE RESTRICT ON UPDATE RESTRICT,
CONSTRAINT `fk2` FOREIGN KEY (uplata_id) REFERENCES transakcija (transakcija_id) ON DELETE RESTRICT ON UPDATE RESTRICT
);
CREATE TABLE isplata (
isplata_id INT NOT NULL PRIMARY KEY, -- obrati paznju nije AUTOINC
transakcija_tip_id INT NOT NULL,
isplata_vrednost DECIMAL,
isplata_datum TIMESTAMP NOT NULL DEFAULT(NOW()),
isplata_opis VARCHAR(255),
INDEX (transakcija_tip_id),
CONSTRAINT `fk1` FOREIGN KEY (transakcija_tip_id) REFERENCES transakcija_tip(transakcija_tip_id) ON DELETE RESTRICT ON UPDATE RESTRICT,
CONSTRAINT `fk2` FOREIGN KEY (isplata_id) REFERENCES transakcija (transakcija_id) ON DELETE RESTRICT ON UPDATE RESTRICT
);
tako da prvo napravis auto_increment slog u `transakcija` i onda koristis taj insert_id da kreiras slog u uplata ili isplata ...
onda to moze jos malo da se ulepsa jer imamo zajednicka polja u uplata i isplata koja su vezana u stvari za transakciju pa onda dodjemo do
Code:
CREATE TABLE transakcija_tip (
transakcija_tip_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
transakcija_tip_ime VARCHAR(255) NOT NULL,
transakcija_tip_opis VARCHAR(255) NOT NULL
);
CREATE TABLE transakcija (
transakcija_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
transakcija_datum TIMESTAMP NOT NULL DEFAULT(NOW()),
transakcija_opis VARCHAR(255),
transakcija_tip_id INT NOT NULL,
INDEX (transakcija_tip_id),
CONSTRAINT `fk1` FOREIGN KEY (transakcija_tip_id) REFERENCES transakcija_tip(transakcija_tip_id) ON DELETE RESTRICT ON UPDATE RESTRICT,
);
CREATE TABLE uplata (
uplata_id INT NOT NULL PRIMARY KEY, -- obrati paznju nije AUTOINC
uplata_vrednost DECIMAL,
CONSTRAINT `fk2` FOREIGN KEY (uplata_id) REFERENCES transakcija (transakcija_id) ON DELETE RESTRICT ON UPDATE RESTRICT
);
CREATE TABLE isplata (
isplata_id INT NOT NULL PRIMARY KEY, -- obrati paznju nije AUTOINC
isplata_vrednost DECIMAL,
CONSTRAINT `fk2` FOREIGN KEY (isplata_id) REFERENCES transakcija (transakcija_id) ON DELETE RESTRICT ON UPDATE RESTRICT
);
A ovde realno vidimo ono sto rekoh s'pocetka uplata i isplata su beskorisni jer to sve moze da se spoji u jednu tabelu:
Code:
CREATE TABLE transakcija_tip (
transakcija_tip_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
transakcija_tip_ime VARCHAR(255) NOT NULL,
transakcija_tip_opis VARCHAR(255) NOT NULL,
transakcija_tip_uplata_isplata ENUM('UPLATA', 'ISPLATA') -- ako nam nije dovoljno sto je transakcija.transakcija_vrednost pozitivno ili negativno mozemo i ovo da dodamo
);
CREATE TABLE transakcija (
transakcija_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
transakcija_datum TIMESTAMP NOT NULL DEFAULT(NOW()),
transakcija_opis VARCHAR(255),
transakcija_tip_id INT NOT NULL,
transakcija_vrednost DECIMAL, -- pozitivno je uplata, negativno je isplata
INDEX (transakcija_tip_id),
CONSTRAINT `fk1` FOREIGN KEY (transakcija_tip_id) REFERENCES transakcija_tip(transakcija_tip_id) ON DELETE RESTRICT ON UPDATE RESTRICT,
);
i na kraju svega, opet, ne znam sta je poenta, ali za kucne finansije, ako ti excell tabela ne radi posao ovo je po meni vrh resenje:
https://gnucash.org/
uzdravlje