2011-07-08 2 views
0

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

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

------------------ 
| tbl_user  | 
|----------------| 
| id    | 
| username  | 
| password  | 
| active   | 
------------------ 

------------------ 
| tbl_client  | 
|----------------| 
| id    | 
| pid   | 
| company  | 
| address  | 
| projects  | 
| ...   | 
------------------ 

... same with tbl_member and tbl_admin. 

Но после входа в систему, как я могу выбрать дополнительные поля из любой tbl_client, tbl_member и tbl_admin? Я мог бы использовать поле группы в tbl_user и использовать имя таблицы групп как значение. Но это не кажется очень профессиональным;)

Любые другие идеи?

+0

Благодарим всех вас за то, что убедили меня использовать поле tbl_user.group, чтобы указать пользовательский goup (client, member, admin) и присоединиться к таблицам tbl_user.id на tbl _ *. Pid. Я пробовал принимать все ответы, к сожалению, только один был возможен, поэтому я выбрал первый из Райана Бейтса. Но благодаря TheCapn, Dalton Conley и Jim также. –

ответ

0

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

1

Я не знаю, почему вы говорите «это не кажется профессиональным». Вы отделяете роль пользовательских данных от данных аутентификации пользователя, как и следовало ожидать. Нет ничего плохого в том, что вы предложили, и я бы порекомендовал его ...

1

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

1

Вы можете сделать соединение на выходе на всех трех таблицах.

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

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