-- Uitbreiding 1
-- Hobby's relationeel uitwerken
--
-- Deze SQL maakt 2 nieuwe tabellen:
-- 1. smoelboek_hobbies
-- 2. smoelboek_colleague_hobby
--
-- In deze uitbreiding schakelen we over naar een relationele oplossing.
-- Daarom mag het oude tekstveld hobbies uit smoelboek_colleagues weg.

USE ID201584_smoelenboek;

-- --------------------------------------------------------
-- Tabel met alle mogelijke hobby's
-- --------------------------------------------------------

CREATE TABLE IF NOT EXISTS `smoelboek_hobbies` (
  `id` int NOT NULL AUTO_INCREMENT,
  `name` varchar(100) NOT NULL,
  `created_at` datetime DEFAULT CURRENT_TIMESTAMP,
  `updated_at` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  UNIQUE KEY `unique_hobby_name` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

-- --------------------------------------------------------
-- Koppeltabel tussen collega's en hobby's
-- 1 collega kan meerdere hobby's hebben
-- 1 hobby kan bij meerdere collega's horen
-- --------------------------------------------------------

CREATE TABLE IF NOT EXISTS `smoelboek_colleague_hobby` (
  `id` int NOT NULL AUTO_INCREMENT,
  `colleague_id` int NOT NULL,
  `hobby_id` int NOT NULL,
  `created_at` datetime DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  UNIQUE KEY `unique_colleague_hobby` (`colleague_id`, `hobby_id`),
  KEY `idx_hobby_id` (`hobby_id`),
  CONSTRAINT `fk_colleague_hobby_colleague`
    FOREIGN KEY (`colleague_id`) REFERENCES `smoelboek_colleagues` (`id`)
    ON DELETE CASCADE ON UPDATE CASCADE,
  CONSTRAINT `fk_colleague_hobby_hobby`
    FOREIGN KEY (`hobby_id`) REFERENCES `smoelboek_hobbies` (`id`)
    ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

-- --------------------------------------------------------
-- Oud tekstveld hobbies verwijderen
-- Dit veld is niet meer nodig omdat we nu met een hobby-tabel
-- en een koppeltabel werken.
-- --------------------------------------------------------

ALTER TABLE `smoelboek_colleagues`
  DROP COLUMN IF EXISTS `hobbies`;
