The Computed_CommonAncestors table caches the results of pairwise tree comparison. Each row is a common ancestor found between the user’s assigned tree (see Kit_TreeAssignment) and a specific match’s tree. Caching these results avoids re-running the comparison every time the People views are opened.
| Column | Type | Description |
|---|---|---|
| Id | int (PK) | Auto-incrementing primary key |
| KitGuid | string | The user’s DNA kit whose assigned tree was compared |
| MatchGuid | string | The match whose tree was compared against the assigned tree |
| Company | string | Which service the kit and match belong to |
| AncestorName | string | Display name of the common ancestor |
| AncestorBirthYear | string | Birth year of the ancestor, if known (nullable) |
| AncestorDeathYear | string | Death year of the ancestor, if known (nullable) |
| AncestorGender | string | Gender of the ancestor, if known (nullable) |
| Generation | int | Generation of the ancestor within the tree (distance up from the root individual) |
| MatchLevel | int | Name-matching strictness level used by the comparison engine to identify the shared ancestor |
| IsMRCA | bool | True if this ancestor is a Most Recent Common Ancestor for the pair |
| ComputeDate | DateTime | When this row was computed (UTC) |
The common-ancestor compute service iterates over each match that has tree data for the kit. For each match it loads the match’s tree (or its Match_TreeOverride tree if set), compares it against the kit’s assigned tree at the chosen MatchLevel, and inserts one row per common ancestor found, stamping each with the current ComputeDate. Before a new run, the previous results for the kit are cleared. The companion Computed_AncestorStatus row records the overall run.