Отношения многие-к-одному с использованием двух уникальных ключей - PullRequest
0 голосов
/ 28 мая 2020

У меня есть две таблицы, которые выглядят как thiS:

uploads
________
id (primary key)
user_id
file_checksum
upload_information
---------
upload_info_id (primary key)
file_checksum
metadata1
metdata2

Отношение «многие к одному», которое я пытаюсь обеспечить, выглядит следующим образом:

  • Многие загрузки может иметь одинаковую контрольную сумму файла
  • Однако контрольная сумма файла может указывать только на одну upload_information запись, что делает уникальное ограничение между file_checksum и upload_info_id обязательным в таблице upload_information.

Мне интересно, как изменить эти таблицы в Postgres, чтобы достичь этой связи.

CREATE TABLE uploads (
  id SERIAL NOT NULL PRIMARY KEY,
  created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
  updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
  user_id VARCHAR NOT NULL,
  file_checksum VARCHAR NOT NULL,
);
CREATE TABLE upload_information (
  upload_info_id SERIAL NOT NULL PRIMARY KEY,
  created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
  updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
  file_checksum VARCHAR NOT NULL,
  file_name VARCHAR NOT NULL,
  source_file_url VARCHAR NOT NULL,
);

1 Ответ

0 голосов
/ 28 мая 2020

Добавить уникальный индекс на file_checksum.

create unique index unique_checksum on upload_information(file_checksum)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...