···11+--
22+-- Artists (should be applicable to all art)
33+--
14CREATE TABLE IF NOT EXISTS artists (
25 id text NOT NULL,
36 name text,
···58);
69ALTER TABLE artists ADD CONSTRAINT artists_pk PRIMARY KEY (id);
7101111+--
1212+-- Music releases
1313+--
814CREATE TABLE IF NOT EXISTS musicreleases (
915 id character varying(64) NOT NULL,
1016 title text NOT NULL,
1717+ description text,
1118 type text,
1219 release_date DATE NOT NULL,
1320 artwork text,
···1623);
1724ALTER TABLE musicreleases ADD CONSTRAINT musicreleases_pk PRIMARY KEY (id);
18252626+--
2727+-- Music links (external platform links under a release)
2828+--
1929CREATE TABLE IF NOT EXISTS musiclinks (
2030 release character varying(64) NOT NULL,
2131 name text NOT NULL,
···2333);
2434ALTER TABLE musiclinks ADD CONSTRAINT musiclinks_pk PRIMARY KEY (release, name);
25353636+--
3737+-- Music credits (artist credits under a release)
3838+--
2639CREATE TABLE IF NOT EXISTS musiccredits (
2740 release character varying(64) NOT NULL,
2841 artist text NOT NULL,
···3144);
3245ALTER TABLE musiccredits ADD CONSTRAINT musiccredits_pk PRIMARY KEY (release, artist);
33464747+--
4848+-- Music tracks (tracks under a release)
4949+--
3450CREATE TABLE IF NOT EXISTS musictracks (
3551 release character varying(64) NOT NULL,
3652 number integer NOT NULL,
···4157);
4258ALTER TABLE musictracks ADD CONSTRAINT musictracks_pk PRIMARY KEY (release, number);
43594444--- foreign keys
6060+--
6161+-- Foreign keys
6262+--
45634646-ALTER TABLE public.musiccredits ADD CONSTRAINT musiccredits_artist_fk FOREIGN KEY (artist) REFERENCES public.artists(id) ON DELETE CASCADE;
6464+ALTER TABLE public.musiccredits ADD CONSTRAINT IF NOT EXISTS musiccredits_artist_fk FOREIGN KEY (artist) REFERENCES public.artists(id) ON DELETE CASCADE;
47654848-ALTER TABLE public.musiccredits ADD CONSTRAINT musiccredits_release_fk FOREIGN KEY (release) REFERENCES public.musicreleases(id) ON DELETE CASCADE;
6666+ALTER TABLE public.musiccredits ADD CONSTRAINT IF NOT EXISTS musiccredits_release_fk FOREIGN KEY (release) REFERENCES public.musicreleases(id) ON DELETE CASCADE;
49675050-ALTER TABLE public.musiclinks ADD CONSTRAINT musiclinks_release_fk FOREIGN KEY (release) REFERENCES public.musicreleases(id) ON UPDATE CASCADE ON DELETE CASCADE;
6868+ALTER TABLE public.musiclinks ADD CONSTRAINT IF NOT EXISTS musiclinks_release_fk FOREIGN KEY (release) REFERENCES public.musicreleases(id) ON UPDATE CASCADE ON DELETE CASCADE;
51695252-ALTER TABLE public.musictracks ADD CONSTRAINT musictracks_release_fk FOREIGN KEY (release) REFERENCES public.musicreleases(id) ON DELETE CASCADE;
7070+ALTER TABLE public.musictracks ADD CONSTRAINT IF NOT EXISTS musictracks_release_fk FOREIGN KEY (release) REFERENCES public.musicreleases(id) ON DELETE CASCADE;