Pregunta

Tengo una pregunta sacada de la pagina 16 de Informe técnico sobre bases de datos relacionales anidadas de IBM, estoy confundido por qué en el siguiente CREATE comando utilizan MV/MS/MS en lugar de MV/MV/MS, cuando ambos ORDER_#, y PART_# son uno a muchos relaciones..No entiendo qué significa valor frente a subvalor en el diseño de bases de datos que no son 1nf.También me gustaría saber más sobre el ASSOC () cláusula.

Página 16 del documento técnico sobre bases de datos relacionales anidadas de IBM (ligeras modificaciones en los espacios en blanco)

    CREATE TABLE NESTED_TABLE (
      CUST# CHAR (9) DISP ("Customer #),
      CUST_NAME CHAR (40) DISP ("Customer Name"),
      ORDER_# NUMBER (6) DISP ("Order #") SM ("MV") ASSOC ("ORDERS"),
      PART_# NUMBER (6) DISP (Part #") SM ("MS") ASSOC ("ORDERS"),
      QTY NUMBER (3) DISP ("Qty.") SM ("MS") ASSOC ("ORDERS")
    );

Las bases de datos relacionales anidadas de IBM implementan tablas anidadas como atributos repetidos y grupos repetidos de atributos asociados.Las cláusulas SM especifican que el atributo se repite (de múltiples valores: "MV") o de un grupo repetido (de múltiples subvalores: "MS").La cláusula ASSOC asocia los atributos dentro de una tabla anidada.Si lo desea, las bases de datos relacionales anidadas de IBM pueden admitir varias tablas anidadas dentro de una tabla base.Se necesitaría la siguiente instrucción SQL estándar para procesar las tablas 1NF de la Figura 5 y producir el informe que se muestra en la Figura 6:

    SELECT CUSTOMER_TABLE.CUST#, CUST_NAME, ORDER_TABLE.ORDER_#, PART_#, QTY
    FROM CUSTOMER_TABLE, ORDER_TABLE, ORDER_CUST
    WHERE CUSTOMER_TABLE.CUST_# = ORDER_CUST.CUST_# AND ORDER_CUST.ORDER_# =
    ORDER _TABLE.ORDER_#;

                                       Nested Table
                Customer #       Customer Name Order #        Part #   Qty.
                AA2340987        Zedco, Inc.      93-1123     037617   81
                                                              053135   36
                                                  93-1154     063364   32
                                                              087905   39
                GV1203948        Alphabravo       93-2321     006776   72
                                                              055622   81
                                                              067587   29
                MT1238979        Trisoar          93-2342     005449   33
                                                              036893   52
                                                              06525    29
                                                  93-4596     090643   33
¿Fue útil?

Solución

Seguiré adelante y responderé mi propia pregunta, mientras sigo Administración UniVerse SQL de IBM para DBA Encontré el código para CREATE TABLE en la página 55.

ACT_NO INTEGER FORMAT '5R' PRIMARY KEY
BADGE_NO INTEGER FORMAT '5R' PRIMARY KEY
ANIMAL_ID INTEGER FORMAT '5L' PRIMARY KEY

(ver distraer nota al margen a continuación) Esto me divirtió al principio, pero esencialmente creo que se trata de una directiva de columna igual que una directiva de tabla como PRIMARY ( ACT_NO, BADGE_NO, ANIMAL_ID )

Más tarde en la página 5-19, vi esto

ALTER TABLE LIVESTOCK.T ADD ASSOC VAC_ASSOC (
    VAC_TYPE KEY, VAC_DATE, VAC_NEXT, VAC_CERT
);

Lo que me lleva a creer que agregar ASSOC (VAC_ASSOC) a una columna sería lo mismo...como esto

CREATE TABLE LIVESTOCK.T (
    VAC_TYPE ... ASSOC ("VAC_ASSOC")
    VAC_DATE ... ASSOC ("VAC_ASSOC")
    VAC_NEXT ... ASSOC ("VAC_ASSOC")
    VAC_cERT ... ASSOC ("VAC_ASSOC")
);

De todos modos, no estoy 100% seguro de tener razón, pero supongo que el orden no importa y que, en lugar de ser una asociación intransitiva, son simplemente una agrupación insensible al orden.

¡Adelante!Con la segunda parte de la pregunta relativa a MS y MV, Por mi vida, no puedo entender de dónde diablos sacó IBM esta sintaxis.Creo que es imaginario.No tengo acceso a una máquina de desarrollo en la que pueda jugar para probar esto, pero no puedo encontrarlo (el término MV) en la versión 10.1 anterior o en la nueva. Referencia de SQL de Universo 10.3

nota al margen Para aquellos que no están acostumbrados a UniVerse, 5R y 5L significa 5 caracteres justificados a la derecha o a la izquierda.Así es, una función de visualización integrada en los metadatos de la tabla...Busque en Google UniVerse FORMAT (o FMT) para obtener más información.

Otros consejos

Para que sepas, Atributo Valor múltiple y Sub-varios valores proviene de la forma de estructurar sus datos.

En esencia, todos los datos se almacenan en un árbol de clases. Universo es una base de datos de varios valores. En general, no funciona de la manera que decir en cuanto relacionales DBs de la función de trabajo de SQL.

Cada registro puede tener varios atributos.

Cada atributo puede tener múltiples valores múltiples.

Cada valores múltiples puede tener múltiples sub-múltiples valores.

Por lo tanto, si tengo un disco llamado FRED

A continuación, FRED <1,2,3> se refiere a la primera atributo, la posición 2 de valores múltiples y 3 posición subvalue.

Para leer mas sobre esto, usted necesita aprender más acerca de cómo funciona el universo. La sección de SQL es sólo una parte lateral de la misma. Le sugiero que lea los otros manuales para entender lo que está trabajando.

editar

En esencia, el código anterior le está diciendo que:

pueden haber múltiples pedidos por cliente. Estos se almacenan en un nivel en el MV 'mesa'

pueden haber múltiples partes por orden. Estos se almacenan en el nivel de MS en la 'tabla'

pueden haber múltiples qtys por pedido. Estos se almacenan en el nivel de MS en la 'mesa'. ya que están en el mismo nivel, aunque son 1-n para las órdenes, que son 1-1 en lo que respecta a las partes.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top