-- Table: qgis_test.authors

DROP TABLE IF EXISTS qgis_test.books_authors;
DROP TABLE IF EXISTS qgis_test.authors;
DROP TABLE IF EXISTS qgis_test.books;

CREATE TABLE qgis_test.authors
(
  pk serial NOT NULL,
  name character varying(255),
  CONSTRAINT authors_pkey PRIMARY KEY (pk),
  CONSTRAINT authors_name_key UNIQUE (name)
);

-- Table: qgis_test.books


CREATE TABLE qgis_test.books
(
  pk serial NOT NULL,
  name character varying(255),
  CONSTRAINT books_pkey PRIMARY KEY (pk),
  CONSTRAINT books_name_key UNIQUE (name)
);

-- Table: qgis_test.books_authors


CREATE TABLE qgis_test.books_authors
(
  fk_book integer NOT NULL,
  fk_author integer NOT NULL,
  CONSTRAINT books_authors_pkey PRIMARY KEY (fk_book, fk_author),
  CONSTRAINT books_authors_fk_author_fkey FOREIGN KEY (fk_author)
      REFERENCES qgis_test.authors (pk) MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE CASCADE,
  CONSTRAINT books_authors_fk_book_fkey FOREIGN KEY (fk_book)
      REFERENCES qgis_test.books (pk) MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE CASCADE
);

INSERT INTO qgis_test.authors(name)
        VALUES
              ('Erich Gamma'),
              ('Richard Helm'),
              ('Ralph Johnson'),
              ('John Vlissides'),
              ('Douglas Adams'),
              ('Ken Follett'),
              ('Gabriel García Márquez');

INSERT INTO qgis_test.books(name)
        VALUES
              ('Design Patterns. Elements of Reusable Object-Oriented Software');

INSERT INTO qgis_test.books_authors(fk_book, fk_author)
        VALUES
              (1, 1),
              (1, 2),
              (1, 3),
              (1, 4);