Article Relationship Model & Integrity Specification
1. Domain Entities & Cardinalities
+-----------------------+ 1:N +-----------------------+
| Issue |<----------------------| Article |
| (جلد، شمارہ، پی ڈی ایف)| | (مضمون / مقالہ / نظم) |
+-----------------------+ +-----------------------+
^ |
| N:1 | N:1
| N:1 v v
+-----------------------+ +----------------+ +----------------+
| Publication | | EditorialSection| | Author |
| (ماہنامہ حیاتِ نو) | | (حرف آغاز، فکر) | | (مصنف / قلم کار)|
+-----------------------+ +----------------+ +----------------+
| |
v N:M v
+----------------+ +----------------+
| Topic | | Legacy WP Post|
| (موضوعات / ٹیگز)| | (161 اصل ریکارڈ)|
+----------------+ +----------------+
2. Entity Schema Contracts
2.1 Article (src/types/index.ts)
export interface Article {
id: string; // e.g. "art-1782" (art-{wpPostId})
slug: string; // e.g. "social-media-aur-tehzeebi-yalghar"
titleUrdu: string; // Full normalized Urdu title
subtitleUrdu?: string; // Optional explanatory subtitle
authorId: string; // Foreign Key -> Author.id
authorNameUrdu: string; // Denormalized for display resilience
authorAffiliation?: string; // e.g. "جامعۃ الفلاح / علی گڑھ"
issueId: string; // Foreign Key -> Issue.id
issueTitleUrdu: string; // Denormalized issue title
sectionId: string; // Foreign Key -> EditorialSection.id
sectionNameUrdu: string; // Denormalized section title
topicIds: string[]; // Foreign Keys -> Topic.id[]
publicationDate: string; // ISO "YYYY-MM" or "YYYY-MM-DD"
readingTimeMinutes: number; // Computed based on 180 words/min
excerptUrdu: string; // 1-2 sentence lead summary
bodyUrdu: string; // Full clean Urdu prose (semantic paragraphs)
quranicVerses?: Verse[]; // Structured Arabic + Urdu + Surah:Ayah
poetryCouplets?: Couplet[]; // Metrical couplets [Misra 1, Misra 2]
footnotes?: Footnote[]; // Numbered citations and scholarly references
featuredMedia?: Media; // Calligraphic header or portrait
pdfResource?: Resource; // Direct offprint PDF if available
isFeatured?: boolean; // Curated showcase flag
}
3. Relational Foreign Key Integrity Constraints
- Issue Referential Integrity: Every
article.issueId MUST match an existing issue.id in issuesData.
- Author Referential Integrity: Every
article.authorId MUST match an existing author.id in authorsData.
- Section Referential Integrity: Every
article.sectionId MUST match an existing section.id in editorialSectionsData.
- Unique Slug Constraint: Article, Issue, Section, and Author slugs MUST be globally unique within their namespace.
- No Broken Links: Cross-references rendered in templates MUST only link to valid routes.
4. Current Integrity Audit Status
- Articles Verified: 34
- Broken Issue Foreign Keys: 0
- Broken Author Foreign Keys: 0
- Broken Section Foreign Keys: 0
- Integrity Assertion: PASSED (Verified via compile-time TypeScript checks and schema validation).