Share via


데이터베이스의 XML 스키마 컬렉션 관리를 위한 DDL

서버에서 XML 스키마 컬렉션 관리 항목에 설명된 바와 같이 데이터베이스에서 XML 스키마 컬렉션을 만들고 이를 xml 유형의 변수 및 열과 연결할 수 있습니다. 데이터베이스에 있는 스키마 컬렉션을 관리하기 위해 SQL Server는 다음 DDL 문을 제공합니다.

XML 스키마 컬렉션과 여기에 포함되는 스키마를 사용하려면 먼저 CREATE XML SCHEMA COLLECTION 문을 사용하여 컬렉션과 스키마를 만들어야 합니다. 스키마 컬렉션을 만든 다음에는 xml 유형의 변수와 열을 만들고 스키마 컬렉션과 연결할 수 있습니다. 스키마 컬렉션을 만든 다음에는 여러 스키마 구성 요소가 메타데이터에 포함됩니다. 또한 ALTER XML SCHEMA COLLECTION을 사용하여 기존 스키마에 더 많은 구성 요소를 추가하거나 기존 컬렉션에 새로운 스키마를 추가할 수 있습니다.

스키마 컬렉션을 삭제하려면 DROP XML SCHEMA COLLECTION 문을 사용합니다. 이렇게 하면 컬렉션에 포함된 모든 스키마가 삭제되고 컬렉션 개체가 제거됩니다. 스키마 컬렉션을 삭제하려면 DROP XML SCHEMA COLLECTION(Transact-SQL)에 기술된 조건을 충족해야 합니다.

스키마 구성 요소 이해

CREATE XML SCHEMA COLLECTION 문을 사용하면 여러 스키마 구성 요소를 데이터베이스로 가져옵니다. 스키마 구성 요소에는 스키마 요소, 특성 및 유형 정의가 포함됩니다. DROP XML SCHEMA COLLECTION 문을 사용하면 전체 컬렉션을 제거합니다.

CREATE XML SCHEMA COLLECTION은 여러 시스템 테이블에 스키마 구성 요소를 저장합니다.

예를 들어 다음 스키마를 고려해 보십시오.

<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
            targetNamespace="uri:Cust_Orders2"
            xmlns="uri:Cust_Orders2" >
  <xsd:attribute name="SomeAttribute" type="xsd:int" />
  <xsd:complexType name="SomeType" />
  <xsd:complexType name="OrderType" >
    <xsd:sequence>
      <xsd:element name="OrderDate" type="xsd:date" />
      <xsd:element name="RequiredDate" type="xsd:date" />
      <xsd:element name="ShippedDate" type="xsd:date" />
    </xsd:sequence>
    <xsd:attribute name="OrderID" type="xsd:ID" />
    <xsd:attribute name="CustomerID"  />
    <xsd:attribute name="EmployeeID"  />
  </xsd:complexType>
  <xsd:complexType name="CustomerType" >
     <xsd:sequence>
        <xsd:element name="Order" type="OrderType"
                     maxOccurs="unbounded" />
       </xsd:sequence>
      <xsd:attribute name="CustomerID" type="xsd:string" />
      <xsd:attribute name="OrderIDList" type="xsd:IDREFS" />
  </xsd:complexType>
  <xsd:element name="Customer" type="CustomerType" />
</xsd:schema>

이전 스키마는 데이터베이스에 저장할 수 있는 여러 유형의 구성 요소를 보여 줍니다. 여기에는 SomeAttribute, SomeType, OrderType, CustomerType, Customer, Order, CustomerID, OrderID, OrderDate, RequiredDate 및 ShippedDate가 포함됩니다.

구성 요소 범주

데이터베이스에 저장되는 스키마 구성 요소는 다음 범주로 구분됩니다.

  • ELEMENT

  • ATTRIBUTE

  • TYPE(간단하거나 복잡한 유형)

  • ATTRIBUTEGROUP

  • MODELGROUP

예를 들면 다음과 같습니다.

  • SomeAttribute는 ATTRIBUTE 구성 요소입니다.

  • SomeType, OrderTypeCustomerType은 TYPE 구성 요소입니다.

  • Customer 는 ELEMENT 구성 요소입니다.

데이터베이스로 스키마를 가져올 때 SQL Server에서 스키마 자체는 저장하지 않습니다. 대신 SQL Server는 여러 개별 구성 요소를 저장합니다. 즉, <Schema> 태그는 저장되지 않으며 이 태그 내에 정의된 구성 요소만 보관됩니다. 모든 스키마 요소는 보관되지 않습니다. <Schema> 태그에 해당 구성 요소의 기본 동작을 지정하는 특성이 포함된 경우 이러한 특성은 다음 표에 설명된 것과 같이 가져오기 프로세스 중에 태그 내에 있는 스키마 구성 요소로 이동됩니다.

특성 이름

동작

attributeFormDefault

아직 제공되지 않았고 값이 attributeFormDefault 특성의 값으로 설정된 스키마의 모든 특성 선언에 적용된 form 특성입니다.

elementFormDefault

아직 제공되지 않았고 값이 elementFormDefault 특성의 값으로 설정된 스키마의 모든 요소 선언에 적용된 form 특성입니다.

blockDefault

아직 제공되지 않았고 값이 blockDefault 특성의 값으로 설정된 모든 요소 선언 및 유형 정의에 적용된 block 특성입니다.

finalDefault

아직 제공되지 않았고 값이 finalDefault 특성의 값으로 설정된 모든 요소 선언 및 유형 정의에 적용된 final 특성입니다.

targetNamespace

대상 네임스페이스에 속하는 구성 요소에 대한 정보는 메타데이터에 저장됩니다.