powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Как обеспечить частичную уникальность ?
25 сообщений из 98, страница 2 из 4
Как обеспечить частичную уникальность ?
    #39822472
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящийибо уникальность именно ЭТОГО ключа не несёт никакой смысловой нагрузки.
Именно в этой уникальности как раз вся "смысловая нагрузка", для обеспечения условия "у пользователя не может быть более двух активных бонусов одномоментно" с бонусом в виде побочного эффекта хранения истории активации бонусов.
...
Рейтинг: 0 / 0
Как обеспечить частичную уникальность ?
    #39822490
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_dev,

продолжай монолог
...
Рейтинг: 0 / 0
Как обеспечить частичную уникальность ?
    #39822518
Фотография Старый плюшевый мишка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_devhvlad, ты хочешь сказать, что для таблицы:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
CREATE TABLE "active_bonus"
(
    "tmstmp"    TMSTMP NOT NULL,
    "user_id"   ID NOT NULL,
    "bonus_id"  ID NOT NULL,
  CONSTRAINT "active_bonus__pk" PRIMARY KEY ("user_id", "tmstmp")
);

Сервер FirebirdSQL не обеспечить уникальность составного ПК? Тогда тут дело совсем не в пользователях...

Дело не в сервере Firebird. Дело в устройстве Мироздания. И составной, не составной - рояли не играет.

https://yandex.ru/images/search?text=дискретность времени&stype=image&lr=2&source=wiz

Кстати, когда-то, когда был молод и глуп, в смысле лет эдак сорока, наступил на violation timestamp-PK в архиве примерно через месяц после его создания. И всего-то при паре десятков пользователей.
...
Рейтинг: 0 / 0
Как обеспечить частичную уникальность ?
    #39822520
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Старый плюшевый мишкакогда-то, когда был молод и глуп, в смысле лет эдак сорока, наступил на violation
timestamp-PK в архиве примерно через месяц после его создания.

"В те времена далёкие, теперь почти былинные" current_timestamp был с точностью в целые
секунды и никто не умел работать с их долями. К счастью, сейчас такие нубы уже перевелись.
Наверное.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как обеспечить частичную уникальность ?
    #39822525
Фотография Старый плюшевый мишка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сисдба МастеркеевичОба решения не нравятся, потому что требуют заводить какие-то дополнительные объекты, являющиеся, по сути, костылями.

При активизации любого бонуса у юзера сброс молча в inactive предыдущего его активного в before триггерах по бизнес-логике не прокатывает?
...
Рейтинг: 0 / 0
Как обеспечить частичную уникальность ?
    #39822527
Фотография Старый плюшевый мишка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov"В те времена далёкие, теперь почти былинные" current_timestamp был с точностью в целые
секунды и никто не умел работать с их долями.


Да ладно. Или ты Абрамс вспомнил? Уже в IB4 точно с миллисекундами был. А вот родной его WISQL их не отображал просто, это факт.
...
Рейтинг: 0 / 0
Как обеспечить частичную уникальность ?
    #39822548
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Старый плюшевый мишкаУже в IB4 точно с миллисекундами был.

Тип-то всегда был с четырьмя знаками после точки, а вот помянутая контекстная переменная
такого не умела, как и подавляющее большинство компонент доступа.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как обеспечить частичную уникальность ?
    #39822587
fraks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_devМимопроходящийибо уникальность именно ЭТОГО ключа не несёт никакой смысловой нагрузки.
Именно в этой уникальности как раз вся "смысловая нагрузка", для обеспечения условия "у пользователя не может быть более двух активных бонусов одномоментно"

А одномоментно - это как?
А если в соседнюю милисекунду - это уже не одномоментно и допускается?
...
Рейтинг: 0 / 0
Как обеспечить частичную уникальность ?
    #39822615
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Читаю ветку и ... в недоумении.
Уникальность индексами здесь вообще не нужна. Одновременная в рамках действия транзакции вставка двух бонусов превращается только в головную боль, но никаких бонусов не даёт.
...
Рейтинг: 0 / 0
Как обеспечить частичную уникальность ?
    #39822659
Сисдба Мастеркеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну вы тут накидали, стоило отойти ненадолго ... :))

Уникальность нужна только для активного бонуса. Неактивных, например, выданных пользователю, но не активированных им, может быть сколько угодно. В том числе и при наличии активного.

Старый плюшевый мишкаСисдба МастеркеевичОба решения не нравятся, потому что требуют заводить какие-то дополнительные объекты, являющиеся, по сути, костылями.

При активизации любого бонуса у юзера сброс молча в inactive предыдущего его активного в before триггерах по бизнес-логике не прокатывает?
Триггеры не помогут, ибо тимлид их не любит, поэтому у нас их нет. Вообще. Как и процедур.
...
Рейтинг: 0 / 0
Как обеспечить частичную уникальность ?
    #39822663
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сисдба МастеркеевичТриггеры не помогут, ибо тимлид их не любит, поэтому у нас их нет. Вообще. Как и процедур.Каким образом тогда активируется бонус? Кто деактивирует предыдущий активный?
...
Рейтинг: 0 / 0
Как обеспечить частичную уникальность ?
    #39822664
KreatorXXI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сисдба МастеркеевичТриггеры не помогут, ибо тимлид их не любит, поэтому у нас их нет. Вообще. Как и процедур.

Вся логика на клиенте? Зачем тогда париться насчёт этого хитрого индекса?
...
Рейтинг: 0 / 0
Как обеспечить частичную уникальность ?
    #39822757
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сисдба МастеркеевичУникальность нужна только для активного бонуса.

Повторяю медленно: в чём проблема сделать этот бонус полем в таблице пользователей?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как обеспечить частичную уникальность ?
    #39822767
Фотография Старый плюшевый мишка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сисдба МастеркеевичТриггеры не помогут, ибо тимлид их не любит, поэтому у нас их нет. Вообще. Как и процедур.

Аааа... Бег в мешках с барьерами по подвесной проволоке? Уважаю. Почти. Ибо индексы он таки любит, прослабел. Самурай без меча подобен самураю с мечом, но только без меча.
...
Рейтинг: 0 / 0
Как обеспечить частичную уникальность ?
    #39822807
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WildSeryЧитаю ветку и ... в недоумении.
Уникальность индексами здесь вообще не нужна. Одновременная в рамках действия транзакции вставка двух бонусов превращается только в головную боль, но никаких бонусов не даёт.В таком случае у меня возникает несколько вопросов:
1. Кто будет одномоментно с двух разных АРМов активировать бонус одному и тому же пользователю, а главное - по какому событию?
2. Если, всё же, два оператора АРМа умудрились одномоментно - в одноу и ту же миллисекунду запустить транзакции на активацию бонуса для конкретного пользователя, и оператор-неудачик получил от сервера отлуп о дублировании уникального индекса, то это тут же становится головной болью разработчика/администратора БД или, всё же, это штатное поведение системы, адекватно воспринимаемое обученным оператором?
3. Если бонус активирует сам пользователь через веб-интерфейс, то как он одномоментно - с точностью до миллисекунды нажмёт рядом с бонусом кнопку "активировать" с двух разных веб-страниц?
...
Рейтинг: 0 / 0
Как обеспечить частичную уникальность ?
    #39822811
KreatorXXI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovСисдба МастеркеевичУникальность нужна только для активного бонуса.

Повторяю медленно: в чём проблема сделать этот бонус полем в таблице пользователей?

Похоже на денормализацию. Тимлид не одобрит.
...
Рейтинг: 0 / 0
Как обеспечить частичную уникальность ?
    #39822820
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KreatorXXIПохоже на денормализацию. Тимлид не одобрит.

Никакой денормализации. Текущий бонус - атрибут клиента, ссылка на таблицу бонусов. Все
три НФ удовлетворённо кивают.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как обеспечить частичную уникальность ?
    #39822821
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_devВ таком случае у меня возникает несколько вопросов:
1. Кто будет одномоментно с двух разных АРМов активировать бонус одному и тому же пользователю, а главное - по какому событию?
2. Если, всё же, два оператора АРМа умудрились одномоментно - в одноу и ту же миллисекунду запустить транзакции на активацию бонуса для конкретного пользователя, и оператор-неудачик получил от сервера отлуп о дублировании уникального индекса, то это тут же становится головной болью разработчика/администратора БД или, всё же, это штатное поведение системы, адекватно воспринимаемое обученным оператором?
3. Если бонус активирует сам пользователь через веб-интерфейс, то как он одномоментно - с точностью до миллисекунды нажмёт рядом с бонусом кнопку "активировать" с двух разных веб-страниц?Эти вопросы нужно было задавать до того, как предлагать ерунду, и уж точно до того, как её отстаивать.

1. Не твоё дело. Absolutely. Если физическая возможность есть, ею воспользуются.
2. С какого перепугу ты решил, что последняя по времени ввода запись является правильной ?
С чего ты взял, что для повторной активации ранее введённого и ныне неактивного бонуса, его нужно ввести заново (и удалить старую запись, убив часть истории, которую ты тут так сильно хочешь) ?
3. См п1 и п2

Я уже писал, что у тебя нет реального опыта работы в реальных условиях ?
...
Рейтинг: 0 / 0
Как обеспечить частичную уникальность ?
    #39822824
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а я не умею так культурно и без матов...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как обеспечить частичную уникальность ?
    #39822830
pastor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сисдба МастеркеевичНу вы тут накидали, стоило отойти ненадолго ... :))

Уникальность нужна только для активного бонуса. Неактивных, например, выданных пользователю, но не активированных им, может быть сколько угодно. В том числе и при наличии активного.


Я тебе за бонусы еще один умный вещь скажу.

Завтра придут и потребуют сроки протухания бонусов. Как активированных, так и неактивированных.
А послезавтра - сроки начала активации оных.

И еще вчера - текущее сальдо этих самых бонусов.
...
Рейтинг: 0 / 0
Как обеспечить частичную уникальность ?
    #39822846
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladЭти вопросы нужно было задавать до того, как предлагать ерунду, и уж точно до того, как её отстаивать.

1. Не твоё дело. Absolutely. Если физическая возможность есть, ею воспользуются.И пусть пользуются! Это как-то негативно повлияет на работу сервера FirebirdSQL в целом - приведёт к его нештатной работе или падению? Или это как-то нарушит бизнес логику процесса?

hvlad2. С какого перепугу ты решил, что последняя по времени ввода запись является правильной ?Это будет решать оператор или пользователь, который захочет активировать бонус из того набора бонусов пользователя, что хранится в отдельной справочной таблице, а не в таблице " active _bonus".

hvladС чего ты взял, что для повторной активации ранее введённого и ныне неактивного бонуса, его нужно ввести заново (и удалить старую запись, убив часть истории, которую ты тут так сильно хочешь) ?С чего ты взял, что для повторной активации ранее деактивированного бонуса нужно что-то удалять в таблице "active_bonus"? Ограничение ПК вполне позволит добавить тот же "bonus_id" тому же "user_id", которые уже существуют в таблице "active_bonus", но с другим штампом времени.

hvlad3. См п1 и п2
Я уже писал, что у тебя нет реального опыта работы в реальных условиях ?На заборах тоже часто пишут совершенно необоснованные утверждения.
...
Рейтинг: 0 / 0
Как обеспечить частичную уникальность ?
    #39822851
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pastorИ еще вчера - текущее сальдо этих самых бонусов.Причём, отчётом на произвольный временной интервал.
...
Рейтинг: 0 / 0
Как обеспечить частичную уникальность ?
    #39822857
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_devhvlad1. Не твоё дело. Absolutely. Если физическая возможность есть, ею воспользуются.И пусть пользуются! Это как-то негативно повлияет на работу сервера FirebirdSQL в целом - приведёт к его нештатной работе или падению? Или это как-то нарушит бизнес логику процесса?Намёки на падения сервера засунь себе в ...карму.
Насчёт бизнес логики - твоё предложение её вообще не позволяет соблюсти.
Ибо "кто последний ввёл - того и тапки" - вот и вся твоя "бизнес логика".

rdb_devhvladС чего ты взял, что для повторной активации ранее введённого и ныне неактивного бонуса, его нужно ввести заново (и удалить старую запись, убив часть истории, которую ты тут так сильно хочешь) ?С чего ты взял, что для повторной активации ранее деактивированного бонуса нужно что-то удалять в таблице "active_bonus"? На первую часть вопроса ответа нет ?
Про удаление записи я поторопился, согласен.

rdb_devhvladЯ уже писал, что у тебя нет реального опыта работы в реальных условиях ?На заборах тоже часто пишут совершенно необоснованные утверждения.Ну так тут не забор (вроде) - хватит уже.
...
Рейтинг: 0 / 0
Как обеспечить частичную уникальность ?
    #39822858
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovСисдба МастеркеевичУникальность нужна только для активного бонуса.

Повторяю медленно: в чём проблема сделать этот бонус полем в таблице пользователей?
Можно туда просто ссылку пихать на бонус. Какой запихан - тот и активен.
...
Рейтинг: 0 / 0
Как обеспечить частичную уникальность ?
    #39822864
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящийа я не умею так культурно и без матов...Даже в такой, казалось бы, пустой теме есть чему (и у кого) поучиться. :) Держись, матом не надо!
...
Рейтинг: 0 / 0
25 сообщений из 98, страница 2 из 4
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Как обеспечить частичную уникальность ?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]