-- DROP tabeller i omvendt rækkefølge (børn først, forældre sidst)
DROP TABLE IF EXISTS udlaan;    -- Afhænger af bog og laaner
DROP TABLE IF EXISTS bog;       -- Afhænger af forfatter
DROP TABLE IF EXISTS laaner;    -- Afhænger af postnummer  
DROP TABLE IF EXISTS bruger;    -- Ingen dependencies
DROP TABLE IF EXISTS forfatter; -- Ingen dependencies
DROP TABLE IF EXISTS postnummer; -- Ingen dependencies

-- CREATE tabeller i dependency-rækkefølge 

-- Table structure for table postnummer (ingen dependencies)
CREATE TABLE postnummer (
  postnr INT NOT NULL PRIMARY KEY,
  by VARCHAR(45) DEFAULT NULL
);

-- Table structure for table forfatter (ingen dependencies)
CREATE TABLE forfatter (
  forfatter_id SERIAL PRIMARY KEY,
  navn VARCHAR(45) DEFAULT NULL
);

-- Table structure for table bruger (ingen dependencies)
CREATE TABLE bruger (
  email VARCHAR(45) NOT NULL PRIMARY KEY,
  kodeord VARCHAR(45) NOT NULL,
  rolle VARCHAR(10) NOT NULL
);

-- Table structure for table laaner (afhænger af postnummer)
CREATE TABLE laaner (
  laaner_id SERIAL PRIMARY KEY,
  navn VARCHAR(45) DEFAULT NULL,
  adresse VARCHAR(45) DEFAULT NULL,
  postnr INT DEFAULT NULL,
  CONSTRAINT fk_laaner_postnummer FOREIGN KEY (postnr) REFERENCES postnummer (postnr)
);

-- Table structure for table bog (afhænger af forfatter)
CREATE TABLE bog (
  bog_id SERIAL PRIMARY KEY,
  titel VARCHAR(45) DEFAULT NULL,
  udgivelsesaar INT DEFAULT NULL,
  forfatter_id INT DEFAULT NULL,
  CONSTRAINT fk_bog_forfatter1 FOREIGN KEY (forfatter_id) REFERENCES forfatter (forfatter_id)
);

-- Table structure for table udlaan (afhænger af bog og laaner)
CREATE TABLE udlaan (
  bog_id INT NOT NULL,
  laaner_id INT NOT NULL,
  dato DATE DEFAULT NULL,
  PRIMARY KEY (bog_id, laaner_id),
  CONSTRAINT fk_udlaan_bog1 FOREIGN KEY (bog_id) REFERENCES bog (bog_id),
  CONSTRAINT fk_udlaan_laaner1 FOREIGN KEY (laaner_id) REFERENCES laaner (laaner_id)
);

-- INSERT data i samme rækkefølge som CREATE 

-- Dumping data for table postnummer
INSERT INTO postnummer (postnr, by) VALUES 
  (7490, 'Aulum'), 
  (7500, 'Hobro'), 
  (8520, 'Lystrup');

-- Dumping data for table forfatter
INSERT INTO forfatter (navn) VALUES 
  ('Karen Blixen'), 
  ('Johannes V. Jensen'), 
  ('Jostein Gaader');

-- Dumping data for table laaner
INSERT INTO laaner (navn, adresse, postnr) VALUES 
  ('Peter Jensen', 'Ringgaden 10', 7500), 
  ('Mathilde Nielsen', 'Østervej 22', 7500), 
  ('Mattias Bruun', 'Ellevang 12', 7490), 
  ('Ole Jensen', 'Ahlgade 48', 7500);

-- Inserting data into table bog
INSERT INTO bog (titel, udgivelsesaar, forfatter_id) VALUES 
  ('Den lange rejse', 1977, 2), 
  ('Vintereventyr', 1964, 1), 
  ('Sofies Verden for små filosoffer', 1981, 3);

-- Dumping data for table udlaan
INSERT INTO udlaan (bog_id, laaner_id, dato) VALUES 
  (1, 1, '2000-11-21'), 
  (1, 2, '2000-11-24'), 
  (2, 1, '2000-11-21'), 
  (2, 3, '2000-11-25'), 
  (3, 1, '2000-11-21'), 
  (3, 2, '2000-11-24');