With Postgres, I've created many tables that have foreign key references but they've always had a 1:1 relationship. Now I'd like to do something a little different:
CREATE TABLE public.shared_media (
  share_id uuid NOT NULL UNIQUE DEFAULT uuid_generate_v4(),
  media_ids uuid[] NOT NULL,
  description text NULL,
  intro_message text NULL,
  embedded bool NOT NULL,
  export_options json NULL,
  user_id uuid NOT NULL,
  date_created timestamptz NOT NULL DEFAULT now(),
  date_deleted timestamptz NULL,
  CONSTRAINT fk_media 
    FOREIGN_KEY(media_id) 
      REFERENCES media(media_id)
    CONSTRAINT fk_users
      FOREIGN KEY(user_id)
          REFERENCES users(user_id)
);
The 3rd line refers to an array of media_id values; media_id being the primary key in my media table.
The SQL code above fails to work because of:
  CONSTRAINT fk_media 
    FOREIGN_KEY(media_id) 
      REFERENCES media(media_id)
I understand why.  I tried substituting the original 3rd line with: media_ids media_id[] NOT NULL, but that didn't work either.
I've done some reading and a bridge table is suggested by some.  While I understand this thinking, this shared_media table will rarely be accessed other than providing the data it contains.  In other words, it'll never be searched, which is why I'm comfortable using the media_ids uuid[] approach.
Dropping the fk_media constraint does allow the table to be created.  Given what I'm going to use shared_media for, would you be happy with this approach in your own project?
 
     
    