Минимизируйте записи в базе данных Postgres - PullRequest
0 голосов
/ 23 января 2020

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

При наличии 100 сотрудников и 10 отделов для заполнения строк и столбцов в Postgres потребуется 1000 записей. Есть ли способ свести к минимуму записи, которые будут сделаны в базе данных. Я читал о JSON, где одну и ту же информацию можно записать в одну строку и сохранить в БД. Несмотря на то, что это уменьшает размер создаваемых записей, боюсь, будет ли легче искать сделанные записи? Заранее спасибо

Ответы [ 2 ]

1 голос
/ 23 января 2020

Вы должны нормализовать вашу схему и вместо этого иметь две отдельные таблицы для сотрудников и отделов. Затем создайте третью таблицу junction , в которой хранятся отношения между сотрудниками и отделами, к которым они принадлежат. Примерно так:

Employees (id, name, age)
Departments (id, name, category)
Employee_Department (emp_id, dept_id)
    -- emp_id refers to Employees (id) and dept_id refers to Departments (id)

Используя ваш пример 100 сотрудников, каждый из которых принадлежит 10 департаментам, теперь таблица Employees будет иметь только 100 записей, а таблица Departments - 10 записей. Соединительная таблица Employee_Department будет иметь несколько кратных записей, возможно, до 1000. Но данные, хранящиеся в каждой записи соединительной таблицы, минимальны и включают только два значения идентификатора, что не является большой нагрузкой на хранилище. , Метаданные для сотрудников и отделов сохраняются только один раз в каждой из соответствующих таблиц.

0 голосов
/ 23 января 2020

Если вы думаете о применении лучших практик моделирования реляционных баз данных, ответ @Tim Biegeleisen - путь к go. Если вы думаете об отсутствии sql (как предполагает один из тегов вопроса) и хотите использовать Postgres, вы можете использовать JSON тип данных Postgres, см. Postgres JSON документация типа данных . Postgres также обеспечивает индексацию полей JSON, поэтому даже поиск не должен быть проблемой.

...