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
ACCOUNT
peut avoir plusieursENTRIES
Un
ENTRY
peut être unCREDIT
ouDEBIT
- Une
ENTRY
date a été créditée ou débitée - Un
ENTRY
a un seulPAYEE
Un
ENTRY
peut être associé à unBUDGET CATEGORY
A
CREDIT
a un montant deENTRY
- A
CREDIT
a une description duENTRY
- Un
CREDIT
peut être programmé dans le futur A
CREDIT
peut se reproduire en fréquence et / ou en montantA
DEBIT
a un montant deENTRY
- A
DEBIT
a une description duENTRY
- Un
DEBIT
peut être programmé dans le futur A
DEBIT
peut se reproduire en fréquence et / ou en montantA
PAYEE
a un nomA
BUDGET
a beaucoupBUDGET CATEGORIES
A
BUDGET
ne peut être associé qu'à un seul mois civilUn
BUDGET CATEGORY
peut contenir plusieursENTRIES
- A
BUDGET CATEGORY
a un nom A
BUDGET CATEGORY
a unBUDGET
montantA
FORECAST
a une date de début- A
FORECAST
a une date de fin - A
FORECAST
a un équilibre de départ - A
FORECAST
a beaucoupFORECASTED DAYS
A
FORECAST
a un seulFORECASTED BUDGET
A
FORECASTED DAY
a une seule date- A
FORECASTED DAY
peut avoir plusieursFORECASTED DEBITS
A
FORECASTED DAY
peut avoir plusieursFORECASTED CREDITS
A
FORECASTED DEBIT
a un montant- A
FORECASTED DEBIT
a une description - A
FORECASTED DEBIT
a unFORECASTED BUDGET CATEGORY
- A
FORECASTED DEBIT
a un seulPAYEE
Un
FORECASTED DEBIT
peut se reproduireA
FORECASTED CREDIT
a un montant- A
FORECASTED CREDIT
a une description - A
FORECASTED CREDIT
a unFORECASTED BUDGET CATEGORY
- A
FORECASTED CREDIT
a un seulPAYEE
Un
FORECASTED CREDIT
peut se reproduireA
FORECASTED BUDGET
a beaucoupFORECASTED BUDGET CATEGORIES
A
FORECASTED BUDGET CATEGORY
peut avoir plusieursPAYEES
A
PAYEE
a 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
isActive
colonne sur les deuxBudgets
etBudgetCategories
au 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
Debits
etCredits
comme 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
ScheduledTransactions
tableau qui m'a permis d'avoir deux montants différents, un montant prévu dansScheduledTransactions
et un montant réel dans l'unDebits
ou 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.