XSD(XML 스키마 정의 언어) 스키마 unique 에서 요소는 요소 또는 특성에 대한 고유성 제약 조건을 지정합니다. XML 스키마를 관계형 스키마로 변환하는 과정에서 XML 스키마의 요소 또는 특성에 지정된 고유 제약 조건은 생성된 해당 DataTable 요소의 고유 제약 조건에 DataSet 매핑됩니다.
다음 표에서는 msdata 특성을 unique 요소에서 지정할 수 있음을 설명합니다.
| 속성 이름 | 설명 |
|---|---|
| msdata:ConstraintName | 이 특성을 지정하면 해당 값이 제약 조건 이름으로 사용됩니다. 그렇지 않으면 특성은 name 제약 조건 이름의 값을 제공합니다. |
| msdata:PrimaryKey | 요소에 PrimaryKey="true" 있는 경우 unique 속성이 IsPrimaryKey로 설정된 고유한 제약 조건이 만들어집니다. |
다음 예제는 XML 스키마로, unique 요소를 사용하여 고유성 제약 조건을 지정합니다.
<xs:schema id="SampleDataSet"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xs:element name="Customers">
<xs:complexType>
<xs:sequence>
<xs:element name="CustomerID" type="xs:integer"
minOccurs="0"/>
<xs:element name="CompanyName" type="xs:string"
minOccurs="0"/>
<xs:element name="Phone" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="SampleDataSet" msdata:IsDataSet="true">
<xs:complexType>
<xs:choice maxOccurs="unbounded">
<xs:element ref="Customers" />
</xs:choice>
</xs:complexType>
<xs:unique msdata:ConstraintName="UCustID" name="UniqueCustIDConstr" > <xs:selector xpath=".//Customers" /> <xs:field xpath="CustomerID" /> </xs:unique>
</xs:element>
</xs:schema>
unique 스키마의 요소는 문서 인스턴스의 모든 Customers 요소에 대해 자식 요소의 값이 CustomerID 고유해야 한다고 지정합니다.
DataSet을 빌드할 때 매핑 프로세스는 이 스키마를 읽고 다음 테이블을 생성합니다.
Customers (CustomerID, CompanyName, Phone)
또한 매핑 프로세스는 다음 CustomerID에 표시된 대로 열에 고유한 제약 조건을 만듭니다. (간단히 하기 위해 관련 속성만 표시됩니다.)
DataSetName: MyDataSet
TableName: Customers
ColumnName: CustomerID
AllowDBNull: True
Unique: True
ConstraintName: UcustID Type: UniqueConstraint
Table: Customers
Columns: CustomerID
IsPrimaryKey: False
DataSet에서 생성된 IsPrimaryKey 속성은 고유 제약 조건에 대해 False로 설정됩니다. 열의 unique 속성은 CustomerID 열 값이 고유해야 함을 나타내며, 이러한 값은 열의 AllowDBNull 속성에 따라 null 참조일 수 있습니다.
스키마를 수정하고 선택적 msdata:PrimaryKey 특성 값을 True로 설정하면 테이블에 고유 제약 조건이 만들어집니다.
AllowDBNull 열 속성이 False로 설정되고, 제약 조건의 IsPrimaryKey 속성이 True로 설정되어 CustomerID 열이 기본 키 열이 됩니다.
XML 스키마의 요소 또는 특성 조합에 고유한 제약 조건을 지정할 수 있습니다. 다음 예제에서는 스키마에 다른 xs:field 요소를 추가하여 모든 Customers 인스턴스에서 CustomerID 및 CompanyName 값의 조합이 고유해야 함을 지정하는 방법을 보여 줍니다.
<xs:unique
msdata:ConstraintName="SomeName"
name="UniqueCustIDConstr" >
<xs:selector xpath=".//Customers" />
<xs:field xpath="CustomerID" />
<xs:field xpath="CompanyName" />
</xs:unique>
결과 DataSet에서 만든 제약 조건입니다.
ConstraintName: SomeName
Table: Customers
Columns: CustomerID CompanyName
IsPrimaryKey: False