|
Как обеспечить частичную уникальность ?
|
|||
---|---|---|---|
#18+
Всем привет. Такая задача: есть пользователи, им выдаются некоторые бонусы. Пользователь может активировать бонус, т.е. у бонуса есть статус. И есть нюанс - у каждого пользователя активным может быть только один бонус. Далее активный бонус либо отменяется, либо используется, т.е. в дальнейшем статус его изменяется либо по решению пользователя, либо после срабатываения некоторых условий. Как сделать такое ограничение в базе ? Идеально быть бы сделать partial index , как у конкурентов: Код: sql 1.
Но у нас такого нет, увы. Есть CORE-3384 , но там как-то бесперспективно всё. Просматривается 2 некрасивых решения: 1. Завести отдельную табличку active_bonuses, обеспечивать уникальность с ее помощью. 2. Сделать вычисляемое (в триггере) поле uniq_status, что-то типа case when status = 'active' then status end, и повесить уник на (user_id, uniq_status) Оба решения не нравятся, потому что требуют заводить какие-то дополнительные объекты, являющиеся, по сути, костылями. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2019, 10:19 |
|
Как обеспечить частичную уникальность ?
|
|||
---|---|---|---|
#18+
Сисдба Мастеркеевич, можно попробовать уникальный индекс по выражению, не знаю будет ли работать Код: sql 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2019, 10:51 |
|
Как обеспечить частичную уникальность ?
|
|||
---|---|---|---|
#18+
Сисдба Мастеркеевич, Оно ? Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2019, 10:52 |
|
Как обеспечить частичную уникальность ?
|
|||
---|---|---|---|
#18+
Симонов Денис, :) ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2019, 10:52 |
|
Как обеспечить частичную уникальность ?
|
|||
---|---|---|---|
#18+
Точно, есть же computed by. Забыл. Спасибо :) ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2019, 11:09 |
|
Как обеспечить частичную уникальность ?
|
|||
---|---|---|---|
#18+
Сисдба Мастеркеевич, А что, история статусов никому не интересна? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2019, 11:31 |
|
Как обеспечить частичную уникальность ?
|
|||
---|---|---|---|
#18+
Создаешь таблицу с двумя полями - "user_id" и "bonus_id" по полю "user_id" делаешь первичный ключ, оба поля внешним ключом к соответствующим справочникам пользователей и бонусов И ВСЁ! Больше тебе ничего не надо, потому как одному пользователю ты сможешь привязать лишь один бонус. Ну и, как уже упомянул ДикийСерж, хорошо бы добавить историю, то есть в первичный ключ добавить ещё и TIMESTAMP. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2019, 14:12 |
|
Как обеспечить частичную уникальность ?
|
|||
---|---|---|---|
#18+
04.06.2019 14:12, rdb_dev пишет: > в первичный ключ добавить ещё и TIMESTAMP. и положение звёзд на небосводе. первичный ключ в который добавлен ещё и TIMESTAMP вырождается в банальный пшшшшшик. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2019, 14:19 |
|
Как обеспечить частичную уникальность ?
|
|||
---|---|---|---|
#18+
Мимопроходящийпервичный ключ в который добавлен ещё и TIMESTAMP вырождается в банальный пшшшшшик.Похоже, сегодня за обедом ты съел что-то несвежее... Код: plsql 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2019, 15:16 |
|
Как обеспечить частичную уникальность ?
|
|||
---|---|---|---|
#18+
Определись уже, как rdb_devкак одному пользователю ты сможешь привязать лишь один бонус связано с rdb_dev Код: plsql 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2019, 15:33 |
|
Как обеспечить частичную уникальность ?
|
|||
---|---|---|---|
#18+
hvlad, последний по времени бонус и есть активный. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2019, 15:36 |
|
Как обеспечить частичную уникальность ?
|
|||
---|---|---|---|
#18+
rdb_dev, тему топика читал ? Прочитай. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2019, 15:42 |
|
Как обеспечить частичную уникальность ?
|
|||
---|---|---|---|
#18+
hvlad, и чо? Там нагородили огород с полем "status", которое прекрасно и в соответствии с требованиями заменяется таблицей, т.е. последний по времени бонус пользователя имеет статус активный, остальные - неактивный. Если кого-то не устраивает представление данных, можно построить вьюху с вычисляемым значением поля "status". В чём проблема? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2019, 15:51 |
|
Как обеспечить частичную уникальность ?
|
|||
---|---|---|---|
#18+
rdb_devВ чём проблема?Всё прекрасно, фантазируй дальше, я - пас ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2019, 16:24 |
|
Как обеспечить частичную уникальность ?
|
|||
---|---|---|---|
#18+
hvladrdb_devВ чём проблема?Всё прекрасно, фантазируй дальше, я - пасДа ёлки-палки!... Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2019, 16:58 |
|
Как обеспечить частичную уникальность ?
|
|||
---|---|---|---|
#18+
04.06.2019 15:16, rdb_dev пишет: > CONSTRAINT "active_bonus__pk" PRIMARY KEY ("user_id", "tmstmp") синтаксический нонсенс. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2019, 17:17 |
|
Как обеспечить частичную уникальность ?
|
|||
---|---|---|---|
#18+
Мимопроходящий04.06.2019 15:16, rdb_dev пишет: > CONSTRAINT "active_bonus__pk" PRIMARY KEY ("user_id", "tmstmp") синтаксический нонсенс.Неужели? С каких пор у нас запрет на составные первичные ключи? Или для тебя первичный ключ, это исключительно суррогат? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2019, 17:25 |
|
Как обеспечить частичную уникальность ?
|
|||
---|---|---|---|
#18+
rdb_dev, запрета нет. Есть вопрос целесообразности и удобства. Составные как и натуральные PK не удобны априори, если уж надо сделать такое ограничение, то обычно ставят UNIQUE в довесок к суррогатному PK ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2019, 17:34 |
|
Как обеспечить частичную уникальность ?
|
|||
---|---|---|---|
#18+
rdb_devДа ёлки-палки!...Ты забыл цель - обеспечить уникальность. Ты её не обеспечиваешь. Вместо этого продаёшь историю, о которой никто не просил. Направь свою энергию на что-нить полезное уже PS И - да - таймстамп в PK - это обычно от глупости и не понимания сути задачи. Примерно как и double precision в там же. Не всегда, но чаще всего. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2019, 17:39 |
|
Как обеспечить частичную уникальность ?
|
|||
---|---|---|---|
#18+
Симонов Денисrdb_dev, запрета нет. Есть вопрос целесообразности и удобства. Составные как и натуральные PK не удобны априори, если уж надо сделать такое ограничение, то обычно ставят UNIQUE в довесок к суррогатному PKСоставные ПК не удобны, когда таблица не является конечно в иерархии отношений, а если таблица конечна, вполне можно воспользоваться принципом бритвы Оккама и не порождать сущности без надобности. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2019, 17:44 |
|
Как обеспечить частичную уникальность ?
|
|||
---|---|---|---|
#18+
hvladПримерно как и double precision в там же. Timestamp хотя бы целый в отличии от. PS: Тупо добавить поле "текущий бонус" в таблицу пользователей не предлагали или я не заметил? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2019, 17:45 |
|
Как обеспечить частичную уникальность ?
|
|||
---|---|---|---|
#18+
hvladТы забыл цель - обеспечить уникальность. Ты её не обеспечиваешь.Именно упомянутую уникальность я и обеспечиваю! Условие таково - "у пользователя не может быть более двух активных бонусов одномоментно" и составной ПК по полям "user_id"+"tmstmp" вполне обеспечивает это условие, так как ты не сможешь для одного и того же пользователя добавить в таблицу две записи с разными бонусами, но с одним и тем же штампом времени. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2019, 18:20 |
|
Как обеспечить частичную уникальность ?
|
|||
---|---|---|---|
#18+
rdb_dev, ну да, не сможешь. У тебя мало опыта реальной работы реальных юзеров. В реальных приложениях. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2019, 18:45 |
|
Как обеспечить частичную уникальность ?
|
|||
---|---|---|---|
#18+
hvlad, ты хочешь сказать, что для таблицы: Код: plsql 1. 2. 3. 4. 5. 6. 7.
Сервер FirebirdSQL не обеспечить уникальность составного ПК? Тогда тут дело совсем не в пользователях... ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2019, 18:51 |
|
Как обеспечить частичную уникальность ?
|
|||
---|---|---|---|
#18+
04.06.2019 18:51, rdb_dev пишет: > Сервер FirebirdSQL не обеспечить уникальность составного ПК? > Тогда тут дело совсем не в пользователях... угу. тут дело в "дизайнере". ибо уникальность именно ЭТОГО ключа не несёт никакой смысловой нагрузки. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2019, 18:53 |
|
Как обеспечить частичную уникальность ?
|
|||
---|---|---|---|
#18+
Мимопроходящийибо уникальность именно ЭТОГО ключа не несёт никакой смысловой нагрузки. Именно в этой уникальности как раз вся "смысловая нагрузка", для обеспечения условия "у пользователя не может быть более двух активных бонусов одномоментно" с бонусом в виде побочного эффекта хранения истории активации бонусов. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2019, 18:56 |
|
Как обеспечить частичную уникальность ?
|
|||
---|---|---|---|
#18+
rdb_dev, продолжай монолог ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2019, 19:24 |
|
Как обеспечить частичную уникальность ?
|
|||
---|---|---|---|
#18+
rdb_devhvlad, ты хочешь сказать, что для таблицы: Код: plsql 1. 2. 3. 4. 5. 6. 7.
Сервер FirebirdSQL не обеспечить уникальность составного ПК? Тогда тут дело совсем не в пользователях... Дело не в сервере Firebird. Дело в устройстве Мироздания. И составной, не составной - рояли не играет. https://yandex.ru/images/search?text=дискретность времени&stype=image&lr=2&source=wiz Кстати, когда-то, когда был молод и глуп, в смысле лет эдак сорока, наступил на violation timestamp-PK в архиве примерно через месяц после его создания. И всего-то при паре десятков пользователей. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2019, 20:31 |
|
Как обеспечить частичную уникальность ?
|
|||
---|---|---|---|
#18+
Старый плюшевый мишкакогда-то, когда был молод и глуп, в смысле лет эдак сорока, наступил на violation timestamp-PK в архиве примерно через месяц после его создания. "В те времена далёкие, теперь почти былинные" current_timestamp был с точностью в целые секунды и никто не умел работать с их долями. К счастью, сейчас такие нубы уже перевелись. Наверное. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2019, 20:38 |
|
Как обеспечить частичную уникальность ?
|
|||
---|---|---|---|
#18+
Сисдба МастеркеевичОба решения не нравятся, потому что требуют заводить какие-то дополнительные объекты, являющиеся, по сути, костылями. При активизации любого бонуса у юзера сброс молча в inactive предыдущего его активного в before триггерах по бизнес-логике не прокатывает? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2019, 20:45 |
|
Как обеспечить частичную уникальность ?
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov"В те времена далёкие, теперь почти былинные" current_timestamp был с точностью в целые секунды и никто не умел работать с их долями. Да ладно. Или ты Абрамс вспомнил? Уже в IB4 точно с миллисекундами был. А вот родной его WISQL их не отображал просто, это факт. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2019, 20:48 |
|
Как обеспечить частичную уникальность ?
|
|||
---|---|---|---|
#18+
Старый плюшевый мишкаУже в IB4 точно с миллисекундами был. Тип-то всегда был с четырьмя знаками после точки, а вот помянутая контекстная переменная такого не умела, как и подавляющее большинство компонент доступа. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2019, 22:10 |
|
Как обеспечить частичную уникальность ?
|
|||
---|---|---|---|
#18+
rdb_devМимопроходящийибо уникальность именно ЭТОГО ключа не несёт никакой смысловой нагрузки. Именно в этой уникальности как раз вся "смысловая нагрузка", для обеспечения условия "у пользователя не может быть более двух активных бонусов одномоментно" А одномоментно - это как? А если в соседнюю милисекунду - это уже не одномоментно и допускается? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2019, 03:57 |
|
Как обеспечить частичную уникальность ?
|
|||
---|---|---|---|
#18+
Читаю ветку и ... в недоумении. Уникальность индексами здесь вообще не нужна. Одновременная в рамках действия транзакции вставка двух бонусов превращается только в головную боль, но никаких бонусов не даёт. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2019, 09:03 |
|
Как обеспечить частичную уникальность ?
|
|||
---|---|---|---|
#18+
Ну вы тут накидали, стоило отойти ненадолго ... :)) Уникальность нужна только для активного бонуса. Неактивных, например, выданных пользователю, но не активированных им, может быть сколько угодно. В том числе и при наличии активного. Старый плюшевый мишкаСисдба МастеркеевичОба решения не нравятся, потому что требуют заводить какие-то дополнительные объекты, являющиеся, по сути, костылями. При активизации любого бонуса у юзера сброс молча в inactive предыдущего его активного в before триггерах по бизнес-логике не прокатывает? Триггеры не помогут, ибо тимлид их не любит, поэтому у нас их нет. Вообще. Как и процедур. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2019, 10:11 |
|
Как обеспечить частичную уникальность ?
|
|||
---|---|---|---|
#18+
Сисдба МастеркеевичТриггеры не помогут, ибо тимлид их не любит, поэтому у нас их нет. Вообще. Как и процедур.Каким образом тогда активируется бонус? Кто деактивирует предыдущий активный? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2019, 10:14 |
|
Как обеспечить частичную уникальность ?
|
|||
---|---|---|---|
#18+
Сисдба МастеркеевичТриггеры не помогут, ибо тимлид их не любит, поэтому у нас их нет. Вообще. Как и процедур. Вся логика на клиенте? Зачем тогда париться насчёт этого хитрого индекса? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2019, 10:17 |
|
Как обеспечить частичную уникальность ?
|
|||
---|---|---|---|
#18+
Сисдба МастеркеевичУникальность нужна только для активного бонуса. Повторяю медленно: в чём проблема сделать этот бонус полем в таблице пользователей? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2019, 12:18 |
|
Как обеспечить частичную уникальность ?
|
|||
---|---|---|---|
#18+
Сисдба МастеркеевичТриггеры не помогут, ибо тимлид их не любит, поэтому у нас их нет. Вообще. Как и процедур. Аааа... Бег в мешках с барьерами по подвесной проволоке? Уважаю. Почти. Ибо индексы он таки любит, прослабел. Самурай без меча подобен самураю с мечом, но только без меча. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2019, 12:35 |
|
Как обеспечить частичную уникальность ?
|
|||
---|---|---|---|
#18+
WildSeryЧитаю ветку и ... в недоумении. Уникальность индексами здесь вообще не нужна. Одновременная в рамках действия транзакции вставка двух бонусов превращается только в головную боль, но никаких бонусов не даёт.В таком случае у меня возникает несколько вопросов: 1. Кто будет одномоментно с двух разных АРМов активировать бонус одному и тому же пользователю, а главное - по какому событию? 2. Если, всё же, два оператора АРМа умудрились одномоментно - в одноу и ту же миллисекунду запустить транзакции на активацию бонуса для конкретного пользователя, и оператор-неудачик получил от сервера отлуп о дублировании уникального индекса, то это тут же становится головной болью разработчика/администратора БД или, всё же, это штатное поведение системы, адекватно воспринимаемое обученным оператором? 3. Если бонус активирует сам пользователь через веб-интерфейс, то как он одномоментно - с точностью до миллисекунды нажмёт рядом с бонусом кнопку "активировать" с двух разных веб-страниц? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2019, 13:25 |
|
Как обеспечить частичную уникальность ?
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovСисдба МастеркеевичУникальность нужна только для активного бонуса. Повторяю медленно: в чём проблема сделать этот бонус полем в таблице пользователей? Похоже на денормализацию. Тимлид не одобрит. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2019, 13:27 |
|
Как обеспечить частичную уникальность ?
|
|||
---|---|---|---|
#18+
KreatorXXIПохоже на денормализацию. Тимлид не одобрит. Никакой денормализации. Текущий бонус - атрибут клиента, ссылка на таблицу бонусов. Все три НФ удовлетворённо кивают. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2019, 13:35 |
|
Как обеспечить частичную уникальность ?
|
|||
---|---|---|---|
#18+
rdb_devВ таком случае у меня возникает несколько вопросов: 1. Кто будет одномоментно с двух разных АРМов активировать бонус одному и тому же пользователю, а главное - по какому событию? 2. Если, всё же, два оператора АРМа умудрились одномоментно - в одноу и ту же миллисекунду запустить транзакции на активацию бонуса для конкретного пользователя, и оператор-неудачик получил от сервера отлуп о дублировании уникального индекса, то это тут же становится головной болью разработчика/администратора БД или, всё же, это штатное поведение системы, адекватно воспринимаемое обученным оператором? 3. Если бонус активирует сам пользователь через веб-интерфейс, то как он одномоментно - с точностью до миллисекунды нажмёт рядом с бонусом кнопку "активировать" с двух разных веб-страниц?Эти вопросы нужно было задавать до того, как предлагать ерунду, и уж точно до того, как её отстаивать. 1. Не твоё дело. Absolutely. Если физическая возможность есть, ею воспользуются. 2. С какого перепугу ты решил, что последняя по времени ввода запись является правильной ? С чего ты взял, что для повторной активации ранее введённого и ныне неактивного бонуса, его нужно ввести заново (и удалить старую запись, убив часть истории, которую ты тут так сильно хочешь) ? 3. См п1 и п2 Я уже писал, что у тебя нет реального опыта работы в реальных условиях ? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2019, 13:35 |
|
Как обеспечить частичную уникальность ?
|
|||
---|---|---|---|
#18+
а я не умею так культурно и без матов... Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2019, 13:40 |
|
Как обеспечить частичную уникальность ?
|
|||
---|---|---|---|
#18+
Сисдба МастеркеевичНу вы тут накидали, стоило отойти ненадолго ... :)) Уникальность нужна только для активного бонуса. Неактивных, например, выданных пользователю, но не активированных им, может быть сколько угодно. В том числе и при наличии активного. Я тебе за бонусы еще один умный вещь скажу. Завтра придут и потребуют сроки протухания бонусов. Как активированных, так и неактивированных. А послезавтра - сроки начала активации оных. И еще вчера - текущее сальдо этих самых бонусов. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2019, 13:59 |
|
Как обеспечить частичную уникальность ?
|
|||
---|---|---|---|
#18+
hvladЭти вопросы нужно было задавать до того, как предлагать ерунду, и уж точно до того, как её отстаивать. 1. Не твоё дело. Absolutely. Если физическая возможность есть, ею воспользуются.И пусть пользуются! Это как-то негативно повлияет на работу сервера FirebirdSQL в целом - приведёт к его нештатной работе или падению? Или это как-то нарушит бизнес логику процесса? hvlad2. С какого перепугу ты решил, что последняя по времени ввода запись является правильной ?Это будет решать оператор или пользователь, который захочет активировать бонус из того набора бонусов пользователя, что хранится в отдельной справочной таблице, а не в таблице " active _bonus". hvladС чего ты взял, что для повторной активации ранее введённого и ныне неактивного бонуса, его нужно ввести заново (и удалить старую запись, убив часть истории, которую ты тут так сильно хочешь) ?С чего ты взял, что для повторной активации ранее деактивированного бонуса нужно что-то удалять в таблице "active_bonus"? Ограничение ПК вполне позволит добавить тот же "bonus_id" тому же "user_id", которые уже существуют в таблице "active_bonus", но с другим штампом времени. hvlad3. См п1 и п2 Я уже писал, что у тебя нет реального опыта работы в реальных условиях ?На заборах тоже часто пишут совершенно необоснованные утверждения. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2019, 14:26 |
|
Как обеспечить частичную уникальность ?
|
|||
---|---|---|---|
#18+
pastorИ еще вчера - текущее сальдо этих самых бонусов.Причём, отчётом на произвольный временной интервал. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2019, 14:29 |
|
Как обеспечить частичную уникальность ?
|
|||
---|---|---|---|
#18+
rdb_devhvlad1. Не твоё дело. Absolutely. Если физическая возможность есть, ею воспользуются.И пусть пользуются! Это как-то негативно повлияет на работу сервера FirebirdSQL в целом - приведёт к его нештатной работе или падению? Или это как-то нарушит бизнес логику процесса?Намёки на падения сервера засунь себе в ...карму. Насчёт бизнес логики - твоё предложение её вообще не позволяет соблюсти. Ибо "кто последний ввёл - того и тапки" - вот и вся твоя "бизнес логика". rdb_devhvladС чего ты взял, что для повторной активации ранее введённого и ныне неактивного бонуса, его нужно ввести заново (и удалить старую запись, убив часть истории, которую ты тут так сильно хочешь) ?С чего ты взял, что для повторной активации ранее деактивированного бонуса нужно что-то удалять в таблице "active_bonus"? На первую часть вопроса ответа нет ? Про удаление записи я поторопился, согласен. rdb_devhvladЯ уже писал, что у тебя нет реального опыта работы в реальных условиях ?На заборах тоже часто пишут совершенно необоснованные утверждения.Ну так тут не забор (вроде) - хватит уже. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2019, 14:36 |
|
Как обеспечить частичную уникальность ?
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovСисдба МастеркеевичУникальность нужна только для активного бонуса. Повторяю медленно: в чём проблема сделать этот бонус полем в таблице пользователей? Можно туда просто ссылку пихать на бонус. Какой запихан - тот и активен. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2019, 14:36 |
|
Как обеспечить частичную уникальность ?
|
|||
---|---|---|---|
#18+
Мимопроходящийа я не умею так культурно и без матов...Даже в такой, казалось бы, пустой теме есть чему (и у кого) поучиться. :) Держись, матом не надо! ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2019, 14:42 |
|
Как обеспечить частичную уникальность ?
|
|||
---|---|---|---|
#18+
hvladНамёки на падения сервера засунь себе в ...карму.Какие ещё "намёки на падение сервера"? Отлуп при дублировании значения ПК, это вполне штатная ситуация для СУБД. hvladНасчёт бизнес логики - твоё предложение её вообще не позволяет соблюсти. Ибо "кто последний ввёл - того и тапки" - вот и вся твоя "бизнес логика".А тот, кто последним активировал какой-то бонус, выставив в статус 'active' и переведя все прочие бонусы пользователя в статус 'inactive', тапки не надел? Хоть как-нибудь обоснуй своё утверждение - "твоё предложение её вообще не позволяет соблюсти". Моё предложение вполне корректно реализует бизнес логику процесса, достаточно лишь прикрутишь триггер на вставку записи в таблицу "active_bonus", который задаст значение штампа времени сервера СУБД полю "tmstmp". ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2019, 14:53 |
|
Как обеспечить частичную уникальность ?
|
|||
---|---|---|---|
#18+
WildSeryСисдба МастеркеевичТриггеры не помогут, ибо тимлид их не любит, поэтому у нас их нет. Вообще. Как и процедур.Каким образом тогда активируется бонус? Кто деактивирует предыдущий активный?По сути сам пользователь. У него спрашивают, типа "у тебя уже есть активный бонус, активируешь новый - убьешь старый, готов ?", ну и "внутри" потом сначала деактив старого, потом актив нового. KreatorXXIСисдба МастеркеевичТриггеры не помогут, ибо тимлид их не любит, поэтому у нас их нет. Вообще. Как и процедур. Вся логика на клиенте? Зачем тогда париться насчёт этого хитрого индекса?Чтобы в базу нельзя было засунуть непотребное. Dimitry SibiryakovСисдба МастеркеевичУникальность нужна только для активного бонуса. Повторяю медленно: в чём проблема сделать этот бонус полем в таблице пользователей?Мысль понятна. Только не в пользователей, а в аккаунты (я "забыл" упомянуть о них, для упрощения описания задачи), ибо у пользователей есть аккаунты, для каждой поддерживаемой валюты. Кроме того, это не решит исходную проблему - т.е. не обеспечит единственность бонуса в статусе "активный". Старый плюшевый мишкаСисдба МастеркеевичТриггеры не помогут, ибо тимлид их не любит, поэтому у нас их нет. Вообще. Как и процедур. Аааа... Бег в мешках с барьерами по подвесной проволоке? Уважаю. Почти. Ибо индексы он таки любит, прослабел. Самурай без меча подобен самураю с мечом, но только без меча.Целиком и полностью разделяю и поддерживаю :) Но есть некие реалии, с которыми приходится считаться. pastorСисдба МастеркеевичНу вы тут накидали, стоило отойти ненадолго ... :)) Уникальность нужна только для активного бонуса. Неактивных, например, выданных пользователю, но не активированных им, может быть сколько угодно. В том числе и при наличии активного. Я тебе за бонусы еще один умный вещь скажу. Завтра придут и потребуют сроки протухания бонусов. Как активированных, так и неактивированных. А послезавтра - сроки начала активации оных. И еще вчера - текущее сальдо этих самых бонусов.Всех соломок не постелить, это понятно. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2019, 15:37 |
|
Как обеспечить частичную уникальность ?
|
|||
---|---|---|---|
#18+
05.06.2019 15:37, Сисдба Мастеркеевич пишет: > у пользователей есть аккаунты, для каждой поддерживаемой валюты. очень странное решение. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2019, 15:41 |
|
Как обеспечить частичную уникальность ?
|
|||
---|---|---|---|
#18+
Сисдба Мастеркеевичэто не решит исходную проблему - т.е. не обеспечит единственность бонуса в статусе "активный". "чо?" (с) Ты каким-то магическим образом сумеешь запихать в поле "активный бонус" ссылку сразу на два бонуса? Тут уже первая НФ начнёт курить в углу. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2019, 15:48 |
|
Как обеспечить частичную уникальность ?
|
|||
---|---|---|---|
#18+
Конечно, если в аккаунты пихнуть активный бонус. Этих аккаунтов у одного пользователя много. Наверно, вот откуда плясать надо. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2019, 17:44 |
|
Как обеспечить частичную уникальность ?
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovСисдба МастеркеевичУникальность нужна только для активного бонуса. Повторяю медленно: в чём проблема сделать этот бонус полем в таблице пользователей? Что будем делать с целочной ссылостностью в случае необонусявленного пользователя? да помню я, помню про бонус типа "не определён" ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2019, 17:53 |
|
Как обеспечить частичную уникальность ?
|
|||
---|---|---|---|
#18+
rdb_devМоё предложение вполне корректно реализует бизнес логику процесса, достаточно лишь прикрутишь триггер на вставку записи в таблицу "active_bonus", который задаст значение штампа времени сервера СУБД полю "tmstmp". Таймштамп Бонус Дата начала действия Когда-то давно Нумер 1 21.09.1954 Позавчера Нумер 2 01.01.2019 Путин велел Сегодня Всё отменить 08.02.2022 Ы? Какой у нас нынче активный по бизнесь логике? А Первого Апрэля текущего году? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2019, 18:13 |
|
Как обеспечить частичную уникальность ?
|
|||
---|---|---|---|
#18+
Старый плюшевый мишкаЧто будем делать с целочной ссылостностью в случае необонусявленного пользователя? Запишем Дейта в старые маразматики и объявим это поле NULL. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2019, 18:45 |
|
Как обеспечить частичную уникальность ?
|
|||
---|---|---|---|
#18+
Сисдба Мастеркеевич > Триггеры ... тимлид их не любит, поэтому у нас их нет. Вообще. Как и процедур. Сорри, не мог пройти мимо... А вы часом никаком ORMом не пользуетесь? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2019, 22:11 |
|
Как обеспечить частичную уникальность ?
|
|||
---|---|---|---|
#18+
МимопроходящийСисдба Мастеркеевич > у пользователей есть аккаунты, для каждой поддерживаемой валюты. очень странное решение. Это вообще нетривиальная задача, до сих пор универсальных хороший решений не встречал (и с удовольствием почитал бы чужой опыт на эту тему - в виде статьи или в свободном стиле). Самое распространенное - вести таблицу курсов валют и танцевать вокруг при их нестыковках Сорри за оффтоп. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2019, 22:16 |
|
Как обеспечить частичную уникальность ?
|
|||
---|---|---|---|
#18+
Гаджимурадов Рустам, у ТС какие-то аккаунты. ХЗ. Реально к валюте могут опосредованно относится. Почти по теме. Я клиент Сбера. Вчера случилась маленькая коллизия. У меня один номер мобильного и несколько карт. Перевели деньги по мобильному. Они упали на последнюю оформленную. Буду разбираться. Есть ли возможность сделать карту "активной" для перевода по мобильному? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.06.2019, 10:12 |
|
Как обеспечить частичную уникальность ?
|
|||
---|---|---|---|
#18+
про Ж сбера в "работе" есть долгоиграющий топик. начало положено в 2011, если не ошибаюсь. по сей день топик активно дополняется... (если не грохнули сгоряча) Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
06.06.2019, 10:37 |
|
Как обеспечить частичную уникальность ?
|
|||
---|---|---|---|
#18+
Мимопроходящий, так Греф же сказал что программисты не нужны ... |
|||
:
Нравится:
Не нравится:
|
|||
06.06.2019, 10:53 |
|
Как обеспечить частичную уникальность ?
|
|||
---|---|---|---|
#18+
KreatorXXIГаджимурадов Рустам, у ТС какие-то аккаунты. ХЗ. Реально к валюте могут опосредованно относится. Почти по теме. Я клиент Сбера. Вчера случилась маленькая коллизия. У меня один номер мобильного и несколько карт. Перевели деньги по мобильному. Они упали на последнюю оформленную. Буду разбираться. Есть ли возможность сделать карту "активной" для перевода по мобильному?Не карту, а счёт в банке. Карта - это кусочек пластика, денег не содержит. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.06.2019, 11:15 |
|
Как обеспечить частичную уникальность ?
|
|||
---|---|---|---|
#18+
06.06.2019 10:53, Симонов Денис пишет: > так Греф же сказал что программисты не нужны там очень хитровыпитая схема. они создали дочернюю структуру "сбер-тех" и вывели всех программистов туда. 5 тыщ крепостных душ. вообще, очень познавательное чтиво... Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
06.06.2019, 11:24 |
|
Как обеспечить частичную уникальность ?
|
|||
---|---|---|---|
#18+
06.06.2019 11:15, WildSery пишет: > Не карту, а счёт в банке. Карта - это кусочек пластика, денег не содержит. сберовским СЕО-шникам этого у-вы не объяснить... вот переводишь ты деньги "на карту". карта привязана к счёту, естессно. деньги пришли "на карту". а на счёте их НЕТ ещё в течение 3-4 дней!!! сиди и жди, пока они "упадут на счёт". сцуко... цитируя Лаврова: дИбилы, плять! Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
06.06.2019, 11:29 |
|
Как обеспечить частичную уникальность ?
|
|||
---|---|---|---|
#18+
МимопроходящийдИбилы, плять!Пацаны сидели, думали и придумали как безнаказанно трое суток крутить деньги холопов в свою пользу, а ты тут контору палишь! ... |
|||
:
Нравится:
Не нравится:
|
|||
06.06.2019, 11:38 |
|
Как обеспечить частичную уникальность ?
|
|||
---|---|---|---|
#18+
06.06.2019 11:38, Ivan_Pisarevsky пишет: > Пацаны сидели, думали и придумали как безнаказанно трое суток крутить деньги холопов в свою пользу, а ты тут контору палишь! ну знач не дИбилы, а петоразы. в хорошем смысле! (С) Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
06.06.2019, 11:43 |
|
Как обеспечить частичную уникальность ?
|
|||
---|---|---|---|
#18+
Ivan_Pisarevsky, Да это давно известно. Не только в сбере, но по-моему, во всех госбанках так. ВТБ24, например. При переводе на счёт "ваши деньги поступили, но пока недоступны". А если не нравится - идите в справедливый советский суд. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.06.2019, 11:46 |
|
Как обеспечить частичную уникальность ?
|
|||
---|---|---|---|
#18+
WildSery, перевели не на счёт и не на карту, а на номер мобильного телефона. Если речь обо мне. Счетов у меня ещё больше, чем карт. Но, похоже, сбер просто счета без карт не рассматривает для перевода по мобиле. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.06.2019, 11:54 |
|
Как обеспечить частичную уникальность ?
|
|||
---|---|---|---|
#18+
Гаджимурадов РустамМимопроходящийСисдба Мастеркеевич > у пользователей есть аккаунты, для каждой поддерживаемой валюты. очень странное решение. Это вообще нетривиальная задача, до сих пор универсальных хороший решений не встречал (и с удовольствием почитал бы чужой опыт на эту тему - в виде статьи или в свободном стиле). Самое распространенное - вести таблицу курсов валют и танцевать вокруг при их нестыковках Сорри за оффтоп. чего тут нетривиального? есть один лицевой счет пользователя, туда приходят рубли, бонусы, тэнге. сальдо по каждой валюте (субсчетам). некоторые валюты с прибабахами (то еще не действительны, то уже недействительны) и списываются соответственно. хочешь платить тэнге, а есть только рубли? конвертируй по курсу на момент операции, списывай тэнге, начисляй рубли. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.06.2019, 12:18 |
|
Как обеспечить частичную уникальность ?
|
|||
---|---|---|---|
#18+
pastorчего тут нетривиального? Например, проведение курсовой маржи по налоговому учёту. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
06.06.2019, 12:36 |
|
Как обеспечить частичную уникальность ?
|
|||
---|---|---|---|
#18+
WildSery, ВТБ прошлым летом классно выступил. Была у меня иха карта дебетовая. Вообще я карты энти не признаю, но некоторые вещи - тырнет там, Каспера - без карты уж больно геморно оплачивать, для таких и завёл, чтобы положить, скажем, двадцатку и пару раз в год не задумываясь сколько там использовать. С бесплатным обслуживанием при условии постоянного остатка 15 тыщ или потраты 17 в месяц. Как раз для меня, по остатку-то. Не выполнил - снимается за этот месяц 250. И вот 28 июля получаю я СМС что условия мы поменяли аж с 1 этого самого июля же. Остаток теперь не канает, но тратить достаточно 5. Проверил на сайте - да, всё так и есть. Надо сегодня-завтра успеть потратить пятёрку. А я ж летом сельский житель. В нашем сельпе картой можно только продавщицу Марьянку по носу щёлкнуть. Ладно, накинул клемму на аккумулятор, попёрся в райцентр. В доме-то всё было, в основном таблетками впрок в аптеке закрыл эту пятёрку. 30-го числа, ога. А хрен там, быстро только кошки родятся. По учёту, видать, не успело пройти, и первого 250 аккуратно сняли, с этим никаких задержек быть не может. Теперь прикинем. В стране народу мильёнов 120, я так думаю. Сталбыть, у десяти, пожалуй, такие их карты были. Множим 250 рублёв на 10 мульёнов и получаем щелчком пальцев 2.5 ярда из воздуха. Хоттабыч и известный сын турецкоподданого нервно курят кальян в сторонке. Я, натурально, вскипел и в первый же визит в город пошёл к ним и без разговоров ликвидировал нахрен эту карту. Не потому что пятёрку в месяц с неё тратить влом, а из принципа, нех с жульём якшаться. Причём передо мной трое были с тем же делом. Бизьнесь по-русски, ля. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.06.2019, 13:22 |
|
Как обеспечить частичную уникальность ?
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakovpastorчего тут нетривиального? Например, проведение курсовой маржи по налоговому учёту.Так ведь нет никакой маржи! Счёт только рублёвый, но при оплате чего-либо, производится конвертация в валюту оплаты по текущему курсу банка рубль/валюта оплаты [+комиссия банка]. Курсовая маржа и налоговый учёт по НДФЛ возникают при купле/продаже валюты на бирже через брокера. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.06.2019, 13:32 |
|
Как обеспечить частичную уникальность ?
|
|||
---|---|---|---|
#18+
Старый плюшевый мишка, да все такие. Тинькофф поднял беспошлинный остаток с 30тыс. до 50. Списался со Сбером. Настройки на онлайн-платежи нет. Деньги приходят на карточку с последней активностью. Сэкономили на полях или таблицах. Таймштамп рулит в Сбере. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.06.2019, 13:36 |
|
Как обеспечить частичную уникальность ?
|
|||
---|---|---|---|
#18+
rdb_devСчёт только рублёвый, но при оплате чего-либо, производится конвертация в валюту оплаты по текущему курсу банка рубль/валюта оплаты [+комиссия банка]. Оплате обычно предшествует документ на оплату. И из-за разницы курсов в момент его выставления и в момент оплаты возникает забавная вещь: ты выставил счёт на ХХХ рублей, провёл его как задолженность клиента, а потом тебе от клиента приходит УУУ рублей и внезапно сальдо с бульдо не сходятся. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
06.06.2019, 13:43 |
|
Как обеспечить частичную уникальность ?
|
|||
---|---|---|---|
#18+
06.06.2019 13:36, KreatorXXI пишет: > Таймштамп рулит в Сбере. us-us! (C) Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
06.06.2019, 13:43 |
|
Как обеспечить частичную уникальность ?
|
|||
---|---|---|---|
#18+
Вообще, наступать на грабли путания потока операций в микрокосме БД и потока событий в макрокосме реальной жизни, являющегося причиной протекания первого, свойственно, наверное, каждому программисту как минимум один раз в жизни. Он же в БД живёт, для него она - реальность. Я наступал. Ну и, соответственно, архив операций - это одно, а архив событий - другое. Временная последовательность разная. Первым пользуются а) программисты с целью понять где и когда они накосячили и с какого места надо корректировать данные б) служба безопасности с целью понять кто, когда и как на... на... обманул, короче, контору. А для хозяйственных целей пользуются вторым. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.06.2019, 15:02 |
|
Как обеспечить частичную уникальность ?
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakovrdb_devСчёт только рублёвый, но при оплате чего-либо, производится конвертация в валюту оплаты по текущему курсу банка рубль/валюта оплаты [+комиссия банка]. Оплате обычно предшествует документ на оплату. И из-за разницы курсов в момент его выставления и в момент оплаты возникает забавная вещь: ты выставил счёт на ХХХ рублей, провёл его как задолженность клиента, а потом тебе от клиента приходит УУУ рублей и внезапно сальдо с бульдо не сходятся. Это Вам, горемычным тяжко. Мне проще. Все, что поступило на л/с клиента - уже фискализировано и в налоговой. Это унутре работает в рублях, зайчиках или СБМШ. (Серо-буро-малиновых шариках, они же УЕ-БИНы :) А для непонятливых договор оферты на соседнем заборе, о том что на деньги клиента налита вода, насыпан снег и посажена трава на поле для гольфа. И ежели клиент не пришел и не воспользовался всей этой благодатью, до деньги все равно спишутся. Бонусы и подавно. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.06.2019, 15:02 |
|
Как обеспечить частичную уникальность ?
|
|||
---|---|---|---|
#18+
KreatorXXIWildSery, перевели не на счёт и не на карту, а на номер мобильного телефона. Если речь обо мне. Счетов у меня ещё больше, чем карт. Но, похоже, сбер просто счета без карт не рассматривает для перевода по мобиле.Насколько я понимаю, перевести на номер телефона можно только ОПСОСу. А в банк можно деньги перевести на "номер телефона" только в специализированном мобильном приложении, т.е. это только идентификатор, по которому срабатывает банковская система конкретного банка. С тем же успехом можно перевести деньги на ник KreatorXXI, если бы они захотели включить такую возможность. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.06.2019, 15:03 |
|
Как обеспечить частичную уникальность ?
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovОплате обычно предшествует документ на оплату. И из-за разницы курсов в момент его выставления и в момент оплаты возникает забавная вещь: ты выставил счёт на ХХХ рублей, провёл его как задолженность клиента, а потом тебе от клиента приходит УУУ рублей и внезапно сальдо с бульдо не сходятся.Самое поганое, когда "бульдо" расходится с "сальдо" на копейки - тут даже возврат переплаты или требование доплаты нецелесообразны. Остаётся лишь сторнировать и переделывать первичную документацию, подгоняя "сальдо" под "бульдо". ... |
|||
:
Нравится:
Не нравится:
|
|||
06.06.2019, 15:23 |
|
Как обеспечить частичную уникальность ?
|
|||
---|---|---|---|
#18+
WildSeryНасколько я понимаю, перевести на номер телефона можно только ОПСОСу. сберовское приложение уже где-то год для перевода денег вместо номеров карт выводит только номера телефонов. И уж какая карта привязана к этому телефону, по мнению сбера - х.з., это можно увидеть только инициировав платеж (выдаются последние цифры номера карты и имя-отчество с буквой фамилии). Бесит неимоверно, мне приходится постоянно переспрашивать номера карт родственников, если перевожу. Может быть в этом есть какой-то тайный смысл, но я его пока не понял. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.06.2019, 15:50 |
|
Как обеспечить частичную уникальность ?
|
|||
---|---|---|---|
#18+
kdvсберовское приложение уже где-то год для перевода денег вместо номеров карт выводит только номера телефонов.Моё сберовское приложение для андроида переводит на телефон/карту/счёт на выбор (имеется в виду получатель - клиент сбера) ... |
|||
:
Нравится:
Не нравится:
|
|||
06.06.2019, 15:57 |
|
Как обеспечить частичную уникальность ?
|
|||
---|---|---|---|
#18+
kdvМожет быть в этом есть какой-то тайный смысл, но я его пока не понял. Ха. За перевод комиссию взяли, желательно не попасть в тот, на который положить надо, за второй перевод уже с получателя ещё возьмём. С миру по нитке... ... |
|||
:
Нравится:
Не нравится:
|
|||
06.06.2019, 15:57 |
|
Как обеспечить частичную уникальность ?
|
|||
---|---|---|---|
#18+
Старый плюшевый мишка, не, ты погоди. перед платежом они данные же показывают, можно кнопку "подтвердить платеж" не нажимать, если там не то. Другое дело, если у человека несколько карт, то как в таких случаях оно дает выбирать, я не представляю (и не дает). ... |
|||
:
Нравится:
Не нравится:
|
|||
06.06.2019, 16:11 |
|
Как обеспечить частичную уникальность ?
|
|||
---|---|---|---|
#18+
WildSerykdvсберовское приложение уже где-то год для перевода денег вместо номеров карт выводит только номера телефонов.Моё сберовское приложение для андроида переводит на телефон/карту/счёт на выбор (имеется в виду получатель - клиент сбера) Вы можете выбрать номер телефона, а потом приложение сообщит номера банковских карт, привязанных к нему? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.06.2019, 16:30 |
|
Как обеспечить частичную уникальность ?
|
|||
---|---|---|---|
#18+
KreatorXXIВы можете выбрать номер телефона, а потом приложение сообщит номера банковских карт, привязанных к нему?Я могу отправить "на номер телефона", без выбора конкретного счёта, или я могу отправить на любой номер карты. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.06.2019, 17:00 |
|
Как обеспечить частичную уникальность ?
|
|||
---|---|---|---|
#18+
WildSeryKreatorXXIВы можете выбрать номер телефона, а потом приложение сообщит номера банковских карт, привязанных к нему?Я могу отправить "на номер телефона", без выбора конкретного счёта, или я могу отправить на любой номер карты. Это и есть проблема. Для получателя. Отправителю по барабану. И, конечно, отправитель не должен видеть счета получателя. Правильно дать настройку получателю. Я попросил рассмотреть мою хотелку. Но вряд ли быстро реализуют. Вообще не факт, что реализуют. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.06.2019, 17:18 |
|
Как обеспечить частичную уникальность ?
|
|||
---|---|---|---|
#18+
KreatorXXIа потом приложение сообщит номера банковских карт, привязанных к нему? спаси господь! потом предлагается ввести сумму, а уже потом пред-платежное сообщение, на какую карту свалится ваш платеж. Но оно как-то сопоставляет запись из телефонной книги с номером карты получателя. В общем, я не разобрался - там есть возможность вводить и номер карты, и номер счета получателя, и даже втыкать номер карты считывая ее NFC. Просто я привык тыкать в историю платежей, но она теперь чуть в другом месте. По умолчанию лезет платеж через "адресную книгу", это для клиентов сбера. Для других - перевод по номеру телефона или номеру карты. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.06.2019, 17:29 |
|
Как обеспечить частичную уникальность ?
|
|||
---|---|---|---|
#18+
KreatorXXIотправитель не должен видеть счета получателя. "Чо?" (с) Очередная голливудская идея "зная номер банковского счёта хакер может украсть ваши деньги"? Или "переведи деньги туда не знаю куда"? PS: Ей-ей, я не хотел разводить оффтопик. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
06.06.2019, 17:55 |
|
Как обеспечить частичную уникальность ?
|
|||
---|---|---|---|
#18+
Номер телефона это десять цифр и я могу посмотреть его в контактах собственного телефона. Номер счёта это двадцать цифр и где их взять "вот прям щас" - я просто не представляю. P.S. Есть, всё-таки, разница между "постоянные контрагенты" и "разово перечислить". ... |
|||
:
Нравится:
Не нравится:
|
|||
06.06.2019, 18:06 |
|
Как обеспечить частичную уникальность ?
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovСисдба Мастеркеевичэто не решит исходную проблему - т.е. не обеспечит единственность бонуса в статусе "активный". "чо?" (с) Ты каким-то магическим образом сумеешь запихать в поле "активный бонус" ссылку сразу на два бонуса? Тут уже первая НФ начнёт курить в углу. У бонуса есть статус. Их несколько. В том числе "active". Если мы запишем в аккаунт id активного бонуса, то это никак не обеспечит уникальности записей со статусом "active". Мимопроходящий05.06.2019 15:37, Сисдба Мастеркеевич пишет: > у пользователей есть аккаунты, для каждой поддерживаемой валюты. очень странное решение.Поясни. KreatorXXIКонечно, если в аккаунты пихнуть активный бонус. Этих аккаунтов у одного пользователя много. Наверно, вот откуда плясать надо.Много, но один аккуант = одна валюта, более одного аккаунта по какой-либо валюте не может быть. Всё расчеты строго по аккаунтам, никаких курсов валют не требуется. Если пользователь переключился на кошелек в еврах, то и пополняет его в еврах, и тратит евры, и баланс его ведется в еврах, и т.д. Про уточнение задачи я уже написал - это уникальность активного бонуса для аккаунтов, а не пользователей. Гаджимурадов РустамСисдба Мастеркеевич > Триггеры ... тимлид их не любит, поэтому у нас их нет. Вообще. Как и процедур. Сорри, не мог пройти мимо... А вы часом никаком ORMом не пользуетесь? Рустам, твой ХШ в полном порядке На самом деле там внутри PHP + Postgres + ORM, я просто примеряю, как бы я решал эти же задачи на FB ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2019, 07:53 |
|
Как обеспечить частичную уникальность ?
|
|||
---|---|---|---|
#18+
Сисдба МастеркеевичУ бонуса есть статус. Их несколько. В том числе "active". Если мы запишем в аккаунт id активного бонуса, то это никак не обеспечит уникальности записей со статусом "active". А, извини, я неправильно понял задачу. Я думал, что у тебя пользователь может иметь только один бонус, а у тебя, оказывается, два пользователя не могут иметь один и тот же бонус... Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2019, 12:07 |
|
Как обеспечить частичную уникальность ?
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovСисдба МастеркеевичУ бонуса есть статус. Их несколько. В том числе "active". Если мы запишем в аккаунт id активного бонуса, то это никак не обеспечит уникальности записей со статусом "active". А, извини, я неправильно понял задачу. Я думал, что у тебя пользователь может иметь только один бонус, а у тебя, оказывается, два пользователя не могут иметь один и тот же бонус... Не. Пользователи приплетены для туману. Это некто аккаунт-сан не может иметь два бонуса именно со значением атрибута active. Причём это должно быть отражено именно в таблице многие ко многим аккаунт-бонус и никак иначе. А значений у этого атрибута может быть тыщ 40. Неважно что в нём по смыслу смешение нескольких сущностей, внутренний кодекс клана это допускает. А вот применение стандартных средств внутри базы в интересующих клан целях, приводящее при назначении некоему бонусу статуса active к сбросу оного у предыдущего его носителя или лок конфликту, не допускает. По кодексу это ведёт к потере лица и чести. Возможно, дайме даже будет настаивать на сепукку. Ибо самураи клана всё должны делать уникальными индексами мечом, даже кушать рис и сакэ с него слизывать, предварительно обмакнув в чашу. Вариант выполнять функции триггера на клиенте и откатывать транзакцию при конфликте не достоин внимания, поскольку какой-нибудь утративший честь самурай может влезть мимо приложения и учёт такой возможности согласуется с концепцией единства и борьбы инь и янь. Короче, подозреваю тонкий троллинг. Достойнейший Мастеркеевич заключил пари на бутылку сакэ, что он справится с поставленной задачей не пользуясь имеющемися в АИ средствами. И переоценил возможности своего кунгфу. Остаётся что? Правильно, постараться заставить разработчиков FB всё бросить и делать самолётик для обслуживания баз с нарушениями НФ при проектировании. Причём нарушениями не в смысле классической продуманной и допустимой, в рамках имеющейся функционально-целевой модели предметной области, денормализации с целью перекладывания нагрузки с чтения, происходящего 100500 раз на дню, на запись, случающуюся раз-другой-третий. Ибо выпить-то хочется. А жаба душит. (Уходит из темы медитировать под цветущей яблоней). ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2019, 15:11 |
|
Как обеспечить частичную уникальность ?
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovСисдба МастеркеевичУ бонуса есть статус. Их несколько. В том числе "active". Если мы запишем в аккаунт id активного бонуса, то это никак не обеспечит уникальности записей со статусом "active". А, извини, я неправильно понял задачу. Я думал, что у тебя пользователь может иметь только один бонус, а у тебя, оказывается, два пользователя не могут иметь один и тот же бонус... Нет, ты правильно понял задачу! Именно так она и была определена:Сисдба МастеркеевичТакая задача: есть пользователи, им выдаются некоторые бонусы. Пользователь может активировать бонус, т.е. у бонуса есть статус. И есть нюанс - у каждого пользователя активным может быть только один бонус. Далее активный бонус либо отменяется, либо используется, т.е. в дальнейшем статус его изменяется либо по решению пользователя, либо после срабатываения некоторых условий.Просто ТС неправильно понял твой ответ, так как решил, что ты имеешь в виду идентификатор бонуса, а не идентификатор пользователя (идентификатор учётки пользователя). Естественно, что выставление статуса 'active' на бонус, само по себе, не обеспечивает необходимого ограничения. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2019, 09:22 |
|
Как обеспечить частичную уникальность ?
|
|||
---|---|---|---|
#18+
fraksrdb_devпропущено... Именно в этой уникальности как раз вся "смысловая нагрузка", для обеспечения условия "у пользователя не может быть более двух активных бонусов одномоментно" А одномоментно - это как? А если в соседнюю милисекунду - это уже не одномоментно и допускается?Сорян, не заметил твоего вопроса. Да - допускается. Почему нет? Пользователь сначала активировал один бонус, а затем передумал и в следующую миллисекунду активировал другой бонус (хотя, это у него вряд ли получиться, даже при пинге до сервера менее миллисекунды). Хозяин - барин. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2019, 09:28 |
|
Как обеспечить частичную уникальность ?
|
|||
---|---|---|---|
#18+
Старый плюшевый мишкаПравильно, постараться заставить разработчиков FB всё бросить и делать самолётик для обслуживания баз с нарушениями НФ при проектированииНе надо обвинений. Если что, напоминаю как звучал исходный вопрос: Сисдба МастеркеевичКак сделать такое ограничение в базе ?Тут ничего нет про "заставить разработчиков FB всё бросить и делать самолётик". Кроме того, Денис и Влад во первЫх строках уже написали, как это сделать: 21901288 21901289 ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2019, 11:52 |
|
|
start [/forum/topic.php?all=1&fid=40&tid=1560689]: |
0ms |
get settings: |
10ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
132ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
106ms |
get tp. blocked users: |
2ms |
others: | 14ms |
total: | 300ms |
0 / 0 |