Sto cercando di saperne di più sui database relazionali e ho pensato che non ci fosse modo migliore per imparare di fare davvero qualcosa. Ho deciso di fare un tentativo personale di esaminare Contabilità e previsione del budget personale. Finora ho svolto alcune ricerche e vorrei avere alcune informazioni sulla mia attuale progettazione e normalizzazione del database.
Quali sono i tuoi pensieri e suggerimenti sul mio attuale Database Design? Ho incluso alcune informazioni di seguito per aiutarti meglio ad aiutarmi :)
Divulgazione: questo è un progetto personale. Non per i compiti o per il lavoro.
Fatti di affari
Una banca
ACCOUNTpuò averne molteENTRIESUn
ENTRYpuò essere unCREDIToDEBIT- An
ENTRYha una data di accredito o addebito - An
ENTRYha un singoloPAYEE Un
ENTRYpuò essere associato a unBUDGET CATEGORYA
CREDITha un importo diENTRY- A
CREDITha una descrizione diENTRY - A
CREDITpuò essere programmato in futuro A
CREDITpuò ripetersi in frequenza e / o quantitàA
DEBITha un importo diENTRY- A
DEBITha una descrizione diENTRY - A
DEBITpuò essere programmato in futuro A
DEBITpuò ripetersi in frequenza e / o quantitàA
PAYEEha un nomeA
BUDGETha moltiBUDGET CATEGORIESA
BUDGETpuò essere associato solo a un singolo mese di calendarioA
BUDGET CATEGORYpuò contenere moltiENTRIES- A
BUDGET CATEGORYha un nome A
BUDGET CATEGORYha unBUDGETimportoA
FORECASTha una data di inizio- A
FORECASTha una data di fine - A
FORECASTha un saldo iniziale - A
FORECASTha moltiFORECASTED DAYS A
FORECASTha un singoloFORECASTED BUDGETA
FORECASTED DAYha una sola data- A
FORECASTED DAYpuò averne moltiFORECASTED DEBITS A
FORECASTED DAYpuò averne moltiFORECASTED CREDITSA
FORECASTED DEBITha un importo- A
FORECASTED DEBITha una descrizione - A
FORECASTED DEBITha aFORECASTED BUDGET CATEGORY - A
FORECASTED DEBITha un singoloPAYEE A
FORECASTED DEBITpuò ripetersiA
FORECASTED CREDITha un importo- A
FORECASTED CREDITha una descrizione - A
FORECASTED CREDITha aFORECASTED BUDGET CATEGORY - A
FORECASTED CREDITha un singoloPAYEE A
FORECASTED CREDITpuò ripetersiA
FORECASTED BUDGETha moltiFORECASTED BUDGET CATEGORIESA
FORECASTED BUDGET CATEGORYpuò averne moltiPAYEESA
PAYEEha un nome
Dati di esempio
+----------------+----------+------------------+----------------+---------------+--------------+------------------+
| Account Number | Date | Description | Payee Name | Credit Amount | Debit Amount | Budget Category |
+----------------+----------+------------------+----------------+---------------+--------------+------------------+
| 25178 | 10/01/18 | Payroll | My Work | $1000.00 | | Income |
| 25178 | 10/02/18 | McRibs for Lunch | McDonalds | | $13.12 | Fast Food |
| 25178 | 10/03/18 | Electric Bill | FPL | | $133.68 | Electric |
| 25178 | 10/04/18 | Water Bill | City Water Co. | | $58.12 | Water and Sewage |
| 25178 | 10/05/18 | Clothes for Work | Target | | $65.02 | Clothes |
| 99875 | 10/28/18 | Bonus Check | My Work | $1300.00 | | Income |
+----------------+----------+------------------+----------------+---------------+--------------+------------------+
+----------+-------------+--------------+---------------+-----------------+------------------+
| Due Date | Payee | Debit Amount | Credit Amount | Budget Category | Re-Occurs On Day |
+----------+-------------+--------------+---------------+-----------------+------------------+
| 10/28/18 | Mortgage Co | $1500.00 | | Mortgage | 28 |
| 10/01/18 | My Work | | $990.00 | Income | 1 |
| 10/03/18 | FPL | $110.00 | | Electric | 3 |
+----------+-------------+--------------+---------------+-----------------+------------------+
Progettazione del database corrente
Ho pensato che sarebbe stato utile sapere PERCHÉ ho fatto qualcosa in modo che tu possa capire la mia logica e il mio ragionamento.
- Ogni budget può contenere più di 1 categoria di budget. Ho aggiunto una
isActivecolonna su entrambiBudgetseBudgetCategoriesnel caso volessi riattivare un budget o una categoria di budget diversi. - Ho diviso le transazioni in due tabelle di divisione molto simili
DebitseCreditscome ho visto c'erano due tipi di transazioni. - Per consentire e tenere traccia delle transazioni pianificate o ricorrenti, ho creato una
ScheduledTransactionstabella che mi ha permesso di avere due importi diversi, un importo previsto inScheduledTransactionse un importo effettivo in unoDebitsoCredits.
- Ho pensato che ogni previsione avrebbe bisogno di una data di inizio e di fine, nonché di un saldo iniziale.
- Ogni giorno dovrebbe essere previsto per poter determinare la somma di debiti e crediti.
- Penso che avrei potuto usare le altre tabelle e aggiungere alcune colonne isForecasted e avrebbe funzionato allo stesso modo. Ho deciso di non seguire questa strada per disaccoppiare i due nel caso in cui fosse necessario apportare modifiche, nonché se si trattasse di un'applicazione su larga scala che legge e scrive grandi previsioni nelle stesse tabelle delle transazioni effettive che riterrei possano causare un registro dei problemi di prestazioni.

