|
Реализация "кошельков" для разных сущностей
|
|||
---|---|---|---|
#18+
Mr.Fontaine, Ну разговор не совсем теоретический. Я в данный момент формирую как будет эта вся коммерция и работа с учётом средств в БД сделана. И вот чтобы сразу сделать так, как оно должно быть или максимально близко к этому я тут все вопросы и спрашиваю. Если без внешних счетов, то где в БД хранить информацию о поступлении средств в такой-то кошелёк? Сейчас то, что я выше выкладывал, учёт средств идёт в таблице pay_actions (id, currID, debetBagID, creditBagID, debetSum, creditSumm) - т.е. кошелёк кредит, кошелёк дебит, валюта в которой действие происходит и двойная запись величины действия величина дебита и величина кредита. А как с такой таблицей учёта движений средств указать поступление средств извне? Отдельная получается должна быть таблица pay_extActions (id, currID, bagID, extPayType, extPayData, paySum) - т.е. валюта внешней транзакции, с каким кошельком эта транзакция и собственно описание внешнего плавтежа. Я с введением внешних счетов просто получается дополнительно нормализовал эту таблицу, но если объективно это не требуется, то конечно обойдусь таким вариантом. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2019, 12:32 |
|
Реализация "кошельков" для разных сущностей
|
|||
---|---|---|---|
#18+
kormot, авторА как с такой таблицей учёта движений средств указать поступление средств извне? да собственно так же как и в первой таблице, ибо хранить движения денег лучше в одной таблице. только два поля кредита оставляй пустыми, ибо "извне". Если есть необходимость хранить данные источника денег, то вот для этого и можно использовать вторую табличку убрав из твоего варианта лишние поля pay_extActions (id, extPayType, extPayData) ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2019, 12:57 |
|
Реализация "кошельков" для разных сущностей
|
|||
---|---|---|---|
#18+
Mr.Fontaine, А если хранить детали внешнего платежа, то его же в любом случае надо линковать с движением средств. Т.е. в таблице pay_extPays надо ещё добавить payActID -> FK pay_actions(id) А то что в двойной записи должен быть всегда в ноль баланс а мы тут половину отрежем - не будет принципиальной проблемой? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2019, 13:04 |
|
Реализация "кошельков" для разных сущностей
|
|||
---|---|---|---|
#18+
kormotMr.Fontaine, А если хранить детали внешнего платежа, то его же в любом случае надо линковать с движением средств. Т.е. в таблице pay_extPays надо ещё добавить payActID -> FK pay_actions(id) Ну всё правильно. Для этого я предполагал использовать существующее поле id. Ну конечно правильнее его назвать payActID. Но куда записывать идентификатор действия в общем-то не принципиально, ибо при структуре таблицы pay_extActions (id, payActID, extPayType, extPayData) вряд ли Вы будете использовать поле id вне контекста pay_actions kormotА то что в двойной записи должен быть всегда в ноль баланс а мы тут половину отрежем - не будет принципиальной проблемой?Будет это приниципиальной проблемой или не будет зависит от ответов на вопросы: Нужно ли тебе знать, что где-то "вовне" деньги уменьшились? Зачем тебе нужен "ноль" в балансе? Да и ты хорошо бы ответить на мой вопрос Mr.Fontaine Что даёт тебе номер телефона или последние четыре цифры карты? Может после этого тебе станет более понятно какие таблицы тебе нужны. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2019, 13:22 |
|
Реализация "кошельков" для разных сущностей
|
|||
---|---|---|---|
#18+
Mr.Fontaine pay_extActions (id, payActID, extPayType, extPayData) вряд ли Вы будете использовать поле id вне контекста pay_actions Точно... у меня просто ID головного мозга :) Во всех таблицах должен быть ID, а тут же точно можно такой-же как в таблице действий первичный ключ использовать. Всё, понял. Mr.FontaineБудет это приниципиальной проблемой или не будет зависит от ответов на вопросы: Нужно ли тебе знать, что где-то "вовне" деньги уменьшились? Зачем тебе нужен "ноль" в балансе? Да и ты хорошо бы ответить на мой вопрос Нет, уменьшение денег вовне мне неинтересно. Но например может теолретически быть полезной информация сколько и откуда денег поступило. Но это уже другой вопрос, к балансу не относящийся. Ноль в балансе - это меня когда отправили понимать что такое "двойная запись" которая является стандартом для учёта средств, я и взял от туда поступат, что должно быть так и всё. Сумма должна быть равна нулю. А для чего мне информация о источнике (т.е. номер телефона и идентификатор в платёжной системе и т.п.) - ну так для возможной привязки "внешнего счёта" к тому или иному "субъекту" в системе. Из карт не 4 последние цифры, а там какой-то есть же уникальный идентификатор данной карты в банке и при платеже там вроде передаётся эта информация. Зачем нужно мне это в итоге, ну всё же это информация о средствах, причём информация о внешних платежах - именно о средствах реальных а не внутрисистемных, и у меня стойкое ощущение что каждый уникальных источник средств для системы должен быть оформлен сущностью. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2019, 13:48 |
|
Реализация "кошельков" для разных сущностей
|
|||
---|---|---|---|
#18+
kormotнапример может теолретически быть полезной информация сколько и откуда денег поступило. Как раз для этого мы и создаём табличку pay_extActions (id, payActID, extPayType, extPayData) . Думаю, что при необходимости из extPayData можно получить откуда, а из payActions джойном можно получить сколько. kormotА для чего мне информация о источнике (т.е. номер телефона и идентификатор в платёжной системе и т.п.) - ну так для возможной привязки "внешнего счёта" к тому или иному "субъекту" в системе. Из карт не 4 последние цифры, а там какой-то есть же уникальный идентификатор данной карты в банке и при платеже там вроде передаётся эта информация. Зачем нужно мне это в итоге, ну всё же это информация о средствах, причём информация о внешних платежах - именно о средствах реальных а не внутрисистемных, и у меня стойкое ощущение что каждый уникальных источник средств для системы должен быть оформлен сущностью. А вот это веский аргумент для того, чтобы создать табличку с внешними счетами. и тогда в pay_extActions не будет пустых полей и будет красивый ноль в балансе. Только может быть в pay_actions ещё поле ввести с типом кредита (внешний или внутренний)? Да и для дебета тогда можно поле типа ввести. А то мало ли что потребуется.... ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2019, 14:01 |
|
Реализация "кошельков" для разных сущностей
|
|||
---|---|---|---|
#18+
Mr.FontaineА вот это веский аргумент для того, чтобы создать табличку с внешними счетами. и тогда в pay_extActions не будет пустых полей и будет красивый ноль в балансе. Только может быть в pay_actions ещё поле ввести с типом кредита (внешний или внутренний)? Да и для дебета тогда можно поле типа ввести. А то мало ли что потребуется.... Т.е. поток движений средств имеет смысл разделять на внутренние и внешние? А про поле с типом внешний и внутренний у pay_Actions я не понял. Ведь если есть pay_extActions - в которой (currID, extAccID, bagID, extPayAmount, bagPayAmount) зачем указание на внешний или внутренний в pay_actions? Да и к тому же если типы "внешний счёт" или "кошелёк" будут определяться значением поля в таблице - то это же сразу будет проблемой при выборке. Надо джойнить с обеими таблицами ext_accounts и pay_bags и IF'ом выбирать или в самом приложении брать то или иное поле. Нужно ли тут это EAV? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2019, 14:11 |
|
Реализация "кошельков" для разных сущностей
|
|||
---|---|---|---|
#18+
kormot, Я говорю про такую структуру (выдеру таблицы из твоих сообщений, потому формат разный) Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
вот тут-то и можно в таблицу pay_actions добавить тип аккаунта pay_actions (id, currID, debetBagID, debetBagType, creditBagID, creditBagType, debetSum, creditSumm) а таблица pay_extActions (id, currID, bagID, extPayType, extPayData, paySum) в этом случае вообще не нужна. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2019, 14:32 |
|
Реализация "кошельков" для разных сущностей
|
|||
---|---|---|---|
#18+
Хотя таблицу Accounts лучше показать по последнему варианту: Код: sql 1. 2. 3. 4. 5. 6. 7. 8.
... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2019, 14:36 |
|
Реализация "кошельков" для разных сущностей
|
|||
---|---|---|---|
#18+
Mr.Fontaine, Ну да, я так и понял, но ведь тут ссылка на родителя (счёт) получается в зависимости от accType - это стоит того? Как тогда например выбирать информацию о всех поступлениях в данный кошелёк, с информацией о счетах участвующих в операции? Код: sql 1. 2. 3. 4.
Как-то очень недетерминировано выглядит это. А в случае наличия двух таблиц ext_actions и bag_actions , там UNION ALL'ом всё однозначно получается. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2019, 14:45 |
|
Реализация "кошельков" для разных сущностей
|
|||
---|---|---|---|
#18+
kormot, ну согласен. недетерминированно. Твой вариант с разными таблицами внутренних и внешних перемещений лучше. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2019, 14:54 |
|
Реализация "кошельков" для разных сущностей
|
|||
---|---|---|---|
#18+
Mr.Fontaine спасибо за помощь! В итоге сформировалась благодаря этому обсуждению такая схема: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79.
Если есть предложения и замечания, буду благодарен! ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2019, 15:04 |
|
Реализация "кошельков" для разных сущностей
|
|||
---|---|---|---|
#18+
kormotСкажите пожалуйста, как лучше оформить личные счета ... Пример исключительно теоретический Как угодно, рабочий вариант будет только в том случае когда есть конкретная постановка задачи, нет постановки задачи, придумайте сами процессы для которых создаете информационное сопровождение, из них и выделяйте необходимые сущности и атрибуты, универсального решения на все случаи жизни не существует. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2019, 15:54 |
|
|
start [/forum/topic.php?fid=32&msg=39857959&tid=1539912]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
34ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
57ms |
get tp. blocked users: |
2ms |
others: | 15ms |
total: | 153ms |
0 / 0 |