-- CREATE TABLES

DROP TABLE IF EXISTS boote CASCADE;
CREATE TABLE boote (
    bid varchar(2),
    boot_name varchar(20),
    farbe varchar(20),
    CONSTRAINT boote_pk PRIMARY KEY (bid)
);

DROP TABLE IF EXISTS segler CASCADE;
CREATE TABLE segler (
    sid varchar(2),
    segler_name varchar(20),
    bewertung int,
    alter int,
    CONSTRAINT segler_pk PRIMARY KEY (sid)
);

DROP TABLE IF EXISTS reservierungen CASCADE;
CREATE TABLE reservierungen (
    bid varchar(2),
    sid varchar(2),
    tag timestamp,
    CONSTRAINT reservierungen_pk PRIMARY KEY (bid, sid, tag),
    CONSTRAINT reservierungen_boote_bid_fk FOREIGN KEY (bid)
        REFERENCES boote(bid),
    CONSTRAINT reservierungen_segler_sid_fk FOREIGN KEY (sid)
        REFERENCES segler(sid)
);

ALTER TABLE reservierungen ALTER CONSTRAINT reservierungen_boote_bid_fk DEFERRABLE;
ALTER TABLE reservierungen ALTER CONSTRAINT reservierungen_segler_sid_fk DEFERRABLE;


-- POPULATE TABLES

BEGIN;
SET CONSTRAINTS ALL DEFERRED;
-- BOOTE
INSERT INTO boote VALUES ('B1', 'Alpha', 'gelb');
INSERT INTO boote VALUES ('B2', 'Omega', 'rot');
INSERT INTO boote VALUES ('B3', 'Lambda', 'orange');
INSERT INTO boote VALUES ('B4', 'Theta', 'rot');
-- SEGLER
INSERT INTO segler VALUES ('S1', 'Bob', 10, 23);
INSERT INTO segler VALUES ('S2', 'Alice', 8, 25);
INSERT INTO segler VALUES ('S3', 'Ann', 9, 24);
INSERT INTO segler VALUES ('S4', 'Max', 7, 19);
INSERT INTO segler VALUES ('S5', 'Iris', 10, 28);
-- RESERVIERUNGEN
INSERT INTO reservierungen VALUES ('B1', 'S4', '05.08.2015');
INSERT INTO reservierungen VALUES ('B2', 'S1', '05.08.2015');
INSERT INTO reservierungen VALUES ('B3', 'S3', '06.08.2015');
INSERT INTO reservierungen VALUES ('B1', 'S1', '07.08.2015');
INSERT INTO reservierungen VALUES ('B1', 'S5', '07.08.2015');
INSERT INTO reservierungen VALUES ('B1', 'S2', '07.08.2015');
INSERT INTO reservierungen VALUES ('B2', 'S5', '08.08.2015');
INSERT INTO reservierungen VALUES ('B1', 'S3', '09.08.2015');
INSERT INTO reservierungen VALUES ('B2', 'S1', '09.08.2015');
INSERT INTO reservierungen VALUES ('B4', 'S3', '09.08.2015');
INSERT INTO reservierungen VALUES ('B1', 'S5', '10.08.2015');
COMMIT;