web-dev-qa-db-fra.com

Conception de base de données pour examen de la prévision

J'essaie d'en apprendre davantage sur les bases de données relationnelles et j'ai pensé qu'il n'y a pas de meilleur moyen d'apprendre à faire quelque chose. J'ai décidé de tenter une tentative personnelle de regarder la comptabilité et la prévision du budget personnel. J'ai fait des recherches jusqu'à présent et j'aimerais avoir une idée de ma conception et de la normalisation actuelles de la base de données.

Quelles sont vos pensées et suggestions sur ma conception actuelle de la base de données? J'ai inclus certaines informations ci-dessous pour mieux vous aider à m'aider :)

DIVULGATION: Ceci est un projet personnel. Pas pour les devoirs ou pour le travail.

Faits commerciaux

  • Une banque ACCOUNT peut avoir beaucoup ENTRIES

  • Un ENTRY peut être un CREDIT ou DEBIT

  • Un ENTRY a une date à laquelle il a été crédité ou débité sur
  • Un ENTRY a un seul PAYEE
  • Un ENTRY peut être associé à un BUDGET CATEGORY

  • A CREDIT a une quantité de ENTRY

  • A CREDIT a une description du ENTRY
  • A CREDIT peut être programmé à l'avenir
  • Un CREDIT peut être récurrent de la fréquence et du montant

  • A DEBIT a une quantité de ENTRY

  • A DEBIT a une description du ENTRY
  • A DEBIT peut être programmé à l'avenir
  • Un DEBIT peut être récurrent de la fréquence et du montant

  • A PAYEE a un nom

  • Un BUDGET a beaucoup BUDGET CATEGORIES

  • Un BUDGET ne peut être associé qu'à un seul mois civil

  • UNE BUDGET CATEGORY peut contenir beaucoup ENTRIES

  • UNE BUDGET CATEGORY a un nom
  • UNE BUDGET CATEGORY a un BUDGET montant

  • A FORECAST a une date de début

  • A FORECAST a une date de fin
  • A FORECAST a un solde débutant
  • A FORECAST a beaucoup FORECASTED DAYS
  • A FORECAST a un seul FORECASTED BUDGET

  • UNE FORECASTED DAY a une seule date

  • UNE FORECASTED DAY peut avoir beaucoup FORECASTED DEBITS
  • UNE FORECASTED DAY peut avoir beaucoup FORECASTED CREDITS

  • UNE FORECASTED DEBIT a un montant

  • UNE FORECASTED DEBIT a une description
  • UNE FORECASTED DEBIT a un FORECASTED BUDGET CATEGORY
  • UNE FORECASTED DEBIT a un seul PAYEE
  • UNE FORECASTED DEBIT peut être récurrent

  • UNE FORECASTED CREDIT a un montant

  • UNE FORECASTED CREDIT a une description
  • UNE FORECASTED CREDIT a un FORECASTED BUDGET CATEGORY
  • UNE FORECASTED CREDIT a un seul PAYEE
  • UNE FORECASTED CREDIT peut être récurrent

  • UNE FORECASTED BUDGET a beaucoup FORECASTED BUDGET CATEGORIES

  • UNE FORECASTED BUDGET CATEGORY peut avoir beaucoup PAYEES

  • A PAYEE a un nom

Échantillons de données

+----------------+----------+------------------+----------------+---------------+--------------+------------------+
| 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 |
+----------+-------------+--------------+---------------+-----------------+------------------+

Conception actuelle de la base de données

Je pensais que ce serait utile de savoir pourquoi j'ai fait quelque chose afin que vous puissiez comprendre ma logique et ma raisonnement.

Revision4-Forecast

  • Chaque budget peut contenir plus de 1 catégorie de budget. J'ai ajouté une colonne isActive sur les deux Budgets et BudgetCategories au cas où je souhaitais réactiver une catégorie de budget ou de budget différent.
  • J'ai séparé des transactions en deux tables fractionnées très longues Debits et Credits Comme je l'ai vu, il y avait deux types de transactions.
  • Afin d'autoriser et de suivre des transactions planifiées ou récurrentes, j'ai créé une table ScheduledTransactions qui m'a permis d'avoir deux quantités différentes, une quantité attendue en ScheduledTransactions et un montant réel dans l'un ou l'autre des Debits ou Credits.

Revision4-Main

  • Je pensais que chaque prévision aurait besoin d'une date de début et de fin, ainsi que d'un solde de départ.
  • Chaque jour, il faudrait prévoir de pouvoir déterminer la somme des débits et des crédits.
  • Je pense que j'aurais pu utiliser les autres tables et ajouter quelques colonnes inforécasées et cela aurait fonctionné de la même manière. J'ai décidé de ne pas y aller pour découpler les deux au cas où aucun changement devait être apporté, ainsi que s'il s'agissait d'une application à grande échelle de lecture et d'écriture de grandes prévisions dans les mêmes tables que les transactions réelles que je penserais causerait une Journal des problèmes de performance.
8
Jon H

Plus généralement: je commencerais par une liste de questions que je veux répondre. Comme:

Qui suis-je payé le plus? Est-ce que j'ai payé la facture de transport d'épuration ce mois-ci? Quelles sont mes exigences en espèces pour ce mois-ci? Aurai-je besoin de sortir et de tuer des trucs pour la nourriture?

La nature de ces questions devrait conduire la conception du schéma.

Cela dit, ce schéma a l'air plutôt bien.

Je suis d'accord avec l'idée que les débits et les crédits pourraient être dans une seule table.

2
Hawkins Dale

J'identifierais les bénéficiaires, en termes de budget et de type de compte. Dites que vous devez énumérer ou consulter les bénéficiaires. J'aurais aussi une colonne active pour les bénéficiaires. Il pourrait être agréable de savoir quel compte paie quel budget à l'avenir.

1
Eurico