Resumen de Diseño y Normalización de Bases de Datos

Diseño y Normalización de Bases de Datos: Guía Completa

Introducción

XML (eXtensible Markup Language) es un lenguaje para representar datos estructurados en forma de árbol. En este material nos centramos en cómo definir la estructura válida de documentos XML mediante DTD y, especialmente, XML Schema, y cómo validar documentos contra esas definiciones. Aprenderás conceptos clave, sintaxis esencial, ejemplos prácticos y cómo usar XPath/XQuery para obtener información de documentos validados.

Definición: Un esquema XML es una descripción formal (en XML) que especifica los elementos, atributos, tipos de datos y restricciones que debe cumplir un documento XML para considerarse válido.

1. Motivos para usar esquemas y validación

  • Garantizar integridad estructural y semántica de los documentos XML.
  • Detectar errores antes de procesar datos (p. ej., valores faltantes o tipos incorrectos).
  • Facilitar interoperabilidad entre aplicaciones y servicios web.
💡 Věděli jste?Did you know que XML Schema permite especificar tipos de datos más ricos (fechas, enteros sin signo, cadenas) que los DTD tradicionales?

2. DTD vs XML Schema — comparación rápida

CaracterísticaDTDXML Schema (XSD)
SintaxisPropia (no XML)Basada en XML
Tipos de datosMuy limitadaTipos nativos (xsd:string, xsd:date, xsd:unsignedInt, etc.)
Orden de elementosObligatorio según declaraciónMás flexible (modelo complejo, secuencias, elección)
Soporte para claves/refsLimitadoSoporta xsd:key, xsd:keyref, xsd:unique
Reutilización de tiposPobreSoporta tipos complejos nombrados, herencia por extensión/restricción

Definición: Un DTD (Document Type Definition) es una forma antigua de declarar la estructura de un documento XML; tiene su propia sintaxis y limitaciones frente a XML Schema.

3. Componentes básicos de XML Schema

3.1 Espacios de nombres (namespaces)

  • Un esquema suele declarar el espacio de nombres del vocabulario de XSD: por ejemplo, xmlns:xsd="http://www.w3.org/2001/XMLSchema".
  • El prefijo (p. ej., xsd:) se usa para identificar etiquetas del lenguaje de esquema.

3.2 Elementos, tipos y cardinalidad

  • xsd:element define un elemento. Atributos relevantes: name, type, minOccurs, maxOccurs.
  • type puede ser un tipo simple (p. ej., xsd:string) o un tipo complejo nombrado (p. ej., Employee).
  • minOccurs y maxOccurs controlan multiplicidad; maxOccurs="unbounded" = repetir ilimitado.

Definición: Un tipo complejo (xsd:complexType) describe un elemento que contiene otros elementos y/o atributos. Un tipo simple describe elementos que contienen solo valores atómicos.

3.3 Tipos simples y valores básicos

  • Tipos comunes: xsd:string, xsd:date, xsd:unsignedInt, xsd:float.
  • Se pueden restringir valores mediante xsd:restriction y xsd:pattern, xsd:minInclusive, etc.

Ejemplo (fragmento):

$$<xsd:element name="employeeSalary" type="xsd:unsignedInt"/>$$

3.4 Unicidad, claves y referencias

  • xsd:unique impone unicidad dentro de un conjunto seleccionado por xsd:selector y xsd:field.
  • xsd:key define una clave única (similar a PK).
  • xsd:keyref crea una referencia a una xsd:key (similar a FK).

Ejemplo (conceptual):

$$<xsd:key name="employeeSSNKey">$$ $$<xsd:selector xpath="employee"/>$$ $$<xsd:field xpath="employeeSSN"/>$$ $$</xsd:key>$$

4. Estructura típica de un archivo XSD (paso a paso)

  1. Declaración del esquema y espacio de nombres:
    $$<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">$$
  2. Documentación/anotaciones (opcional):
    $$xsd:annotation<xsd:documentation xml:lang="en">Descripción</xsd:documentation></xsd:annotation>$$
  3. Declaración del elemento raíz y su tipo (inline o por referencia de tipo nombrado).
  4. Definición de tipos complejos (xsd:complexType) con xsd:sequence, xsd:choice o xsd:all.
  5. Restricciones de unicidad y claves (xsd:unique, xsd:key, xsd:keyref).

5. Ejemplo práctico: esquema resumido para una entidad Em

Zaregistruj se pro celé shrnutí
TarjetasTest de conocimientosResumenPodcastMapa mental
Empezar gratis

¿Ya tienes cuenta? Iniciar sesión

XML: esquemas y validación

Klíčové pojmy: XML Schema define estructura y tipos en XML, Usar xmlns:xsd para referenciar el vocabulario XSD, xsd:element con type, minOccurs, maxOccurs controla aparición, xsd:complexType describe elementos con hijos, xsd:simpleType con xsd:restriction y xsd:pattern limita valores, xsd:key, xsd:unique, xsd:keyref gestionan integridad referencial, xsd:sequence, xsd:choice, xsd:all controlan orden y alternativas, Validar XML detecta errores antes del procesamiento, XPath selecciona nodos con / y // y calificadores entre [], XQuery construye consultas FLWR sobre XML, Preferir XSD sobre DTD para tipos y reutilización, Validar documentos con procesadores (p. ej., Xerces, lxml)

## Introducción XML (eXtensible Markup Language) es un lenguaje para representar datos estructurados en forma de árbol. En este material nos centramos en cómo definir la estructura válida de documentos XML mediante DTD y, especialmente, XML Schema, y cómo validar documentos contra esas definiciones. Aprenderás conceptos clave, sintaxis esencial, ejemplos prácticos y cómo usar XPath/XQuery para obtener información de documentos validados. > Definición: Un esquema XML es una descripción formal (en XML) que especifica los elementos, atributos, tipos de datos y restricciones que debe cumplir un documento XML para considerarse válido. ## 1. Motivos para usar esquemas y validación - Garantizar integridad estructural y semántica de los documentos XML. - Detectar errores antes de procesar datos (p. ej., valores faltantes o tipos incorrectos). - Facilitar interoperabilidad entre aplicaciones y servicios web. Did you know que XML Schema permite especificar tipos de datos más ricos (fechas, enteros sin signo, cadenas) que los DTD tradicionales? ## 2. DTD vs XML Schema — comparación rápida | Característica | DTD | XML Schema (XSD) | |---|---:|---| | Sintaxis | Propia (no XML) | Basada en XML | | Tipos de datos | Muy limitada | Tipos nativos (xsd:string, xsd:date, xsd:unsignedInt, etc.) | | Orden de elementos | Obligatorio según declaración | Más flexible (modelo complejo, secuencias, elección) | | Soporte para claves/refs | Limitado | Soporta xsd:key, xsd:keyref, xsd:unique | | Reutilización de tipos | Pobre | Soporta tipos complejos nombrados, herencia por extensión/restricción | > Definición: Un DTD (Document Type Definition) es una forma antigua de declarar la estructura de un documento XML; tiene su propia sintaxis y limitaciones frente a XML Schema. ## 3. Componentes básicos de XML Schema ### 3.1 Espacios de nombres (namespaces) - Un esquema suele declarar el espacio de nombres del vocabulario de XSD: por ejemplo, xmlns:xsd="http://www.w3.org/2001/XMLSchema". - El prefijo (p. ej., `xsd:`) se usa para identificar etiquetas del lenguaje de esquema. ### 3.2 Elementos, tipos y cardinalidad - xsd:element define un elemento. Atributos relevantes: `name`, `type`, `minOccurs`, `maxOccurs`. - `type` puede ser un tipo simple (p. ej., `xsd:string`) o un tipo complejo nombrado (p. ej., `Employee`). - `minOccurs` y `maxOccurs` controlan multiplicidad; `maxOccurs="unbounded"` = repetir ilimitado. > Definición: Un tipo complejo (xsd:complexType) describe un elemento que contiene otros elementos y/o atributos. Un tipo simple describe elementos que contienen solo valores atómicos. ### 3.3 Tipos simples y valores básicos - Tipos comunes: `xsd:string`, `xsd:date`, `xsd:unsignedInt`, `xsd:float`. - Se pueden restringir valores mediante `xsd:restriction` y `xsd:pattern`, `xsd:minInclusive`, etc. Ejemplo (fragmento): $$<xsd:element name="employeeSalary" type="xsd:unsignedInt"/>$$ ### 3.4 Unicidad, claves y referencias - `xsd:unique` impone unicidad dentro de un conjunto seleccionado por `xsd:selector` y `xsd:field`. - `xsd:key` define una clave única (similar a PK). - `xsd:keyref` crea una referencia a una `xsd:key` (similar a FK). Ejemplo (conceptual): $$<xsd:key name="employeeSSNKey">$$ $$<xsd:selector xpath="employee"/>$$ $$<xsd:field xpath="employeeSSN"/>$$ $$</xsd:key>$$ ## 4. Estructura típica de un archivo XSD (paso a paso) 1. Declaración del esquema y espacio de nombres: $$<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">$$ 2. Documentación/anotaciones (opcional): $$<xsd:annotation><xsd:documentation xml:lang="en">Descripción</xsd:documentation></xsd:annotation>$$ 3. Declaración del elemento raíz y su tipo (inline o por referencia de tipo nombrado). 4. Definición de tipos complejos (`xsd:complexType`) con `xsd:sequence`, `xsd:choice` o `xsd:all`. 5. Restricciones de unicidad y claves (`xsd:unique`, `xsd:key`, `xsd:keyref`). ## 5. Ejemplo práctico: esquema resumido para una entidad Em