2011-06-26 4 views
1

Неплохо ли включать всю информацию пользователя в одну таблицу? Было бы неплохо иметь таблицу users и таблицу user_profiles?Базы данных: Профили пользователей

Какой метод является лучшим и почему?

При каких обстоятельствах вы использовали бы одну или две таблицы?

ответ

3

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

Еще одной причиной разделения таблиц может быть управление разрешениями - администратору DBA проще ограничивать разрешения для одной таблицы и предоставлять другой. У меня все равно будет одна таблица с ограниченными разрешениями и общедоступный просмотр с ограниченными столбцами.

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

1

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

+0

Хорошо, но почему? ОП спрашивает, какой метод лучше всего, и когда использовать каждый из них. – CesarGon

0

Я согласен с Летом. Я не вижу никакой проблемы с тем, чтобы вся информация была в той же таблице.

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

+0

Тогда почему у вас будет два? Похоже, что это довольно стандартная практика ... –

+2

За 3 года работы программистом я узнал, что стандартная практика не всегда одинаково хороша;) Однако это может принести вам пользу, если у вас есть тонна информации о пользователе, он беспокоился, что это будет нелегко. О какой «пользовательской» информации вы беспокоитесь? Я согласен с системой пользователя/пользователя Summer. –

+0

Я не прочитал все это, но проверьте # 5: http://www.simple-talk.com/sql/database-administration/ten-common-database-design-mistakes/ (В базе данных, процесс нормализации, как средство разбиения и изоляции данных, переводит каждую таблицу в точку, где одна строка представляет одну вещь.) Поэтому он думает о том, можете ли вы разбить пользователя на отдельные вещи. Я никогда не сталкивался с ситуацией, когда я сломал ее. –

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