"FirstName" и "LastName" сохраняются в базе данных USER или USER_PROFILE? - PullRequest
3 голосов
/ 20 апреля 2010

В настоящее время я храню «FirstName» и «LastName» пользователя в таблице «USER», но у меня также есть таблица «USER PROFILE» (которая предоставляет дополнительную информацию о пользователе), и имеет смысл иметь «FirstName» пользователя "LastName" в таблице USER PROFILE также.

Так что мне делать? сделать две копии "FirstName" и "LastName"?


Таблица USER, содержит учетные данные пользователя, которые пользователь использует для входа в свою панель управления учетной записью, т. Е. Имя пользователя, пароль, дата регистрации, вопросы безопасности и т. Д.

Таблица USER_PROFILE, содержит информацию о пользователе, такую ​​как адрес, номер телефона, страна рождения, страна гражданства и т. Д.

Отношения

ПОЛЬЗОВАТЕЛЬ 1. * ПОЛЬЗОВАТЕЛЬ_ПРОФИЛЬ

Ответы [ 5 ]

3 голосов
/ 20 апреля 2010

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

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

1 голос
/ 20 апреля 2010

Нет, не делайте 2 копии . Либо оставьте его в таблице USER, либо переместите в таблицу USERPROFILE.

Если у вас есть ИД пользователя в обоих, вы можете использовать объединение.

Если вы можете предоставить немного больше подробностей структуры между ПОЛЬЗОВАТЕЛЕМ и ПОЛЬЗОВАТЕЛЕМ ПОЛЬЗОВАТЕЛЯ, мы можем выяснить, к какому из них это относится. Из того, что я могу подумать, может показаться, что USERPROFILE - это личные данные пользователей, поэтому это может показаться логичным местом для размещения упомянутой информации.

0 голосов
/ 20 апреля 2010

Если каждая запись в USER имеет ровно одну запись в USER_PROFILE и наоборот, то логически (то есть с точки зрения нормализации) они должны быть единой таблицей (потенциально с разными взглядами на них, например, чтобы только авторизованные люди видели адреса и номера телефонов).

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

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

0 голосов
/ 20 апреля 2010

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

Например, если поля имени и фамилии являются частными полями, обязательны для заполнения и используются с полями в пользовательской таблице чаще, чем таблица профиля ... поместите их в таблицу USER.

Если они требуются, но чаще всего используются с номером телефона, адресом и т. Д., Поместите их в таблицу профиля.

Если они необязательны, без сомнения, поместите их в таблицу профилей.

0 голосов
/ 20 апреля 2010

Какие еще данные хранятся в таблице USER?

Чем отличаются данные в USER_PROFILE и USER?

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

В любом случае, не дублируйте его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...