Progettazione del database per la revisione delle previsioni


8

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 molteENTRIES

  • Un ENTRYpuò essere un CREDIToDEBIT

  • An ENTRYha una data di accredito o addebito
  • An ENTRYha un singoloPAYEE
  • Un ENTRYpuò essere associato a unBUDGET CATEGORY

  • A 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 nome

  • A BUDGETha moltiBUDGET CATEGORIES

  • A BUDGETpuò essere associato solo a un singolo mese di calendario

  • A BUDGET CATEGORYpuò contenere moltiENTRIES

  • A BUDGET CATEGORYha un nome
  • A BUDGET CATEGORYha un BUDGETimporto

  • A FORECASTha una data di inizio

  • A FORECASTha una data di fine
  • A FORECASTha un saldo iniziale
  • A FORECASTha moltiFORECASTED DAYS
  • A FORECASTha un singoloFORECASTED BUDGET

  • A FORECASTED DAYha una sola data

  • A FORECASTED DAYpuò averne moltiFORECASTED DEBITS
  • A FORECASTED DAYpuò averne moltiFORECASTED CREDITS

  • A FORECASTED DEBITha un importo

  • A FORECASTED DEBITha una descrizione
  • A FORECASTED DEBITha aFORECASTED BUDGET CATEGORY
  • A FORECASTED DEBITha un singoloPAYEE
  • A FORECASTED DEBITpuò ripetersi

  • A FORECASTED CREDITha un importo

  • A FORECASTED CREDITha una descrizione
  • A FORECASTED CREDITha aFORECASTED BUDGET CATEGORY
  • A FORECASTED CREDITha un singoloPAYEE
  • A FORECASTED CREDITpuò ripetersi

  • A FORECASTED BUDGETha moltiFORECASTED BUDGET CATEGORIES

  • A FORECASTED BUDGET CATEGORYpuò averne moltiPAYEES

  • A 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.

Revision4 Previsioni

  • Ogni budget può contenere più di 1 categoria di budget. Ho aggiunto una isActivecolonna su entrambi Budgetse BudgetCategoriesnel caso volessi riattivare un budget o una categoria di budget diversi.
  • Ho diviso le transazioni in due tabelle di divisione molto simili Debitse Creditscome 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 in ScheduledTransactionse un importo effettivo in uno Debitso Credits.

Revision4-Main

  • 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.

solo un pensiero hai bisogno di colonne di metadati in ogni tabella come quando la riga è stata inserita, chi l'ha inserita, quando è stato aggiornato l'ultima volta, chi l'ha aggiornata, quale processo ecc?
Biju jose,

Dal momento che questo è per uso personale di sviluppo non ne avrò bisogno.
Jon H,

1
Lo schema e le regole di normalizzazione dipendono da come si sceglie di modellare il problema. Tradizionalmente avresti tabelle separate per effettivi, budget e previsioni. Ma potresti averli tutti in una singola tabella con un attributo o un flag per indicare la differenza. Lo stesso con DR / CR. Stessa tabella ma utilizza i valori +/- per indicare l'I / O. Una volta passati alla contabilità in partita doppia, avrai bisogno di entrambi i lati di un'equazione per bilanciare e creare conti. Vai così lontano?
Sir Swears molto

1
Penso che questo sia un progetto molto ambizioso da affrontare ai fini dell'apprendimento delle basi di dati. La progettazione e la normalizzazione di Db Schema sono una cosa, un'altra accurata registrazione è un'altra, la contabilità e le previsioni sono ancora più complesse. Qual è la tua priorità?
Sir Swears molto

@ SirSwears-molto Sì, non vado così lontano. Pensa solo a essere in grado di tracciare le tue finanze personali in vari gruppi di budget ed essere in grado di proiettare semplici scenari se ... Come se avessi un nuovo pagamento per l'auto e andassi in vacanza 4 mesi? Come sarebbe il mio rapporto reddito / debito su una frequenza settimana per settimana o mese per mese. O cosa succede se ho cambiato il mio budget alimentare da 500 a 600?
Jon H,

Risposte:


2

Più in generale: vorrei iniziare con un elenco di domande a cui voglio rispondere. Piace:

Chi sto pagando di più? Ho pagato la fattura per il trasporto delle acque reflue questo mese? Quali sono i miei requisiti di cassa per questo mese? Dovrò uscire e uccidere cose per il cibo?

La natura di queste domande dovrebbe guidare la progettazione dello schema.

Detto questo, questo schema sembra piuttosto buono.

Concordo con l'idea che i debiti e i crediti potrebbero essere in un'unica tabella.


1

Vorrei identificare i beneficiari, in termini di budget e tipo di conto. Di 'che devi elencare o consultare i beneficiari. Avrei anche una colonna attiva per i beneficiari. Potrebbe essere bello sapere quale account paga quale budget in futuro.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.