Лучше иметь идентификатор пользователя или имя пользователя в поле updatedBy в базе данных

У меня есть поля в моих почти всех таблицах, как createdBy или же updatedBy, Я думаю, что это только для справки.

Как вы думаете, я должен ввести имя пользователя там или userID, Потому что, если мне нужно взглянуть на базу данных напрямую, это может дать лучшее понимание, или это плохая практика.

6 ответов

Решение

Всегда используйте внешние ключи для хранения ссылочных записей, то есть userID в вашем случае.

а что касается подхода к хранению, это зависит от того, что вам нужно.

а) если вы хотите узнать, кто в последний раз обновил запись. тогда вы должны создать userID столбец в таблице.

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

б) если вы хотите сохранить все записи, узнать, какой пользователь обновил записи и когда, то вы должны сохранить их в таблице отношений один ко многим. например

user_log with columns user_id, update_datetime и, возможно, столбец сообщения, рассказывающий, что сделал пользователь.

В случае имен пользователей, суррогатные ключи имеют тенденцию быть лучшим выбором. Итак, в вашем случае ФК (createdBy а также updatedBy) будет ссылаться на суррогатный ключ (userID), а не естественный ключ (имя пользователя).

Тем не менее, это не означает, что суррогатное слово всегда лучше, чем естественный ключ: рассмотрите этот список критериев.

Идентификатор пользователя. Потому что они меньше и быстрее, чем имена пользователей.

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

Всегда используйте идентификаторы, чтобы сохранить нормализованную структуру реляционных данных. это обеспечит лучшую производительность и большую масштабируемость. Если вы можете включить ограничения, это сделает его намного чище.

Это не всегда плохо. От вас зависит необходимость применения. Нормализация хороша для устранения избыточности. Принимая во внимание, что если скорость является фактором, вы можете оставить его как есть. Как присоединение занимает время. Также вставка данных означает вставку в две таблицы.

Тем не менее, всегда +1 за нормализацию по книге:)

Используйте то, что не может быть изменено позже. Обычно это верно для user_id.

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

Другие вопросы по тегам