Нужно ли создавать новую таблицу для каждого пользователя в веб-приложении? - PullRequest
7 голосов
/ 11 декабря 2010

Я пишу свое первое веб-приложение и знаю достаточно о базах данных, чтобы знать, что схема важна, но недостаточно, чтобы знать, как на самом деле написать хорошую.

Существует ли стандартный протокол дляобработка информации, хранящейся в каждой учетной записи пользователя?Мой инстинкт состоит в том, чтобы иметь одну таблицу, в которой хранится ключ пользователя и информацию для входа в систему, и дескриптор его таблицы (вероятно, ключа?), А затем иметь одну таблицу для каждого пользователя.Есть проблемы с производительностью, связанные с наличием таблицы для каждого пользователя, или если это кажется невероятно глупым способом сделать это.Кажется, это должно быть «решенной проблемой», поскольку в основном все веб-приложения имеют учетные записи пользователей, но я не смог ничего найти с помощью поиска.Существуют ли какие-либо ресурсы с «решенными» схемами для хранения различных видов веб-данных?

Ответы [ 3 ]

11 голосов
/ 11 декабря 2010

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

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

4 голосов
/ 11 декабря 2010

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

Что касается вашего вопроса о схеме, вы можете рассмотреть нормализация базы данных . В большинстве фреймворков уже есть инструменты для создания и аутентификации пользователей, но в целом вы никогда не захотите создавать таблицы для каждого пользователя. Более распространенный подход состоит в том, чтобы иметь таблицу с именем users, для которой в качестве первичного ключа было указано значение id, а затем он использовался в качестве внешнего ключа, который ссылается на другие данные.

0 голосов
/ 11 декабря 2010

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

...