POSTGRESQL Эффективный способ разделения таблицы с точки зрения производительности - PullRequest
0 голосов
/ 16 сентября 2010

У меня есть пользовательская таблица в postgress.У каждого пользователя может быть от 0 до нескольких веб-сайтов.

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

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

Что лучшеРешение для этой проблемы?

Примечание. Лучшее решение, которое не повлияет на производительность веб-сайта.К вашему сведению: сайт будет работать на ruby ​​on rails 3

1 Ответ

1 голос
/ 16 сентября 2010

У вас может быть что-то вроде этого:

create table users (
  user_id serial primary key,
  username text not null unique
);
create table datatypes (
  datatype_id serial primary key,
  datatype text not null unique
);
create table data (
  user_id int not null references users(user_id),
  datatype_id int not null references datatypes(datatype_id),
  data text not null
);
insert into datatypes (datatype)
  values ('website','interest','contact_number');

Затем добавьте адрес веб-сайта 'example.com' для пользователя 'testuser':

insert into data (user_id, datatype_id, data)
  select user_id, datatype_id, 'example.com'::text as data
  from users, datatypes
  where username='testuser' and datatype='website';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...