Как представить отношения «многие ко многим» в PostgreSQL для Kong - PullRequest
0 голосов
/ 09 мая 2019

В настоящее время я работаю над пользовательским плагином 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,
        );

Что будет считаться лучшим подходом для моего варианта использования и почему?

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