text: --
  -- PostgreSQL database dump
  --
  
  -- Dumped from database version 9.6.3
  -- Dumped by pg_dump version 10beta1
  -- https://raw.githubusercontent.com/devrimgunduz/pagila/master/pagila-schema.sql
  
  --
  -- Name: mpaa_rating; Type: TYPE; Schema: public; Owner: postgres
  --
  
  CREATE TYPE mpaa_rating AS ENUM (
      'G',
      'PG',
      'PG13',
      'R',
      'NC17'
  );
  
  
  --
  -- Name: last_day(timestamp with time zone); Type: FUNCTION; Schema: public; Owner: postgres
  --
  
  CREATE OR REPLACE FUNCTION last_day(timestamp with time zone) RETURNS date
      LANGUAGE sql IMMUTABLE STRICT
      AS $_$
    SELECT CASE
      WHEN EXTRACT(MONTH FROM $1) = 12 THEN
        (((EXTRACT(YEAR FROM $1) + 1) operator(pg_catalog.||) '-01-01')::date - INTERVAL '1 day')::date
      ELSE
        ((EXTRACT(YEAR FROM $1) operator(pg_catalog.||) '-' operator(pg_catalog.||) (EXTRACT(MONTH FROM $1) + 1) operator(pg_catalog.||) '-01')::date - INTERVAL '1 day')::date
      END
  $_$;
  
  --
  -- Name: last_updated(); Type: FUNCTION; Schema: public; Owner: postgres
  --
  
  CREATE OR REPLACE FUNCTION last_updated() RETURNS trigger
      LANGUAGE plpgsql
      AS $$
  BEGIN
      NEW.last_update = CURRENT_TIMESTAMP;
      RETURN NEW;
  END $$;
  
  --
  -- Name: customer_customer_id_seq; Type: SEQUENCE; Schema: public; Owner: postgres
  --
  
  CREATE SEQUENCE if not exists customer_customer_id_seq
      START WITH 1
      INCREMENT BY 1
      NO MINVALUE
      NO MAXVALUE
      CACHE 1;
  
  SET default_tablespace = '';
  
  SET default_with_oids = false;
  
  --
  -- Name: customer; Type: TABLE; Schema: public; Owner: postgres
  --
  
  CREATE TABLE customer (
      customer_id SERIAL PRIMARY KEY,
      store_id smallint NOT NULL,
      first_name text NOT NULL,
      last_name text NOT NULL,
      email text,
      address_id smallint NOT NULL,
      activebool boolean DEFAULT true NOT NULL,
      create_date date DEFAULT ('now'::text)::date NOT NULL,
      last_update timestamp with time zone DEFAULT now(),
      active integer
  );
  
  --
  -- Name: actor_actor_id_seq; Type: SEQUENCE; Schema: public; Owner: postgres
  --
  
  CREATE SEQUENCE if not exists actor_actor_id_seq
      START WITH 1
      INCREMENT BY 1
      NO MINVALUE
      NO MAXVALUE
      CACHE 1;
  
  --
  -- Name: actor; Type: TABLE; Schema: public; Owner: postgres
  --
  
  CREATE TABLE actor (
      actor_id integer DEFAULT nextval('actor_actor_id_seq'::regclass) NOT NULL,
      first_name text NOT NULL,
      last_name text NOT NULL,
      last_update timestamp with time zone DEFAULT now() NOT NULL
  );
  
  --
  -- Name: category_category_id_seq; Type: SEQUENCE; Schema: public; Owner: postgres
  --
  
  CREATE SEQUENCE if not exists category_category_id_seq
      START WITH 1
      INCREMENT BY 1
      NO MINVALUE
      NO MAXVALUE
      CACHE 1;
  
  --
  -- Name: category; Type: TABLE; Schema: public; Owner: postgres
  --
  
  CREATE TABLE category (
      category_id integer DEFAULT nextval('category_category_id_seq'::regclass) NOT NULL,
      name text NOT NULL,
      last_update timestamp with time zone DEFAULT now() NOT NULL
  );
  
  --
  -- Name: film_film_id_seq; Type: SEQUENCE; Schema: public; Owner: postgres
  --
  
  CREATE SEQUENCE if not exists film_film_id_seq
      START WITH 1
      INCREMENT BY 1
      NO MINVALUE
      NO MAXVALUE
      CACHE 1;
  
  --
  -- Name: film; Type: TABLE; Schema: public; Owner: postgres
  --
  
  CREATE TABLE film (
      film_id integer DEFAULT nextval('film_film_id_seq'::regclass) NOT NULL,
      title text NOT NULL,
      description text,
      release_year integer,
      language_id smallint NOT NULL,
      original_language_id smallint,
      rental_duration smallint DEFAULT 3 NOT NULL,
      rental_rate numeric(4,2) DEFAULT 4.99 NOT NULL,
      length smallint,
      replacement_cost numeric(5,2) DEFAULT 19.99 NOT NULL,
      rating mpaa_rating DEFAULT 'G'::mpaa_rating,
      last_update timestamp with time zone DEFAULT now() NOT NULL,
      special_features text[],
      fulltext tsvector NOT NULL
  );
  
  --
  -- Name: film_actor; Type: TABLE; Schema: public; Owner: postgres
  --
  
  CREATE TABLE film_actor (
      actor_id smallint NOT NULL,
      film_id smallint NOT NULL,
      last_update timestamp with time zone DEFAULT now() NOT NULL
  );
  
  --
  -- Name: film_category; Type: TABLE; Schema: public; Owner: postgres
  --
  
  CREATE TABLE film_category (
      film_id smallint NOT NULL,
      category_id smallint NOT NULL,
      last_update timestamp with time zone DEFAULT now() NOT NULL
  );
  
  --
  -- Name: address_address_id_seq; Type: SEQUENCE; Schema: public; Owner: postgres
  --
  
  CREATE SEQUENCE if not exists address_address_id_seq
      START WITH 1
      INCREMENT BY 1
      NO MINVALUE
      NO MAXVALUE
      CACHE 1;
  
  --
  -- Name: address; Type: TABLE; Schema: public; Owner: postgres
  --
  
  CREATE TABLE address (
      address_id integer DEFAULT nextval('address_address_id_seq'::regclass) NOT NULL,
      address text NOT NULL,
      address2 text,
      district text NOT NULL,
      city_id smallint NOT NULL,
      postal_code text,
      phone text NOT NULL,
      last_update timestamp with time zone DEFAULT now() NOT NULL
  );
  
  --
  -- Name: city_city_id_seq; Type: SEQUENCE; Schema: public; Owner: postgres
  --
  
  CREATE SEQUENCE if not exists city_city_id_seq
      START WITH 1
      INCREMENT BY 1
      NO MINVALUE
      NO MAXVALUE
      CACHE 1;
  
  --
  -- Name: city; Type: TABLE; Schema: public; Owner: postgres
  --
  
  CREATE TABLE city (
      city_id integer DEFAULT nextval('city_city_id_seq'::regclass) NOT NULL,
      city text NOT NULL,
      country_id smallint NOT NULL,
      last_update timestamp with time zone DEFAULT now() NOT NULL
  );
  
  --
  -- Name: country_country_id_seq; Type: SEQUENCE; Schema: public; Owner: postgres
  --
  
  CREATE SEQUENCE if not exists country_country_id_seq
      START WITH 1
      INCREMENT BY 1
      NO MINVALUE
      NO MAXVALUE
      CACHE 1;
  
  --
  -- Name: country; Type: TABLE; Schema: public; Owner: postgres
  --
  
  CREATE TABLE country (
      country_id integer DEFAULT nextval('country_country_id_seq'::regclass) NOT NULL,
      country text NOT NULL,
      last_update timestamp with time zone DEFAULT now() NOT NULL
  );
  
  --
  -- Name: inventory_inventory_id_seq; Type: SEQUENCE; Schema: public; Owner: postgres
  --
  
  CREATE SEQUENCE if not exists inventory_inventory_id_seq
      START WITH 1
      INCREMENT BY 1
      NO MINVALUE
      NO MAXVALUE
      CACHE 1;
  
  --
  -- Name: inventory; Type: TABLE; Schema: public; Owner: postgres
  --
  
  CREATE TABLE inventory (
      inventory_id integer DEFAULT nextval('inventory_inventory_id_seq'::regclass) NOT NULL,
      film_id smallint NOT NULL,
      store_id smallint NOT NULL,
      last_update timestamp with time zone DEFAULT now() NOT NULL
  );
  
  --
  -- Name: language_language_id_seq; Type: SEQUENCE; Schema: public; Owner: postgres
  --
  
  CREATE SEQUENCE if not exists language_language_id_seq
      START WITH 1
      INCREMENT BY 1
      NO MINVALUE
      NO MAXVALUE
      CACHE 1;
  
  --
  -- Name: language; Type: TABLE; Schema: public; Owner: postgres
  --
  
  CREATE TABLE language (
      language_id integer DEFAULT nextval('language_language_id_seq'::regclass) NOT NULL,
      name character(20) NOT NULL,
      last_update timestamp with time zone DEFAULT now() NOT NULL
  );
  
  --
  -- Name: payment_payment_id_seq; Type: SEQUENCE; Schema: public; Owner: postgres
  --
  
  CREATE SEQUENCE if not exists payment_payment_id_seq
      START WITH 1
      INCREMENT BY 1
      NO MINVALUE
      NO MAXVALUE
      CACHE 1;
  
  --
  -- Name: payment; Type: TABLE; Schema: public; Owner: postgres
  --
  
  CREATE TABLE payment (
      payment_id integer DEFAULT nextval('payment_payment_id_seq'::regclass) NOT NULL,
      customer_id smallint NOT NULL,
      staff_id smallint NOT NULL,
      rental_id integer NOT NULL,
      amount numeric(5,2) NOT NULL,
      payment_date timestamp with time zone NOT NULL
  );
  
  --
  -- Name: rental_rental_id_seq; Type: SEQUENCE; Schema: public; Owner: postgres
  --
  
  CREATE SEQUENCE if not exists rental_rental_id_seq
      START WITH 1
      INCREMENT BY 1
      NO MINVALUE
      NO MAXVALUE
      CACHE 1;
  
  --
  -- Name: rental; Type: TABLE; Schema: public; Owner: postgres
  --
  
  CREATE TABLE rental (
      rental_id integer DEFAULT nextval('rental_rental_id_seq'::regclass) NOT NULL,
      rental_date timestamp with time zone NOT NULL,
      inventory_id integer NOT NULL,
      customer_id smallint NOT NULL,
      return_date timestamp with time zone,
      staff_id smallint NOT NULL,
      last_update timestamp with time zone DEFAULT now() NOT NULL
  );
  
  --
  -- Name: staff_staff_id_seq; Type: SEQUENCE; Schema: public; Owner: postgres
  --
  
  CREATE SEQUENCE if not exists staff_staff_id_seq
      START WITH 1
      INCREMENT BY 1
      NO MINVALUE
      NO MAXVALUE
      CACHE 1;
  
  --
  -- Name: staff; Type: TABLE; Schema: public; Owner: postgres
  --
  
  CREATE TABLE staff (
      staff_id integer DEFAULT nextval('staff_staff_id_seq'::regclass) NOT NULL,
      first_name text NOT NULL,
      last_name text NOT NULL,
      address_id smallint NOT NULL,
      email text,
      store_id smallint NOT NULL,
      active boolean DEFAULT true NOT NULL,
      username text NOT NULL,
      password text,
      last_update timestamp with time zone DEFAULT now() NOT NULL,
      picture bytea
  );
  
  --
  -- Name: store_store_id_seq; Type: SEQUENCE; Schema: public; Owner: postgres
  --
  
  CREATE SEQUENCE if not exists store_store_id_seq
      START WITH 1
      INCREMENT BY 1
      NO MINVALUE
      NO MAXVALUE
      CACHE 1;
  
  --
  -- Name: store; Type: TABLE; Schema: public; Owner: postgres
  --
  
  CREATE TABLE store (
      store_id integer DEFAULT nextval('store_store_id_seq'::regclass) NOT NULL,
      manager_staff_id smallint NOT NULL,
      address_id smallint NOT NULL,
      last_update timestamp with time zone DEFAULT now() NOT NULL
  );
  
  
  --
  -- Name: actor actor_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres
  --
  
  ALTER TABLE ONLY actor
      ADD CONSTRAINT actor_pkey PRIMARY KEY (actor_id);
  
  
  --
  -- Name: address address_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres
  --
  
  ALTER TABLE ONLY address
      ADD CONSTRAINT address_pkey PRIMARY KEY (address_id);
  
  
  --
  -- Name: category category_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres
  --
  
  ALTER TABLE ONLY category
      ADD CONSTRAINT category_pkey PRIMARY KEY (category_id);
  
  
  --
  -- Name: city city_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres
  --
  
  ALTER TABLE ONLY city
      ADD CONSTRAINT city_pkey PRIMARY KEY (city_id);
  
  
  --
  -- Name: country country_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres
  --
  
  ALTER TABLE ONLY country
      ADD CONSTRAINT country_pkey PRIMARY KEY (country_id);
  
  
  
  --
  -- Name: film_actor film_actor_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres
  --
  
  ALTER TABLE ONLY film_actor
      ADD CONSTRAINT film_actor_pkey PRIMARY KEY (actor_id, film_id);
  
  
  --
  -- Name: film_category film_category_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres
  --
  
  ALTER TABLE ONLY film_category
      ADD CONSTRAINT film_category_pkey PRIMARY KEY (film_id, category_id);
  
  
  --
  -- Name: film film_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres
  --
  
  ALTER TABLE ONLY film
      ADD CONSTRAINT film_pkey PRIMARY KEY (film_id);
  
  
  --
  -- Name: inventory inventory_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres
  --
  
  ALTER TABLE ONLY inventory
      ADD CONSTRAINT inventory_pkey PRIMARY KEY (inventory_id);
  
  
  --
  -- Name: language language_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres
  --
  
  ALTER TABLE ONLY language
      ADD CONSTRAINT language_pkey PRIMARY KEY (language_id);
  
  
  --
  -- Name: rental rental_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres
  --
  
  ALTER TABLE ONLY rental
      ADD CONSTRAINT rental_pkey PRIMARY KEY (rental_id);
  
  
  --
  -- Name: payment payment_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres
  --
  
  ALTER TABLE ONLY payment
      ADD CONSTRAINT payment_pkey PRIMARY KEY (payment_id);
  
  
  --
  -- Name: staff staff_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres
  --
  
  ALTER TABLE ONLY staff
      ADD CONSTRAINT staff_pkey PRIMARY KEY (staff_id);
  
  
  --
  -- Name: store store_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres
  --
  
  ALTER TABLE ONLY store
      ADD CONSTRAINT store_pkey PRIMARY KEY (store_id);
  
  
  --
  -- Name: film_fulltext_idx; Type: INDEX; Schema: public; Owner: postgres
  --
  
  CREATE INDEX film_fulltext_idx ON film USING gist (fulltext);
  
  
  --
  -- Name: idx_actor_last_name; Type: INDEX; Schema: public; Owner: postgres
  --
  
  CREATE INDEX idx_actor_last_name ON actor USING btree (last_name);
  
  
  --
  -- Name: idx_fk_address_id; Type: INDEX; Schema: public; Owner: postgres
  --
  
  CREATE INDEX idx_fk_address_id ON customer USING btree (address_id);
  
  
  --
  -- Name: idx_fk_city_id; Type: INDEX; Schema: public; Owner: postgres
  --
  
  CREATE INDEX idx_fk_city_id ON address USING btree (city_id);
  
  
  --
  -- Name: idx_fk_country_id; Type: INDEX; Schema: public; Owner: postgres
  --
  
  CREATE INDEX idx_fk_country_id ON city USING btree (country_id);
  
  
  --
  -- Name: idx_fk_customer_id; Type: INDEX; Schema: public; Owner: postgres
  --
  
  CREATE INDEX idx_fk_customer_id ON payment USING btree (customer_id);
  
  
  --
  -- Name: idx_fk_film_id; Type: INDEX; Schema: public; Owner: postgres
  --
  
  CREATE INDEX idx_fk_film_id ON film_actor USING btree (film_id);
  
  
  --
  -- Name: idx_fk_inventory_id; Type: INDEX; Schema: public; Owner: postgres
  --
  
  CREATE INDEX idx_fk_inventory_id ON rental USING btree (inventory_id);
  
  
  --
  -- Name: idx_fk_language_id; Type: INDEX; Schema: public; Owner: postgres
  --
  
  CREATE INDEX idx_fk_language_id ON film USING btree (language_id);
  
  
  --
  -- Name: idx_fk_original_language_id; Type: INDEX; Schema: public; Owner: postgres
  --
  
  CREATE INDEX idx_fk_original_language_id ON film USING btree (original_language_id);
  
  
  --
  -- Name: idx_fk_staff_id; Type: INDEX; Schema: public; Owner: postgres
  --
  
  CREATE INDEX idx_fk_staff_id ON payment USING btree (staff_id);
  
  
  --
  -- Name: idx_fk_store_id; Type: INDEX; Schema: public; Owner: postgres
  --
  
  CREATE INDEX idx_fk_store_id ON customer USING btree (store_id);
  
  
  --
  -- Name: idx_last_name; Type: INDEX; Schema: public; Owner: postgres
  --
  
  CREATE INDEX idx_last_name ON customer USING btree (last_name);
  
  
  --
  -- Name: idx_store_id_film_id; Type: INDEX; Schema: public; Owner: postgres
  --
  
  CREATE INDEX idx_store_id_film_id ON inventory USING btree (store_id, film_id);
  
  
  --
  -- Name: idx_title; Type: INDEX; Schema: public; Owner: postgres
  --
  
  CREATE INDEX idx_title ON film USING btree (title);
  
  
  --
  -- Name: idx_unq_manager_staff_id; Type: INDEX; Schema: public; Owner: postgres
  --
  
  CREATE UNIQUE INDEX idx_unq_manager_staff_id ON store USING btree (manager_staff_id);
  
  
  --
  -- Name: idx_unq_rental_rental_date_inventory_id_customer_id; Type: INDEX; Schema: public; Owner: postgres
  --
  
  CREATE UNIQUE INDEX idx_unq_rental_rental_date_inventory_id_customer_id ON rental USING btree (rental_date, inventory_id, customer_id);
  
  --
  -- Name: film film_fulltext_trigger; Type: TRIGGER; Schema: public; Owner: postgres
  --
  
  CREATE TRIGGER film_fulltext_trigger BEFORE INSERT OR UPDATE ON film FOR EACH ROW EXECUTE PROCEDURE tsvector_update_trigger('fulltext', 'pg_catalog.english', 'title', 'description');
  
  
  --
  -- Name: actor last_updated; Type: TRIGGER; Schema: public; Owner: postgres
  --
  
  CREATE TRIGGER last_updated BEFORE UPDATE ON actor FOR EACH ROW EXECUTE PROCEDURE last_updated();
  
  
  --
  -- Name: address last_updated; Type: TRIGGER; Schema: public; Owner: postgres
  --
  
  CREATE TRIGGER last_updated BEFORE UPDATE ON address FOR EACH ROW EXECUTE PROCEDURE last_updated();
  
  
  --
  -- Name: category last_updated; Type: TRIGGER; Schema: public; Owner: postgres
  --
  
  CREATE TRIGGER last_updated BEFORE UPDATE ON category FOR EACH ROW EXECUTE PROCEDURE last_updated();
  
  
  --
  -- Name: city last_updated; Type: TRIGGER; Schema: public; Owner: postgres
  --
  
  CREATE TRIGGER last_updated BEFORE UPDATE ON city FOR EACH ROW EXECUTE PROCEDURE last_updated();
  
  
  --
  -- Name: country last_updated; Type: TRIGGER; Schema: public; Owner: postgres
  --
  
  CREATE TRIGGER last_updated BEFORE UPDATE ON country FOR EACH ROW EXECUTE PROCEDURE last_updated();
  
  
  --
  -- Name: customer last_updated; Type: TRIGGER; Schema: public; Owner: postgres
  --
  
  CREATE TRIGGER last_updated BEFORE UPDATE ON customer FOR EACH ROW EXECUTE PROCEDURE last_updated();
  
  
  --
  -- Name: film last_updated; Type: TRIGGER; Schema: public; Owner: postgres
  --
  
  CREATE TRIGGER last_updated BEFORE UPDATE ON film FOR EACH ROW EXECUTE PROCEDURE last_updated();
  
  
  --
  -- Name: film_actor last_updated; Type: TRIGGER; Schema: public; Owner: postgres
  --
  
  CREATE TRIGGER last_updated BEFORE UPDATE ON film_actor FOR EACH ROW EXECUTE PROCEDURE last_updated();
  
  
  --
  -- Name: film_category last_updated; Type: TRIGGER; Schema: public; Owner: postgres
  --
  
  CREATE TRIGGER last_updated BEFORE UPDATE ON film_category FOR EACH ROW EXECUTE PROCEDURE last_updated();
  
  
  --
  -- Name: inventory last_updated; Type: TRIGGER; Schema: public; Owner: postgres
  --
  
  CREATE TRIGGER last_updated BEFORE UPDATE ON inventory FOR EACH ROW EXECUTE PROCEDURE last_updated();
  
  
  --
  -- Name: language last_updated; Type: TRIGGER; Schema: public; Owner: postgres
  --
  
  CREATE TRIGGER last_updated BEFORE UPDATE ON language FOR EACH ROW EXECUTE PROCEDURE last_updated();
  
  
  --
  -- Name: rental last_updated; Type: TRIGGER; Schema: public; Owner: postgres
  --
  
  CREATE TRIGGER last_updated BEFORE UPDATE ON rental FOR EACH ROW EXECUTE PROCEDURE last_updated();
  
  
  --
  -- Name: staff last_updated; Type: TRIGGER; Schema: public; Owner: postgres
  --
  
  CREATE TRIGGER last_updated BEFORE UPDATE ON staff FOR EACH ROW EXECUTE PROCEDURE last_updated();
  
  
  --
  -- Name: store last_updated; Type: TRIGGER; Schema: public; Owner: postgres
  --
  
  CREATE TRIGGER last_updated BEFORE UPDATE ON store FOR EACH ROW EXECUTE PROCEDURE last_updated();
  
  
  --
  -- Name: address address_city_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres
  --
  
  ALTER TABLE ONLY address
      ADD CONSTRAINT address_city_id_fkey FOREIGN KEY (city_id) REFERENCES city(city_id) ON UPDATE CASCADE ON DELETE RESTRICT;
  
  
  --
  -- Name: city city_country_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres
  --
  
  ALTER TABLE ONLY city
      ADD CONSTRAINT city_country_id_fkey FOREIGN KEY (country_id) REFERENCES country(country_id) ON UPDATE CASCADE ON DELETE RESTRICT;
  
  
  --
  -- Name: customer customer_address_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres
  --
  
  ALTER TABLE ONLY customer
      ADD CONSTRAINT customer_address_id_fkey FOREIGN KEY (address_id) REFERENCES address(address_id) ON UPDATE CASCADE ON DELETE RESTRICT;
  
  
  --
  -- Name: customer customer_store_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres
  --
  
  ALTER TABLE ONLY customer
      ADD CONSTRAINT customer_store_id_fkey FOREIGN KEY (store_id) REFERENCES store(store_id) ON UPDATE CASCADE ON DELETE RESTRICT;
  
  
  --
  -- Name: film_actor film_actor_actor_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres
  --
  
  ALTER TABLE ONLY film_actor
      ADD CONSTRAINT film_actor_actor_id_fkey FOREIGN KEY (actor_id) REFERENCES actor(actor_id) ON UPDATE CASCADE ON DELETE RESTRICT;
  
  
  --
  -- Name: film_actor film_actor_film_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres
  --
  
  ALTER TABLE ONLY film_actor
      ADD CONSTRAINT film_actor_film_id_fkey FOREIGN KEY (film_id) REFERENCES film(film_id) ON UPDATE CASCADE ON DELETE RESTRICT;
  
  
  --
  -- Name: film_category film_category_category_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres
  --
  
  ALTER TABLE ONLY film_category
      ADD CONSTRAINT film_category_category_id_fkey FOREIGN KEY (category_id) REFERENCES category(category_id) ON UPDATE CASCADE ON DELETE RESTRICT;
  
  
  --
  -- Name: film_category film_category_film_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres
  --
  
  ALTER TABLE ONLY film_category
      ADD CONSTRAINT film_category_film_id_fkey FOREIGN KEY (film_id) REFERENCES film(film_id) ON UPDATE CASCADE ON DELETE RESTRICT;
  
  
  --
  -- Name: film film_language_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres
  --
  
  ALTER TABLE ONLY film
      ADD CONSTRAINT film_language_id_fkey FOREIGN KEY (language_id) REFERENCES language(language_id) ON UPDATE CASCADE ON DELETE RESTRICT;
  
  
  --
  -- Name: film film_original_language_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres
  --
  
  ALTER TABLE ONLY film
      ADD CONSTRAINT film_original_language_id_fkey FOREIGN KEY (original_language_id) REFERENCES language(language_id) ON UPDATE CASCADE ON DELETE RESTRICT;
  
  
  --
  -- Name: inventory inventory_film_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres
  --
  
  ALTER TABLE ONLY inventory
      ADD CONSTRAINT inventory_film_id_fkey FOREIGN KEY (film_id) REFERENCES film(film_id) ON UPDATE CASCADE ON DELETE RESTRICT;
  
  
  --
  -- Name: inventory inventory_store_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres
  --
  
  ALTER TABLE ONLY inventory
      ADD CONSTRAINT inventory_store_id_fkey FOREIGN KEY (store_id) REFERENCES store(store_id) ON UPDATE CASCADE ON DELETE RESTRICT;
  
  --
  -- Name: rental rental_customer_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres
  --
  
  ALTER TABLE ONLY rental
      ADD CONSTRAINT rental_customer_id_fkey FOREIGN KEY (customer_id) REFERENCES customer(customer_id) ON UPDATE CASCADE ON DELETE RESTRICT;
  
  
  --
  -- Name: rental rental_inventory_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres
  --
  
  ALTER TABLE ONLY rental
      ADD CONSTRAINT rental_inventory_id_fkey FOREIGN KEY (inventory_id) REFERENCES inventory(inventory_id) ON UPDATE CASCADE ON DELETE RESTRICT;
  
  
  --
  -- Name: rental rental_staff_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres
  --
  
  ALTER TABLE ONLY rental
      ADD CONSTRAINT rental_staff_id_fkey FOREIGN KEY (staff_id) REFERENCES staff(staff_id) ON UPDATE CASCADE ON DELETE RESTRICT;
  
  
  --
  -- Name: staff staff_address_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres
  --
  
  ALTER TABLE ONLY staff
      ADD CONSTRAINT staff_address_id_fkey FOREIGN KEY (address_id) REFERENCES address(address_id) ON UPDATE CASCADE ON DELETE RESTRICT;
  
  
  --
  -- Name: staff staff_store_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres
  --
  
  ALTER TABLE ONLY staff
      ADD CONSTRAINT staff_store_id_fkey FOREIGN KEY (store_id) REFERENCES store(store_id);
  
  
  --
  -- Name: store store_address_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres
  --
  
  ALTER TABLE ONLY store
      ADD CONSTRAINT store_address_id_fkey FOREIGN KEY (address_id) REFERENCES address(address_id) ON UPDATE CASCADE ON DELETE RESTRICT;
  
  
  --
  -- PostgreSQL database dump complete
  --
  
  ALTER TABLE payment
      ADD FOREIGN KEY(customer_id) REFERENCES customer(customer_id),
      ADD FOREIGN KEY(staff_id) REFERENCES staff(staff_id),
      ADD FOREIGN KEY(rental_id) REFERENCES rental(rental_id);
  
  
  create index if not exists "actor_first_name_idx" on "actor" using btree ("first_name" asc);
  create index if not exists "actor_last_update_idx" on "actor" using btree ("last_update" asc);
  create index if not exists "address_address_idx" on "address" using btree ("address" asc);
  create index if not exists "address_address2_idx" on "address" using btree ("address2" asc);
  create index if not exists "address_district_idx" on "address" using btree ("district" asc);
  create index if not exists "address_postal_code_idx" on "address" using btree ("postal_code" asc);
  create index if not exists "address_phone_idx" on "address" using btree ("phone" asc);
  create index if not exists "address_last_update_idx" on "address" using btree ("last_update" asc);
  create index if not exists "category_name_idx" on "category" using btree ("name" asc);
  create index if not exists "category_last_update_idx" on "category" using btree ("last_update" asc);
  create index if not exists "city_city_idx" on "city" using btree ("city" asc);
  create index if not exists "country_country_idx" on "country" using btree ("country" asc);
  create index if not exists "country_last_update_idx" on "country" using btree ("last_update" asc);
  create index if not exists "customer_first_name_idx" on "customer" using btree ("first_name" asc);
  create index if not exists "customer_email_idx" on "customer" using btree ("email" asc);
  create index if not exists "film_rating_idx" on "film" using btree ("rating" asc);
  create index if not exists "film_last_update_idx" on "film" using btree ("last_update" asc);
  create index if not exists "film_actor_last_update_idx" on "film_actor" using btree ("last_update" asc);
  create index if not exists "film_category_last_update_idx" on "film_category" using btree ("last_update" asc);
  create index if not exists "language_name_idx" on "language" using btree ("name" asc);
  create index if not exists "language_last_update_idx" on "language" using btree ("last_update" asc);
  create index if not exists "payment_rental_id_idx" on "payment" using btree ("rental_id" asc);
  create index if not exists "payment_amount_idx" on "payment" using btree ("amount" asc);
  create index if not exists "rental_return_date_idx" on "rental" using btree ("return_date" asc);
  create index if not exists "rental_staff_id_idx" on "rental" using btree ("staff_id" asc);
  create index if not exists "staff_first_name_idx" on "staff" using btree ("first_name" asc);
  create index if not exists "staff_last_name_idx" on "staff" using btree ("last_name" asc);
  create index if not exists "staff_address_id_idx" on "staff" using btree ("address_id" asc);
  create index if not exists "staff_email_idx" on "staff" using btree ("email" asc);
  create index if not exists "staff_store_id_idx" on "staff" using btree ("store_id" asc);
  create index if not exists "staff_username_idx" on "staff" using btree ("username" asc);
  create index if not exists "store_address_id_idx" on "store" using btree ("address_id" asc);
  create index if not exists "store_last_update_idx" on "store" using btree ("last_update" asc);
  