Description
The SQLite schema lacks important constraints that would ensure data integrity at the database level:
- No
CHECK constraint on claims.confidence to enforce 0 <= confidence <= 1
- No
CHECK constraint on claims.verification_status to enforce valid enum values
- No
UNIQUE constraint on entities.name — duplicate entity names are possible
- No indexes on frequently queried columns (
claims.verification_status, notes.entity_id, web_cache.resolved_at)
Current Schema Gaps
-- Missing: CHECK (confidence BETWEEN 0 AND 1)
confidence REAL NOT NULL,
-- Missing: CHECK (verification_status IN ('unverified', 'verified', 'disputed'))
verification_status TEXT NOT NULL DEFAULT 'unverified',
-- Missing: UNIQUE constraint
name TEXT NOT NULL,
Proposed Changes
-- Add CHECK constraints
confidence REAL NOT NULL CHECK (confidence >= 0 AND confidence <= 1),
verification_status TEXT NOT NULL DEFAULT 'unverified'
CHECK (verification_status IN ('unverified', 'verified', 'disputed')),
-- Add unique constraint
name TEXT NOT NULL UNIQUE,
-- Add missing indexes
CREATE INDEX idx_claims_verification_status ON claims(verification_status);
CREATE INDEX idx_notes_entity_id ON notes(entity_id);
CREATE INDEX idx_web_cache_resolved_at ON web_cache(resolved_at);
Acceptance Criteria
Description
The SQLite schema lacks important constraints that would ensure data integrity at the database level:
CHECKconstraint onclaims.confidenceto enforce0 <= confidence <= 1CHECKconstraint onclaims.verification_statusto enforce valid enum valuesUNIQUEconstraint onentities.name— duplicate entity names are possibleclaims.verification_status,notes.entity_id,web_cache.resolved_at)Current Schema Gaps
Proposed Changes
Acceptance Criteria
confidencehas CHECK constraintverification_statushas CHECK constraintentities.namehas UNIQUE constraint