Thanks for the explanations, Stan! Things are beginning to clear up.
* Stan Mitchell [Tue, 9 Jul 2002 at 15:03 -0700]
> Yes, you're right, it is a three-way association with 0-1 instances of
> From a database perspective, repository-source is an associative table -
> no primary key only foreign keys. So it would be useful for performing
> queries on various combinations of the foreign keys.
> I think the three ids (activity, repository, source) serve to identify a
> specific search. In Activity/Search, activity-id is a primary key.
> Each record defines one of three possible kinds of searches:
> 1- source without a known repository (search for a repository?)
> 2- repository without a particular source in mind (search for sources?)
> 3- a source known to exist in a specific repository (normal search)
Ahh, I see why we need the three keys in the search table.
> On the other hand, repository-source is indexed by the three ids.
> If a repository has several copies of a source, then a given search
> in one of those copies, would require a separate repository-source
> record to store the call number, etc. If you were interested in which
> copies (call-numbers) of the source you had looked at in a repository,
> a query of just those repository-source records which match
> repository-id and source-id would give that info.
But then you have to store call-numbers possibly many times. For
example, a professional researcher would doubtless perform many searches
in any particular US Census. For that Census the repository, source, call
number and description would all be the same for every repository-source
record. The only unique information in each record would be the
activity-id. Yet if we take out the activity-id from repository-source
we get rid of that redundancy. AFAICS there is no loss of querying power
when we do so - search has all three keys, so if you want to know which
searches you did on a particular call-number, you only have to query the
search table with the repository-id and source-id. Or am I still
> BTW, I'm a software engineer in the San Francisco bay area.
> Genealogy is a side interest of mine. I have studied the gdm
> spec and have an idea to represent it using UML. My background
> is more in C++, OOP, and systems programming. XML is still
> new to me.
I've often thought a UML representation of the GDM would be useful. Let
me know if you come up with one!
"Everybody is talking about the weather but nobody does anything about it."
-- Mark Twain
gdmxml mailing list