Perancangan skema untuk menangani beberapa gateway pembayaran

9

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.

Bibhas
sumber
Itu tergantung pada situasi Anda yang sebenarnya. Secara umum, lebih murah untuk memilih himpunan bagian dari satu tabel besar daripada menggabungkan banyak tabel kecil kecil bersama dengan UNION. Tetapi ada situasi di mana desain meja kecil bekerja lebih baik.
Walter Mitty
Apa yang kamu miliki sejauh ini?
Aaron
@ BryceAtNetwork23 Untuk saat ini, saya menangani dua PG dan saya memiliki tabel terpisah untuk keduanya. Tapi saya harus menambahkan lebih banyak PG di masa depan. Jadi berpikir jika saya harus terus melakukan ini, karena saya harus terus menambahkan lebih banyak tabel setiap kali. Ini adalah pilihan antara peningkatan jumlah tabel dan satu tabel dengan meningkatnya jumlah kolom dan catatan. Saya sedikit bingung.
Bibhas
@Bibhas, Apakah mungkin berbagi dengan kami solusi yang Anda gunakan? Saya memiliki keraguan yang sama.
Marcio Mazzucato
@MarcioSimao kami pergi dengan satu tabel dengan properti seperti paypal_transaction_id, bank_transaction_iddll. Kami tidak memiliki gateway pembayaran terlalu banyak, jadi itu berhasil bagi kami. Mungkin tidak bekerja dengan mereka yang mendukung banyak Pg.
Bibhas

Jawaban:

7

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.

Harun
sumber
1
Terima kasih sudah membereskannya. Saya kira itu tepat di depan saya, tetapi hanya membutuhkan seseorang untuk menunjukkannya. :)
Bibhas
@ BryceAtNetwork23, Jika saya memiliki banyak gateway, seperti 5 atau lebih, apakah Anda pikir saya akan mengalami kesulitan untuk mendapatkan data? Saya menanyakan hal ini karena saya pikir tabel transaksi master harus melakukan banyak join kiri di setiap jenis gateway pembayaran.
Marcio Mazzucato