Разработка многопользовательской базы данных веб-приложений - PullRequest
8 голосов
/ 14 июля 2009

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

На мой взгляд, есть несколько вариантов: 1) иметь один набор таблиц базы данных. В каждой таблице включите столбец «пользователь» или что-то подобное, чтобы сопоставить каждую строку с соответствующей учетной записью пользователя. 2) Создайте совершенно отдельную базу данных для каждого пользователя. По соображениям производительности, это не очень хорошая идея. 3) Создайте отдельную схему для каждого пользователя в одной базе данных. Каждая схема будет содержать таблицы для каждого пользователя.

Как бы вы справились с этой проблемой? Есть ли вариант, который мне не хватает? Я использую PostgreSQL в качестве базы данных, если это как-то повлияет на решение этой проблемы.

Ответы [ 2 ]

7 голосов
/ 14 июля 2009

Я почти всегда выбирал вариант № 1. Если вы спроектируете это правильно, вам может понадобиться только ваш столбец «user» в нескольких ключевых таблицах, которые являются вашей точкой входа, а затем все остальное можно объединить из этих ключевых таблиц.

6 голосов
/ 14 июля 2009

Как правило, вы никогда не хотите иметь несколько таблиц (или баз данных) с одинаковыми структурами. Если вы подумываете о создании отдельных таблиц stuff_for_user_a и stuff_for_user_b (именно так звучат ваши варианты # 2 и # 3), то вы, вероятно, захотите просто создать таблицу stuff, которая включает user столбец (т. Е. Ваш вариант № 1).

...