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 plusieursENTRIESUn
ENTRYpeut être unCREDITouDEBIT- Une
ENTRYdate a été créditée ou débitée - Un
ENTRYa un seulPAYEE Un
ENTRYpeut être associé à unBUDGET CATEGORYA
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 montantA
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 montantA
PAYEEa un nomA
BUDGETa beaucoupBUDGET CATEGORIESA
BUDGETne peut être associé qu'à un seul mois civilUn
BUDGET CATEGORYpeut contenir plusieursENTRIES- A
BUDGET CATEGORYa un nom A
BUDGET CATEGORYa unBUDGETmontantA
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 BUDGETA
FORECASTED DAYa une seule date- A
FORECASTED DAYpeut avoir plusieursFORECASTED DEBITS A
FORECASTED DAYpeut avoir plusieursFORECASTED CREDITSA
FORECASTED DEBITa un montant- A
FORECASTED DEBITa une description - A
FORECASTED DEBITa unFORECASTED BUDGET CATEGORY - A
FORECASTED DEBITa un seulPAYEE Un
FORECASTED DEBITpeut se reproduireA
FORECASTED CREDITa un montant- A
FORECASTED CREDITa une description - A
FORECASTED CREDITa unFORECASTED BUDGET CATEGORY - A
FORECASTED CREDITa un seulPAYEE Un
FORECASTED CREDITpeut se reproduireA
FORECASTED BUDGETa beaucoupFORECASTED BUDGET CATEGORIESA
FORECASTED BUDGET CATEGORYpeut avoir plusieursPAYEESA
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.
- Chaque budget peut contenir plus d'une catégorie de budget. J'ai ajouté une
isActivecolonne sur les deuxBudgetsetBudgetCategoriesau 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
DebitsetCreditscomme 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 dansScheduledTransactionset un montant réel dans l'unDebitsou l' autreCredits.
- 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.

