CREATE TABLE IF NOT EXISTS genres ( genre_id SERIAL PRIMARY KEY, name VARCHAR(30) NOT NULL UNIQUE ); CREATE TABLE IF NOT EXISTS publishers ( publisher_id SERIAL PRIMARY KEY, name VARCHAR(50) NOT NULL UNIQUE ); INSERT INTO genres (name) SELECT DISTINCT genre FROM board_games WHERE genre IS NOT NULL; INSERT INTO publishers (name) SELECT DISTINCT publisher FROM board_games WHERE publisher IS NOT NULL; ALTER TABLE board_games ADD COLUMN genre_id INT, ADD COLUMN publisher_id INT; UPDATE board_games SET genre_id = g.genre_id FROM genres g WHERE board_games.genre = g.name; UPDATE board_games SET publisher_id = p.publisher_id FROM publishers p WHERE board_games.publisher = p.name; ALTER TABLE board_games DROP COLUMN genre, DROP COLUMN publisher; ALTER TABLE board_games ADD CONSTRAINT fk_genre FOREIGN KEY (genre_id) REFERENCES genres (genre_id), ADD CONSTRAINT fk_publisher FOREIGN KEY (publisher_id) REFERENCES publishers (publisher_id);