init
This commit is contained in:
56
8_сохранение_postgres/schema.sql
Normal file
56
8_сохранение_postgres/schema.sql
Normal file
@@ -0,0 +1,56 @@
|
||||
-- Минимальная схема для этапа 8: книги, главы, анализы глав, теги, связи глава–тег.
|
||||
-- Запускать один раз (например: psql -f schema.sql или через скрипт инициализации).
|
||||
|
||||
CREATE EXTENSION IF NOT EXISTS "pgcrypto";
|
||||
|
||||
CREATE TABLE IF NOT EXISTS books (
|
||||
id UUID PRIMARY KEY,
|
||||
title VARCHAR(1024),
|
||||
author VARCHAR(512),
|
||||
metadata JSONB,
|
||||
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
|
||||
updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS chapters (
|
||||
id UUID PRIMARY KEY,
|
||||
book_id UUID NOT NULL REFERENCES books(id) ON DELETE CASCADE,
|
||||
chapter_number INTEGER NOT NULL,
|
||||
chapter_title VARCHAR(1024),
|
||||
content TEXT,
|
||||
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS chapter_analyses (
|
||||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||
chapter_id UUID NOT NULL UNIQUE REFERENCES chapters(id) ON DELETE CASCADE,
|
||||
analysis_result JSONB NOT NULL,
|
||||
validation_score FLOAT,
|
||||
validated_at TIMESTAMP WITH TIME ZONE,
|
||||
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS tags (
|
||||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||
name VARCHAR(512) NOT NULL UNIQUE,
|
||||
category VARCHAR(64),
|
||||
description TEXT,
|
||||
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS chapter_tags (
|
||||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||
chapter_id UUID NOT NULL REFERENCES chapters(id) ON DELETE CASCADE,
|
||||
tag_id UUID NOT NULL REFERENCES tags(id) ON DELETE CASCADE,
|
||||
confidence FLOAT,
|
||||
validated BOOLEAN DEFAULT true,
|
||||
source VARCHAR(64) DEFAULT 'ai_validation',
|
||||
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
|
||||
UNIQUE (chapter_id, tag_id)
|
||||
);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_chapters_book_id ON chapters(book_id);
|
||||
CREATE INDEX IF NOT EXISTS idx_chapter_analyses_chapter_id ON chapter_analyses(chapter_id);
|
||||
CREATE INDEX IF NOT EXISTS idx_chapter_tags_chapter_id ON chapter_tags(chapter_id);
|
||||
CREATE INDEX IF NOT EXISTS idx_chapter_tags_tag_id ON chapter_tags(tag_id);
|
||||
CREATE INDEX IF NOT EXISTS idx_tags_category ON tags(category);
|
||||
Reference in New Issue
Block a user