Regenerate SQLite testschema ddl with explicit quoting and generate FKs
Peter Rabbitson [Thu, 10 Jan 2013 18:08:31 +0000 (19:08 +0100)]
We *do not* yet turn on FK checking in sqlite - many tests will need tweaking

maint/gen_schema
t/lib/sqlite.sql

index e3faa85..9fe1030 100755 (executable)
@@ -13,5 +13,9 @@ print scalar ($schema->storage->deployment_statements(
   'SQLite',
   undef,
   undef,
-  { producer_args => { no_transaction => 1 } }
+  {
+    producer_args => { no_transaction => 1 },
+    quote_identifiers => 1,
+    no_comments => 1,
+  },
 ));
index 9d49210..c52ef7b 100644 (file)
--- 
--- Created by SQL::Translator::Producer::SQLite
--- Created on Fri Mar  2 18:22:33 2012
--- 
-
---
--- Table: artist
---
-CREATE TABLE artist (
-  artistid INTEGER PRIMARY KEY NOT NULL,
-  name varchar(100),
-  rank integer NOT NULL DEFAULT 13,
-  charfield char(10)
-);
-
-CREATE INDEX artist_name_hookidx ON artist (name);
-
-CREATE UNIQUE INDEX artist_name ON artist (name);
-
-CREATE UNIQUE INDEX u_nullable ON artist (charfield, rank);
-
---
--- Table: bindtype_test
---
-CREATE TABLE bindtype_test (
-  id INTEGER PRIMARY KEY NOT NULL,
-  bytea blob,
-  blob blob,
-  clob clob,
-  a_memo memo
-);
-
---
--- Table: collection
---
-CREATE TABLE collection (
-  collectionid INTEGER PRIMARY KEY NOT NULL,
-  name varchar(100) NOT NULL
-);
-
---
--- Table: encoded
---
-CREATE TABLE encoded (
-  id INTEGER PRIMARY KEY NOT NULL,
-  encoded varchar(100)
-);
-
---
--- Table: event
---
-CREATE TABLE event (
-  id INTEGER PRIMARY KEY NOT NULL,
-  starts_at date NOT NULL,
-  created_on timestamp NOT NULL,
-  varchar_date varchar(20),
-  varchar_datetime varchar(20),
-  skip_inflation datetime,
-  ts_without_tz datetime
-);
-
---
--- Table: fourkeys
---
-CREATE TABLE fourkeys (
-  foo integer NOT NULL,
-  bar integer NOT NULL,
-  hello integer NOT NULL,
-  goodbye integer NOT NULL,
-  sensors character(10) NOT NULL,
-  read_count int,
-  PRIMARY KEY (foo, bar, hello, goodbye)
-);
-
---
--- Table: genre
---
-CREATE TABLE genre (
-  genreid INTEGER PRIMARY KEY NOT NULL,
-  name varchar(100) NOT NULL
-);
-
-CREATE UNIQUE INDEX genre_name ON genre (name);
-
---
--- Table: link
---
-CREATE TABLE link (
-  id INTEGER PRIMARY KEY NOT NULL,
-  url varchar(100),
-  title varchar(100)
-);
-
---
--- Table: money_test
---
-CREATE TABLE money_test (
-  id INTEGER PRIMARY KEY NOT NULL,
-  amount money
-);
-
---
--- Table: noprimarykey
---
-CREATE TABLE noprimarykey (
-  foo integer NOT NULL,
-  bar integer NOT NULL,
-  baz integer NOT NULL
-);
-
-CREATE UNIQUE INDEX foo_bar ON noprimarykey (foo, bar);
+CREATE TABLE "artist" (
+  "artistid" INTEGER PRIMARY KEY NOT NULL,
+  "name" varchar(100),
+  "rank" integer NOT NULL DEFAULT 13,
+  "charfield" char(10)
+);
+
+CREATE INDEX "artist_name_hookidx" ON "artist" ("name");
+
+CREATE UNIQUE INDEX "artist_name" ON "artist" ("name");
+
+CREATE UNIQUE INDEX "u_nullable" ON "artist" ("charfield", "rank");
+
+CREATE TABLE "bindtype_test" (
+  "id" INTEGER PRIMARY KEY NOT NULL,
+  "bytea" blob,
+  "blob" blob,
+  "clob" clob,
+  "a_memo" memo
+);
+
+CREATE TABLE "collection" (
+  "collectionid" INTEGER PRIMARY KEY NOT NULL,
+  "name" varchar(100) NOT NULL
+);
 
---
--- Table: onekey
---
-CREATE TABLE onekey (
-  id INTEGER PRIMARY KEY NOT NULL,
-  artist integer NOT NULL,
-  cd integer NOT NULL
-);
-
---
--- Table: owners
---
-CREATE TABLE owners (
-  id INTEGER PRIMARY KEY NOT NULL,
-  name varchar(100) NOT NULL
-);
-
-CREATE UNIQUE INDEX owners_name ON owners (name);
-
---
--- Table: producer
---
-CREATE TABLE producer (
-  producerid INTEGER PRIMARY KEY NOT NULL,
-  name varchar(100) NOT NULL
+CREATE TABLE "encoded" (
+  "id" INTEGER PRIMARY KEY NOT NULL,
+  "encoded" varchar(100)
 );
 
-CREATE UNIQUE INDEX prod_name ON producer (name);
-
---
--- Table: self_ref
---
-CREATE TABLE self_ref (
-  id INTEGER PRIMARY KEY NOT NULL,
-  name varchar(100) NOT NULL
+CREATE TABLE "event" (
+  "id" INTEGER PRIMARY KEY NOT NULL,
+  "starts_at" date NOT NULL,
+  "created_on" timestamp NOT NULL,
+  "varchar_date" varchar(20),
+  "varchar_datetime" varchar(20),
+  "skip_inflation" datetime,
+  "ts_without_tz" datetime
 );
-
---
--- Table: sequence_test
---
-CREATE TABLE sequence_test (
-  pkid1 integer NOT NULL,
-  pkid2 integer NOT NULL,
-  nonpkid integer NOT NULL,
-  name varchar(100),
-  PRIMARY KEY (pkid1, pkid2)
+
+CREATE TABLE "fourkeys" (
+  "foo" integer NOT NULL,
+  "bar" integer NOT NULL,
+  "hello" integer NOT NULL,
+  "goodbye" integer NOT NULL,
+  "sensors" character(10) NOT NULL,
+  "read_count" int,
+  PRIMARY KEY ("foo", "bar", "hello", "goodbye")
+);
+
+CREATE TABLE "genre" (
+  "genreid" INTEGER PRIMARY KEY NOT NULL,
+  "name" varchar(100) NOT NULL
+);
+
+CREATE UNIQUE INDEX "genre_name" ON "genre" ("name");
+
+CREATE TABLE "link" (
+  "id" INTEGER PRIMARY KEY NOT NULL,
+  "url" varchar(100),
+  "title" varchar(100)
+);
+
+CREATE TABLE "money_test" (
+  "id" INTEGER PRIMARY KEY NOT NULL,
+  "amount" money
+);
+
+CREATE TABLE "noprimarykey" (
+  "foo" integer NOT NULL,
+  "bar" integer NOT NULL,
+  "baz" integer NOT NULL
+);
+
+CREATE UNIQUE INDEX "foo_bar" ON "noprimarykey" ("foo", "bar");
+
+CREATE TABLE "onekey" (
+  "id" INTEGER PRIMARY KEY NOT NULL,
+  "artist" integer NOT NULL,
+  "cd" integer NOT NULL
+);
+
+CREATE TABLE "owners" (
+  "id" INTEGER PRIMARY KEY NOT NULL,
+  "name" varchar(100) NOT NULL
+);
+
+CREATE UNIQUE INDEX "owners_name" ON "owners" ("name");
+
+CREATE TABLE "producer" (
+  "producerid" INTEGER PRIMARY KEY NOT NULL,
+  "name" varchar(100) NOT NULL
+);
+
+CREATE UNIQUE INDEX "prod_name" ON "producer" ("name");
+
+CREATE TABLE "self_ref" (
+  "id" INTEGER PRIMARY KEY NOT NULL,
+  "name" varchar(100) NOT NULL
+);
+
+CREATE TABLE "sequence_test" (
+  "pkid1" integer NOT NULL,
+  "pkid2" integer NOT NULL,
+  "nonpkid" integer NOT NULL,
+  "name" varchar(100),
+  PRIMARY KEY ("pkid1", "pkid2")
 );
 
---
--- Table: serialized
---
-CREATE TABLE serialized (
-  id INTEGER PRIMARY KEY NOT NULL,
-  serialized text NOT NULL
+CREATE TABLE "serialized" (
+  "id" INTEGER PRIMARY KEY NOT NULL,
+  "serialized" text NOT NULL
 );
 
---
--- Table: timestamp_primary_key_test
---
-CREATE TABLE timestamp_primary_key_test (
-  id timestamp NOT NULL DEFAULT current_timestamp,
-  PRIMARY KEY (id)
+CREATE TABLE "timestamp_primary_key_test" (
+  "id" timestamp NOT NULL DEFAULT current_timestamp,
+  PRIMARY KEY ("id")
 );
 
---
--- Table: treelike
---
-CREATE TABLE treelike (
-  id INTEGER PRIMARY KEY NOT NULL,
-  parent integer,
-  name varchar(100) NOT NULL
+CREATE TABLE "treelike" (
+  "id" INTEGER PRIMARY KEY NOT NULL,
+  "parent" integer,
+  "name" varchar(100) NOT NULL,
+  FOREIGN KEY ("parent") REFERENCES "treelike"("id") ON DELETE CASCADE ON UPDATE CASCADE
 );
 
-CREATE INDEX treelike_idx_parent ON treelike (parent);
+CREATE INDEX "treelike_idx_parent" ON "treelike" ("parent");
 
---
--- Table: twokeytreelike
---
-CREATE TABLE twokeytreelike (
-  id1 integer NOT NULL,
-  id2 integer NOT NULL,
-  parent1 integer NOT NULL,
-  parent2 integer NOT NULL,
-  name varchar(100) NOT NULL,
-  PRIMARY KEY (id1, id2)
+CREATE TABLE "twokeytreelike" (
+  "id1" integer NOT NULL,
+  "id2" integer NOT NULL,
+  "parent1" integer NOT NULL,
+  "parent2" integer NOT NULL,
+  "name" varchar(100) NOT NULL,
+  PRIMARY KEY ("id1", "id2"),
+  FOREIGN KEY ("parent1", "parent2") REFERENCES "twokeytreelike"("id1", "id2")
 );
 
-CREATE INDEX twokeytreelike_idx_parent1_parent2 ON twokeytreelike (parent1, parent2);
+CREATE INDEX "twokeytreelike_idx_parent1_parent2" ON "twokeytreelike" ("parent1", "parent2");
 
-CREATE UNIQUE INDEX tktlnameunique ON twokeytreelike (name);
+CREATE UNIQUE INDEX "tktlnameunique" ON "twokeytreelike" ("name");
 
---
--- Table: typed_object
---
-CREATE TABLE typed_object (
-  objectid INTEGER PRIMARY KEY NOT NULL,
-  type varchar(100) NOT NULL,
-  value varchar(100) NOT NULL
+CREATE TABLE "typed_object" (
+  "objectid" INTEGER PRIMARY KEY NOT NULL,
+  "type" varchar(100) NOT NULL,
+  "value" varchar(100) NOT NULL
 );
 
---
--- Table: artist_undirected_map
---
-CREATE TABLE artist_undirected_map (
-  id1 integer NOT NULL,
-  id2 integer NOT NULL,
-  PRIMARY KEY (id1, id2)
+CREATE TABLE "artist_undirected_map" (
+  "id1" integer NOT NULL,
+  "id2" integer NOT NULL,
+  PRIMARY KEY ("id1", "id2"),
+  FOREIGN KEY ("id1") REFERENCES "artist"("artistid") ON DELETE RESTRICT ON UPDATE CASCADE,
+  FOREIGN KEY ("id2") REFERENCES "artist"("artistid")
 );
 
-CREATE INDEX artist_undirected_map_idx_id1 ON artist_undirected_map (id1);
+CREATE INDEX "artist_undirected_map_idx_id1" ON "artist_undirected_map" ("id1");
 
-CREATE INDEX artist_undirected_map_idx_id2 ON artist_undirected_map (id2);
+CREATE INDEX "artist_undirected_map_idx_id2" ON "artist_undirected_map" ("id2");
 
---
--- Table: bookmark
---
-CREATE TABLE bookmark (
-  id INTEGER PRIMARY KEY NOT NULL,
-  link integer
+CREATE TABLE "bookmark" (
+  "id" INTEGER PRIMARY KEY NOT NULL,
+  "link" integer,
+  FOREIGN KEY ("link") REFERENCES "link"("id") ON DELETE SET NULL ON UPDATE CASCADE
 );
 
-CREATE INDEX bookmark_idx_link ON bookmark (link);
+CREATE INDEX "bookmark_idx_link" ON "bookmark" ("link");
 
---
--- Table: books
---
-CREATE TABLE books (
-  id INTEGER PRIMARY KEY NOT NULL,
-  source varchar(100) NOT NULL,
-  owner integer NOT NULL,
-  title varchar(100) NOT NULL,
-  price integer
+CREATE TABLE "books" (
+  "id" INTEGER PRIMARY KEY NOT NULL,
+  "source" varchar(100) NOT NULL,
+  "owner" integer NOT NULL,
+  "title" varchar(100) NOT NULL,
+  "price" integer,
+  FOREIGN KEY ("owner") REFERENCES "owners"("id") ON DELETE CASCADE ON UPDATE CASCADE
 );
 
-CREATE INDEX books_idx_owner ON books (owner);
+CREATE INDEX "books_idx_owner" ON "books" ("owner");
 
-CREATE UNIQUE INDEX books_title ON books (title);
+CREATE UNIQUE INDEX "books_title" ON "books" ("title");
 
---
--- Table: employee
---
-CREATE TABLE employee (
-  employee_id INTEGER PRIMARY KEY NOT NULL,
-  position integer NOT NULL,
-  group_id integer,
-  group_id_2 integer,
-  group_id_3 integer,
-  name varchar(100),
-  encoded integer
+CREATE TABLE "employee" (
+  "employee_id" INTEGER PRIMARY KEY NOT NULL,
+  "position" integer NOT NULL,
+  "group_id" integer,
+  "group_id_2" integer,
+  "group_id_3" integer,
+  "name" varchar(100),
+  "encoded" integer,
+  FOREIGN KEY ("encoded") REFERENCES "encoded"("id") ON DELETE CASCADE ON UPDATE CASCADE
 );
 
-CREATE INDEX employee_idx_encoded ON employee (encoded);
+CREATE INDEX "employee_idx_encoded" ON "employee" ("encoded");
 
---
--- Table: forceforeign
---
-CREATE TABLE forceforeign (
-  artist INTEGER PRIMARY KEY NOT NULL,
-  cd integer NOT NULL
+CREATE TABLE "forceforeign" (
+  "artist" INTEGER PRIMARY KEY NOT NULL,
+  "cd" integer NOT NULL,
+  FOREIGN KEY ("artist") REFERENCES "artist"("artistid")
 );
 
---
--- Table: self_ref_alias
---
-CREATE TABLE self_ref_alias (
-  self_ref integer NOT NULL,
-  alias integer NOT NULL,
-  PRIMARY KEY (self_ref, alias)
+CREATE TABLE "self_ref_alias" (
+  "self_ref" integer NOT NULL,
+  "alias" integer NOT NULL,
+  PRIMARY KEY ("self_ref", "alias"),
+  FOREIGN KEY ("alias") REFERENCES "self_ref"("id"),
+  FOREIGN KEY ("self_ref") REFERENCES "self_ref"("id") ON DELETE CASCADE ON UPDATE CASCADE
 );
 
-CREATE INDEX self_ref_alias_idx_alias ON self_ref_alias (alias);
+CREATE INDEX "self_ref_alias_idx_alias" ON "self_ref_alias" ("alias");
 
-CREATE INDEX self_ref_alias_idx_self_ref ON self_ref_alias (self_ref);
+CREATE INDEX "self_ref_alias_idx_self_ref" ON "self_ref_alias" ("self_ref");
 
---
--- Table: track
---
-CREATE TABLE track (
-  trackid INTEGER PRIMARY KEY NOT NULL,
-  cd integer NOT NULL,
-  position int NOT NULL,
-  title varchar(100) NOT NULL,
-  last_updated_on datetime,
-  last_updated_at datetime
+CREATE TABLE "track" (
+  "trackid" INTEGER PRIMARY KEY NOT NULL,
+  "cd" integer NOT NULL,
+  "position" int NOT NULL,
+  "title" varchar(100) NOT NULL,
+  "last_updated_on" datetime,
+  "last_updated_at" datetime,
+  FOREIGN KEY ("cd") REFERENCES "cd"("cdid") ON DELETE CASCADE ON UPDATE CASCADE
 );
 
-CREATE INDEX track_idx_cd ON track (cd);
+CREATE INDEX "track_idx_cd" ON "track" ("cd");
 
-CREATE UNIQUE INDEX track_cd_position ON track (cd, position);
+CREATE UNIQUE INDEX "track_cd_position" ON "track" ("cd", "position");
 
-CREATE UNIQUE INDEX track_cd_title ON track (cd, title);
+CREATE UNIQUE INDEX "track_cd_title" ON "track" ("cd", "title");
 
---
--- Table: cd
---
-CREATE TABLE cd (
-  cdid INTEGER PRIMARY KEY NOT NULL,
-  artist integer NOT NULL,
-  title varchar(100) NOT NULL,
-  year varchar(100) NOT NULL,
-  genreid integer,
-  single_track integer
+CREATE TABLE "cd" (
+  "cdid" INTEGER PRIMARY KEY NOT NULL,
+  "artist" integer NOT NULL,
+  "title" varchar(100) NOT NULL,
+  "year" varchar(100) NOT NULL,
+  "genreid" integer,
+  "single_track" integer,
+  FOREIGN KEY ("artist") REFERENCES "artist"("artistid") ON DELETE CASCADE ON UPDATE CASCADE,
+  FOREIGN KEY ("genreid") REFERENCES "genre"("genreid") ON DELETE SET NULL ON UPDATE CASCADE,
+  FOREIGN KEY ("single_track") REFERENCES "track"("trackid") ON DELETE CASCADE
 );
 
-CREATE INDEX cd_idx_artist ON cd (artist);
+CREATE INDEX "cd_idx_artist" ON "cd" ("artist");
 
-CREATE INDEX cd_idx_genreid ON cd (genreid);
+CREATE INDEX "cd_idx_genreid" ON "cd" ("genreid");
 
-CREATE INDEX cd_idx_single_track ON cd (single_track);
+CREATE INDEX "cd_idx_single_track" ON "cd" ("single_track");
 
-CREATE UNIQUE INDEX cd_artist_title ON cd (artist, title);
+CREATE UNIQUE INDEX "cd_artist_title" ON "cd" ("artist", "title");
 
---
--- Table: collection_object
---
-CREATE TABLE collection_object (
-  collection integer NOT NULL,
-  object integer NOT NULL,
-  PRIMARY KEY (collection, object)
+CREATE TABLE "collection_object" (
+  "collection" integer NOT NULL,
+  "object" integer NOT NULL,
+  PRIMARY KEY ("collection", "object"),
+  FOREIGN KEY ("collection") REFERENCES "collection"("collectionid") ON DELETE CASCADE ON UPDATE CASCADE,
+  FOREIGN KEY ("object") REFERENCES "typed_object"("objectid") ON DELETE CASCADE ON UPDATE CASCADE
 );
 
-CREATE INDEX collection_object_idx_collection ON collection_object (collection);
+CREATE INDEX "collection_object_idx_collection" ON "collection_object" ("collection");
 
-CREATE INDEX collection_object_idx_object ON collection_object (object);
+CREATE INDEX "collection_object_idx_object" ON "collection_object" ("object");
 
---
--- Table: lyrics
---
-CREATE TABLE lyrics (
-  lyric_id INTEGER PRIMARY KEY NOT NULL,
-  track_id integer NOT NULL
+CREATE TABLE "lyrics" (
+  "lyric_id" INTEGER PRIMARY KEY NOT NULL,
+  "track_id" integer NOT NULL,
+  FOREIGN KEY ("track_id") REFERENCES "track"("trackid") ON DELETE CASCADE
 );
 
-CREATE INDEX lyrics_idx_track_id ON lyrics (track_id);
+CREATE INDEX "lyrics_idx_track_id" ON "lyrics" ("track_id");
 
---
--- Table: cd_artwork
---
-CREATE TABLE cd_artwork (
-  cd_id INTEGER PRIMARY KEY NOT NULL
+CREATE TABLE "cd_artwork" (
+  "cd_id" INTEGER PRIMARY KEY NOT NULL,
+  FOREIGN KEY ("cd_id") REFERENCES "cd"("cdid") ON DELETE CASCADE
 );
 
---
--- Table: liner_notes
---
-CREATE TABLE liner_notes (
-  liner_id INTEGER PRIMARY KEY NOT NULL,
-  notes varchar(100) NOT NULL
+CREATE TABLE "liner_notes" (
+  "liner_id" INTEGER PRIMARY KEY NOT NULL,
+  "notes" varchar(100) NOT NULL,
+  FOREIGN KEY ("liner_id") REFERENCES "cd"("cdid") ON DELETE CASCADE
 );
 
---
--- Table: lyric_versions
---
-CREATE TABLE lyric_versions (
-  id INTEGER PRIMARY KEY NOT NULL,
-  lyric_id integer NOT NULL,
-  text varchar(100) NOT NULL
+CREATE TABLE "lyric_versions" (
+  "id" INTEGER PRIMARY KEY NOT NULL,
+  "lyric_id" integer NOT NULL,
+  "text" varchar(100) NOT NULL,
+  FOREIGN KEY ("lyric_id") REFERENCES "lyrics"("lyric_id") ON DELETE CASCADE ON UPDATE CASCADE
 );
 
-CREATE INDEX lyric_versions_idx_lyric_id ON lyric_versions (lyric_id);
+CREATE INDEX "lyric_versions_idx_lyric_id" ON "lyric_versions" ("lyric_id");
 
---
--- Table: tags
---
-CREATE TABLE tags (
-  tagid INTEGER PRIMARY KEY NOT NULL,
-  cd integer NOT NULL,
-  tag varchar(100) NOT NULL
+CREATE TABLE "tags" (
+  "tagid" INTEGER PRIMARY KEY NOT NULL,
+  "cd" integer NOT NULL,
+  "tag" varchar(100) NOT NULL,
+  FOREIGN KEY ("cd") REFERENCES "cd"("cdid") ON DELETE CASCADE ON UPDATE CASCADE
 );
 
-CREATE INDEX tags_idx_cd ON tags (cd);
+CREATE INDEX "tags_idx_cd" ON "tags" ("cd");
 
-CREATE UNIQUE INDEX tagid_cd ON tags (tagid, cd);
+CREATE UNIQUE INDEX "tagid_cd" ON "tags" ("tagid", "cd");
 
-CREATE UNIQUE INDEX tagid_cd_tag ON tags (tagid, cd, tag);
+CREATE UNIQUE INDEX "tagid_cd_tag" ON "tags" ("tagid", "cd", "tag");
 
-CREATE UNIQUE INDEX tags_tagid_tag ON tags (tagid, tag);
+CREATE UNIQUE INDEX "tags_tagid_tag" ON "tags" ("tagid", "tag");
 
-CREATE UNIQUE INDEX tags_tagid_tag_cd ON tags (tagid, tag, cd);
+CREATE UNIQUE INDEX "tags_tagid_tag_cd" ON "tags" ("tagid", "tag", "cd");
 
---
--- Table: cd_to_producer
---
-CREATE TABLE cd_to_producer (
-  cd integer NOT NULL,
-  producer integer NOT NULL,
-  attribute integer,
-  PRIMARY KEY (cd, producer)
+CREATE TABLE "cd_to_producer" (
+  "cd" integer NOT NULL,
+  "producer" integer NOT NULL,
+  "attribute" integer,
+  PRIMARY KEY ("cd", "producer"),
+  FOREIGN KEY ("cd") REFERENCES "cd"("cdid") ON DELETE CASCADE ON UPDATE CASCADE,
+  FOREIGN KEY ("producer") REFERENCES "producer"("producerid")
 );
 
-CREATE INDEX cd_to_producer_idx_cd ON cd_to_producer (cd);
+CREATE INDEX "cd_to_producer_idx_cd" ON "cd_to_producer" ("cd");
 
-CREATE INDEX cd_to_producer_idx_producer ON cd_to_producer (producer);
+CREATE INDEX "cd_to_producer_idx_producer" ON "cd_to_producer" ("producer");
 
---
--- Table: images
---
-CREATE TABLE images (
-  id INTEGER PRIMARY KEY NOT NULL,
-  artwork_id integer NOT NULL,
-  name varchar(100) NOT NULL,
-  data blob
+CREATE TABLE "images" (
+  "id" INTEGER PRIMARY KEY NOT NULL,
+  "artwork_id" integer NOT NULL,
+  "name" varchar(100) NOT NULL,
+  "data" blob,
+  FOREIGN KEY ("artwork_id") REFERENCES "cd_artwork"("cd_id") ON DELETE CASCADE ON UPDATE CASCADE
 );
 
-CREATE INDEX images_idx_artwork_id ON images (artwork_id);
+CREATE INDEX "images_idx_artwork_id" ON "images" ("artwork_id");
 
---
--- Table: twokeys
---
-CREATE TABLE twokeys (
-  artist integer NOT NULL,
-  cd integer NOT NULL,
-  PRIMARY KEY (artist, cd)
+CREATE TABLE "twokeys" (
+  "artist" integer NOT NULL,
+  "cd" integer NOT NULL,
+  PRIMARY KEY ("artist", "cd"),
+  FOREIGN KEY ("artist") REFERENCES "artist"("artistid") ON DELETE CASCADE ON UPDATE CASCADE,
+  FOREIGN KEY ("cd") REFERENCES "cd"("cdid")
 );
 
-CREATE INDEX twokeys_idx_artist ON twokeys (artist);
+CREATE INDEX "twokeys_idx_artist" ON "twokeys" ("artist");
 
---
--- Table: artwork_to_artist
---
-CREATE TABLE artwork_to_artist (
-  artwork_cd_id integer NOT NULL,
-  artist_id integer NOT NULL,
-  PRIMARY KEY (artwork_cd_id, artist_id)
+CREATE TABLE "artwork_to_artist" (
+  "artwork_cd_id" integer NOT NULL,
+  "artist_id" integer NOT NULL,
+  PRIMARY KEY ("artwork_cd_id", "artist_id"),
+  FOREIGN KEY ("artist_id") REFERENCES "artist"("artistid") ON DELETE CASCADE ON UPDATE CASCADE,
+  FOREIGN KEY ("artwork_cd_id") REFERENCES "cd_artwork"("cd_id") ON DELETE CASCADE ON UPDATE CASCADE
 );
 
-CREATE INDEX artwork_to_artist_idx_artist_id ON artwork_to_artist (artist_id);
+CREATE INDEX "artwork_to_artist_idx_artist_id" ON "artwork_to_artist" ("artist_id");
 
-CREATE INDEX artwork_to_artist_idx_artwork_cd_id ON artwork_to_artist (artwork_cd_id);
+CREATE INDEX "artwork_to_artist_idx_artwork_cd_id" ON "artwork_to_artist" ("artwork_cd_id");
 
---
--- Table: fourkeys_to_twokeys
---
-CREATE TABLE fourkeys_to_twokeys (
-  f_foo integer NOT NULL,
-  f_bar integer NOT NULL,
-  f_hello integer NOT NULL,
-  f_goodbye integer NOT NULL,
-  t_artist integer NOT NULL,
-  t_cd integer NOT NULL,
-  autopilot character NOT NULL,
-  pilot_sequence integer,
-  PRIMARY KEY (f_foo, f_bar, f_hello, f_goodbye, t_artist, t_cd)
+CREATE TABLE "fourkeys_to_twokeys" (
+  "f_foo" integer NOT NULL,
+  "f_bar" integer NOT NULL,
+  "f_hello" integer NOT NULL,
+  "f_goodbye" integer NOT NULL,
+  "t_artist" integer NOT NULL,
+  "t_cd" integer NOT NULL,
+  "autopilot" character NOT NULL,
+  "pilot_sequence" integer,
+  PRIMARY KEY ("f_foo", "f_bar", "f_hello", "f_goodbye", "t_artist", "t_cd"),
+  FOREIGN KEY ("f_foo", "f_bar", "f_hello", "f_goodbye") REFERENCES "fourkeys"("foo", "bar", "hello", "goodbye") ON DELETE CASCADE ON UPDATE CASCADE,
+  FOREIGN KEY ("t_artist", "t_cd") REFERENCES "twokeys"("artist", "cd") ON DELETE CASCADE ON UPDATE CASCADE
 );
 
-CREATE INDEX fourkeys_to_twokeys_idx_f_foo_f_bar_f_hello_f_goodbye ON fourkeys_to_twokeys (f_foo, f_bar, f_hello, f_goodbye);
+CREATE INDEX "fourkeys_to_twokeys_idx_f_foo_f_bar_f_hello_f_goodbye" ON "fourkeys_to_twokeys" ("f_foo", "f_bar", "f_hello", "f_goodbye");
 
-CREATE INDEX fourkeys_to_twokeys_idx_t_artist_t_cd ON fourkeys_to_twokeys (t_artist, t_cd);
+CREATE INDEX "fourkeys_to_twokeys_idx_t_artist_t_cd" ON "fourkeys_to_twokeys" ("t_artist", "t_cd");
 
---
--- View: year2000cds
---
-CREATE VIEW year2000cds AS
+CREATE VIEW "year2000cds" AS
     SELECT cdid, artist, title, year, genreid, single_track FROM cd WHERE year = "2000";