Розробка схеми для обробки декількох шлюзів платежів


9

Це більше питання, яке вимагає зворотного зв'язку. Я розробляю базу даних, яка обробляє декілька шлюзів платежів. Для шлюзового платежу в основному потрібна таблиця деталей замовлення перед здійсненням платежу (це є загальним для всіх ПГ) та таблиця для реквізитів транзакцій для зберігання відповіді після здійснення платежу.

Тепер для обробки декількох шлюзів платежів я можу або зберігати єдину таблицю транзакцій, заповнюючи її всіма полями, доступними з усіх шлюзів платежів, і полем, яке говорить про те, з якого ПЗ цей рядок?
Або я можу створити окремі таблиці транзакцій для кожного PG з префіксом like paypal_або bank_etc, у кожному з яких є поля, потрібні кожному з них.

Я просто не впевнений, який найоптимальніший спосіб зробити це. Також потрібно вивчити це для подібних сценаріїв, з якими я можу зіткнутися в майбутньому.


Це залежить від вашої точної ситуації. Взагалі, дешевше вибрати підмножини однієї великої таблиці, ніж об’єднати безліч маленьких крихітних таблиць разом з UNION. Але бувають ситуації, коли дизайн крихітних столів працює краще.
Вальтер Мітті

Що у вас поки що?
Аарон

@ BryceAtNetwork23 Наразі я обробляю два PG, і для них є окремі таблиці. Але мені доведеться додати ще ПГ в майбутньому. Тому я думав, чи варто продовжувати це робити, оскільки мені потрібно постійно додавати більше таблиць. Його вибір між збільшенням кількості таблиць і однією таблицею зі збільшенням кількості стовпців і записів. Я трохи розгублений.
Бібхас

@Bibhas, Чи можна поділитися з нами рішенням, яке ви використовували? У мене виникають ті ж сумніви.
Marcio Mazzucato

@MarcioSimao ми пішли з однією таблицею з властивостями , як paypal_transaction_id, і bank_transaction_idт.д. У нас не було занадто багато платіжних шлюзів, тому він працював на нас. Можливо, не працюватимуть з тими, хто підтримує багато PG.
Бібхас

Відповіді:


7

Це залежить від того, наскільки дані відрізняються між видами платежів.

Для сайтів, які я підтримую на роботі, у нас є одна таблиця, в якій зберігаються дані про всі типи платежів. Це працює для нас, тому що наші способи оплати - це в основному 4 види кредитних карток та замовлення на придбання компанії. Більшість наших клієнтів платять за допомогою кредитних карток, тому відхилень у даних не багато. Звичайно, запити для цих клієнтів кредитної картки завжди дають значення NULL у полі PONumber. Аналогічно, запити для клієнтів з ПД дають NULL у всіх полях, пов’язаних із кредитною карткою.

Якщо у ваших даних багато різних полів, ви можете спробувати одну головну таблицю транзакцій з індивідуальними таблицями для кожного шлюзу платежів. Кожна таблиця типу шлюзу платежів має зовнішній ключ transak_id, який би посилався на головну таблицю транзакцій.

З іншого боку, якщо у всіх типів шлюзу платежів є однакові поля, я б дотримувався однієї таблиці транзакцій.


1
Дякуємо, що очистили це. Я здогадуюсь, це було прямо переді мною, але просто потрібен хтось, щоб це вказати. :)
Бібхас

@ BryceAtNetwork23, Якщо у мене є багато шлюзів, таких як 5 і більше, чи вважаєте ви, що у мене виникнуть труднощі з отриманням даних? Я запитую це, тому що я думаю, що головній таблиці транзакцій доведеться зробити багато лівих приєднань у кожному типі шлюзу платежів.
Marcio Mazzucato
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.