Kapcsolatok következtetése
Ha egy táblaként kikövetkeztetett elem tartalmaz egy gyermekelemet, amely szintén táblaként van kikövetkeztetve, a két tábla között létrejön egy DataRelation elem. A rendszer hozzáad egy új, ParentTableName_Id nevű oszlopot a szülőelemhez létrehozott táblához és a gyermekelemhez létrehozott táblához is. Az identitásoszlop ColumnMapping tulajdonsága MappingType.Hidden értékre lesz állítva. Az oszlop egy automatikusan növekvő elsődleges kulcs lesz a szülőtábla számára, és a két tábla közötti Adatrelációhoz lesz használva. A hozzáadott identitásoszlop adattípusa a System.Int32 lesz, ellentétben az összes többi kikövetkeztetett oszlop adattípusával, amely a System.String. A ForeignKeyConstraint DeleteRule = Kaszkádolt elem is létrejön a szülő- és gyermektáblák új oszlopával.
Vegyük például a következő XML-t:
<DocumentElement>
<Element1>
<ChildElement1 attr1="value1" attr2="value2"/>
<ChildElement2>Text2</ChildElement2>
</Element1>
</DocumentElement>
A következtetési folyamat két táblát hoz létre: Element1 és ChildElement1.
Az Element1 tábla két oszlopból áll: Element1_Id és ChildElement2. A Element1_Id oszlop ColumnMapping tulajdonsága MappingType.Hidden értékre lesz állítva. A ChildElement2 oszlop ColumnMapping tulajdonsága MappingType.Element értékre lesz állítva. A Element1_Id oszlop lesz az Elem1 tábla elsődleges kulcsa.
A ChildElement1 tábla három oszlopból áll: attr1, attr2 és Element1_Id. Az attr1 és attr2 oszlopok ColumnMapping tulajdonsága MappingType.Attribute értékre lesz állítva. A Element1_Id oszlop ColumnMapping tulajdonsága MappingType.Hidden értékre lesz állítva.
A dataRelation és a ForeignKeyConstraint a két tábla Element1_Id oszlopainak használatával jön létre.
Adatkészlet: DocumentElement
Táblázat: Elem1
Element1_Id | ChildElement2 |
---|---|
0 | Szöveg2 |
Táblázat: ChildElement1
attr1 | attr2 | Element1_Id |
---|---|---|
érték1 | érték2 | 0 |
DataRelation: Element1_ChildElement1
ParentTable: Element1
ParentColumn: Element1_Id
ChildTable: ChildElement1
ChildColumn: Element1_Id
Beágyazott: Igaz
ForeignKeyConstraint: Element1_ChildElement1
Oszlop: Element1_Id
ParentTable: Element1
ChildTable: ChildElement1
DeleteRule: Kaszkádolt
AcceptRejectRule: Nincs