Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En un esquema del lenguaje de definición de esquemas XML (XSD), el elemento único especifica la restricción de exclusividad en un elemento o atributo. En el proceso de traducir un esquema XML en un esquema relacional, la restricción única especificada en un elemento o atributo del esquema XML se asigna a una restricción única en el DataTable del DataSet correspondiente que se genera.
En la tabla siguiente se describen los atributos msdata que puede especificar en el elemento único .
Nombre del atributo | Descripción |
---|---|
msdata:ConstraintName | Si se especifica este atributo, su valor se usa como nombre de restricción. De lo contrario, el atributo name proporciona el valor del nombre de restricción. |
msdata:PrimaryKey | Si PrimaryKey="true" está presente en el elemento único , se crea una restricción única con la propiedad IsPrimaryKey establecida en true. |
En el ejemplo siguiente se muestra un esquema XML que usa el elemento único para especificar una restricción de unicidad.
<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>
El elemento único del esquema especifica que para todos los elementos Customers de una instancia de documento, el valor del elemento secundario CustomerID debe ser único. Al compilar el conjunto de datos, el proceso de asignación lee este esquema y genera la tabla siguiente:
Customers (CustomerID, CompanyName, Phone)
El proceso de asignación crea también una restricción única para la columna CustomerID, como se muestra en el siguiente DataSet. (Por motivos de simplicidad, solo se muestran las propiedades pertinentes).
DataSetName: MyDataSet
TableName: Customers
ColumnName: CustomerID
AllowDBNull: True
Unique: True
ConstraintName: UcustID Type: UniqueConstraint
Table: Customers
Columns: CustomerID
IsPrimaryKey: False
En el DataSet que se genera, la propiedad IsPrimaryKey se establece en False para la restricción única. La propiedad única de la columna indica que los valores de columna CustomerID deben ser únicos (pero pueden ser una referencia nula, según lo especificado por la propiedad AllowDBNull de la columna).
Si modifica el esquema y establece el valor de atributo msdata:PrimaryKey opcional en True, la restricción única se crea en la tabla. La propiedad de columna AllowDBNull se establece en False y la propiedad IsPrimaryKey de la restricción establecida en True, lo que convierte la columna CustomerID en una columna de clave principal.
Puede especificar una restricción única en una combinación de elementos o atributos en el esquema XML. En el ejemplo siguiente se muestra cómo especificar que una combinación de valores CustomerID y CompanyName deben ser únicos para todos los clientes de cualquier instancia agregando otro elemento xs:field en el esquema.
<xs:unique
msdata:ConstraintName="SomeName"
name="UniqueCustIDConstr" >
<xs:selector xpath=".//Customers" />
<xs:field xpath="CustomerID" />
<xs:field xpath="CompanyName" />
</xs:unique>
Esta es la restricción que se crea en el dataset resultante.
ConstraintName: SomeName
Table: Customers
Columns: CustomerID CompanyName
IsPrimaryKey: False