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
ACCOUNT
può averne molteENTRIES
Un
ENTRY
può essere unCREDIT
oDEBIT
- An
ENTRY
ha una data di accredito o addebito - An
ENTRY
ha un singoloPAYEE
Un
ENTRY
può essere associato a unBUDGET CATEGORY
A
CREDIT
ha un importo diENTRY
- A
CREDIT
ha una descrizione diENTRY
- A
CREDIT
può essere programmato in futuro A
CREDIT
può ripetersi in frequenza e / o quantitàA
DEBIT
ha un importo diENTRY
- A
DEBIT
ha una descrizione diENTRY
- A
DEBIT
può essere programmato in futuro A
DEBIT
può ripetersi in frequenza e / o quantitàA
PAYEE
ha un nomeA
BUDGET
ha moltiBUDGET CATEGORIES
A
BUDGET
può essere associato solo a un singolo mese di calendarioA
BUDGET CATEGORY
può contenere moltiENTRIES
- A
BUDGET CATEGORY
ha un nome A
BUDGET CATEGORY
ha unBUDGET
importoA
FORECAST
ha una data di inizio- A
FORECAST
ha una data di fine - A
FORECAST
ha un saldo iniziale - A
FORECAST
ha moltiFORECASTED DAYS
A
FORECAST
ha un singoloFORECASTED BUDGET
A
FORECASTED DAY
ha una sola data- A
FORECASTED DAY
può averne moltiFORECASTED DEBITS
A
FORECASTED DAY
può averne moltiFORECASTED CREDITS
A
FORECASTED DEBIT
ha un importo- A
FORECASTED DEBIT
ha una descrizione - A
FORECASTED DEBIT
ha aFORECASTED BUDGET CATEGORY
- A
FORECASTED DEBIT
ha un singoloPAYEE
A
FORECASTED DEBIT
può ripetersiA
FORECASTED CREDIT
ha un importo- A
FORECASTED CREDIT
ha una descrizione - A
FORECASTED CREDIT
ha aFORECASTED BUDGET CATEGORY
- A
FORECASTED CREDIT
ha un singoloPAYEE
A
FORECASTED CREDIT
può ripetersiA
FORECASTED BUDGET
ha moltiFORECASTED BUDGET CATEGORIES
A
FORECASTED BUDGET CATEGORY
può averne moltiPAYEES
A
PAYEE
ha 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
isActive
colonna su entrambiBudgets
eBudgetCategories
nel caso volessi riattivare un budget o una categoria di budget diversi. - Ho diviso le transazioni in due tabelle di divisione molto simili
Debits
eCredits
come ho visto c'erano due tipi di transazioni. - Per consentire e tenere traccia delle transazioni pianificate o ricorrenti, ho creato una
ScheduledTransactions
tabella che mi ha permesso di avere due importi diversi, un importo previsto inScheduledTransactions
e un importo effettivo in unoDebits
oCredits
.
- 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.