CREATE TABLE IF NOT EXISTS followed_bands ( user_id INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE, band_key VARCHAR(255) NOT NULL, display_name VARCHAR(255) NOT NULL, created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (user_id, band_key) ); CREATE TABLE IF NOT EXISTS followed_venues ( user_id INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE, venue_id INTEGER NOT NULL REFERENCES venues(id) ON DELETE CASCADE, created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (user_id, venue_id) ); CREATE TABLE IF NOT EXISTS concert_diary ( user_id INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE, concert_id INTEGER NOT NULL REFERENCES concerts(id) ON DELETE CASCADE, rating SMALLINT NOT NULL CHECK (rating BETWEEN 1 AND 5), favorite_song VARCHAR(255), notes TEXT, created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (user_id, concert_id) );