สคีมาที่ออกแบบมาเพื่อจัดการเกตเวย์การชำระเงินหลายรายการ


9

นี่เป็นคำถามเพิ่มเติมที่ต้องการความคิดเห็น ฉันกำลังออกแบบฐานข้อมูลที่จัดการเกตเวย์การชำระเงินหลายรายการ เกตเวย์การชำระเงินส่วนใหญ่ต้องการตารางสำหรับรายละเอียดการสั่งซื้อก่อนชำระเงิน (นี่เป็นเรื่องปกติสำหรับ PGs ทั้งหมด) และตารางสำหรับรายละเอียดธุรกรรมเพื่อจัดเก็บการตอบสนองหลังจากทำการชำระเงิน

ตอนนี้เพื่อจัดการเกตเวย์การชำระเงินหลายรายการฉันสามารถเก็บตารางธุรกรรมเดี่ยวได้โดยบรรจุด้วยฟิลด์ทั้งหมดที่มีอยู่จากเกตเวย์การชำระเงินทั้งหมดและฟิลด์ที่ระบุว่าแถว PG นั้นมาจากไหน
หรือฉันสามารถสร้างตารางธุรกรรมแยกกันสำหรับแต่ละ PG ที่มีคำนำหน้าเช่นpaypal_หรือbank_อื่น ๆ แต่ละคนมีเขตข้อมูลที่แต่ละคนต้องการ

ฉันไม่แน่ใจว่าวิธีไหนที่เหมาะสมที่สุดในการทำเช่นนี้ ยังต้องเรียนรู้สำหรับสถานการณ์ที่คล้ายกันซึ่งฉันอาจเจอในอนาคต


มันขึ้นอยู่กับสถานการณ์ที่แน่นอนของคุณ โดยทั่วไปจะมีราคาถูกกว่าในการเลือกเซ็ตย่อยของตารางขนาดใหญ่หนึ่งกว่าการรวมตารางเล็ก ๆ จำนวนมากเข้าด้วยกันกับ UNION แต่มีบางสถานการณ์ที่การออกแบบตารางเล็ก ๆ ทำงานได้ดีกว่า
Walter Mitty

จนถึงตอนนี้คุณมีอะไร
แอรอน

@ BryceAtNetwork23 ตอนนี้ฉันจัดการ PGs สองตัวและฉันมีตารางแยกกันสำหรับทั้งคู่ แต่ฉันต้องเพิ่ม PGs เพิ่มเติมในอนาคต ดังนั้นฉันจึงคิดว่าฉันควรทำสิ่งนี้ต่อไปเพราะฉันจะต้องเพิ่มตารางต่อไปทุกครั้ง มันเป็นทางเลือกระหว่างการเพิ่มจำนวนของตารางและหนึ่งตารางที่มีจำนวนคอลัมน์และระเบียนเพิ่มขึ้น ฉันสับสนเล็กน้อย
Bibhas

@Bibhas เป็นไปได้หรือไม่ที่จะแบ่งปันโซลูชันที่คุณใช้กับเรา ฉันมีข้อสงสัยเหมือนกัน
Marcio Mazzucato

@MarcioSimao เราไปกับตารางเดียวที่มีคุณสมบัติเหมือนpaypal_transaction_id, bank_transaction_idฯลฯ เราไม่ได้มีเกตเวย์การชำระเงินมากเกินไปเพื่อให้มันทำงานให้เรา อาจไม่ทำงานกับผู้ที่สนับสนุน PGs จำนวนมาก
Bibhas

คำตอบ:


7

ขึ้นอยู่กับความแตกต่างของข้อมูลระหว่างประเภทการชำระเงิน

สำหรับเว็บไซต์ที่ฉันสนับสนุนในที่ทำงานเรามีตารางหนึ่งตารางที่เก็บข้อมูลสำหรับการชำระเงินทุกประเภท ใช้งานได้กับเราเพราะประเภทการชำระเงินของเรานั้นเป็นประเภทของบัตรเครดิตและใบสั่งซื้อของ บริษัท 4 ประเภท ลูกค้าของเราส่วนใหญ่ชำระด้วยบัตรเครดิตดังนั้นจึงไม่มีข้อมูลเบี่ยงเบนจำนวนมาก แน่นอนว่าคำสั่งสำหรับลูกค้าบัตรเครดิตนั้นจะให้ค่า NULL ในฟิลด์ PONumber เสมอ เช่นเดียวกันการค้นหาสำหรับลูกค้า PO จะให้ค่า NULL ในฟิลด์ที่เกี่ยวข้องกับบัตรเครดิตทั้งหมด

หากมีข้อมูลจำนวนมากในเขตข้อมูลที่แตกต่างกันคุณสามารถลองใช้ตารางธุรกรรมหลักพร้อมกับตารางแต่ละตารางสำหรับแต่ละเกตเวย์การชำระเงิน ตารางชนิดของเกตเวย์การชำระเงินแต่ละรายการจะมี foreign key ของ transaction_id ซึ่งจะลิงก์กลับไปที่ตารางธุรกรรมหลัก

ในทางกลับกันถ้าประเภทการชำระเงินของคุณทั้งหมดมีเขตข้อมูลที่คล้ายกันฉันจะยึดกับตารางธุรกรรมหนึ่ง


1
ขอบคุณที่ล้างข้อมูล ฉันคิดว่ามันอยู่ตรงหน้าฉัน แต่ต้องการคนที่จะชี้ให้เห็น :)
Bibhas

@ BryceAtNetwork23 หากฉันมีเกตเวย์มากมายเช่น 5 ขึ้นไปคุณคิดว่าฉันจะมีปัญหาในการรับข้อมูลหรือไม่ ฉันกำลังถามสิ่งนี้เพราะฉันคิดว่าตารางธุรกรรมหลักจะต้องทำหลายอย่างรวมกันในแต่ละประเภทการชำระเงิน
Marcio Mazzucato
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.