27 lines
1.1 KiB
SQL
27 lines
1.1 KiB
SQL
-- Tabla de historial de búsquedas
|
|
-- Registra todas las búsquedas realizadas por usuarios autenticados
|
|
|
|
CREATE TABLE IF NOT EXISTS search_history (
|
|
id SERIAL PRIMARY KEY,
|
|
user_id INTEGER NOT NULL REFERENCES usuarios(id) ON DELETE CASCADE,
|
|
query TEXT NOT NULL,
|
|
results_count INTEGER DEFAULT 0,
|
|
searched_at TIMESTAMP DEFAULT NOW(),
|
|
CONSTRAINT query_not_empty CHECK (LENGTH(TRIM(query)) > 0)
|
|
);
|
|
|
|
-- Índices para queries eficientes
|
|
CREATE INDEX IF NOT EXISTS idx_search_history_user_date
|
|
ON search_history(user_id, searched_at DESC);
|
|
CREATE INDEX IF NOT EXISTS idx_search_history_user_id
|
|
ON search_history(user_id);
|
|
|
|
-- Índice para buscar búsquedas populares
|
|
CREATE INDEX IF NOT EXISTS idx_search_history_query
|
|
ON search_history(query);
|
|
|
|
-- Comentarios
|
|
COMMENT ON TABLE search_history IS 'Historial de búsquedas de usuarios';
|
|
COMMENT ON COLUMN search_history.user_id IS 'Usuario que realizó la búsqueda';
|
|
COMMENT ON COLUMN search_history.query IS 'Término de búsqueda';
|
|
COMMENT ON COLUMN search_history.results_count IS 'Cantidad de resultados encontrados';
|