У меня есть две таблицы, которые выглядят как 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,
);