Data Model
Data Model
erDiagram
TENANT ||--o{ PRODUCT : owns
PRODUCT ||--o{ MONITORING_TARGET : has
MONITORING_TARGET ||--o{ COMPETITOR_PRODUCT : monitors
COMPETITOR_PRODUCT ||--o{ PRICE_OBSERVATION : captures
COMPETITOR_PRODUCT ||--o{ STOCK_OBSERVATION : captures
COMPETITOR_PRODUCT ||--o{ CONTENT_SNAPSHOT : captures
PRODUCT ||--o{ ALERT : raises
TENANT ||--o{ WEBHOOK_SUBSCRIPTION : configures
Time-series tables keep captured_at and are designed to be partition-friendly. Daily aggregates support dashboards without scanning raw observation history.