Conception de la base de données pour l'examen des prévisions


8

J'essaie d'en savoir plus sur les bases de données relationnelles et j'ai pensé qu'il n'y avait pas de meilleure façon d'apprendre que de faire quelque chose. J'ai décidé de faire une tentative personnelle pour examiner la comptabilité et les prévisions budgétaires personnelles. J'ai fait des recherches jusqu'à présent et j'aimerais avoir un aperçu de ma conception et normalisation de base de données actuelle.

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

Divulgation: Il s'agit d'un projet personnel. Pas pour les devoirs ou pour le travail.

Faits commerciaux

  • Une banque ACCOUNTpeut avoir plusieursENTRIES

  • Un ENTRYpeut être un CREDITouDEBIT

  • Une ENTRYdate a été créditée ou débitée
  • Un ENTRYa un seulPAYEE
  • Un ENTRYpeut être associé à unBUDGET CATEGORY

  • A CREDITa un montant deENTRY

  • A CREDITa une description duENTRY
  • Un CREDITpeut être programmé dans le futur
  • A CREDITpeut se reproduire en fréquence et / ou en montant

  • A DEBITa un montant deENTRY

  • A DEBITa une description duENTRY
  • Un DEBITpeut être programmé dans le futur
  • A DEBITpeut se reproduire en fréquence et / ou en montant

  • A PAYEEa un nom

  • A BUDGETa beaucoupBUDGET CATEGORIES

  • A BUDGETne peut être associé qu'à un seul mois civil

  • Un BUDGET CATEGORYpeut contenir plusieursENTRIES

  • A BUDGET CATEGORYa un nom
  • A BUDGET CATEGORYa un BUDGETmontant

  • A FORECASTa une date de début

  • A FORECASTa une date de fin
  • A FORECASTa un équilibre de départ
  • A FORECASTa beaucoupFORECASTED DAYS
  • A FORECASTa un seulFORECASTED BUDGET

  • A FORECASTED DAYa une seule date

  • A FORECASTED DAYpeut avoir plusieursFORECASTED DEBITS
  • A FORECASTED DAYpeut avoir plusieursFORECASTED CREDITS

  • A FORECASTED DEBITa un montant

  • A FORECASTED DEBITa une description
  • A FORECASTED DEBITa unFORECASTED BUDGET CATEGORY
  • A FORECASTED DEBITa un seulPAYEE
  • Un FORECASTED DEBITpeut se reproduire

  • A FORECASTED CREDITa un montant

  • A FORECASTED CREDITa une description
  • A FORECASTED CREDITa unFORECASTED BUDGET CATEGORY
  • A FORECASTED CREDITa un seulPAYEE
  • Un FORECASTED CREDITpeut se reproduire

  • A FORECASTED BUDGETa beaucoupFORECASTED BUDGET CATEGORIES

  • A FORECASTED BUDGET CATEGORYpeut avoir plusieursPAYEES

  • A PAYEEa un nom

Exemples 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

J'ai pensé qu'il serait utile de savoir POURQUOI j'ai fait quelque chose pour que vous puissiez comprendre ma logique et mon raisonnement.

Revision4-Forecast

  • Chaque budget peut contenir plus d'une catégorie de budget. J'ai ajouté une isActivecolonne sur les deux Budgetset BudgetCategoriesau cas où je souhaiterais réactiver un budget ou une catégorie de budget différent.
  • J'ai séparé les transactions en deux tables divisées très semblables Debitset Creditscomme je l'ai vu, il y avait deux types de transactions.
  • Afin d'autoriser et de suivre les transactions planifiées ou récurrentes, j'ai créé un ScheduledTransactionstableau qui m'a permis d'avoir deux montants différents, un montant prévu dans ScheduledTransactionset un montant réel dans l'un Debitsou l' autre Credits.

Revision4-Main

  • J'ai pensé que chaque prévision aurait besoin d'une date de début et de fin ainsi que d'un solde de départ.
  • Il faudrait prévoir chaque jour pour 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 isForecasted et cela aurait fonctionné de la même manière. J'ai décidé de ne pas suivre cette voie afin de découpler les deux au cas où des changements devraient être apportés, ainsi que s'il s'agissait d'une application à grande échelle lisant et écrivant de grandes prévisions dans les mêmes tableaux que les transactions réelles, je pense que cela provoquerait une journal des problèmes de performances.

juste une pensée avez-vous besoin de colonnes de métadonnées dans chaque table comme lorsque la ligne a été insérée, qui l'a insérée, lors de la dernière mise à jour, qui l'a mise à jour, quel processus, etc.?
Biju jose

Comme c'est pour le développement personnel, je n'en ai pas besoin.
Jon H

1
Le schéma et les règles de normalisation dépendent de la façon dont vous choisissez de modéliser le problème. Traditionnellement, vous disposiez de tableaux séparés pour les chiffres réels, les budgets et les prévisions. Mais vous pouvez les avoir tous dans une seule table avec un attribut ou un indicateur pour indiquer la différence. Idem avec DR / CR. Même tableau mais utilisez des valeurs +/- pour indiquer les E / S. Une fois que vous passez à la comptabilité à double entrée, vous aurez besoin des deux côtés d'une équation pour équilibrer et créer des comptes. Allez-vous aussi loin?
Sir Swears-a-lot

1
Je pense que c'est un projet très ambitieux à aborder dans le but d'apprendre sur les bases de données. La conception et la normalisation du schéma Db est une chose, la tenue de registres précise en est une autre, la comptabilité et les prévisions sont encore plus complexes. Quelle est votre priorité?
Sir Swears-a-lot

@ SirSwears-a-lot Ouais je ne vais pas aussi loin. Pensez simplement à pouvoir suivre vos finances personnelles dans différents groupes budgétaires et à projeter simplement des scénarios comme ... Et si je recevais un nouveau paiement pour une voiture et que je partais en vacances 4 mois plus tard? À quoi ressemblerait mon ratio revenu / dette sur une fréquence d'une semaine à l'autre ou d'un mois à l'autre. Ou que faire si j'ai changé mon budget d'épicerie de 500 à 600?
Jon H

Réponses:


2

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

Qui est-ce que je paie le plus? Ai-je payé la facture de transport des eaux usées ce mois-ci? Quels sont mes besoins en espèces pour ce mois? Dois-je sortir et tuer des trucs pour se nourrir?

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

Cela dit, ce schéma semble assez bon.

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


1

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

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.