---
feature_story: FS_82_35_57_62
feature_title: envelope relationship data design
feature_status: TBD
---

For example, consider "is owned by" relationship between `data_envelope` classes:
a `ServiceEnvelopeClass.ClassCluster` has many `ServiceEnvelopeClass.ClassHost`-s.

When `data_envelope`-s has an "is owned by" relationship (or the like) with another, there are two approaches:

*   A: populate all props identifying owner into ownee:

    `ClassHost` has extra props from `ClassCluster`:

    *   `ServicePropName.code_maturity`
    *   `ServicePropName.geo_region`
    *   `ServicePropName.flow_stage`
    *   `ServicePropName.cluster_name`

*   B: populate only owner id prop only:

    `ClassHost` has only `ServicePropName.cluster_name` prop from `ClassCluster`.

    In this case, these arg types are useless to search `ClassHost`:

    *   `ServicePropName.code_maturity`
    *   `ServicePropName.geo_region`
    *   `ServicePropName.flow_stage`

   `ClassHost` `data_envelope` simply cannot be found by (`code_maturity`, `geo_region`, `flow_stage`)<br/>
   until `ServicePropName.cluster_name` is found by that tuple first.

   In this case, `cluster_name` (owner id) can be propagated as `ArgSource.InitValue` into (ownee) `ClassHost`.

Comparison:

| A: propagate all       | B: propagate id only                                                                                 |
|------------------------|------------------------------------------------------------------------------------------------------|
| no limitation          | no `ClassHost` props can be searched until `ClassCluster` is found first                             |
| no limitation          | functions requiring `ClassHost` has to include search for `ClassCluster`                             |
| no limitation          | narrowing down is not possible as `ClassHost` is indexed by exact unique `cluster_name` (one or none) |
| possibly slower search | likely faster search for initial (`code_maturity`, `geo_region`, `flow_stage`) tuple                    |

Basically, A is almost always a better choice.
