# 데이터 정합성·정규화·역정규화 기준 ## 1. 계층 | 계층 | 내용 | 불변조건 | |---|---|---| | L0 | Source catalog/license/SLA/schema | 승인 없는 source 사용 금지 | | L1 | Raw payload/hash/event/published/ingested | append-only, overwrite 금지 | | L2 | Canonical PIT 가격/기업행사/재무/비용 | revision·valid time·tradable session | | L3 | DQ/quarantine/lineage/dataset manifest | 격리 데이터 추천 금지 | | L4 | Feature/Forecast/Risk/Evidence | Dataset/Model/Config/Code SHA | | L5 | Ledger/Decision/Review/Publish/Outcome | append/reversal/correction | | L6 | Read Model | Owner/Version/Watermark/Rebuild/Staleness | | L7 | Backtest/ModelCard/Release artifact | artifact hash/environment manifest | ## 2. 정규화 원장·현금·PositionLot·Fill·기업행사·비용 스케줄은 3NF와 원천 unique key를 사용한다. 정정은 UPDATE가 아니라 reversal/correction event로 처리한다. `current=true` 하나에 의존하지 않고 `valid_from/to`, revision, source hash를 보존한다. ## 3. 역정규화 화면·리포트 Read Model에서만 허용한다. 모든 Projection은 다음을 가진다. - ProjectionName/Version - SourceWatermark - BuiltAt - ContentHash - RebuildRun - Staleness 상태 - Write Model과의 diff 검사 ## 4. PIT 최소 필드 `source_event_time, published_at, ingested_at, effective_from/to, revision_no, source_id, content_hash, quality_status, tradable_session, dataset_id` ## 5. 핵심 Golden 데이터 - 분할·배당·증자·합병·상폐 - 총수익과 가격수익 구분 - 통화/단위/거래일 캘린더 - Fee/Tax/FX valid-time - 상폐수익과 당시 유니버스 - 재작성 공시/컨센서스 revision 데이터가 불완전하면 추천을 보류하거나 Evidence Grade를 낮춘다. 코드 기본값으로 조용히 대체하지 않는다.