Присоединиться к таблице или дублировать данные? - PullRequest
0 голосов
/ 19 января 2011

Я ищу реальные реализации: Вариант использования следующий:> Я сохраняю данные для входа пользователя (режим, сеанс, браузер, ОС и т. Д.) В таблицу сеансов. У меня есть таблица действий, в которой я отслеживаю действия, которые FK передают в таблицу сеансов.

Теперь, когда пользователь выполняет действие с таким объектом, как «Создать фотографию», я хочу включить в него все детали, такие как браузер, который пользователь использовал для загрузки изображения, свой IP-адрес и т. Д. Итак, все поля в сессионный стол.

В хороший день вы обычно присваиваете session_Id с таблицей фотографий и присоединяетесь, чтобы получить эти данные. Но что, если я дублирую те же 6-7 столбцов на фотографии и каждой таблице объектов, чтобы предотвратить соединения / FKs?

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

1 Ответ

1 голос
/ 19 января 2011

Если вы не ожидаете, что данные (браузер, IP-адрес и т. Д.) Изменятся во время сеанса, зачем дублировать данные? Просто свяжите каждую фотографию (или, в более общем случае, каждый экземпляр действия) с идентификатором сеанса, который был загружен.

С другой стороны, если вы ожидаете, что детали изменятся, однако, как только кто-то войдет в систему (что может произойти - подумайте о том, что у кого-то есть новый IP-адрес, когда он входит на ваш сайт в сети 1, спите на своем ноутбуке, перейти в новую сеть, а затем отключить, чтобы их браузер сохранил cookie, даже если IP-адрес изменился), я бы либо:

  • Рассматривайте их как различные сеансы ИЛИ

  • Создайте таблицу CLIENT_INFO и сделайте это 1: M ассоциация с сессией, так что вы можете поддерживать один логический сеанс, но поддержка нескольких клиентов экземпляры.

Если бы я был тобой, и мне действительно нужны были эти детали, я, вероятно, сделал бы последнее.

...