From 56afa62e147ef7730458801502c9fcb5f71e7409 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomasz=20S=C5=82odkowicz?= Date: Mon, 29 Oct 2018 00:52:14 +0100 Subject: [PATCH] fix(#23): foreign key constraints added to db schema --- tables.sql | 68 ++++++++++++++++++++++++++++-------------------------- 1 file changed, 35 insertions(+), 33 deletions(-) diff --git a/tables.sql b/tables.sql index 7c4ed94..a6032bf 100644 --- a/tables.sql +++ b/tables.sql @@ -1,3 +1,5 @@ +pragma foreign_keys=ON; + -- Describe ACCOUNTLIST CREATE TABLE ACCOUNTLIST( ACCOUNTID integer primary key @@ -12,7 +14,7 @@ ACCOUNTID integer primary key , ACCESSINFO TEXT , INITIALBAL numeric , FAVORITEACCT TEXT NOT NULL -, CURRENCYID integer NOT NULL +, CURRENCYID integer NOT NULL REFERENCES CURRENCYFORMATS , STATEMENTLOCKED integer , STATEMENTDATE TEXT , MINIMUMBALANCE numeric @@ -39,16 +41,16 @@ CREATE INDEX IDX_ASSETS_ASSETTYPE ON ASSETS(ASSETTYPE); -- Describe BILLSDEPOSITS CREATE TABLE BILLSDEPOSITS( BDID integer primary key -, ACCOUNTID integer NOT NULL -, TOACCOUNTID integer -, PAYEEID integer NOT NULL +, ACCOUNTID integer NOT NULL REFERENCES ACCOUNTLIST +, TOACCOUNTID integer REFERENCES ACCOUNTLIST +, PAYEEID integer NOT NULL REFERENCES PAYEE , TRANSCODE TEXT NOT NULL /* Withdrawal, Deposit, Transfer */ , TRANSAMOUNT numeric NOT NULL , STATUS TEXT /* None, Reconciled, Void, Follow up, Duplicate */ , TRANSACTIONNUMBER TEXT , NOTES TEXT -, CATEGID integer -, SUBCATEGID integer +, CATEGID integer REFERENCES CATEGORY +, SUBCATEGID integer REFERENCES SUBCATEGORY , TRANSDATE TEXT , FOLLOWUPID integer , TOTRANSAMOUNT numeric @@ -61,9 +63,9 @@ CREATE INDEX IDX_BILLSDEPOSITS_ACCOUNT ON BILLSDEPOSITS (ACCOUNTID, TOACCOUNTID) -- Describe BUDGETSPLITTRANSACTIONS CREATE TABLE BUDGETSPLITTRANSACTIONS( SPLITTRANSID integer primary key -, TRANSID integer NOT NULL -, CATEGID integer -, SUBCATEGID integer +, TRANSID integer NOT NULL REFERENCES BILLSDEPOSITS +, CATEGID integer REFERENCES CATEGORY +, SUBCATEGID integer REFERENCES SUBCATEGORY , SPLITTRANSAMOUNT numeric ); CREATE INDEX IDX_BUDGETSPLITTRANSACTIONS_TRANSID ON BUDGETSPLITTRANSACTIONS(TRANSID); @@ -71,9 +73,9 @@ CREATE INDEX IDX_BUDGETSPLITTRANSACTIONS_TRANSID ON BUDGETSPLITTRANSACTIONS(TRAN -- Describe BUDGETTABLE CREATE TABLE BUDGETTABLE( BUDGETENTRYID integer primary key -, BUDGETYEARID integer -, CATEGID integer -, SUBCATEGID integer +, BUDGETYEARID integer REFERENCES BUDGETYEAR +, CATEGID integer REFERENCES CATEGORY +, SUBCATEGID integer REFERENCES SUBCATEGORY , PERIOD TEXT NOT NULL /* None, Weekly, Bi-Weekly, Monthly, Monthly, Bi-Monthly, Quarterly, Half-Yearly, Yearly, Daily*/ , AMOUNT numeric NOT NULL ); @@ -116,16 +118,16 @@ INSERT INTO CATEGORY VALUES(16,'_tr_Transfer'); -- Describe CHECKINGACCOUNT CREATE TABLE CHECKINGACCOUNT( TRANSID integer primary key -, ACCOUNTID integer NOT NULL -, TOACCOUNTID integer -, PAYEEID integer NOT NULL +, ACCOUNTID integer NOT NULL REFERENCES ACCOUNTLIST +, TOACCOUNTID integer REFERENCES ACCOUNTLIST +, PAYEEID integer NOT NULL REFERENCES PAYEE , TRANSCODE TEXT NOT NULL /* Withdrawal, Deposit, Transfer */ , TRANSAMOUNT numeric NOT NULL , STATUS TEXT /* None, Reconciled, Void, Follow up, Duplicate */ , TRANSACTIONNUMBER TEXT , NOTES TEXT -, CATEGID integer -, SUBCATEGID integer +, CATEGID integer REFERENCES CATEGORY +, SUBCATEGID integer REFERENCES SUBCATEGORY , TRANSDATE TEXT , FOLLOWUPID integer , TOTRANSAMOUNT numeric @@ -136,7 +138,7 @@ CREATE INDEX IDX_CHECKINGACCOUNT_TRANSDATE ON CHECKINGACCOUNT (TRANSDATE); -- Describe CURRENCYHISTORY CREATE TABLE CURRENCYHISTORY( CURRHISTID INTEGER PRIMARY KEY -, CURRENCYID INTEGER NOT NULL +, CURRENCYID INTEGER NOT NULL REFERENCES CURRENCYFORMATS , CURRDATE TEXT NOT NULL , CURRVALUE NUMERIC NOT NULL , CURRUPDTYPE INTEGER @@ -455,17 +457,17 @@ CREATE INDEX IDX_INFOTABLE_INFONAME ON INFOTABLE(INFONAME); CREATE TABLE PAYEE( PAYEEID integer primary key , PAYEENAME TEXT COLLATE NOCASE NOT NULL UNIQUE -, CATEGID integer -, SUBCATEGID integer +, CATEGID integer REFERENCES CATEGORY +, SUBCATEGID integer REFERENCES SUBCATEGORY ); CREATE INDEX IDX_PAYEE_INFONAME ON PAYEE(PAYEENAME); -- Describe SPLITTRANSACTIONS CREATE TABLE SPLITTRANSACTIONS( SPLITTRANSID integer primary key -, TRANSID integer NOT NULL -, CATEGID integer -, SUBCATEGID integer +, TRANSID integer NOT NULL REFERENCES CHECKINGACCOUNT +, CATEGID integer REFERENCES CATEGORY +, SUBCATEGID integer REFERENCES SUBCATEGORY , SPLITTRANSAMOUNT numeric ); CREATE INDEX IDX_SPLITTRANSACTIONS_TRANSID ON SPLITTRANSACTIONS(TRANSID); @@ -473,7 +475,7 @@ CREATE INDEX IDX_SPLITTRANSACTIONS_TRANSID ON SPLITTRANSACTIONS(TRANSID); -- Describe STOCK CREATE TABLE STOCK( STOCKID integer primary key -, HELDAT integer +, HELDAT integer REFERENCES ACCOUNTLIST , PURCHASEDATE TEXT NOT NULL , STOCKNAME TEXT COLLATE NOCASE NOT NULL , SYMBOL TEXT @@ -489,7 +491,7 @@ CREATE INDEX IDX_STOCK_HELDAT ON STOCK(HELDAT); -- Describe STOCKHISTORY CREATE TABLE STOCKHISTORY( HISTID integer primary key -, SYMBOL TEXT NOT NULL +, SYMBOL TEXT NOT NULL REFERENCES STOCK(SYMBOL) , DATE TEXT NOT NULL , VALUE numeric NOT NULL , UPDTYPE integer @@ -501,7 +503,7 @@ CREATE INDEX IDX_STOCKHISTORY_SYMBOL ON STOCKHISTORY(SYMBOL); CREATE TABLE SUBCATEGORY( SUBCATEGID integer primary key , SUBCATEGNAME TEXT COLLATE NOCASE NOT NULL -, CATEGID integer NOT NULL +, CATEGID integer NOT NULL REFERENCES CATEGORY , UNIQUE(CATEGID, SUBCATEGNAME) ); CREATE INDEX IDX_SUBCATEGORY_CATEGID ON SUBCATEGORY(CATEGID); @@ -592,7 +594,7 @@ CREATE INDEX IDX_USAGE_DATE ON USAGE_V1 (USAGEDATE); -- Asset Classes CREATE TABLE ASSETCLASS ( ID INTEGER primary key -, PARENTID INTEGER +, PARENTID INTEGER REFERENCES ASSETCLASS , NAME TEXT COLLATE NOCASE NOT NULL , ALLOCATION REAL , SORTORDER INTEGER @@ -601,8 +603,8 @@ ID INTEGER primary key -- Asset Class / Stock link table CREATE TABLE ASSETCLASS_STOCK ( ID INTEGER primary key -, ASSETCLASSID INTEGER NOT NULL -, STOCKSYMBOL TEXT UNIQUE +, ASSETCLASSID INTEGER NOT NULL REFERENCES ASSETCLASS +, STOCKSYMBOL TEXT UNIQUE REFERENCES STOCK(SYMBOL) ); -- Describe CUSTOMFIELD @@ -618,7 +620,7 @@ CREATE INDEX IDX_CUSTOMFIELD_REF ON CUSTOMFIELD (REFTYPE); -- Describe CUSTOMFIELDDATA CREATE TABLE CUSTOMFIELDDATA ( FIELDATADID INTEGER NOT NULL PRIMARY KEY -, FIELDID INTEGER NOT NULL +, FIELDID INTEGER NOT NULL REFERENCES CUSTOMFIELD , REFID INTEGER NOT NULL , CONTENT TEXT , UNIQUE(FIELDID, REFID) @@ -627,8 +629,8 @@ CREATE INDEX IDX_CUSTOMFIELDDATA_REF ON CUSTOMFIELDDATA (FIELDID, REFID); -- describe TRANSACTIONLINK CREATE TABLE TRANSLINK ( -TRANSLINKID integer NOT NULL primary key -, CHECKINGACCOUNTID integer NOT NULL +TRANSLINKID integer NOT NULL primary key +, CHECKINGACCOUNTID integer NOT NULL REFERENCES CHECKINGACCOUNT , LINKTYPE TEXT NOT NULL /* Asset, Stock */ , LINKRECORDID integer NOT NULL ); @@ -638,7 +640,7 @@ CREATE INDEX IDX_CHECKINGACCOUNT ON TRANSLINK (CHECKINGACCOUNTID); -- describe SHAREINFO CREATE TABLE SHAREINFO ( SHAREINFOID integer NOT NULL primary key -, CHECKINGACCOUNTID integer NOT NULL +, CHECKINGACCOUNTID integer NOT NULL REFERENCES CHECKINGACCOUNT , SHARENUMBER numeric , SHAREPRICE numeric , SHARECOMMISSION numeric