Ini lebih merupakan pertanyaan yang membutuhkan umpan balik. Saya merancang basis data yang menangani beberapa gateway pembayaran. Gateway pembayaran sebagian besar membutuhkan tabel untuk detail pesanan sebelum melakukan pembayaran (ini umum untuk semua PG), dan tabel untuk detail transaksi, untuk menyimpan respons setelah melakukan pembayaran.
Sekarang untuk menangani beberapa gateway pembayaran, saya bisa menyimpan satu tabel transaksi, mengisinya dengan semua bidang yang tersedia dari semua gateway pembayaran dan bidang yang menyebutkan dari mana PG baris tersebut berasal;
Atau, saya bisa membuat tabel transaksi terpisah untuk masing-masing PG dengan awalan seperti paypal_
atau bank_
lain - lain, masing-masing memiliki bidang yang dibutuhkan masing-masing.
Saya hanya tidak yakin mana cara yang lebih optimal untuk melakukannya. Juga perlu mempelajarinya untuk skenario serupa yang mungkin saya temui di masa depan.
sumber
paypal_transaction_id
,bank_transaction_id
dll. Kami tidak memiliki gateway pembayaran terlalu banyak, jadi itu berhasil bagi kami. Mungkin tidak bekerja dengan mereka yang mendukung banyak Pg.Jawaban:
Itu tergantung pada seberapa berbeda data antara jenis pembayaran.
Untuk situs yang saya dukung di tempat kerja, kami memiliki satu tabel yang menyimpan data untuk semua jenis pembayaran. Itu berhasil bagi kami karena jenis pembayaran kami pada dasarnya adalah 4 jenis kartu kredit dan pesanan pembelian perusahaan. Sebagian besar pelanggan kami membayar dengan kartu kredit, jadi tidak ada banyak penyimpangan dalam data. Tentu saja, pertanyaan untuk pelanggan kartu kredit tersebut selalu menghasilkan nilai NULL di bidang PONumber. Demikian juga, pertanyaan untuk pelanggan PO menghasilkan NULL di semua bidang terkait kartu kredit.
Jika ada banyak bidang berbeda dalam data Anda, Anda bisa mencoba satu tabel transaksi utama dengan masing-masing tabel untuk setiap gateway pembayaran. Setiap tabel jenis gateway pembayaran akan memiliki kunci asing transaction_id, yang akan menautkan kembali ke tabel master transaksi.
Di sisi lain jika semua jenis gateway pembayaran Anda memiliki bidang yang sama, maka saya akan tetap menggunakan satu tabel transaksi.
sumber