1つを除くすべての列を主キーとしてマークすることは妥当ですか?
映画を表すテーブルがあります。フィールドは次のとおり id (PK), title, genre, runtime, released_in, tags, origin, downloadsです。 重複する行によってデータベースを汚染することはできないため、一意性を強制したいと思います。問題は、異なる映画が同じタイトルを持つ可能性があることです、または同じフィールドを除くtagsとdownloads。一意性を強制する方法は? 私は2つの方法を考えました: downloads主キーを除くすべてのフィールドを作成します。downloadsそれはJSONであり、おそらくパフォーマンスに影響を与えるため、私は締め出します。 id主キーとしてのみ保持しますが、他のすべての列(再度、を除くdownloads)で一意制約を追加します。 よく似たこの質問を読みましたが、どうすればいいのかよくわかりませんでした。現在、このテーブルは他のテーブルとは関係ありませんが、将来的には関係する可能性があります。 現時点では20,000件弱のレコードですが、その数は増えると思います。これが問題にある程度関連しているかどうかはわかりません。 編集:私はスキーマを変更しました、そしてここに私がテーブルを作成する方法があります: CREATE TABLE movies ( id serial PRIMARY KEY, title text NOT NULL, runtime smallint NOT NULL CHECK (runtime >= 0), released_in smallint NOT NULL CHECK (released_in > 0), genres text[] NOT NULL default …