Re: Attribute name prefixes, domains, joins, ISO 11179
Date: Sun, 27 Nov 2005 13:50:26 +1100
Message-ID: <43891ef3$1_at_duster.adelaide.on.net>
mAsterdam wrote:
> I just :-) state that DCreatedDate is a bad name for a
> domain because being involved in a creation event does
> not in itself have any effect on what values are or are
> not in the set. It is bad because it suggests it does.
>
> ProductCode and WarehouseCode are different fish.
> Make sure the ProductCode authority and the
> WarehouseCode authority publish the respective Codes.
> These authorities own the sets of values.
> I have no objections to these names as names for domains.
Something that might help me understand you position better might be if you gave me your thoughts on these questions: by your understanding of how domains and attribute names are (or are not) related, could two different relvars in a system each have an attribute of the same domain, and not be inherently relatable on those attributes? What about if they are the same domain and the attributes have the same name? Can you even have two different attributes with the same domain and the same name, or does this violate a rule of some kind?
> Well, this is what the c.d.t. glossary currently says:
> Maybe it's best to
> just spell it out if there is room for misinterpretation.
> You stated that
> "those attributes which form part of a
> foreign key" ... "will certainly be named the same in the
> referencing table as they are in the referenced table"
> This practise causes trouble whenever there are more than
> one foreign keys between two tables. The practise of basing
> the name on roles avoids that trouble - it never arises.
I have read a little about ORM, but not as much as I should have. Regardless, I think the same result comes about with the inclusion of "qualification" terms. In 11179-speak, the "class term" is the same, and the "representation term" is the same, and we know that the type (machine type + check constraints etc) should be the same. Since our attribute names are built using certain rules (iso 11179), we can determine from looking at a name which parts are qualification terms, and we can mentally exclude them if we are looking for related attributes in other relvars.
> In the example 'PersonName' is meant to denote the type (UDT).
> The tables are Person and Game (should be Persons and Games if
> we go with the wikipedia interpretation of ISO 11179).
> The columns are Name, Black, White and Arbiter.
> The type (PersonName) is /not/ part of the column name.
>
> Maybe you did not see
>
>>> Both the type and the attribute have a name here.
>
> (you snipped it).
>> To use a simplified counterexample, if you called it "white male name" >> then we have a different class term and a different domain. I guess >> I'm suggesting that qualification terms can regularly (but perhaps not >> always) be excluded when considering which domains exist, and when >> they can be excluded is usually clear from the semantics.
>
>
> Could you give a more explicit example?
Sure, lets take the wiki example itself:
"columns on the Work_Orders table would be expressed as:
WorkOrder_Number
Requirements_Text
Approving_Employee_Number"
I have to say, ISO 11179 is not very clear about one point, which was a
source of confusion for me. To quote the wiki entry on the WorkOrders
example
"For Requirements_Text, the full name (i.e., the name that goes in the
registry, or data dictionary) is WorkOrder_Requirements_Text; the Object
part is omitted because it is declared in the WorkOrders table".
Given this rule, why can't we call "WorkOrder_Number" simply "Number"?
Is it because we also have "Employee_Number", which would also shorten
simply to "Number", and then we would have an abiguity even though the