다음을 통해 공유


고유한 XSD(XML 스키마) 제약 조건을 데이터 세트 제약 조건에 매핑

XSD(XML 스키마 정의 언어) 스키마에서 고유 요소는 요소 또는 특성에 대한 고유성 제약 조건을 지정합니다. XML 스키마를 관계형 스키마로 변환하는 과정에서 XML 스키마의 요소 또는 특성에 지정된 고유 제약 조건은 생성된 해당 DataTable 요소의 고유 제약 조건에 DataSet 매핑됩니다.

다음 표에서는 고유 요소에서 지정할 수 있는 msdata 특성을 간략하게 설명합니다.

속성 이름 설명
msdata:ConstraintName 이 특성을 지정하면 해당 값이 제약 조건 이름으로 사용됩니다. 그렇지 않으면 이름 특성은 제약 조건 이름의 값을 제공합니다.
msdata:PrimaryKey PrimaryKey="true" 요소에 있는 경우 IsPrimaryKey 속성을 true로 설정하여 고유 제약 조건이 만들어집니다.

다음 예제에서는 고유 요소를 사용하여 고유 성 제약 조건을 지정하는 XML 스키마를 보여줍니다.

<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>  

스키마의 고유 요소는 문서 인스턴스의 모든 Customers 요소에 대해 CustomerID 자식 요소의 값이 고유해야 한다고 지정합니다. DataSet을 빌드할 때 매핑 프로세스는 이 스키마를 읽고 다음 테이블을 생성합니다.

Customers (CustomerID, CompanyName, Phone)  

또한 매핑 프로세스는 다음 DataSet에 표시된 것처럼 CustomerID 열에 고유한 제약 조건을 만듭니다. (간단히 하기 위해 관련 속성만 표시됩니다.)

      DataSetName: MyDataSet  
TableName: Customers  
  ColumnName: CustomerID  
      AllowDBNull: True  
      Unique: True  
  ConstraintName: UcustID       Type: UniqueConstraint  
      Table: Customers  
      Columns: CustomerID
      IsPrimaryKey: False  

생성된 DataSet 에서 IsPrimaryKey 속성은 고유 제약 조건에 대해 False 로 설정됩니다. 열의 고유 속성은 CustomerID 열 값이 고유해야 하며 열의 AllowDBNull 속성에 지정된 대로 null 참조일 수 있음을 나타냅니다.

스키마를 수정하고 선택적 msdata:PrimaryKey 특성 값을 True로 설정하면 테이블에 고유 제약 조건이 만들어집니다. AllowDBNull 열 속성은 False로 설정되고 제약 조건의 IsPrimaryKey 속성은True로 설정되므로 CustomerID 열을 기본 키 열로 만듭니다.

XML 스키마의 요소 또는 특성 조합에 고유한 제약 조건을 지정할 수 있습니다. 다음 예제에서는 스키마에 다른 xs:field 요소를 추가하여 CustomerIDCompanyName 값의 조합이 모든 인스턴스의 모든 고객에 대해 고유해야 함을 지정하는 방법을 보여 줍니다.

      <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  

참고하십시오