Files
DLE/backend/migrations/004_personalization_tables.sql

44 lines
1.8 KiB
SQL

-- Создание таблицы для связи идентификаторов пользователей
CREATE TABLE IF NOT EXISTS user_identities (
id SERIAL PRIMARY KEY,
user_id INTEGER REFERENCES users(id),
identity_type VARCHAR(20) NOT NULL, -- 'ethereum', 'telegram', 'email'
identity_value VARCHAR(255) NOT NULL,
created_at TIMESTAMP DEFAULT NOW(),
UNIQUE(identity_type, identity_value)
);
-- Создание таблицы для предпочтений пользователей
CREATE TABLE IF NOT EXISTS user_preferences (
id SERIAL PRIMARY KEY,
user_id INTEGER REFERENCES users(id),
preference_key VARCHAR(50) NOT NULL,
preference_value TEXT,
updated_at TIMESTAMP DEFAULT NOW(),
UNIQUE(user_id, preference_key)
);
-- Создание таблицы для взаимодействий пользователей
CREATE TABLE IF NOT EXISTS user_interactions (
id SERIAL PRIMARY KEY,
user_id INTEGER REFERENCES users(id),
interaction_type VARCHAR(50) NOT NULL,
interaction_data JSONB,
created_at TIMESTAMP DEFAULT NOW()
);
-- Создание таблицы для тем пользователей
CREATE TABLE IF NOT EXISTS user_topics (
id SERIAL PRIMARY KEY,
user_id INTEGER REFERENCES users(id),
topic VARCHAR(100) NOT NULL,
relevance_score FLOAT DEFAULT 1.0,
updated_at TIMESTAMP DEFAULT NOW(),
UNIQUE(user_id, topic)
);
-- Индексы для оптимизации запросов
CREATE INDEX IF NOT EXISTS idx_user_identities_user_id ON user_identities(user_id);
CREATE INDEX IF NOT EXISTS idx_user_preferences_user_id ON user_preferences(user_id);
CREATE INDEX IF NOT EXISTS idx_user_interactions_user_id ON user_interactions(user_id);
CREATE INDEX IF NOT EXISTS idx_user_topics_user_id ON user_topics(user_id);