2010-10-26 2 views
0

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

ответ

2

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

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

2

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

3

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

Вы бы обычно разделяли, если бы было много столбцов; то вы могли бы создать другую таблицу в 1-1 сопоставлении.

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

2

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

1

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

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


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

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

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

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

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

Смежные вопросы