rsocol:Dacă o chitanţă poate plăti mai multe rate (cu condiţia ca toate ratele să aparţină de acelaşi contract), iar o rată poate să fie plătită parţial printr-o chitanţă şi parţial prin alta, atunci înseamnă că ai o relaţie many-to-many între tabelele CHITANTE şi RATE, care poate fi reprezentată astfel:
CREATE TABLE CHITANTE (
NR_CHITANTA INT PRIMARY KEY,
ID_CONTRACT INT NOT NULL REFERENCES CONTRACTE,
SUMA_INCASATA MONEY NOT NULL,
--UNIQUE (NR_CHITANTA, ID_CONTRACT)
)
Nu înţeleg de ce ai în CHITANŢĂ cheia externă ID_CONTRACT ?
Deci ID_CONTRACT este cheie externă şi în RATĂ, şi în PLATA_RATA şi în CHITANŢĂ ?!
rsocol:
CREATE TABLE PLATI_RATE (
NR_CHITANTA INT NOT NULL REFERENCES CHITANTE,
ID_CONTRACT INT NOT NULL REFERENCES CONTRACTE,
-- FOREIGN KEY (NR_CHITANTA, ID_CONTRACT) REFERENCES CHITANTE (NR_CHITANTA, ID_CONTRACT),
ID_RATA INT NOT NULL,
FOREIGN KEY (ID_CONTRACT, NR_RATA) REFERENCES RATE (ID_CONTRACT, NR_RATA)
VALOARE_ASOCIATA MONEY NOT NULL
)
Nu înţeleg de ce ai definit cheia externă ID_CONTRACT (ID_CONTRACT INT NOT NULL REFERENCES CONTRACTE) din moment ce ai definit şi cheia externă ID_CONTRACT + NR_RATA (FOREIGN KEY (ID_CONTRACT, NR_RATA) REFERENCES RATE (ID_CONTRACT, NR_RATA)
) ?
Şi în cazul acesta (tabela PLATI_RATE propusă de tine) cum este rezolvată cerinţa: "Clientul poate sa achite in avans una sau mai multe rate, sau poate sa plateasca o suma mai mare decit o rata dar mai mica decit 2 rate" ? Diferenţa dintre suma paltita şi suma ratei ?