5da94213ec
안전 자료실 plan safety-library-1 A-1 (r3 계약 반영): - documents 3컬럼 (TEXT+CHECK, nullable additive) + law→jurisdiction NOT NULL 구조 강제 - legal_acts 단일 레지스트리(워치리스트 겸, watermark·repeal_detected_at 포함) - legal_meta 최소형 (version_key 합성형 UNIQUE, 전 버전 pending 적재 계약) - partial 인덱스 2 + family 인덱스 + paper DOI partial UNIQUE (doi=서지 단일 보유 계약) - ephemeral PG16 스모크: 12파일 적용 + CHECK/UNIQUE 계약 6종 검증 PASS Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
10 lines
710 B
SQL
10 lines
710 B
SQL
-- 351_documents_paper_doi_uq.sql
|
|
-- 안전 자료실 A-1 (12/12) — 논문 DOI dedup 구조 강제 (partial UNIQUE).
|
|
-- doi 보유 계약 (R3 — R2-B1): paper.doi 는 서지 Document 단일 보유.
|
|
-- OA 전문 PDF / 구매분 file Document 는 paper.doi 를 갖지 않고 paper.parent_doi 링크로 연결
|
|
-- → 인덱스 식이 NULL 이라 다중 행 허용, 2-Document 구조와 무충돌.
|
|
-- DOI 정규화(소문자·prefix 제거)는 단일 함수 경유 — 저장=조회 동일 함수 원칙 (B-3).
|
|
CREATE UNIQUE INDEX IF NOT EXISTS uq_documents_paper_doi
|
|
ON documents (lower(extract_meta #>> '{paper,doi}'))
|
|
WHERE material_type = 'paper' AND extract_meta #>> '{paper,doi}' IS NOT NULL;
|