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
ACCOUNT
dapat memiliki banyakENTRIES
Sebuah
ENTRY
baik bisa menjadiCREDIT
atauDEBIT
- Sebuah
ENTRY
tanggal yang dikreditkan atau didebit - An
ENTRY
memiliki satuPAYEE
Sebuah
ENTRY
dapat dikaitkan denganBUDGET CATEGORY
A
CREDIT
memiliki jumlahENTRY
- A
CREDIT
memiliki deskripsiENTRY
- A
CREDIT
dapat dijadwalkan di masa mendatang A
CREDIT
dapat berulang dalam frekuensi dan atau jumlahA
DEBIT
memiliki jumlahENTRY
- A
DEBIT
memiliki deskripsiENTRY
- A
DEBIT
dapat dijadwalkan di masa mendatang A
DEBIT
dapat berulang dalam frekuensi dan atau jumlahA
PAYEE
memiliki namaA
BUDGET
memiliki banyakBUDGET CATEGORIES
A
BUDGET
hanya dapat dikaitkan dengan satu bulan kalenderA
BUDGET CATEGORY
bisa mengandung banyakENTRIES
- A
BUDGET CATEGORY
memiliki nama A
BUDGET CATEGORY
memilikiBUDGET
jumlahA
FORECAST
memiliki tanggal mulai- A
FORECAST
memiliki tanggal akhir - A
FORECAST
memiliki saldo awal - A
FORECAST
memiliki banyakFORECASTED DAYS
A
FORECAST
memiliki satuFORECASTED BUDGET
A
FORECASTED DAY
memiliki satu tanggal- A
FORECASTED DAY
dapat memiliki banyakFORECASTED DEBITS
A
FORECASTED DAY
dapat memiliki banyakFORECASTED CREDITS
A
FORECASTED DEBIT
memiliki jumlah- A
FORECASTED DEBIT
memiliki deskripsi - A
FORECASTED DEBIT
memiliki aFORECASTED BUDGET CATEGORY
- A
FORECASTED DEBIT
memiliki satuPAYEE
A
FORECASTED DEBIT
bisa terulang kembaliA
FORECASTED CREDIT
memiliki jumlah- A
FORECASTED CREDIT
memiliki deskripsi - A
FORECASTED CREDIT
memiliki aFORECASTED BUDGET CATEGORY
- A
FORECASTED CREDIT
memiliki satuPAYEE
A
FORECASTED CREDIT
bisa terulang kembaliA
FORECASTED BUDGET
memiliki banyakFORECASTED BUDGET CATEGORIES
A
FORECASTED BUDGET CATEGORY
dapat memiliki banyakPAYEES
A
PAYEE
memiliki 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
isActive
kolom pada keduanyaBudgets
danBudgetCategories
jika saya ingin mengaktifkan kembali anggaran atau kategori anggaran yang berbeda. - Saya memisahkan transaksi menjadi dua tabel split yang sangat mirip
Debits
danCredits
ketika saya melihat ada dua jenis transaksi. - Untuk mengizinkan dan melacak transaksi Terjadwal atau Berulang, saya membuat
ScheduledTransactions
tabel yang memungkinkan saya memiliki dua jumlah berbeda, jumlah yang diharapkanScheduledTransactions
dan jumlah aktual dalam salah satuDebits
atauCredits
.
- 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.
Jawaban:
Secara umum: Saya akan MULAI dengan daftar pertanyaan yang ingin saya jawab. Suka:
Siapa yang paling saya bayar? Apakah saya membayar tagihan pengangkutan limbah bulan ini? Apa persyaratan uang tunai saya untuk bulan ini? Apakah saya perlu keluar dan membunuh barang untuk makanan?
Sifat pertanyaan-pertanyaan ini harus mendorong desain skema.
Konon, skema ini terlihat cukup bagus.
Saya setuju dengan gagasan bahwa debit dan kredit bisa dalam satu tabel.
sumber
Saya akan mengidentifikasi penerima pembayaran, dalam hal anggaran dan jenis akun. Katakanlah Anda perlu mendaftar atau berkonsultasi dengan penerima pembayaran. Saya juga akan memiliki kolom aktif untuk penerima pembayaran. Mungkin menyenangkan mengetahui akun mana yang membayar anggaran berapa di masa mendatang.
sumber