Таблица пользователей - одна таблица или две? - PullRequest
0 голосов
/ 26 октября 2010

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

Ответы [ 6 ]

3 голосов
/ 26 октября 2010

Если это атрибуты пользователя (а они 1-1), то они принадлежат пользовательской таблице.

Обычно разделение выполняется только при наличии большого количества столбцов;тогда вы могли бы создать еще одну таблицу в отображении 1-1.

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

2 голосов
/ 26 октября 2010

Одна таблица должна быть достаточно хорошей.

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

2 голосов
/ 26 октября 2010

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

2 голосов
/ 26 октября 2010

Один стол должен быть в порядке. Я буду хранить хэш в столбце password.

1 голос
/ 26 октября 2010

Зависит от того, что это за приложение, оно может отличаться.

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

  1. tbl_UserPersonallInformation (содержит личную информацию как имя, адрес, адрес электронной почты, ...)
  2. tbl_UserSystemInformation (содержит другая информация, как (название, JoinedTheCompanyOn, LeftTheCompanyOn)

В таких системах, как «Управление документами», «Управление информацией о проектах», ... это может быть необходимо. например, в компании сотрудники могут уйти и вернуться через несколько лет, и даже у них будут разные должности. У сотрудника были некоторые виды деятельности и записи с его старым названием, и у него будет еще несколько с новым. Так что в системе должно быть записано, с каким названием (полномочием) он что-то сделал.

1 голос
/ 26 октября 2010

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

User
-------------------------------
UserID INT NOT NULL PRIMARY KEY


UserProfile
-------------------------------------------------------
UserID INT NOT NULL PRIMARY KEY REFERENCES User(UserID)
...