Можно ли иметь «папки» в базе данных? - PullRequest
0 голосов
/ 07 ноября 2010

У меня будет база данных с несколькими (менее 10) «основными» таблицами. В дополнение к этому я хочу иметь сотни или тысячи таблиц одного типа (пусть те же «user_1», «user_2», «user_3» и так далее). Можно ли поместить все эти таблицы в каталог / папку? Или сама база данных уже рассматривается как «папка» для таблиц?

ДОБАВЛЕНО

Поскольку я задаю много вопросов о том, почему я хочу это сделать, я хочу остановиться на этом подробнее. Я хочу иметь много таблиц для оптимизации запросов к базе данных. Если я положу все в одну таблицу, стол будет огромным. Чем, если я хочу извлечь информацию о конкретном пользователе, мне сначала нужно найти те строки в таблице, которые имеют данного пользователя в данном столбце. И это может занять много времени. Я решил создать таблицу для каждого пользователя. Поэтому, если мне нужно что-то узнать о пользователе, я просто читаю необходимую информацию из «маленькой» таблицы.

Точнее говоря, у меня может быть 10 000 пользователей, а информация о данном пользователе может содержать 10 000 строк. Я не хочу иметь одну таблицу с 100 000 000 строк.

Ответы [ 2 ]

3 голосов
/ 07 ноября 2010

Ответ - вы не должны делать это в первую очередь.

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

2 голосов
/ 07 ноября 2010

Если вам нужны отдельные таблицы, основанные на пользователе, это обычно делается с использованием концепции owner или schema. Другими словами, вы используете:

create table pax.table1 ...

и Пакс - владелец этого стола. Каждый пользователь может иметь свои собственные данные.

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...