[om-list] Data Model
Luke Call
lacall at onemodel.org
Wed Apr 18 09:47:28 EDT 2001
Sorry for the delay; responses below. -Luke
Mark Butler wrote:
> ....
> I have had second thoughts about this - for query purposes we want all
> relationship attribute values to be in the same table. So I propose that we
> move ATTRIBUTE_VERSION to be a new table called REL_VALUE (short for
> relationship value).
Thanks for the work. I think we'll continue to learn more about what we
want in the data model over time & w/ experience.
> ...
> This table would be the most critical data table in the whole system. I
> propose that we use a structure like the following:
>
> -- THIS_ID Primary Key (inherited - aka ATTRIBUTE_VALUE_ID)
> -- STANDARD_NAME Standard name (inherited)
When we develop contexts so that anything can have 0-n names, we will
probably want to move this; it's probably a good place for now.
> -- RELATIONSHIP_ID Relationship this value is for
> -- PARENT_ID Entity / relationship this attribute applies to
> -- (Same as ATTRIBUTE.PARENT_ID)
> --
> -- SOURCE_ID Source Entity ID - Origin for relationship
> -- Null allowed here - means "empty space"
> --
> -- DEST_ID Destination Entity ID - Destination for relationship
> --
> -- DOMAIN_ID Domain for this relationship value
> -- A domain is a combination of unit and basis
> --
> -- SCHEMA_ID Schema for this relationship value
> -- A schema is an entity or a work thereof that
> -- asserts a particular world view
> --
> -- CLAIM_YEAR Year schema first asserted this value (fractional)
> -- VALUE_YEAR Value asserted to be valid for this year (fractional)
> -- Null if claim is for all time
Wouldn't a value be good for a span of time?
> -- STRING_VALUE String value
> -- SCALAR_VALUE Scalar value
> -- VECTOR_VALUE Vector value
> -- MATRIX_VALUE Matrix value
Would it be more efficient use of space to break these four value fields
into related tables, since 3 out of four of these will be blank on any
given record?
Also, how do we distinguish between a relationship and an actual value?
Some values aren't relationships, right? (Unless I've just forgotten
something.)
> Now I completely skipped the relationship and relationship attribute tables
> because I do not think we need to instantiate those objects unless we are
> going to use them as one of the terminal entities in a relationship. Any
> objections?
No objections from me.
> Finally, I propose that we treat NULL as the entity id for "nothing", i.e. the
> entity that does not exist. This is useful for a class of relationships, like
> mass / energy that do not relate to any convenient real entity. In such cases
> SOURCE_ID would be null, and dest_id would be the entity id of the entity we
> are describing.
What about the use of NULL as "no information known"? What would we use
to indicate "no information"?
Luke
More information about the om-list
mailing list