Скачиваний:
110
Добавлен:
30.04.2013
Размер:
655.07 Кб
Скачать

B.5.3.19 Child Cardinality is Z or 1 Iff Roles Contain the Primary Key or Any B.5.3.19 Child Cardinality is Z or 1 Iff Roles Contain the Primary Key or Any Alternate Key

If the connection relationship has a child high cardinality value, has foreign key attributes, and the child in the relationship h primary key, then the child high cardinality is 1 if and only if every primary key attribute is a foreign key attribute or for s alternate key, every alternate key attribute is a foreign key attribute.

( for all * )

( if ( mm: connectionRelationship ): I has childHigh: CH, ( mm: connectionRelationship ): I has fkeys: Fkeys, ( mm: connectionRelationship ): I has child: J,

( ( mm: viewEntity ): J has pkeys: Pkeys then

CH = 1 iff

( for all X )

( if member( Pkeys, X ) then

member( Fkeys, X ) )

or

( for some K )

( ( mm: viewEntity ): J has alternateKey: K, ( for all L, M, X )

( if ( mm: alternateKey ): K has contains: L,

( mm: alternateKeyAttribute ): L has viewEntityAttribute: M, ( mm: viewEntityAttribute ): M has domain: X

then

member( Fkeys, X ) ) ) ).

B.5.3.20 Is-Mandatory is True Iff All Roles Are NonullB.5.3.20 Is-Mandatory is True Iff All Roles Are Nonull

A relationship is mandatory if and only if the relationship has foreign key attributes and they are all non-null.

( for all * )

( if ( mm: connectionRelationship ): I has is_mandatory: TF, ( mm: connectionRelationship ): I has fkeys: Fkeys,

( mm: connectionRelationship ): I has child: J, then

FK = ‘True’ iff

( for all X )

( if member( Fkeys, X ) then ( for some K )

( ( mm: viewEntity ): J has contains: K,

( mm: viewEntityAttribute ): K has domain: X,

( mm: viewEntityAttribute ): K has is_nonull: ‘True’ ) ) ).

B.5.3.21 Connection with Foreign Keys is Identifying Iff the Foreign Key Attributes Are a Subset of the Child Primary KeyB.5.3.21 Connection with Foreign Keys is Identifying Iff the Foreign Key Attributes Are a Subset of the Child Primary Key

( for all * )

( if ( mm: connectionRelationship ): I has is_identifying: TF, ( mm: connectionRelationship ): I has fkeys: Fkeys,

( mm: connectionRelationship ): I has child: J, ( mm: viewEntity ): J has pkeys: Pkeys

then

131

FK = ‘True’ iff

( for all X )

( if member( Fkeys, X ) then member( Pkeys, X ) ) ).

B.5.3.22 Foreign Key Attributes Determine ConnectionNoB.5.3.22 Foreign Key Attributes Determine

ConnectionNo

( for all * )

( if ( mm: connectionRelationship ): I1 has connectionNo: CN1, ( mm: connectionRelationship ): I1 has fkeys: Fkeys1,

( mm: connectionRelationship ): I1 has child: C, ( mm: connectionRelationship ): I1 has parent: P,

( mm: connectionRelationship ): I2 has connectionNo: CN2, ( mm: connectionRelationship ): I2 has fkeys: Fkeys2,

( mm: connectionRelationship ): I2 has child: C, ( mm: connectionRelationship ): I2 has parent: P,

( for all X ) ( if member( Fkeys1, X ) then member( Fkeys2, X ) ), ( for all X ) ( if member( Fkeys2, X ) then member( Fkeys1, X ) )

then

CN1 = CN2 ).

B.5.3.23 Connection Foreign Key Attributes Type Uniquely Onto Parent Primary Key Attributes

In a connection relationship, there are the same number of foreign key attributes as primary key attributes and every foreign key attribute in the child references exactly one primary key attribute in the parent.

The number of connection foreign key attributes equals the number of parent primary key attributes.

( for all * )

( if ( mm: connectionRelationship ): I has fkeys: L1, ( mm: connectionRelationship ): I has parent: J, ( mm: viewEntity ): J has pkeys: L2,

count( L1, C ) then

count( L2, C ) ).

A domain D1 references another domain, D2, if D1 = D2 or if D2 is an ancestor of D1.

( for all * )

( ( mm: domain ): I has references: J. ifdef I = J

or

( mm: domain ): I has ancestor: J ).

Each connection foreign key attribute references a parent primary key attribute.

( for all * )

( if ( mm: connectionRelationship ): I has fkeys: L1, ( mm: connectionRelationship ): I has parent: K, ( mm: viewEntity ): K has pkeys: L2,

member( L1, Fk ) then ( for some Pk )

( member( L2, Pk ),

( mm: domain ): Fk has references: Pk ) ).

Each connection foreign key attribute references at most one parent primary key attribute.

132

( for all * )

( if ( mm: connectionRelationship ): I has fkeys: L1, ( mm: connectionRelationship ): I has parent: K, ( mm: viewEntity ): K has pkeys: L2,

member( L1, Fk ), member( L2, Pk1 ), member( L2, Pk2 ),

( mm: domain ): Fk has references: Pk1 ( mm: domain ): Fk has references: Pk2

then

Pk1 = Pk2 ).

B.5.3.24 Category Primary Key Attributes Type Uniquely Onto Generic Primary Key Attributes B.5.3.24 Category Primary Key Attributes Type Uniquely Onto Generic Primary Key Attributes

The number of category primary key attributes equals the number of generic primary key attributes and every category primary key attribute references exactly one generic primary key attribute.

The number of category primary key attributes equals the number of generic primary key attributes.

( for all * )

( if ( mm: category ): I has pkeys: L1, ( mm: category ): I has cluster: K, ( mm: cluster ): K has generic: J,

( mm: viewEntity ): J has pkeys: L2, count( L1, C )

then

count( L2, C ) ).

Each category primary key attribute references a generic primary key attribute.

( for all * )

( if ( mm: category ): I has pkeys: L1, ( mm: category ): I has cluster: K, ( mm: cluster ): K has generic: J,

( mm: viewEntity ): J has pkeys: L2, member( L1, Fk )

then ( for some Pk )

( member( L2, Pk ),

( mm: domain ): Fk has references: Pk ) ).

133

Each category primary key attribute references at most one generic primary key attribute.

( for all * )

( if ( mm: category ): I has pkeys: L1, ( mm: category ): I has cluster: K, ( mm: cluster ): K has generic: J,

( mm: viewEntity ): J has pkeys: L2, member( L1, Fk ),

member( L2, Pk1 ), member( L2, Pk2 ),

( mm: domain ): Fk has references: Pk1 ( mm: domain ): Fk has references: Pk2

then

Pk1 = Pk2 ).

B.5.4 Valid IDEF1X ModelB.5.4 Valid IDEF1X Model

The meta model informally defines the set of valid IDEF1X models in the usual way. The meta model also formally defines the set of valid IDEF1X models in the following way. The meta model, as an IDEF1X model, has a corresponding formal theory. The semantics of the theory are defined in the standard way. That is, an interpretaion of a theory consists of a domain of individuals and a set of assignments:

To each constant in the theory, an individual in the domain is assigned.

To each n-ary function symbol in the theory, an n-ary function over the domain is assigned.

To each n-ary predicate symbol in the theory, an n-ary relation over the domain is assigned.

In the intended interpretation, the domain of individuals consists of views, such as production; entities, such as part and vendor; domains, such as qty_on_hand; connection relationships; category clusters; and so on.

If every axiom in the theory is true in the interpretation, then the interpretation is called a model for the theory. Every model for the IDEF1X theory corresponding to the IDEF1X meta model and its constraints is a valid IDEF1X model.

134

B.6 BibliographyB.6 Bibliography

[B1] Brown, R. G., Logical Database Design Techniques, The Database Design Group, Inc., Mountain View, California, 1982.

[B2] Brown, R. G. and Parker, D. S. "LAURA, A Data Model and Her Logical Design Methodology," Proc. 9th VLDB Conf., Florence, Italy, 1983.

[B3] Bruce, T. A., Designing Quality Databases with IDEF1X Information Models, Dorset House, 1992.

[B4] Hogger, C. J., Introduction to Logic Programming, Acedemic Press, 1984.

[B5] Loomis, M.E.S., The Database Book, Macmillan, 1987.

[B6] Manna, Z. and Waldinger, R., The Logical Basis for Computer Programming, Volume 1, AddisonWesley, 1985.

[B7] Information processing systems - Concepts and terminology for the conceptual schema and the information base, ISO Technical Report 9007, 1987.

B.7 AcknowledgementsB.7 Acknowledgements

The January 1993 IDEF1X Formalization was written by Robert G. Brown (The Database Design Group) helped by reviews of several drafts. Reviewers included Tom Bruce (Bank of America), Ben Cohen (Logic Works), Dave Brown (McDonell Douglas), Twyla Courtot (Mitre), Chris Dabrowski (NIST), Jack Boudreaux (NIST), Dan Spar (SRA), and Mary Loomis (Versant Object Technology).

135

Соседние файлы в папке I D E F