#php #mysql #repeat
#php #mysql #повторить
Вопрос:
Я хочу разрешить всем пользователям приложений добавлять свои собственные категории для своих продуктов. Продукты могут сильно различаться, поэтому это не просто то, что я могу предсказать и вставить сам ранее.
Однако, если мы разрешим всем пользователям добавлять свои собственные категории, у нас могут возникнуть такие проблемы, как:
Пользователь A вставляет категорию под названием: Фрукты
Пользователь B вставляет категорию под названием: Еда с деревьев
(это фиктивный пример, но, возможно, вы поняли проблему).
Вообще говоря, какие способы у нас есть, чтобы избежать повторения в нашей системе?
Я совершенно не осведомлен о том, какие у нас могут быть способы, поэтому некоторые ресурсы, ссылки, что угодно, более чем приветствуются.
Большое спасибо.
Ответ №1:
Не самое удобное решение, но вы могли бы добавлять все новые записи в очередь, которая модерируется определенным количеством пользователей. Новые записи появятся только после утверждения.
Комментарии:
1. Действительно, проблема в том, что нам нужно найти автоматизированный способ сделать это, поскольку у нас не будет ресурсов, чтобы справиться с этим.
2. @MEM автоматическое решение, которого можно избежать,
food from trees
когдаfruits
существует?! Вероятно, вам потребуется меньше времени на модерацию, чем на написание этого алгоритма 🙂3. @MEM: Ваш пример потребовал бы, чтобы машина IBM Watson лингвистически рассуждала о потенциальных совпадениях в значении между «Фруктами» и «Едой с деревьев». Даже профессиональным философам-людям, работающим над онтологиями, было бы трудно разобраться в вашем примере. Действительно, как носитель английского языка, я не могу понять, одинаковые они или разные.
4. @MEM: «у нас нет повторения». Я предполагаю, что вы шутите по этому поводу. Объясните разницу (если возможно) между [модульным тестированием] и [TDD]. Совпадение по смыслу? Нет перекрытия? И как бы вы сказали? Какой тест вы бы — как человек — использовали, чтобы определить, являются ли они дубликатами?
5. @MEM Это также зависит от того, насколько общей / открытой является ваша система, возможно, решением было бы предоставить всем пользователям их собственные категории и ограничить их только своими собственными. В конце концов, количество категорий будет составлять лишь часть от количества продуктов.
Ответ №2:
Если так я понимаю:
Во-первых, рекомендуемое название категории, если пользователь начнет вводить «fru», отобразит существующую категорию ухода, называемую «фрукты» и т.д.
Я использую псевдонимы, например:
Категории таблиц:
id (serial)
name (varchar)
aliasof (bigint)
Из серверной части я добавляю список новых категорий, и, если существует, устанавливаю связь:
Супозировать:
1 fruits 0
2 fruits of tree 1
Комментарии:
1. Спасибо. Пользователи, к сожалению, не разбираются в технических вопросах, и обычно они просто вставляют, несмотря ни на что, ДАЖЕ ЕСЛИ мы представим им несколько альтернатив и предупредим их: «пожалуйста, избегайте введения новых данных, если у вас здесь перечислены похожие». На самом деле в этом и заключается проблема. 🙂
Ответ №3:
Иерархические категории, чтобы при возникновении такой ситуации с ней можно было справиться чисто. Затем, когда кто-то приходит и удаляет дочернюю категорию, элементы могут быть сброшены в родительскую категорию.
Комментарии:
1. Потрудитесь объяснить немного больше. Основная причина, по которой нам нужно избегать этого, заключается в том, чтобы: а) разрешить сравнение (позже) б) избежать мусора базы данных.