Как представить отношения "многие ко многим" в PostgreSQL для Kong
В настоящее время я работаю над пользовательским плагином Kong для своей организации. Я пытаюсь использовать возможности аутентификации и авторизации Kongs для написания плагина разрешений, который позволил бы отдельным людям и группам продвигать различные компоненты API в среде. При разработке первоначальной миграции для плагина я столкнулся с проблемой незнания, как правильно представлять мои отношения сущностей в PostgreSQL.
Я посмотрел вокруг и нашел следующую запись в качестве опции
"components" UUID ARRAY ELEMENT REFERENCES "elpt_components" ("id"),
Однако я не уверен, применимо ли это или я должен использовать типовой подход с использованием моста.
Одна из моих сущностей daos.lua
local elpt_users = {
primary_key = {"id"},
name = "elpt_users",
fields = {
{id = typedefs.uuid},
{consumer_id = {type = "foreign", reference = "consumers", required = true, on_delete = "cascade"}},
{components = {type = "array", required = true, elements = {type = "foreign", reference = "elpt_components"}}},
{environments = {type = "array", required = true, elements = {type = "foreign", reference = "elpt_environments"}}},
{earliest_hour = {type = "number", required = true}},
{earliest_minute = {type = "number", required = true}},
{latest_hour = {type = "number", required = true}},
{latest_minute = {type = "number", required = true}},
}
}
Создание соответствующей таблицы в моей миграции на postgres.
CREATE TABLE IF NOT EXISTS "elpt_users" (
"id" UUID PRIMARY KEY,
"consumer_id" UUID REFERENCES "consumers" ("id") ON DELETE CASCADE,
"components" UUID ARRAY ELEMENT REFERENCES "elpt_components" ("id"),
"environments" UUID ARRAY ELEMENT REFERENCES "elpt_environments" ("id"),
"earliest_hour" INTEGER REQUIRED,
"earliest_minute" INTEGER REQUIRED,
"latest_hour" INTEGER REQUIRED,
"latest_minute" INTEGER REQUIRED,
);
Что считается лучшим подходом для моего варианта использования и почему?