Архитектор информационных систем и баз данных. Ful
Думаю надо копать в сторону WebRTC, т.к. вы пытаетесь построить систему реального времени. Но можно требования к системе изменить и жизнь упроститься.
Вообще говоря есть предикат ЛотЗавершен(лот,{заявки})={true|false}. А как его реализовывать это уже второй вопрос.
Архитектор информационных систем и баз данных. Ful
Делаете таблицу с атрибутом DECIMAL, а на нее ссылку по ключу из таблице где в записи рейтинг. Потом JOIN LEFT и получаете Ваш рейтинг с одной стороны, а SELECT по ней варианты значений рейтинга с другой стороны для фронтэнда.
Таблицу при инсталляции надо как раз Вашими значениями и заполнить.
Архитектор информационных систем и баз данных. Ful
Для данных фиксированной длины, лучше использовать поля фиксированной длины. База будет эффективней работать. Это по производительности. А с точки зрения целостности данных база - последняя линия обороны. Поэтому лучше чтобы параметры полей соответствовали проекту. А то потом где-то всплывет что-нибудь. Или будет глючить неуловимо.
Архитектор информационных систем и баз данных. Ful
Например так:
Таблица "Очередь обновлений записей" - запись обновилась туда вставляете запись с новой версией записи.
Потом по этой таблице пробегаете периодически и на серваки раскладываете апдейты.
Архитектор информационных систем и баз данных. Ful
Поставьте себе WordPress,Joomla или Drupal и не углубляетесь в эти дерби.
Главное обновляйте регулярно и храните бэкапы, чтобы криптолокеры на поймали.