Зачем использовать идентификаторы для поиска данных, а не использовать заголовок — пожалуйста, помогите мне оспорить мою точку зрения

Пожалуйста, помогите мне оспорить мою точку зрения.

Я работаю над проектом веб-сайта с командой разработчиков, мы разрабатываем систему в 3 частях. Одна часть — это API, 2 back-end и front-end. И интерфейсная часть, и серверная часть получают и сохраняют данные, отправляя их в API.

Я несу особую ответственность за интерфейс. Я использую Codeigniter в качестве моей основы.

Немного предыстории: приложение представляет собой сайт спортивных ставок.

Вот в чем проблема: разработчики API используют название, например, турнира, или турнира, или спорта, чтобы выполнить поиск, я передаю название турнира, например:
www.example.com/sport/add_bet/{tournament_name}

Проблема, с которой я столкнулся, заключается в том, что имя турнира, введенное в систему людьми, может содержать такие символы, как пробелы, косая черта и т. Д. В названии.

Как вы можете себе представить, использование косой черты в URL полностью сломает систему, поскольку мы используем их для вызова различных контроллеров, действий и передачи переменных.

Я пытаюсь заставить их перейти на использование простого поля идентификатора первичного ключа для поиска данных. По какой-то причине эти разработчики не хотят этого делать.

Менеджер проекта, который управляет этим проектом (не программист и не имеет опыта программирования), поболтал с ними об этой проблеме, но все же они не хотят меняться, и они сказали ей, что это вопрос личного предпочтения, по которому путь

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

Не могли бы вы, ребята / девочки, помочь мне подтвердить мою точку зрения, объяснив, почему я прав или неверен с вашей точки зрения. Я хотел бы предоставить ваши ответы в качестве мотивации, чтобы заставить их перейти на правильную работу.

Ваша помощь / ответы / предложения будут высоко оценены.

0

Решение

Самое главное это id будет unique как это должно быть primary key, поэтому поиск по идентификаторам даст уникальные результаты.

Но множественная запись может иметь title если ты не сделал validate их во время сохранения.

А также, если вы хотите, чтобы некоторые joins или что-то подобное id помог бы

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

1

Другие решения

Есть две стороны:
1) Вы можете выбрать один заголовок из выпадающего списка и отправить на сервер только идентификатор. Поиск по идентификатору намного быстрее (при условии, что вы используете идентификатор в качестве первичного ключа). Но если у вас много названий, вам нужно перечислить их все, и пользователь будет вынужден прокрутить, пока не найдет этот заголовок.

2) У вас есть простое поле ввода, чтобы разрешить поиск только по части заголовка. Таким образом, вам не нужно перечислять все названия. Как программист, вы должны избегать любого пользовательского ввода, который идет на сервер (через GET или POST), чтобы пользователь мог вводить даже DELETE FROM user WHERE 1 в поле ввода и ваша система будет работать нормально. Также при вводе только части заголовка можно показывать несколько результатов, при этом использование идентификаторов невозможно.

Я предпочитаю второй подход.

0

Чтобы ускорить поиск, вам нужно поместить индекс в столбец, по которому вы просматриваете записи. Столбец первичного ключа всегда имеет индекс. Чтобы использовать какой-то другой столбец, вам нужно добавить уникальный индекс, чтобы избежать дублирования и ускорить поиск, что, в свою очередь, увеличивает таблицу. Если вы ожидаете, что таблица вырастет (что не исключено, если вы будете следить за многими видами спорта и многими лигами / турнирами в течение ряда лет), это может стать проблемой в определенный момент, в зависимости от ресурсов вашей производственной среды. Это не самый сильный аргумент, который вы можете представить, но это также не плохой аргумент

0