Saya mencoba untuk belajar lebih banyak tentang Database Relasional dan saya pikir tidak ada cara yang lebih baik untuk belajar daripada benar-benar melakukan sesuatu. Saya memutuskan untuk membuat upaya pribadi untuk melihat Personal Budget Accounting and Forecasting. Saya telah melakukan beberapa penelitian sejauh ini dan ingin mendapatkan beberapa wawasan tentang Desain dan Normalisasi Database saya saat ini.
Apa pendapat dan saran Anda tentang Desain Database saya saat ini? Saya telah memasukkan beberapa informasi di bawah ini untuk membantu Anda membantu saya dengan lebih baik :)
Pengungkapan: Ini adalah proyek pribadi. Bukan untuk pekerjaan rumah atau untuk pekerjaan.
Fakta Bisnis
Bank
ACCOUNTdapat memiliki banyakENTRIESSebuah
ENTRYbaik bisa menjadiCREDITatauDEBIT- Sebuah
ENTRYtanggal yang dikreditkan atau didebit - An
ENTRYmemiliki satuPAYEE Sebuah
ENTRYdapat dikaitkan denganBUDGET CATEGORYA
CREDITmemiliki jumlahENTRY- A
CREDITmemiliki deskripsiENTRY - A
CREDITdapat dijadwalkan di masa mendatang A
CREDITdapat berulang dalam frekuensi dan atau jumlahA
DEBITmemiliki jumlahENTRY- A
DEBITmemiliki deskripsiENTRY - A
DEBITdapat dijadwalkan di masa mendatang A
DEBITdapat berulang dalam frekuensi dan atau jumlahA
PAYEEmemiliki namaA
BUDGETmemiliki banyakBUDGET CATEGORIESA
BUDGEThanya dapat dikaitkan dengan satu bulan kalenderA
BUDGET CATEGORYbisa mengandung banyakENTRIES- A
BUDGET CATEGORYmemiliki nama A
BUDGET CATEGORYmemilikiBUDGETjumlahA
FORECASTmemiliki tanggal mulai- A
FORECASTmemiliki tanggal akhir - A
FORECASTmemiliki saldo awal - A
FORECASTmemiliki banyakFORECASTED DAYS A
FORECASTmemiliki satuFORECASTED BUDGETA
FORECASTED DAYmemiliki satu tanggal- A
FORECASTED DAYdapat memiliki banyakFORECASTED DEBITS A
FORECASTED DAYdapat memiliki banyakFORECASTED CREDITSA
FORECASTED DEBITmemiliki jumlah- A
FORECASTED DEBITmemiliki deskripsi - A
FORECASTED DEBITmemiliki aFORECASTED BUDGET CATEGORY - A
FORECASTED DEBITmemiliki satuPAYEE A
FORECASTED DEBITbisa terulang kembaliA
FORECASTED CREDITmemiliki jumlah- A
FORECASTED CREDITmemiliki deskripsi - A
FORECASTED CREDITmemiliki aFORECASTED BUDGET CATEGORY - A
FORECASTED CREDITmemiliki satuPAYEE A
FORECASTED CREDITbisa terulang kembaliA
FORECASTED BUDGETmemiliki banyakFORECASTED BUDGET CATEGORIESA
FORECASTED BUDGET CATEGORYdapat memiliki banyakPAYEESA
PAYEEmemiliki nama
Contoh data
+----------------+----------+------------------+----------------+---------------+--------------+------------------+
| 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 |
+----------+-------------+--------------+---------------+-----------------+------------------+
Desain Basis Data Saat Ini
Saya pikir akan sangat membantu untuk mengetahui MENGAPA saya melakukan sesuatu sehingga Anda dapat memahami logika dan alasan saya.
- Setiap Anggaran dapat berisi lebih dari 1 Kategori Anggaran. Saya menambahkan
isActivekolom pada keduanyaBudgetsdanBudgetCategoriesjika saya ingin mengaktifkan kembali anggaran atau kategori anggaran yang berbeda. - Saya memisahkan transaksi menjadi dua tabel split yang sangat mirip
DebitsdanCreditsketika saya melihat ada dua jenis transaksi. - Untuk mengizinkan dan melacak transaksi Terjadwal atau Berulang, saya membuat
ScheduledTransactionstabel yang memungkinkan saya memiliki dua jumlah berbeda, jumlah yang diharapkanScheduledTransactionsdan jumlah aktual dalam salah satuDebitsatauCredits.
- Saya pikir setiap perkiraan akan membutuhkan tanggal mulai dan berakhir serta saldo awal.
- Setiap hari perlu diprediksi untuk dapat menentukan jumlah Debit dan Kredit.
- Saya pikir saya bisa menggunakan tabel lain dan menambahkan beberapa Kolom isForecasted dan itu akan bekerja sama. Saya memutuskan untuk tidak pergi ke rute itu untuk memisahkan keduanya jika ada perubahan yang perlu dilakukan serta jika ini adalah aplikasi skala besar membaca dan menulis perkiraan besar ke dalam tabel yang sama dengan transaksi aktual yang saya pikir akan menyebabkan log masalah kinerja.

