Вы находитесь на странице: 1из 22

SISTEMAS ERP II

NOMBRE: Diego Said Herrera Chvez MATRICULA: 00045376 NOMBRE DEL CURSO: Sistemas ERP II ASESOR: M.S.I. Luis Alvares Lpez ACTIVIDAD: Am 2 TEMA: Types and Domains FECHA: 27/01/2012

Tipos y dominios

Tipos y Relaciones
Los tipos de datos (tipos, para abreviar) son fundamentales para la informtica. La teora relacional, en particular, requiere de una teora de tipo de apoyo, porque las relaciones se definen frente a otros tipos, es decir, todos los atributos de cada relacin se define como de algn tipo. Por ejemplo, el estado del atributo de la S proveedores relvar podra ser definida como de tipo INTEGER. Si es as, entonces toda relacin que es un valor posible para relvar. S debe tener un atributo de estado de tipo entero, lo que significa a su vez que cada tupla en una relacin tal tambin debe tener un atributo de estado que es de tipo INTEGER, lo que significa a su vez que la tupla en cuestin debe tener un valor de estado que es un nmero entero. En particular, los tipos pueden ser del sistema o definidos por el usuario. En este libro, sin embargo, no va a decir mucho acerca de los tipos definidos por el usuario como tal, porque:

El punto acerca de los tipos definidos por el usuario (desde el punto de vista del usuario que no es ms que las utiliza, en cualquier caso, en comparacin con el usuario que en realidad tiene la tarea de la definicin de ellos) es que se supone que se comportan como el sistema de tipos definidos de todos modos. Los usuarios de relativamente pocos cada vez se enfrentan a la tarea de crear un usuario tipo definido-y la creacin de ese tipo en realidad no implican ninguna consideracin especfica de relacin, en cualquier caso.

El modelo relacional establece un solo tipo como, BOOLEAN (el tipo ms importante de todos). Tipo booleano con-tiene dos valores: dos valores de verdad, para ser especfico, representado por los literales true y false, respectivamente. Por supuesto, los sistemas de prcticas de apoyo de una variedad de otros tipos definidos por el sistema, as, y voy a suponer que para concretar los tipos enteros (nmeros enteros), (cadenas de caracteres de longitud arbitraria) FIJO (nmero de punto fijo), y CHAR estn entre los que apoyaron . Nota: Voy a discutir los tipos de sistemas se define con el apoyo de SQL en particular en los "Tipos de escalar en SQL" ms adelante. Hay dos grandes temas que quiero discutir, uno en cada una de las dos secciones siguientes: Las comparaciones de igualdad y "comprobar dominio pasar por Esta parte de la discusin le convencer (espero) que los dominios son en realidad tipos. Datos sobre el valor atomicidad y la primera forma normal 2 alto"

Y esta parte le convencer que esos tipos pueden ser arbitrariamente complejos.

CAPITULO II
Dominio que voy a suponer por simplicidad se llama SNO as. (Nota: En este libro trato declarado y definido como sinnimos.) Del mismo modo, voy a asumir que el nmero (PNO) atribuye en relvars P y SP tambin se declara de un tipo definido por el usuario (o dominio) con el mismo nombre, PNO. Tenga en cuenta que estos supuestos no son cruciales para mi argumento, es slo que creo que hacen que el argumento un poco ms convincente, y quizs ms fcil de seguir. Voy a empezar con el hecho de que, como todo el mundo sabe (?), Dos valores pueden ser comparados por la igualdad en el modelo relacional si proceden del mismo dominio. Por ejemplo, la siguiente comparacin (que podra ser parte de la clusula WHERE en algunas consultas SQL) es obviamente vlido: SP.SNO = S. SNO / * OK * / (?) Por el contrario, ste, obviamente, no lo es: SP.PNO = S. SNO / * no es correcto * / Por qu no? Debido a que los nmeros de pieza y el nmero de proveedores diferentes tipos de cosas que estn definidas en diferentes dominios. As que la idea general es que el * DBMS debe rechazar cualquier intento de realizar cualquier operacin de relacin (unin, unin, lo que sea) que implica, ya sea explcita o implcitamente, una comparacin de igualdad entre los valores de diferentes dominios. Por ejemplo, aqu est una consulta SQL, donde el usuario est tratando de encontrar proveedores que no suministran partes: SELECT S. SNO, S. SNAME, ESTADO DE S., S. CIUDAD DE S Donde no existe (SELECT * DE SP DONDE SP.PNO = S. SNO) / * no es correcto * /

(No hay punto y coma final porque se trata de una expresin, no una declaracin. 3

Como dice el comentario, esta consulta no es ciertamente en Aceptar. La razn es que, en la ltima lnea, el usuario probablemente la intencin de escribir DONDE SP.SNO = S. SNO, pero por errorprobablemente slo un trozo de la tipificacin de los dedos, l o ella escribi DONDE SP.PNO = S. SNO en su lugar. Y, dado que estamos en realidad hablando de un simple error tipogrfico (probablemente), sera un acto amistoso por parte de los DBMS para interrumpir al usuario en este punto, poner de relieve el error, y tal vez preguntar si el usuario desea correcta antes de continuar.

TIPOS Y DOMINIOS Para repetir, por lo tanto, el DBMS debe rechazar una comparacin como SP.PNO SNO = S. si no es vlido. Sin embargo, Codd senta que deba ser una forma de tal situacin para que el usuario haga el DBMS seguir adelante y hacer la comparacin de todos modos, a pesar de que no parece vlida, sobre la base de que a veces el usuario sabr ms que el DBMS hace. Ahora, es difcil para m hacer justicia a esta idea, porque francamente no creo que tenga sentido, pero me dej darle una oportunidad. Supongo que es su trabajo para disear una base de datos de la participacin, digamos, clientes y proveedores, y por lo tanto decide tener un dominio de los nmeros de cliente y un dominio de los nmeros de proveedor, y construir su base de datos de esa manera, y la carga, y todo funciona bien para un ao o dos. Entonces, un da, uno de sus usuarios viene con una consulta que nunca haba odo antes, a saber: "Alguno de nuestros clientes tambin a los proveedores a nosotros?" Observe que esta es una consulta perfectamente razonable, observamos tambin que podra implicar una comparacin entre un nmero de cliente y un nmero de proveedor (una comparacin entre dominios) para ver si son iguales. Y si lo hace, as, sin duda que el sistema no le impide hacer esa comparacin, y desde luego el sistema no debe impedir que plantea una pregunta razonable. Sobre la base de tales argumentos, Codd propuso lo que llam "dominio, haga pasar por alto" (DCO) versiones de algunos de sus operadores relacionales. Una versin DCO de unin, por ejemplo, realizar la combinacin, aunque los atributos de unin se han definido en diferentes dominios. En cuanto a SQL, podemos imaginar que esta propuesta que se realiza por medio de una nueva clusula, IGNORAR LOS CHEQUES DE DOMINIO, que se podran incluir en una consulta SQL, como en este caso: SELECT DONDE ... CustNo = SNO IGNORAR LOS DE CHEQUES ... DOMINIO

DE

Y esta nueva clusula sera separado autorizarse la mayora de los usuarios no seran autorizados a utilizar (tal vez slo el administrador de base de datos se le permite usarlo). Antes de analizar la idea de la Contralora en detalle, quiero ver un ejemplo ms sencillo. Considere las siguientes dos consultas sobre la base de datos de proveedores y de piezas: SELECT ... De P, SP EN PESO = P. SP.QTY | Suponiendo que, razonablemente, que los pesos | SELECT ... | DE P, SP EN PESO P. SP.QTY = 0 y las cantidades se definen en diferentes dominios, 4

la consulta a la izquierda es claramente vlida. Pero qu pasa con el de la derecha? Segn Codd, que uno es vlido! En su libro El modelo relacional de bases de datos de gestin de la Versin 2 (Addison-Wesley, 1990), pgina 47, dice que en tal situacin "del DBMS [meramente] comprueba que los tipos de datos bsicos son los mismos", en el caso que nos ocupa, los "tipos de datos bsicos" son slo nmeros (En trminos generales), y as sucede que ver. Para m, esta conclusin es inaceptable. Claramente, el peso de las expresiones P. = SP.QTY y P. PESO - SP.QTY = 0 significa esencialmente la misma cosa. Seguramente, por lo tanto, deben

30 Descargar

CAPITULO en

II WoweBook.Com

tanto sea vlido o no vlido tanto, la idea de que podra ser vlida y el otro seguramente no tiene ningn sentido. Por lo tanto, me parece que hay algo extrao acerca de las comprobaciones de dominio Codd-estilo en el primer lugar, antes incluso de llegar a anular dominio cheque. (En el fondo, de hecho, Codd estilo de control de dominio se aplican slo en el caso muy especial, donde los dos trminos de la comparacin se especifican como las referencias a atributos simples. Observe que la comparacin P. PESO = SP.QTY entra en esta categora especial, pero la comparacin P. PESO SP.QTY = 0 no). Veamos algunos ejemplos an ms simple. Considere las siguientes comparaciones (cada uno de ellos puede aparecer como parte de una clusula WHERE de SQL, por ejemplo): S. SNO = P. "X4" PNO = 'X4' S. SNO = P. PNO

Espero que usted de acuerdo en que es al menos plausible que los dos primeros de estos podra ser vlida (y lo ejecuta con xito, e incluso dar a TRUE) y el tercero no. Pero si es as, entonces espero que tambin est de acuerdo que hay algo extrao est pasando, al parecer, que puede tener tres valores a, b, c tales que a = c es verdadera y b = c es cierto, pero en cuanto a =-b as, no podemos ni siquiera hacer la comparacin, y mucho menos tener que salir verdad! Entonces, qu est pasando? Vuelvo ahora al hecho de que los atributos de S. SNO y PNO P. se definen en los dominios SNO y PNO, respectivamente, y mi afirmacin de que los dominios son en realidad tipos, de hecho, he sugerido que SNO y PNO dominios, en particular, fueron definidas por el usuario tipos. Ahora, lo ms probable es que esos tipos estn fsicamente representados en trminos del sistema de tipo definido por el CHAR, pero estas representaciones son parte de la aplicacin, no el modelo, sino que son irrelevantes para el usuario, y de hecho estn ocultos de la usuario (por lo menos, debe ser), como vimos en el captulo 1 .* En particular, los operadores que se aplican a los nmeros de proveedor y los nmeros de pieza son los operadores definidos en relacin con esos tipos, no los operadores que pasan a ser definidos en relacin con el tipo CHAR (consulte la seccin "Qu es un tipo?" ms adelante en este captulo). Por ejemplo, podemos concatenar dos cadenas de caracteres, pero es probable que no se puede concatenar dos nmeros de proveedor (que podra hacer esto 5

ltimo slo si la concatenacin de un operador se define en relacin con el tipo de SNO). Ahora, cuando se define un tipo, tambin tenemos que definir los operadores que se pueden utilizar en conexin con los valores y las variables del tipo en cuestin (de nuevo, consulte la seccin "Qu es un tipo?"). Y un operador que debemos definir es lo que se denomina un operador de seleccin, que nos permite seleccionar o especificar, un valor arbitrario del tipo en cuestin. En el caso del tipo de SNO, por ejemplo, el selector (que en la prctica es probable que tambin se llama SNO) nos permite seleccionar el especial valor que SNO tiene una representacin CHAR especificado. He aqu un ejemplo: SNO ("S1")

* A lo largo de este libro utilizo el trmino representacin para referirse a una representacin fsica en concreto, a menos que el contexto exige lo contrario. Esta observacin es vlida independientemente de si estamos en un contexto de SQL (como en el presente discusin) o de otra manera, pero debo dejar claro que los selectores de SQL no son tan claras como podran ser, y como selector no es un trmino SQL. Tambin debo dejar claro que los selectores no tienen nada que ver con el operador de SQL SELECT. TIPOS Descargar Y en DOMINIOS 31 WoweBook.Com

Esta expresin es una invocacin del selector de SNO, y devuelve un proveedor determinado n-bre (es decir, la que est representada por 'S1' de la cadena de caracteres). Del mismo modo, la expresin: PNO ('P1')

es una invocacin del selector de PNO, y devuelve un nmero determinado (es decir, la que est representada por 'P1' de la cadena de caracteres). En otras palabras, los selectores de SNO y PNO de manera efectiva el trabajo mediante la adopcin de un valor CHAR ciertos y su conversin a un cierto valor SNO y PNO un cierto valor, respectivamente. Ahora volvamos a la comparacin de S. SNO = "X4". Como puede ver, el de una comparacin aqu son de diferentes tipos (tipos SNO y CHAR, para ser especfico). Ya que son de diferentes tipos, que sin duda no puede ser igual (recordemos que dos valores pueden ser comparados por la igualdad "si proceden del mismo dominio"). Sin embargo, el sistema hace por lo menos s que hay un operador, es decir, el selector de SNO-que efectivamente realiza CHAR a SNO conver-siones. Por lo tanto, puede invocar ese operador, de manera implcita, para convertir el comparand CHAR a un nmero de proveedor, lo que de hecho reemplaz a la comparacin original por esta otra: 6

S. Ahora estamos

SNO comparando dos

= nmeros de

SNO proveedor, lo que es

("X4") legtimo.

En la misma forma, el sistema puede sustituir eficazmente la comparacin P. PNO = "X4" por esta otra: P. PNO = PNO ("X4")

Pero en el caso de la comparacin de S. SNO = P. PNO, no hay operador de conversin conocido por el sistema (por lo menos, no hay que suponer) que convierta un nmero de proveedor a un nmero o al revs, por lo que el no hay paridad en un error de tipo: el de una comparacin son de diferentes tipos, y no hay manera de hacer que sea del mismo tipo. NOTA Conversin de tipos implcita a menudo se llama la coercin en la literatura. En el primer ejemplo, por lo tanto, "X4" la cadena de caracteres es forzado a tipo de SNO, en el segundo es obligado a escribir PNO. Voy a tener un poco ms que decir acerca de la coercin en SQL, en particular, en la seccin de "comprobacin de tipos y la coercin en SQL", ms adelante.

Para continuar con el ejemplo: Otro operador tenemos que definir cuando se define un tipo como SNO o PNO es lo que se llama, genricamente, un operador de THE_, que convierte efectivamente un valor dado SNO o PNO para la cadena de caracteres (o sea lo que sea) que se utiliza para representar a ella .* Supongamos que por el bien del ejemplo que los operadores THE_ por tipos y SNO

* Una vez ms esta observacin es vlida independientemente de si estamos en un contexto de SQL o de algn otro contexto, aunque (como con los selectores) "operadores THE_" en SQL no son tan claras como podran ser, y "operador THE_" como tal, no es un trmino de SQL. Tomo nota tambin de que un determinado tipo puede tener ms de un operador THE_ correspondiente, ver la discusin de tipo POINT en la seccin "Qu es un tipo?" Para un ejemplo de ese tipo. 32 Descargar CAPITULO en II WoweBook.Com

PNO se llaman THE_SC y THE_PC, respectivamente. Entonces, si realmente se quiere comparar S. SNO y PNO P. de la igualdad, el nico sentido que puede hacer de esta exigencia es que se quiere comprobar si las representaciones de cadena de caracteres son los mismos, que podemos hacer lo siguiente:

THE_SC

(S.

SNO)

THE_PC

(P.

PNO)

En otras palabras: Convertir el nmero de proveedores en una cadena, convertir el nmero en una cadena, y comparar las dos cadenas. Como estoy seguro de que usted puede ver, el mecanismo que he estado dibujando, con la participacin selectores y operadores THE_, efectivamente proporciona (a) el dominio de cotejo que queremos en primer lugar, y (b) una manera de anular la comprobacin de que, cuando se desee, en el segundo lugar. Por otra parte, todo esto lo hace en un lugar limpio, totalmente ortogonales, de manera no ad hoc. Por el contrario, reemplace dominio comprobar en realidad no hace el trabajo, de hecho, no tiene ningn sentido en absoluto, porque confunde los tipos y las representaciones (como se seal anteriormente, los tipos son un concepto de modelo, representaciones son una implementacin concepto). Ahora, se habr dado cuenta que lo que estoy hablando es de aqu es lo que se conoce en el lenguaje crculos como inflexible. Diferentes autores han definiciones ligeramente diferentes para este trmino, pero bsicamente significa que (a) todo-en particular, todos los valores y cada variable detiene un tipo, y (b) cada vez que intenta realizar alguna operacin, el sistema de control que los operandos son del tipo adecuado para la operacin en cuestin (o, posiblemente, son convertibles en los tipos de la derecha). Observe tambin que este mecanismo funcione para todas las operaciones, no slo para las comparaciones de igualdad que hemos estado discutiendo: el nfasis en la igualdad y otras operaciones de comparacin en las discusiones de dominio de cotejo en la literatura es sancti-ficado por el uso histrico, pero en realidad es fuera de lugar . Por ejemplo, considere las siguientes expresiones: PESO PESO P. P. * + SP.QTY SP.QTY

El primero de ellos es probablemente vlida (que produce otro peso: es decir, el peso total del envo pertinente). El segundo, por el contrario, probablemente no es vlida (qu podra significar para aadir un peso y una cantidad?). Me gustara cerrar esta seccin haciendo hincapi en el papel absolutamente fundamental que desempea el operador de igualdad ("="). No fue slo un accidente que los debates anteriores pas a centrarse en la cuestin de la comparacin de dos valores para la igualdad. El hecho es que la igualdad es verdaderamente central, y el modelo relacional exige que sea compatible con todos los tipos. De hecho, ya que un tipo es bsicamente un conjunto de valores (vase la seccin "Qu es un tipo?"), Sin el "=" operario que ni siquiera poda decir lo que los valores constituyen el tipo en cuestin! Es decir, dado un tipo T y algunos v valor, no podra decir, en ausencia de ese operador, si v es uno de los valores en el conjunto de valores que constituyen el tipo T. Es ms, el modelo relacional tambin se especifica la semntica de la operador "=", de la siguiente manera: Si v1 y v2 son los valores del mismo tipo, entonces v1 v2 = TRUE si v1 y v2

TIPOS Descargar

Y en

DOMINIOS

33 WoweBook.Com

son el valor mismo y de lo contrario. (Por el contrario, si v1 y v2 son valores de diferentes tipos, entonces v1 = v2 no tiene ningn sentido-ni siquiera un marco jurdico de comparacin, a menos que v1 se puede forzar el tipo de v2 o al revs, en cuyo caso se aren 't realmente hablando de una comparacin entre v1 y v2, como tal, de todos modos.) Informacin del valor Atomicidad

Bueno, espero que la seccin anterior, logr convencer a usted que los dominios son en realidad tipos, nada ms y nada menos. Ahora quiero referirme a la cuestin de los datos de valor de la atomicidad y la idea conexa de la primera forma normal (1NF para abreviar). En el captulo 1, me dijo que 1NF significaba que cada tupla de cada relacin contiene un solo valor (del tipo apropiado) en todos los atributos de posicin y es habitual aadir que los "valores individuales" se supone que son atmicas. Sin embargo, este ltimo requisito plantea la pregunta: Qu significa que los datos se atmica? Pues bien, en la pgina 6 del libro mencionado anteriormente (El modelo relacional para bases de datos de gestin Versin 2), Codd define los datos atmicos como los datos que "no se puede descomponer en partes ms pequeas por el DBMS (con exclusin de ciertas funciones especiales)." Incluso si ignoramos que paren-hipottica exclusin, sin embargo, esta definicin es un poco desconcertante y / o no muy precisa. Por ejemplo, qu pasa con las cadenas de caracteres? Son cadenas de caracteres atmica? Bueno, todos los productos que s provee una variedad de operadores-como, SUBSTR (subcadena), "| |" (concatenar), y as sucesivamente-que se basan por definicin en el hecho de que las cadenas de caracteres, en general, se puede descomposicin que plantea la DBMS. As son las cadenas atmicas? Qu te parece? Aqu estn algunos otros ejemplos de valores que atomicidad es al menos discutible y, sin embargo, ciertamente le gustara ser capaz de incluir como valores de atributos en las tuplas de las relaciones: Los nmeros enteros, lo que podra ser considerado como descomponer en sus factores primos (s que esto no es el tipo de descomposicin se suelen considerar en este contexto, estoy tratando de mostrar que la nocin de descomposicin es abrirse a una variedad de las interpretaciones) Los nmeros de punto fijo, lo que podra ser considerado como puede descomponer en partes enteras y fraccionales Las fechas y horarios, lo que podra ser considerado como descomponer en ao / mes / da y la hora / minuto / segundo componente, respectivamente Y as sucesivamente.

Ahora me gustara pasar a lo que podramos considerar como un ejemplo ms sorprendente. 9

Consulte la Figura 2-1. R1 relacin en la que la figura es una versin reducida de la relacin de los envos de nuestro ejemplo y muestra que los proveedores de ciertos dispositivos de ciertas partes, y que contiene una tupla para cada legtimos SNO / PNO combinacin. Por el bien de el ejemplo, vamos a estar de acuerdo que el nmero de proveedor y los nmeros de parte son de hecho "atmica", entonces podemos presumiblemente de acuerdo en que R1, por lo menos, est en 1FN.

34 Descargar R1 SNO S2 S2 S3 S4 S4 S4 P2 P2 P2 P4 P5 FIGURA 2-1. Las

CAPITULO en R2

II WoweBook.Com R3 PNO

P1

relaciones

R1,

R2

R3

Ahora supongamos que reemplazar R1 por R2, lo que demuestra que algunos proveedores de suministro de ciertos grupos de partes (atributo PNO en R2 es lo que algunos autores le llaman con varios valores, y val-UES de ese atributo son grupos de nmeros de parte). Entonces la mayora de la gente seguramente dira que R2 no est en 1FN, de hecho, parece que un ejemplo de "grupos de repeticin", y grupos de repeticin son la nica cosa que casi todo el mundo est de acuerdo en 1NF se supone que prohbe (porque los grupos son, obviamente, no atmico verdad?). Bueno, vamos a estar de acuerdo por el bien del argumento de que R2 no est en 1FN. Pero supongamos que ahora reemplazan por R2 R3. Entonces me dicen que R3 est en 1NF! (No digo que est bien diseado, de hecho, probablemente no es-pero que no es el punto. Me preocupa aqu con lo que es legal, no con las preguntas de un buen diseo. El diseo de R3 es legal.) Por considerar : En primer lugar tenga en cuenta, que he cambiado el nombre del atributo PNO_SET, y he 10

demostrado los grupos de nmeros de piezas que son valores PNO_SET entre llaves, para enfatizar el hecho de que cada uno de estos grupos es de hecho un solo valor: un valor establecido, para sin duda, pero un conjunto sigue siendo, a un cierto nivel de abstraccin, un valor nico. En segundo lugar (y con independencia de lo que se podra pensar en mi primer argumento), el hecho es que un conjunto como {P2, P4, P5} es nada ms y nada menos descomponibles por el DBMS de una cadena de caracteres es. Al igual que las cadenas de caracteres, conjuntos tienen una estructura interna, como con cadenas de caracteres, sin embargo, es conveniente hacer caso omiso de esa estructura para ciertos propsitos. En otras palabras, si las cadenas de caracteres son compatibles con las exigencias de 1NF, es decir, si las cadenas de caracteres son atmicos, a continuacin, establece debe ser, tambin. El verdadero punto que quiero llegar es que la nocin de atomicidad no tiene ningn sentido absoluto, sino que slo depende de lo que queremos hacer con los datos. A veces queremos hacer frente a todo un conjunto de nmeros de pieza como una sola cosa, a veces nos quieren tratar con nmeros de parte individuales dentro de ese conjunto, pero entonces estamos descendiendo a un nivel ms bajo de detalle, o un menor nivel de abstraccin. La siguiente analoga puede ayudar. En la fsica (que despus de todo es que la terminologa de la atomicidad viene) la situacin es exactamente paralela: Algunas veces queremos pensar en tomos individuales como las cosas indivisibles, a veces queremos pensar acerca de las partculas subatmicas (es decir, los protones, neutrones y electrones) que van para formar los tomos. Es ms, los protones y los neutrones, por lo menos, no son realmente indivis-ble, o bien, que contienen una variedad de "subsubatomic" partculas llamadas quarks. Y as sucesivamente, posiblemente (?).

TIPOS Descargar

Y en

DOMINIOS

35 WoweBook.Com

Volvamos por un momento para R3 relacin. En la figura 1.2, que mostraron valores PNO_SET como juegos en general. Pero sera ms til en la prctica si lo fueran, ms especficamente, las relaciones (vea la Figura 2-2 opuesto, en el que he cambiado el nombre del atributo a PNO_REL). Por qu sera ms til? Debido a las relaciones, los conjuntos no general, es lo que el modelo relacional se trata .* Como consecuencia de ello, todo el poder del lgebra relacional se convierte inmediatamente disponibles para las relaciones en cuestin-que puede ser restringido, proyectada, se unieron, y as sucesivamente. Por el contrario, si tuviramos que utilizar juegos en general en vez de las relaciones, entonces tendramos necesidad de introducir nuevos operadores (conjunto de unin, interseccin de conjuntos, etc) para hacer frente a esos conjuntos ... Mucho mejor para obtener el mayor que se puede salir de los operadores que ya tenemos! PNO_REL atributo en la Figura 2-2 es un ejemplo de un atributo de la relacin valorada (RVA). 11

Por supuesto, el dominio subyacente es la relacin valorada demasiado (es decir, los valores que ha hecho de las relaciones son). Tendr ms que decir acerca de RVA en el captulo 7, y aqu permtanme sealar que SQL no los admite. (Ms precisamente, no es compatible con lo que sera su anlogo de RVA, las columnas con valores de tabla. Por extrao que parezca, sin embargo, s que las columnas de apoyo, cuyos valores son arreglos, y las columnas cuyos valores son filas, e incluso las columnas cuyos valores son "conjuntos mltiples de filas ", donde un conjunto mltiple, tambin conocido como una bolsa, es como un juego, salvo que por MITS duplicados columnas cuyos valores son conjuntos mltiples de filas por lo tanto se ven un poco como". columnas con valores de tabla ", sin embargo, que aren 't con valores de tabla las columnas, ya que los valores que contienen no puede ser operado por medio de operadores de mesa de SQL y por lo tanto no son regulares valores de la tabla de SQL, por definicin.) Ahora, he elegido deliberadamente el ejemplo anterior, por su valor de choque. Despus de todo, las relaciones con RVA se ven ms bien como relaciones con grupos de repeticin, y usted probablemente ha odo siempre que los grupos repetitivos son un no-no en el mundo relacional. Pero yo podra haber utilizado cualquier nmero de diferentes ejemplos de lo que quiero decir, yo podra haber mostrado los atributos (y por lo tanto dominios) que contena las matrices, o bolsas, o listas, o fotografas, o grabaciones de audio o de vdeo, o los rayos X, o las huellas dactilares o los documentos XML, o cualquier otro tipo de valor, "atmico" o "no atmica," es posible que el cuidado de pensar. Atributos, y por lo tanto dominios, pueden contener cualquier cosa (cualquier valor, es decir). Por cierto, en el prrafo anterior va un largo camino para explicar por qu un verdadero "objeto / relacional" del sistema no sera nada ms ni menos que un sistema que cierto relacional, es decir, un sistema que soporta el modelo relacional, con todo lo que este apoyo conlleva. Despus de todo, el objetivo de un "objeto / relacional" del sistema es, precisamente, que podemos tener valores de los atributos en las relaciones que son de una complejidad arbitraria. Quizs una mejor manera de decir esto es: un objeto apropiado / sistema relacional es un sistema relacional con el apoyo del tipo adecuado (incluyendo el soporte adecuado tipo definido por el usuario en particular), lo cual significa que es un sistema adecuado de relaciones, ni ms ni menos. Y lo que algunos se complacen en

* En caso de que usted se est preguntando, la diferencia es que establece, en general, pueden contener cualquier cosa, pero las relaciones contener tuplas. Tenga en cuenta, sin embargo, que una relacin sin duda se parece a un conjunto general de la medida en que tambin puede ser considerado como un valor nico. 36 Descargar CAPITULO en II WoweBook.Com

12

operador en la expresin (donde por "ultraperifricas" Quiero decir que el ejecutado pasado). Por ejemplo, el tipo de (A / b) + (x es el tipo declarado de que el operador "+", lo que

operador que es la expresin y) pasa a ser.

El hecho de que los parmetros en particular, son declarados de algunos toques tipo en un asunto que he mencionado, pero no han discutido adecuadamente hasta el momento: a saber, el hecho de que est asociado a cada tipo hay una serie de operadores para la operacin sobre los valores y las variables del tipo en cues-tin, que quiere decir que Op operador "asociado con" el tipo medio T, precisamente, que opera-ator Op tiene un parmetro de tipo T. declar * Por ejemplo, los enteros tienen los operadores aritmticos habituales; fechas y horarios especiales que los operadores aritmticos calendario, documentos XML tienen lo que se llama "XPath" los operadores, las relaciones tienen los operadores del lgebra relacional, y cada tipo tiene los operadores de asignacin (":=") y com-paracin de igualdad (" = "). Por lo tanto, cualquier sistema que proporciona el tipo adecuado de apoyo y "tipo adecuado apoyo", aqu sin duda incluye el permitir a los usuarios definir sus propios tipos-deben proporcionar una forma para que los usuarios definir sus propios operadores, tambin, porque los tipos de operadores, sin uso menos. Nota: Los operadores definidos por el usuario se puede definir en relacin con los tipos de sistemas definidos, as como los definidos por el usuario, como era de esperar. Observe ahora que, por definicin, los valores y las variables de un tipo determinado puede ser operado slo por medio de los operadores asociados a ese tipo. Por ejemplo, en el caso del entero sistema de tipos definidos: El sistema proporciona un operador de asignacin ": =" para asignar valores a las variables de nmero entero entero. Tambin ofrece a los operadores de comparacin "=", "", "<", y as sucesivamente, para la comparacin de valores enteros.

36 CAPITULO II Descargar en WoweBook.Com

operador en la expresin (donde por "ultraperifricas" Quiero decir que el operador que es ejecutado pasado). Por ejemplo, el tipo de la expresin (A / b) + (x - y) es el tipo declarado de que el operador "+", lo que pasa a ser. El hecho de que los parmetros en particular, son declarados de algunos toques tipo en un asunto 13

que he mencionado, pero no han discutido adecuadamente hasta el momento: a saber, el hecho de que est asociado a cada tipo hay una serie de operadores para la operacin sobre los valores y las variables del tipo en cues-tin, que quiere decir que Op operador "asociado con" el tipo medio T, precisamente, que opera-ator Op tiene un parmetro de tipo T. declar * Por ejemplo, los enteros tienen los operadores aritmticos habituales; fechas y horarios especiales que los operadores aritmticos calendario, documentos XML tienen lo que se llama "XPath" los operadores, las relaciones tienen los operadores del lgebra relacional, y cada tipo tiene los operadores de asignacin (":=") y com-paracin de igualdad (" = "). Por lo tanto, cualquier sistema que proporciona el tipo adecuado de apoyo y "tipo adecuado apoyo", aqu sin duda incluye el permitir a los usuarios definir sus propios tipos-deben proporcionar una forma para que los usuarios definir sus propios operadores, tambin, porque los tipos de operadores, sin uso menos. Nota: Los operadores definidos por el usuario se puede definir en relacin con los tipos de sistemas definidos, as como los definidos por el usuario, como era de esperar. Observe ahora que, por definicin, los valores y las variables de un tipo determinado puede ser operado slo por medio de los operadores asociados a ese tipo. Por ejemplo, en el caso del entero sistema de tipos definidos: El sistema proporciona un operador de asignacin ": =" para asignar valores a las variables de nmero entero entero. Tambin ofrece a los operadores de comparacin "=", "", "<", y as sucesivamente, para la comparacin de valores enteros. Tambin ofrece a los operadores aritmticos "+", "*", y as sucesivamente, para realizar operaciones aritmticas en valores enteros. No proporcionar a los operadores cadena "| |" (concatenar), SUBSTR (subcadena), y as sucesivamente, para llevar a cabo las operaciones de cadena en valores enteros, es decir, las operaciones de cadena en valores enteros no son compatibles. Por el contrario, en el caso de que el usuario tipo definido por el SNO, sin duda nos define asignar ambiente y los operadores de comparacin (":=","="," ", posiblemente" <", y as sucesivamente), sin embargo, que probable-mente no se definen los operadores "+", "*", y as sucesivamente, lo que significara que la aritmtica en

* La diferencia lgica entre el tipo y la representacin es importante aqu. Para deletrear el asunto a cabo, los operadores asociados con el tipo T son los operadores relacionados con el tipo T, y no los operadores asociados con la representacin de tipo T. Por ejemplo, el hecho de la representacin para el tipo de SNO pasa a ser CHAR, no seguir que podemos concatenar dos nmeros de proveedor; podemos hacerlo slo si la concatenacin ("||") es un operador que est definido para el tipo de SNO. (De hecho, mencion precisamente este ejemplo, de paso, en la seccin de "las comparaciones de igualdad", como se puede recordar.)

14

38 CAPITULO II Descargar en WoweBook.Com

invocaciones rendimiento de las coordenadas X e Y del punto que corresponde al argumento de parmetro P, y la negacin de esas coordenadas nos lleva al resultado deseado .* Lnea 3 marca el final de la definicin. Ahora, las discusiones en esta seccin a este punto se han enmarcado en trminos de tipos definidos por el usuario, en su mayor parte. Pero consideraciones similares se aplican a los tipos de sistema definido tambin, excepto que en este caso, las distintas definiciones son proporcionados por el sistema en lugar de por un usuario. Por ejemplo, si INTEGER es un tipo definido por el sistema, entonces es el sistema que define el nombre, especifica enteros legal, define la representacin oculto, y-como ya hemos visto-define los operadores correspondientes ":=", "=" , "+", y as sucesivamente (aunque los usuarios pueden definir nuevos operadores tambin, por supuesto). Hay un ltimo punto que quiero hacer. He mencionado los operadores de seleccin varias veces, lo que no he mencionado, sin embargo, es que los selectores, ms precisamente, selector de invocacin-ciones son en realidad una generalizacin del concepto ms familiar de un literal. Qu quiero decir con este comentario es que todos los literales son las invocaciones de seleccin, aunque no todos selector de invocacin-ciones son literales (de hecho, la invocacin de un selector es un literal si y slo si sus argumentos son todos los mismos se especifica como literales, a su vez), para ejemplo, el punto (X, Y) y el punto (1.0,2.5) son dos invocaciones del selector de punto, pero el segundo es un punto literal. De ello se desprende que cada tipo debe tener, no slo un selector de asociados, sino tambin un formato asociado para la escritura de literales. (Y tal vez debera aadir a la integridad que todos los valores de cada tipo debe ser denotable por medio de algn literal.) Escalar frente a los tipos no escalares Es habitual pensar en tipos como sea escalar o no escalar. Libremente, es un tipo escalar si no tiene los componentes visibles para el usuario y no escalar de otra manera-y los valores, variables, atributos, operadores, los parmetros y las expresiones de algunos tipo T son escalar o no escalar de acuerdo como tipo T en s es escalar o no escalar. Por ejemplo: El tipo INTEGER es un tipo escalar, por lo que los valores, variables, y as sucesivamente de tipo INTEGER son tambin todos los escalares, lo que significa que no tienen componentes visibles para el usuario. Tipos de tupla y relacin son escalares, el usuario pertinente componentes visibles que los atributos y los valores correspondientes por lo tanto, tupla y la relacin, variables, y as sucesivamente son todos los escalares.

15

Dicho esto, debo destacar que estas nociones son bastante informales. De hecho, ya hemos visto que el concepto de valor de los datos atomicidad no tiene ningn sentido absoluto, y "sca-larness" es el mismo concepto con otro nombre. Por lo tanto, el modelo relacional sin duda no se basa en la distincin escalar frente a no escalar en ningn sentido formal. En este libro,

* Este apartado afecta a otra importante diferencia lgica, dicho sea de paso: es decir, que entre los argumentos y los parmetros (ver 5.2 El ejercicio al final del captulo). Tenga en cuenta tambin que el selector de PUNTO, a diferencia de los selectores se seal anteriormente, tiene dos argumentos (ya que los puntos se representan por pares de valores, no slo por un nico valor). 40 CAPITULO II Descargar en WoweBook.Com

Los literales de formato ms o menos convencionales son compatibles con todos estos tipos. Nota: Por razones que no es necesario entrar en aqu, los selectores ms generales que no son necesarios para estos tipos, como tampoco lo son los operadores THE_. Un operador de asignacin explcito es compatible con todos estos tipos. La sintaxis es: JUEGO <scalar variables ref> = <scalar exp>; Asignaciones escalares tambin se realizan implcitamente cuando varias otras operaciones (por ejemplo, FETCH) se ejecutan. Nota: A lo largo de este libro en las definiciones de sintaxis formal como el que acabamos de ver, yo uso ref y exp como abreviaturas de referencia y de expresin, respectivamente. Un operador de igualdad comparacin explcita tambin es compatible con todos estos tipos .* Igual-dad comparaciones tambin se realizan implcitamente cuando numerosas otras operaciones (por ejemplo, uniones y sindicatos, as como la agrupacin y duplicar las operaciones de eliminacin) se ejecutan. En cuanto a tipo Boolean, en particular, debo aadir que a pesar de que est incluido en el estndar SQL, que es apoyado por unos pocos, si alguno de los principales productos de SQL. Por supuesto, las expresiones booleanas siempre pueden aparecer en donde, en, y HAVING, incluso si el sistema no es compatible con tipo booleano como tal. En tal sistema, sin embargo, no hay ninguna tabla puede tener una columna de tipo Boolean, y no hay ninguna variable puede ser declarada de tipo boolean. Como consecuencia, soluciones alternativas a veces pueden ser necesarios. Varios tipos de sistemas ms definidos son tambin soportados, incluyendo "objetos grandes de caracteres" (CLOB), "objetos binarios grandes" (BLOB), "cadenas de caracteres nacionales" (NCHAR, etc), y otros (incluyendo un tipo de XML, en particular, ). Los detalles de este tipo estn fuera del alcance de este libro. 16

Por ltimo, adems de los tipos escalares anteriores, SQL tambin es compatible con algo que llama dominios, sino dominios SQL no son en todos los tipos, sino que es slo una especie de factor fuera "definicin de la columna comn", con una serie de propiedades bastante extrao que, de nuevo, ms all del alcance de este libro. Usted puede utilizar si se quiere, pero no cometa el error de pensar que son verdad dominios relacionales (es decir, los tipos). Tipo de Control y coercin en SQL SQL slo admite una forma dbil de tipos fuertes (si no ve lo que quiero decir). Para ser ms especficos: Los valores booleanos se pueden asignar slo a variables booleanas y comparar con Los valores booleanos.

* Desafortunadamente, ese apoyo est muy viciado, sin embargo. Por ejemplo, en el caso de los tipos CHAR y VARCHAR, es posible que el "=" para dar cierto incluso cuando los trminos de la comparacin son claramente distintas (vase la seccin "colaciones en SQL"). Y tambin es posible para todos los tipos, no slo CHAR CHAR y VAR-tipo-de "=" no dar cierto incluso cuando los trminos de la comparacin no se distinguen, en particular, esto ocurre cuando (pero no slo cuando) la trminos de la comparacin son nulos. TIPOS Y DOMINIOS 43 Descargar en WoweBook.Com Los valores de cadena de caracteres slo se pueden asignar a las variables de cadena de caracteres y slo en comparacin con los valores de cadena de caracteres (donde "cadena de caracteres" significa CHAR o VARCHAR). Los valores numricos slo se puede asignar a las variables numricas y comparar con los valores numricos (donde "numrico" se refiere a float, numeric, DECIMAL, INTEGER, SMALLINT o). Fechas, horarios, marcas de tiempo, e intervalos tambin estn sujetos a ciertas reglas de comprobacin de tipos, pero los detalles estn ms all del alcance de este libro. As, por ejemplo, un intento de comparar un nmero y una cadena de caracteres es ilegal. Sin embargo, un intento de comparar dos nmeros es legal, incluso si esos nmeros son de diferentes tipos-por ejemplo INTEGER y FLOAT, respectivamente (en este ejemplo, el valor entero ser obligado a tipo float antes de la comparacin se hace). Lo que me lleva a la cues-tin de la conversin de tipos. . . Es un principio ampliamente aceptado en la informtica en general, que coer-CIONS es mejor evitar, porque son propensos a errores. En SQL, en particular, una consecuencia extraa de coacciones que permite es que algunos sindicatos, las intersecciones, y las 17

diferencias pueden dar un resultado con las filas que no aparecen en alguno de los operandos! Por ejemplo, considere el SQL T1 y T2, las tablas se muestra en la Figura 3.2. Supongamos que la columna X es de tipo INTEGER en la tabla T1, pero NUMRICOS (5,1) en la tabla T2, y la columna Y es de tipo numrico (5,1) en la tabla T1, pero INTEGER en la tabla T2. Consideremos ahora la consulta SQL: SELECCIONAR X, Y DE LA T1 UNIN SELECCIONAR X, Y DE LA T2 Como sugiere la Figura 2-3, X e Y las columnas en el resultado de esta consulta (ver la tabla de la derecha en la figura) son de tipo numrico (5,1), y todos los valores de esas columnas se obtienen, en efecto, por coaccionar a un valor INTEGER de tipo numrico (5,1). Por lo tanto, el resultado se compone exclusivamente de las filas que aparecen en ninguno de los T1 T2 ni!-Un tipo muy extrao de la unin, puede ser perdonado por pensar .* T1 T2

FIGURA 2-3. Una muy extraa "unin"

* En relacin con este ejemplo, un revisor sugiri que la "extraeza" de que el sindicato no podra ser importante en la prctica, ya que por lo menos no hay informacin se ha perdido en el resultado. Bueno, que observa-cin podra ser vlida, en este ejemplo particular. Pero si quiere SQL para definir a un operador que mani-festly no se comporta como el operador de unin del modelo relacional, entonces me parece que, en primer lugar, no ayuda a la causa del entendimiento para llamar a ese operador "unin" , en segundo lugar (y ms importante), no corresponde a m demostrar que esa "unin" a veces puede causar problemas-ms bien, es que incumben a los diseadores de SQL para demostrar que no se puede. 44 CAPITULO II Descargar en WoweBook.Com

A colacin, tambin conocida como la secuencia de clasificacin-es una regla que est asociada con un conjunto de caracteres especficos y regula la comparacin de cadenas de caracteres a partir de 18

ese juego de caracteres. Sea C una colacin para el conjunto de caracteres S, y que A y B son los dos personajes de S. Entonces C debe ser tal que exactamente una de las comparaciones a <b, a = b, y a> b se evala como TRUE y el otros dos a FALSE (apartado C). Esto en cuanto a la idea bsica. A continuacin, las dos cadenas son claramente distintas, y sin embargo, son con-sidered que "son iguales" si el espacio PAD se aplica. R Esto en cuanto a la idea bsica. Sin embargo, hay complicaciones. Uno surge del hecho de que cualquier cotejo dado puede tener ni en el espacio o PAD PAD NO definido. Supongamos que las cadenas de caracteres "AB" y "AB" (ntese el espacio al final de la segunda de estas) tienen el mismo carcter de asociados y la misma intercalacin. A continuacin, las dos cadenas son claramente distintas, y sin embargo, son considerados "son iguales" si el espacio PAD se aplica. Recomendacin: No utilizar EAP-ESPACIO NO utilice siempre PAD en cambio, si es posible. (Ntese, sin embargo, que la eleccin entre el espacio y PAD PAD NO afecta slo a comparaciones-no hace ninguna diferencia a las asignaciones.) Otra complicacin surge del hecho de que la comparacin a = b podra devolver TRUE, en un cotejo dado, incluso si los personajes A y B son distintos. Por ejemplo, podemos definir una compilacin llamada case_insensitive en el que cada letra minscula es con-sidered comparar igual a su contraparte en maysculas. Como consecuencia de ello, una vez ms, las cadenas que son claramente distintas a veces son iguales. Vemos, por tanto, que ciertas comparaciones de la forma v1 = v2 puede dar TRUE en SQL, incluso si v1 y v2 son distintos (y, posiblemente, incluso si son de diferentes tipos). Voy a usar el trmino "igual pero distinguible" para referirse a estos pares de valores. Ahora, las comparaciones de igualdad se llevan a cabo, a menudo de forma implcita, en numerosos contextos (los ejemplos incluyen PARTIDO, COMO NICO, UNION y JOIN), y el tipo de igualdad que participan en todos estos casos es de hecho "igual, aunque distinguibles." Por ejemplo, dejar de colacin case_insensitive ser tal como se define arriba, y ESPACIO PAD se aplican a ese cotejo. Entonces, si las columnas de las tablas de PNO P y SP que tanto el uso de cotejo, y si 'P2' y 'P2' son valores PNO, respectivamente, en alguna fila de P y algunas filas de SP, las dos filas se considera que se ajustan la restriccin para extranjeros-clave de SP a P, a pesar de la minscula 'p' y espacio al final en el valor de clave externa. Es ms, la hora de evaluar expresiones con operadores como UNION, el INTER-secta, EXCEPTO, JOIN, GROUP BY y DISTINCT, el sistema a veces tiene que decidir cul de los diferentes valores de igualdad, pero distingue es ser elegido para algunas columnas en algunas filas del resultado . Por desgracia, el propio SQL no da una gua completa en tales situaciones. Como consecuencia de ello, ciertas expresiones de la tabla son indeterminados-el trmino SQL es, posiblemente, no determinista en el sentido de que SQL no especificar completamente la forma en que deben ser evaluadas y, de hecho, que muy legtimamente puede dar resultados diferentes en diferentes ocasiones. Por ejemplo, si se aplica a colacin case_insensitive columna de Z en la tabla T, luego SELECT MAX (Z) de T podra volver 'ZZZ' en una ocasin y 'zzz' en otro, incluso si T no ha cambiado en el nterin.

19

46 CAPITULO II Descargar en WoweBook.Com No voy a dar reglas de SQL est aqu para cuando una expresin dada es "posiblemente no determinista" (lo har en el captulo 12). Es importante notar, sin embargo, que tales expresiones no estn permitidos en las restricciones de integridad (vase el captulo 8), ya que podra causar cambios tengan xito o no de forma impredecible. En particular, sealan, por lo tanto, que esta norma implica, entre otras cosas, la mesa muchas expresiones, incluso expresiones SELECT simple, a veces-no se permiten en las restricciones si se tratare de una columna de algn tipo de cadena de caracteres! Fuerte recomendacin: Evite las expresiones posiblemente no determinista, como todo lo que pueda. Fila y Tabla de tipos de SQL Aqu repite en la seccin de "escalar Comparacin de tipos no escalares" es un ejemplo de una tupla variable de definicin: VAR S_TUPLE TUPLE {ESTADO INTEGER, CHAR SNO, CIUDAD CHAR, SNAME CHAR}; La tupla expresin {...} es, como usted recordar, una invocacin del tipo TUPLE gene-ator. SQL tiene un generador de ROW tipo correspondiente (cuando se refiere a l como un tipo de construccin-tor). He aqu una analoga SQL Tutorial de la anterior ejemplo D: DECLARE S_ROW / * variable de fila de SQL * / ROW (SNO VARCHAR (5), SNAME VARCHAR (25), INTEGER ESTADO, CIUDAD VARCHAR (20)); A diferencia de las tuplas, sin embargo, las filas de SQL tienen un orden de izquierda a derecha a sus componentes; * en el caso que nos ocupa, en realidad hay 24 (= 4 * 3 * 2 * 1) todos los diferentes tipos fila que consta de los mismos cuatro componentes ( !). SQL tambin permite asignar fila. Aqu est un anlogo de la asignacin de tuplas Tutorial anterior D: JUEGO S_ROW = (S DONDE SNO = 'S1'); NOTA La expresin en el lado derecho que aqu hay una fila subconsulta, es decir, es una expresin de tabla, sintcticamente hablando, pero es uno que est actuando como una expresin de la fila (vea la seccin anterior "la comprobacin de tipos y la coercin en SQL").

20

Asignaciones fila tambin estn involucrados, en efecto, en sentencias SQL de actualizacin (ver captulo 3). En cuanto a las tablas: Es interesante que SQL no tiene realmente un generador de tipo tabla (o coninstructor) en absoluto!-es decir, no tiene nada directamente anloga a la del generador tipo de relacin se describe en este captulo. Sin embargo, tiene un mecanismo, CREATE TABLE, para

* Por extrao que parezca, SQL se refiere a los componentes de los tipos de lnea producida por la invocacin explcita de la Del constructor de tipo (y de los componentes de las filas de estos tipos), no en forma de columnas, pero como los campos. TIPOS Y DOMINIOS 47 Descargar en WoweBook.Com la definicin de lo que por derecho deben ser llamados variables de tabla. Por ejemplo, recordar la definicin de la seccin de "escalar Comparacin de tipos no escalares": BASE VAR S RELACIN {SNO CHAR, CHAR SNAME, INTEGER ESTADO, CIUDAD CHAR} {CLAVE SNO}; He aqu una analoga SQL: CREATE TABLE S (SNO VARCHAR (5) NOT NULL, SNAME VARCHAR (25) NOT NULL, INTEGER NOT NULL ESTADO, CIUDAD VARCHAR (20) NOT NULL, UNIQUE (SNO)); Observe con cuidado, sin embargo, que no hay nada, ninguna secuencia de lingstica fichas en este ejemplo, que lgicamente pueden ser etiquetados como "una invocacin del constructor de tipo de tabla." (Este hecho podra ser ms evidente cuando uno se da cuenta que la especificacin UNIQUE (SNO) no tiene que venir en pos de las definiciones de columna, pero puede aparecer en cualquier parte-por ejemplo, entre las definiciones de columnas y SNAME SNO). De hecho, en la medida en que la variable S puede ser considerado (en SQL) como con cualquier tipo de todo, ese tipo no es ms que una bolsa de filas, donde las filas en cuestin son de tipo ROW (SNO VARCHAR (5), SNAME VARCHAR (25), INTEGER ESTADO, CIUDAD VARCHAR (20)). Dicho esto, debo decir tambin que SQL hace algo de apoyo que se llama "tablas escritas". El trmino no es muy apropiado, sin embargo, porque si TT es una "tabla con tipo" que se ha definido como "de tipo T, "entonces TT no es de tipo T, y tampoco lo son sus filas! Ms importante, creo que usted debe evitar tales tablas de todos modos, porque estn ntimamente relacionados con el apoyo de SQL para los punteros, punteros y estn prohibidos en el modelo relacional .* De hecho, si alguna tabla tiene una columna cuyos valores son los punteros a las filas de otra tabla, luego de 21

que la tabla no puede representar una relacin en el sentido de modelo relacional. Como lo he indicado, sin embargo, estas tablas son, lamentablemente permitida en SQL, los punteros son llamados valores de referencia, y las columnas que las contienen se dice que son de algn tipo REF. Francamente, no est claro por qu estas caractersticas se incluyen en SQL en absoluto, ciertamente no parece haber ninguna funcionalidad til que se puede lograr con ellos que no pueden igualmente bien, de hecho, mejor puede lograr sin ellos. Fuerte recomenda-cin: no usarlas, ni cualquiera de las funciones relacionadas con ellos.

22

Вам также может понравиться