Мне нужно спроектировать учетную запись пользователя / профильные таблицы для университетского проекта.Основная идея, которую я имею, заключается в следующем:
- таблица для учетной записи пользователя (электронная почта, имя пользователя, pwd и множество других полей)
- таблица профиля пользователя.
Мне кажется, что существует два способа моделирования таблицы профиля пользователя:
поместить все поля в таблицу [UserProfileTable]
UserAccountID (FK)
UserProfileID (PK)
DOB Date
Gender (the id of another table wich lists the possible gender)
Hobby varchar(200)
SmallBio varchar(200)
Interests varchar(200)
...
Поместите общие поля в таблицу и создайте таблицу ProfileFieldName, в которой будут перечислены все нужные нам поля.Например:
[ProfileFieldNameTable]
ProfileFieldID int (PK)
Name varchar
Имя будет «хобби», «биография», «интересы» и т. Д. ... Наконец, у нас будет таблица, которая будет связывать профили с полями профиля.:
[ProfileFieldTalbe]
ProfileFieldID int (PK)
UserProfileID FK FK
FieldContent varchar
'FieldContent' будет хранить небольшой текст о хобби, биографии пользователя, его интересах и т. Д.
Этот способ расширяемый, то есть добавление таким образомбольше полей соответствует INSERT
.
Что вы думаете об этой схеме?
Один недостаток заключается в том, что теперь для сбора всей информации профиля одного пользователя мне нужно выполнить объединение.
Вторым недостатком является то, что поле 'FieldContent' имеет тип varchar
.Что, если я хочу, чтобы он был другого типа (int
, float
, date
, FK для другой таблицы для списков и т. Д ...)?