Postgres создать отношение "многие ко многим" к таблице с составным первичным ключом - PullRequest
0 голосов
/ 12 июля 2020
CREATE TABLE "public"."Users" (
    id SERIAL PRIMARY KEY NOT NULL,
    name VARCHAR(255) NOT NULL,
    email VARCHAR(255) UNIQUE NOT NULL,
    "createdAt" TIMESTAMP NOT NULL DEFAULT now()
);

CREATE TABLE "public"."Boards" (
    id SERIAL PRIMARY KEY NOT NULL,
    name VARCHAR(255) NOT NULL,
    "ownerId" SERIAL NOT NULL,
    "createdAt" TIMESTAMP NOT NULL DEFAULT now(),
    "updatedAt" TIMESTAMP,
    FOREIGN KEY ("ownerId") REFERENCES "public"."Users"(id)
);

CREATE TABLE "public"."Board_Members"(
    "userId" SERIAL,
    "boardId" SERIAL,
    CONSTRAINT board_member_pkey PRIMARY KEY ("userId", "boardId"),
    FOREIGN KEY ("userId") REFERENCES "public"."Users"(id),
    FOREIGN KEY ("boardId") REFERENCES "public"."Boards"(id)
);

CREATE TABLE "public"."Columns" (
    id SERIAL PRIMARY KEY NOT NULL,
    name VARCHAR(255) NOT NULL,
    "boardId" SERIAL NOT NULL,
    "createdAt" TIMESTAMP NOT NULL DEFAULT now(),
    "updatedAt" TIMESTAMP,
    FOREIGN KEY ("boardId") REFERENCES "public"."Boards"(id)
);

CREATE TABLE "public"."Cards" (
    id SERIAL PRIMARY KEY NOT NULL,
    name VARCHAR(255) NOT NULL,
    description VARCHAR(255) NOT NULL,
    dueDate TIMESTAMP,
    "columnId" SERIAL NOT NULL,
    "createdAt" TIMESTAMP NOT NULL DEFAULT now(),
    "updatedAt" TIMESTAMP,
    FOREIGN KEY ("columnId") REFERENCES "public"."Columns"(id),
);

У меня есть эти таблицы. Теперь я хочу иметь поле под названием «assignee» в таблице «Cards», которое будет отношениями «многие ко многим» с «userId» из таблицы «Board_Members», точно так же, как «Boards» и «Users» имеют отношения «многие ко многим». многие отношения. Как я могу это сделать? Могу ли я создать новую таблицу и просто указать столбец userId как FK?

1 Ответ

1 голос
/ 12 июля 2020

Просто добавьте таблицу с двумя внешними ключами.

И потому, что я думаю, вы хотите переключать карты от человека к человеку. вы также можете захотеть отслеживать историю воспроизведения. См. Также первую обычную форму, чтобы проверить, правильно ли спроектирована ваша база данных.

https://en.wikipedia.org/wiki/First_normal_form

Надеюсь, я ответил на ваш вопрос :)

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