В моей базе данных есть следующие таблицы:
- Студент (идентификатор_пользователя, адрес электронной почты, имя, ...)
- Курс (идентификатор_курса, имя_курса,...)
- Зачисление (student_id, course_id, оценки, ...)
Хочу реализовать эту функциональность:
- Когда администратор хочет найти список всех студентов в определенном городе, список отображается в виде таблицы HTML.
Это можно сделать, просто запросив таблицу учеников.
Когда администратор нажимает на любую строку (из таблицы, которую мы отобразили в 1.), тогда администратор должен видеть список всех курсов, в которые зачислен студент.
Мой вопрос: какя должен реализовать это?
Я могу придумать следующие способы:
Способ 1:
https://stackoverflow.com/a/45135144/3494107 Мне нужен какой-то способ, чтобы определить, на какую строку нажал администратор, для этого я могу пройтиstudent_id также в таблице в результате для 1 (отображать список всех учеников), но поскольку student_id не передает администратору никакой информации о ученике, я могу просто скрыть ее в атрибуте data-*
<tr>
или в <a href=/enrollment/${student_id}>
, чтобыЯ могу использовать это, чтобы определить, на какую строку нажал администратор.Некоторые из моего друга сказали мне, что я не должен выставлять суррогатный ключ, это плохо для безопасности.Так есть ли какой-нибудь способ, которым я могу связать этот student_id со строкой таблицы, но скрыть от пользователя, или это нормально, чтобы предоставить контент суррогатного ключа пользователю?
Способ 2:
Я могу создать временную таблицу, содержащую всех студентов из определенного города в БД, и присвоить ей идентификатор строки.Теперь в результате я могу добавить этот идентификатор строки для каждой строки в атрибут data- *.Этот идентификатор строки не содержит никакой информации о том, что является фактическим student_id, и я могу использовать этот идентификатор строки для запроса временной таблицы, чтобы получить фактический идентификатор student_id, который я могу использовать для поиска в таблице регистрации.Теперь мне нужно удалить эту временную таблицу, когда пользователь уходит с текущей страницы (перейти к другим функциям), теперь как мне определить, когда пользователь ушел с этой страницы?
Я хочу понять, какие проблемы с безопасностью могут возникнуть, если я предоставлю пользователю суррогатный ключ?