Descargar

Seguridad de las bases de datos (página 3)

Enviado por mari_88_990


Partes: 1, 2, 3

"CAMBIO DE TAMAÑO DE LA BASE DE DATOS"

Para realizar esta función puede utilizar la instrucción ALTER DATABASE o el administrador ciroiratuvo de SWL Server. Para hacer más chica una base de datos debe usar los comandos DBCC SHRINKDATABASE o DBCC SHRINKFFILE. Para añadir grupos de archivos a la base de datos puede usar la instrucción ALTER FDATABASE.

Esta es la sintaxis para la instrucción ALTET DATABASE:

ALTER DATABASE nombre_baseDatos

{

ADD FILE <especificación_archivo> [,..n] [TO FILEGROUP nombre_gruposArchivos]

ADD LOG FILE <especificación_archivo> [,…n]

REMOVE FILE nombre_logico

ADD FILEGROUP nombre_gruposArchivo

MODIFY FILE <especificación_Archivo>

MODIFY FILEGROUP nombre_gruposArchivos,propiedad_gruposArchivos

}

<especificación_archivo>

(NAME =´nombre_fisico´

[,SIZE=tamaño]

[,MAXSIZE=tamaño_maximo UNLIMITED]

[,FILEGROWTH=incremento_crecim]

"EXPANSION DE LA BASE DE DATOS"

Puede expandir las bases de datos añadiendo archivos adicionales para crecimiento. Pude añadir archivos a la porción de datos del registro de la base de datos. Amenos que específicamente se hayan desactivado las características de crecimiento automático de la base de datos crecerán automáticamente hasta que se acabe el espacio del disco.

ENTRADA Adición de un nuevo archivo a la base de datos.

ALTER DATABASE croak

ADD FILE

(NAME=croakdata",

FILENAME= ´C:MSSQL7DATSACroakdata2.nsf´,

SIZE=2,

MAXSIZE=10,

FILEGROETH=2)

ENTRADA/SALIDA

Extender el archive del registro de la base de datos.

ALKTER DATABASE croak

ADD LOG FILE

(NAME=Croaklog2.ndf´,

SIZE =2,

MASIZE=10,

FILEGROWTH=2)

REDUCCION DE LA BASE DE DATOS

Para reducir una base de datos completa puede usar el comando DBCC SHKRINKDATABASE.

Esta es la sintaxis:

DBCC SHKRINKDATABASE

{

(nombre_baseDatos

[,target_porcentaje]

[,{NOTRUNCATE TRUNCATENLY}]

}

Esencialmente la instrucción SHKRINKDATABASE trata de reducir todos los archivos de datos de todos los archivos de datos de la vase de datos usando la instrucción DBCCSHRINFILE

Esta es la sintaxis para la instrucción DBCC SHRINKFILE:

DBCC SHRINKFILE

{

(nombre_Archivo clave_archivo}

[,tamaño]

[,{EMPTYFILE NOTRUNCATE TRUNCATETEONLY}])

}

"CAMBIO DE NOMBRE DE UNA BASE DE DATOS"

Para cambiar el nombre de una base de datos debe ejecutar el procedimiento almacenado de sistema sp_renamedb.

Restricciones cuando cambie el nombre a una base de datos:

  • Debe de ser miembro de la función fija de servidor y sysadmyn para cambiar nombre a una base de datos.
  • Alguna secuencia de comandos de SQL pueden perder del nombre de la base de datos para ejecutar correctamente. Habrá que revisarlos en la base de datos.
  • La base de datos debe estar en modo de un solo usuario.
  • Los archivos y grupos de archivos de la base de datos no son afectados por un cambio de nombre.
  • Debe estar en la base de datos maestra para ejecutar el procedimiento almacenando de sistemas sp_renamedb.

"COMO ELIMINAR UNA BASE DE DATOS"

En cualquier caso eliminar una base de datos de SQL Server es una tarea realmente difícil. Como tal vez ya haya adivinado, puede hacerlo desde el administrador corporativo de SQL Server o por medio del Transact_SQL.

Antes de que elimine, una base de datos hay unas cuantas cosas que debe recordar:

  • La eliminación de una base de datos elimina toda la información de la base de datos de las tablas del sistema y de los archivos de datos del sistema.
  • Una base de datos elimina solo puede se restaurada desde eliminarla.
  • Debe ser miembro de la funcion de base de datos db_owner para eliminar la base de datos.

"RECUPERACION AUTOMATICA"

Si un disco deja de funcionar o un archivo de base de datos se corrompe, necesitar restaurar cualquier base de datos que pueda ser afectada por la perdida de los archivos.

Otra razón para restaurar una copia de seguridad de base de datos es restituir una base de datos a punto de consistencia lógica en el tiempo.

La recuperación automática es el proceso que realiza SQL cada vez que ejecuta el servicio MSSQLserver. No se le puede desactivar y no necesita hacer nada especial para que suceda.

Cada vez que SQL server reinicia, ejecuta un conjunto de pasos que vuelven a aplicar cualquier transacción conformada que se encuentre en el registro de transacción.

El proceso de recuperación automática garantiza que sin importar como ni porque se detuvo SQL Server, comenzara en un estado lógicamente consistente.

La recuperación automática procesa cada base de datos en un orden particular.

O que hace localizando primero el archivo de la base de datos maestra buscando su ubicación en el registro de Windows NT.

Después de que SQL Server localiza los archivos de la base de datos maestra, carga y recupera esa base de datos. Debe cargar y recuperar y restaurar primero la base de datos maestra debido a que contiene las frecuencias hacia el archivo de datos primario.

Antes de que SQL pueda recuperar cualquier otra base de datos, debe recuperar la base de datos modelo. Debe recuperar la base de datos modelo por que el siguiente paso será crear la base de datos tempdb.

Luego se restaura la base de datos msdb, seguida por la base de datos de distribución, en caso de que exista, las bases de datos pubs y Nortwind y, por ultimo cualquier base de datos de usuario.

"CONFIGURACION DE LA RECUPERACION AUTOMATICA"

Lo mas importante que se puede hacer para establecer la recuperacion automatica es codificar la opcion Recovery Interval. Esta opción especifica la máxima cantidad de tiempo que esperara SQL Server para realizar una recuperación automática de una base de datos.

Para configurar el intervalo de recuperación necesita el procedimiento almacenado del sistema sp_configure.

Por ejemplo:

Para cambiar el intervalo de recuperación a tres minutos debe ejecutar el siguiente código transact_SQL:

Exec sp_configure ´recovery interval’,3

Go

Reconfigure with Override

Go

"RECUPERACION MANUAL"

Este proceso de recuperación de una base de datos.

"ELIMINACION DE TABLAS"

Puede facilitar tablas en el administrador corporativo de SQL Server mediante un clic derecho en la tabla y seleccionando eliminar en el menú contextual.

Para eliminar una tabla utilizando Transact_SQL, ejecute la instrucción DROP TABLE.

Por ejemplo para eliminar la tabla tblempleados:

DROP TABLE tblemployees

Para eliminar una tabla por medio del administrador corporativo de SQL Server siga los siguientes pasos:

  • Llegue hasta la carpeta tablas, haga un clic derecho en la tabla que desee eliminar y seleccione eliminar.
  • Obtendrá un cuadro de dialogo.
  • Si desea ver cualquier dependencia de esta tabla, haga clic en el botón Dependencias.

"MODIFICACION DE ENCABEZADOS DE COLUMNAS"

Los encabezados de las columnas serán los nombres utilizados en listas _ columnas.

En vez de usar los encabezados de columnas, como lmane y fname, puede producir otro encabezados de columnas.

En SQL Server puede hacer alias de las columnas de dos maneras:

SELECT encabea¡zado_columna=nombre_columna

FROM nombre_tabla O bien;

SELECT nombre_columna ASencabezado_columna FROM nombre_tabla.

"DESCOMPOSICIÓN Y NORMALIZACIÓN"

Siempre que un analista de sistemas de base de datos arma una base de datos, queda a su cargo descomponer dicha base en grupos y segmentos de registros. Este proceso es la descomposición; el mismo es necesario independientemente de la arquitectura de la base de datos – relacional, red o jerárquica-. Sin embargo, para la base de datos relacional, la acción correspondiente puede dividirse y expresarse en términos formales y se denomina normalización a la misma. La

normalización convierte una relación en varias sub-relaciones, cada una de las cuales obedece a reglas. Estas reglas se describen en términos de dependencia. Una vez que hayamos examinado las distintas formas de dependencia, encontraremos procedimientos a aplicar a las relaciones de modo tal que las mismas puedan descomponerse de acuerdo a la dependencia que prevalece. Esto no llevará indefectiblemente a formar varias subrelaciones a partir de la única relación preexistente.

Dependencia

Significado ; Antes de entrar en el tópico principal de dependencia, vamos a rever algunos conceptos acerca de los individuos y acerca de las tuplas que los describen en la base de datos relacional (BDR). Restringiremos la discusión a la BDR, si bien la misma se aplica igualmente a las otras arquitecturas.

Los individuos tienen muchos atributos que pueden ser de interés a diferentes personas en diferentes momentos. Nuestro problema actual es con una sola aplicación o conjunto de aplicaciones: solemne son de interés algunos de los atributos. Los símbolos aplicables a la relación han sido introducidos previamente.

• R es una tupla general o vector que describe a un individuo;

• R es una relación, una matriz o un conjunto de vectores que pertenecen la población de interés.

• U es el universo consistente en todas las posibles descripciones individuales, obtenido mediante una combinación exhaustiva de los valores a atributos.

La tupla general toma la siguiente forma

R = (a, b, c, …., n) La pertenencia con respecto a relaciones, tuplas y universos se indica mediante. Con respecto a los atributos:

• A es el símbolo del nombre de un atributo

• a es el símbolo de un valor del atributo.

Dominio (A) es el dominio para el atributo cuyo nombre es A.

Campo de aplicación. Estamos interesados en relaciones dependientes entre atributos de los individuos en una o varias poblaciones. Consideramos a los atributos D, E, y F. La dependencia es una relación funcional tal que los

valores de una (o más de una) de las variables determina y fija el valor de las otras

variables en la relación dependiente. Consideramos el caso en el que E y F dependen de D. Esto se describe más brevemente en forma simbólica:

e = e (d) f = f(d)

Existen tres tipos distintos de dependencia.

Total uno-uno-sinónimo

Completa – subtupla

Transitiva – múltiple.

La dependencia es una relación funcional que penetra en el universo de posibilidades. La dependencia no puede deducirse solamente de los datos de nuestra, ya que éstos son necesariamente incompletos, sino que debe ser inherente al comportamiento del

sistema. Por ejemplo, si los datos revelan que cada uno de nuestros proveedores tiene exactamente una planta y que todas estas plantas están en diferentes ciudades, podemos asumir una dependencia total entre proveedor, planta y ciudad. Es decir, dada una ciudad, la misma está asociada con un proveedor; y dado este proveedor estará asociado con una ciudad. En la práctica, solamente cuando un nuevo proveedor se incorpore con una planta en la misma ciudad que uno de nuestro antiguos proveedores, resultará claro que no existe dicha dependencia total, Esto no podría ser deducido a partir de los datos previos.

Dependencia Total: Consideremos los atributos x e y. Cada valor de x tiene uno y solo un valor de y asociados a el; e inversamente, dado un valor de y existe solamente un valor de x asociado a éste. Se trata de una función unitaria de una variable tanto en sentido directo como inverso y por o tanto se denomina dependencia total. Otra forma de expresar lo mismo es decir que x e y son sinónimos; ambas expresiones son equivalentes. Ejemplo con clave

Si una de las variables es al mismo tiempo la clave, como consecuencia todo valor de ambas variables es único en cualquier tupla de la relación. Por ejemplo, consideremos un archivo de personal donde cada uno de los empleados es identificado de tres maneras.

• Su nombre

• Su número de seguridad social

• Su número de empleado

Los tres pueden representar una dependencia total. Tanto el número de seguridad social como el número de empleado identifican al individuo en forma única. El número de seguridad social atañe a la

población completa de trabajadores de los Estados Unidos. El número de empleado se aplica solamente al personal de una empresa en particular. El nombre puede no ser totalmente único y la dependencia total existe solamente cuando cada empleado tiene un nombre único. Si el número de empleado es al clave de la relación, el número de seguridad social es sinónimo de aquel. Podemos en consecuencia decir que el número de seguridad social, el campo no clave, es totalmente dependiente de la clave, y es una clave candidata. Si los nombres de todos nuestros empleados son únicos, también pueden, ser claves candidatas. Sin embargo puede existir alguna duplicación, dos personas llamadas John Smith, por ejemplo. Dado que esta es una posibilidad, no puede establecerse una dependencia total con respecto total con respecto al nombre. Puede incorporarse a la firma un nuevo empleado y este puede tener el mismo nombre que uno de nuestros empleados actuales. Ejemplo con estado Consideremos una relación que contiene información sobre estado en dos formas :

• Una identificación de estado con dos letras, tal como CA para California.

• Una designación con un número de dos dígitos tal como 12 para

California.

Estas dos formas de información sobre estado ilustran una dependencia total. Debe notarse sin embargo que muchas tuplas pueden contener la misma identificación de Estado, dado que muchos de nuestros clientes pueden provenir de California. En consecuencia resulta claro que la dependencia total no significa unicidad. Dependencia Completa El concepto de dependencia completa se aplica solamente cuando:

• Tenemos más de dos variables, y

• Una variable dependiente depende de dos o más variables independientes.

Consideramos una relación que abarca las variables P, Q y R. Supongamos que P es la variable dependiente. Si el valor de P está determinado por una función de Q y R combinados, se trata de una dependencia completa. Esto es, el valor de P no depende únicamente ni de Q ni de R. Vamos a repetir esto simbólicamente. El valor de P es completamente dependiente de los valores de q y r.

p = p (q,r)

Ejemplo con orden de compra. Como un ejemplo de dependencia completa, consideremos el caso de una orden de compra. Supongamos que esta orden de compra describe mediante tres variables que son de interés para nosotros:

• El número de orden de compra (PON) designa la orden completa;

• El número de parte de pieza designa una de las partes ordenadas por el pedido;

• La cantidad de piezas es el número de unidades de dicha pieza requerida para satisfacer el pedido.

Los pedidos describen en consecuencia una orden por medio de varias partes diferentes, y para cada una distinta asociada. El sistema contable ve varios pedidos diferentes. La misma parte puede aparecer en distintos pedidos y, cuando ello sucede, puede estar asociadas distintas cantidades con la misma parte. Un tupla de la base de datos relacional contendrá un PON un número de parte y una cantidad. La cantidad es completamente dependiente del PON y del número de parte. Resulta claro que el número de pedido no es suficiente para determinar la cantidad todas las partes de un determinado pedido no tiene la misma cantidad). Análogamente, un número de parte no es suficiente para determinar la cantidad ordenada, dado que diferentes pedidos pueden requerir distintas cantidades de dicha parte. Por lo tanto, es nuestro ejemplo, la cantidad no es dependiente solamente del PON o del número de parte; es completamente dependiente de ambos. Puede imaginarse, aunque no es muy probable el caso de que cada vez ordenados una parte la ordenamos solamente por una cantidad como una docena, o tres gruesas o cualquier otro valor fijo. Si esto ocurre para todas las partes y para todos los pedidos de nuestro sistema, en consecuencia no existirá dependencia completa. En efecto podemos decir que hay dependencia total entre cantidad y número de partes – condición improbable-. Hemos examinado anteriormente un ejemplo académico y las variables profesor, clase y sección. Tenemos en esta caso una dependencia completa de profesor respecto de clase y sección. Si en nuestra facultad está establecido existirá dependencia completa. Esto existiría que un profesor enseñe siempre a todas las secciones de una clase particular – una condición no muy factible con un curso de 20 secciones-.

Dependencia transitiva La dependencia transitiva se aplica o tres o más variables. Consideremos el caso de solo tres variables y llamémoslas S, T y V.

Diremos que S es la variable independiente si los

valores de S determinan tanto a T como a V, y se simbolizará así:

S —-> T; S —-> V

Sin embargo, sería deseable encontrar una relación más restrictiva o definida.

Tenemos dependencia transitiva cuando S determina a T y V, pero los valores de V pueden considerarse siempre como dependiendo de los valores de T. Esto puede escribirse como

S —-> T; T —-> o alternativamente como

v = v(t); t = t(s) v = v(t(s))

Reducción: Si podemos manejar las dependencias transitivas, podremos reducir el espacio total requerido para almacenar los datos. Varios valores de S pueden generar un único valor de T. De modo similar, pueden existir varios valores de T asociados solamente con un valor de V. La separación de estas relaciones permite conservar espacios. Esto puede observarse mejor con respecto al ejemplo que se describe más abajo.

Ejemplo: Consideramos un ejemplo que asocia

cursos con departamento y con escuela. En consecuencia, canto será dictado por el departamento de música en la escuela de Artes y Ciencias; hidráulica será dictada por ingeniería civil en la Escuela de

Ingeniería;

impuestos será dictado por el departamento contable en la Escuela de Administración. Llamemos

• S al curso

• T al departamento

• V a la escuela

Por lo tanto

S —-> T —-> V

la descomposición consiste en la asociación de un curso con un departamento en una relación. Otras relación identifica a cada departamento con una escuela. Esta segunda relación es necesariamente menor tanto en grado como en cardinalidad y aquí reside el ahorro de espacio.

Normalización: ¿Qué es normalización?

Normalización es un proceso que clasifica relaciones, objetos, formas de relación y demás elementos en grupos, en base a las características que cada uno posee. Si se identifican ciertas reglas, se aplica un categoría; si se definen otras reglas, se aplicará otra categoría.

Estamos interesados en particular en la clasificación de las relaciones BDR. La forma de efectuar esto es a través de los tipos de dependencias que podemos determinar dentro de la relación. Cuando las reglas de clasificación sean más y más restrictivas, diremos que la relación está en una forma normal más elevada. La relación que está en la forma normal más elevada posible es que mejor se adapta a nuestras necesidades debido a que optimiza las condiciones que son de importancia para nosotros:

• La cantidad de espacio requerido para almacenar los datos es la menor posible;

• La facilidad para actualizar la relación es la mayor posible;

• La explicación de la base de datos es la más sencilla posible.

Primera forma normal

Para que una relación esté en primera forma normal (1 FN), debe ser solamente una relación propia, una matríz m por n, donde:

• Ninguna celda de la matriz está vacía;

• El valor n cualquier columna está definido por el dominio para dicho atributo.

• Cada tupla tiene una clave que la identifica en forma unívoca, pero dicha clave no significa orden.

La aplicación determina la relación

Para que una relación sea normalizada en pasos adicionales, debe encontrarse en la primera forma normal. Colocar los datos en la primera forma normal está a cargo del diseñador de la aplicación. Estos

datos se encuentran disponibles de alguna manera inicialmente. Si la aplicación existe en forma

manual, o ha sido anteriormente computarizada pero no todavía como relación, el diseñador reorganiza los datos de modo de conformar una matríz 1FN.

La segunda inicial más importante es la dimensión de la relación ¿cuántos componentes existen en la tupla o cuántas columnas en la tabla? ¿De qué manera se compara esto con el número de campos en el documento fuente?.

En la figura se puede observar un documento como

muestra, una factura típica. Parte de la información es fija y otra variable. La figura nos muestra un formulario impreso dentro de l cual se ha agregado información. La impresión puede dividirse en dos categorías.

• Información descriptiva para el usuario

• Nombres de atributos.

La información impresa es necesariamente fija. Podemos observar el nombre de la compañía en la figura, así como otras particularidades (tales como el número de teléfono que no figura aquí). Otros nombres impresos corresponden a los atributos cuyos

valores se escriben en el momento en que el formulario es llenado. Estos nombres de atributos son también los nombres de campos para almacenar los datos en el sistema. Los que se escribe son los valores de atributos. La información convertida queda formada en tuplas. La próxima pregunta es cuantas tuplas representarán a la formación en esta forma. Debe notarse que el número de partes ordenadas varía de una

factura o pedido a otro.

Wetco factura no. 91529

23 river road fecha factura 3/19/77

saltsea texas

orden fecha

de cliente vendedor de la orden via orden wetco

M0007 2-14 3/12/17 ups 1922447

Cliente no. 31-0285-fl

Venta a flores associates expedido a

108 8 avenue el mismo

brooklyn, n.y. 11215

cantidad precio parte descripcion monto

Pen-

Orde-despa-dien-

Nada chada te

2 2 3.50 018719 camisa 7.00

2 2 .35 020428 guia .70

1 1 .70 020808 rodillo motor .70

1 0 .25 020811 rodillo libre 0.00

1 1 6.00 020819 humidrum 8.00

Transporte Y

Seguro .96

17.38

Dado que una tupla debe tener un número fijo de componentes, necesitamos una tupla en primera forma normal para cada parte de cada pedido. Sin embargo, la información que se encuentra en la parte superior del formulario, y que se llena a máquina, es la misma para todas las partes ordenadas más abajo. Por lo tanto cada tupla consiste en una parte de datos que son variables y datos del pedido que se duplican para cada parte ordenada.

Grafo de Dependencia

Una vez que los datos han sido puestos en primera forma normal, resulta conveniente descomponer la relación en un número de relaciones más pequeñas, cada una en forma normal superior, de modo de optimizar el almacenamiento y usar su funciones. Para esto resulta necesario reconocer las dependencias existentes. Un grafo exhibe los distintos tipos de dependencias que existen, y enfatizan que hemos investigado completamente cada dependencia.

El grafo simple no está diseñado para mostrar dependencias. Para hacer utilizable a este grafo, se agregan colores pueden expresarse en blanco y negro mediante distintos tipos de líneas. Discutiremos estos tipos de líneas en términos de la dependencia que cada uno representa. En las figuras que siguen las formas gráficas aparecen a la izquierda y se utilizan para constituir un grafo completo. A la derecha se puede observar una forma simbólica para describir dependencias únicas.

Dependencia única

En la figura vemos un arco que conecta dos vértices A y B. A es la cola y B es la cabeza de la "flecha". Esto significa que B depende de A. Es decir dado un valor de A podemos predecir de A. Es decir, dado un valor de A podemos predecir cuál será el valor de B.

Dependencia total

La dependencia total se define como una dependencia bilateral o simétrica. Es decir, si C depende de D, en consecuencia D será dependiente en forma similar de C. Esto se expresa en la figura mediante una arista (sin una flecha) que une C y D. Para enfatizar la dependencia total, se usa una línea doble o una línea más gruesa. Esto representa una medida de seguridad para verificar que el usuario no dibuje un arco e inadvertidamente omita la flecha. Simbólicamente se utiliza una doble flecha.

Dependencia completa

La variable G depende en forma completa de otras dos variables E y F, lo cual puede ilustrarse como se ve a la izquierda de la figura. Pero así no es representada adecuadamente la dependencia completa, ya que el valor de G no depende de E o F, independiente, sino que depende de ambos valores. Por lo tanto en el centro de la figura A, vemos una forma mejor; la arista que une E y F no intenta demostrar una dependencia entre E y F, por lo tanto se dibuja en líneas de trazos; a partir del centro de esta línea de trazos, se dibuja un arco dirigido hacia G para indica que G depende de ambas variables E y F.

Dependencia transitiva

Supongamos que dos variables, K y L, dependen de J. Si puede verificarse que L depende en forma primaria de K, existiría una dependencia transitiva. Mostramos a la izquierda de la figura B que L. depende de J o de K. Más apropiado s el grafo del centro de la figura B, donde podemos ver que L está definida por K la cual, a su vez, está determinada por los valores de J.

Simbólicamente indicamos una dependencia transitiva de L respecto de J mediante una flecha de trazos desde J a L, como puede verse a la derecha de la figura B.

Ejemplo

En la figura B se presenta un grafo de dependencia hipotético. En el mismo se dibujan las relaciones de dependencia entre atributos para una aplicación de remuneración. EMPNO y DEPTNO están subrayadas en la figura para expresar que ambas son partes de una clave compuesta para la relación. Una línea gruesa conecta EMPNO a EMPNOM para indicar que si nombre de empleado y existe una dependencia total.

Varios atributos dependen directamente del número de empleados:

• TITL es el título de la tarea del empleado

• PAYLVL es un carácter que indica el nivel de sueldo del empleado.

• HORAS representa el número de horas que el empleado ha trabajado la presente semana.

• PAYRT está apuntado a PAYLVL indicando que el régimen de pago es transitivamente dependiente del nivel de pago.

La línea de trazos que une PAYRT y HORAS indica que ambas participan en una dependencia completa por la cual el receptor es PAYAMT, el valor pagado para esta semana.

A la derecha de la figura, encontramos los atributos que dependen del número de departamento. Obsérvense la dependencia total entre número y nombre del jefe del mismo (MGRO y MGRNM).

Hay solamente un atributo que es completamente dependiente de ambas partes de la clave compuesta, es decir, el número de

proyecto, PROJNO.

Segunda Forma Normal

Una relación está en segunda forma normal (2FN) solamente si todos los atributos son dependientes en forma completa de la clave.

Descripcion De La Segunda Forma Normal (2 Fn)

Su nombre ya nos indica el hecho de que la segunda forma normal es por lo general el próximo paso de

normalización y descomposición. Para ser accesible a la normalización, y poder ser puesta en segunda forma normal, la relación debe poseer las siguientes propiedades:

• Debe estar en primera forma normal

• Debe tener una clave compuesta.

La consecuencia inmediata de los requerimientos expresados más arriba es que cualquier relación en primera forma normal que tiene una clave simple, está automáticamente en segunda forma normal. Comencemos con un ejemplo en forma de tabla de una relación consistente en 17 atributos, que se presenta en la figura. La misma se encuentra en primera forma normal y tiene una clave compuesta que consiste en dos atributos P y Q. Estos están subrayados en la figura para mostrar que sirven como clave. La tupla de relación puede también escribirse linealmente en forma simbólicamente:

R = (A,B,C,D,E,F,G,H,I,L,M,N,O,P,Q)

El próximo paso es crear un grafo de dependencia, presentando aquí como figura. Debe notarse que este grafo se crea examinado con conocimientos y atributos para determinar como participan y relacionan entre ellos.

No resulta suficiente analizar la matríz de relación, la cual puede hacernos creer que existe una dependencia debido a que la muestra de la cual se ha extraído dicha relación es pequeña. Si somos inducidos a error por los datos existentes y construimos una dependencia donde esta no existe, se planteará un problema. Cuando lleguen nuevos datos que contradigan la dependencia, deberá dejarse de lado el esquema completo.

Supongamos en consecuencia que el grafo que se puede observar en la figura ha sido derivado en forma funcional y que expresa correctamente las dependencias. Resulta claro a partir de este grafo que los atributos que parten de P son dependientes solamente de este. De un modo similar los que parten de Q dependen solamente de este último. Solamente aquellos que parten de la línea de trazos que conecta a P y Q tienen dependencia completa de ambos. Esta es la guía para la descomposición.

Descomposición

La figura contiene 3 sub-árboles, la base de nuestra descomposición. Definimos una subtupla general en base a cada sub-árbol y en consecuencia:

P' = (P,A,B,C,E,H,K)

Q' = (Q,F,G,J,N)

PQ = (P,Q,D,I,L,M,O)

Aquí la raíz de los sub-árboles de la izquierda y la derecha. P y Q, se convierte en la clave de sus respectivas subtuplas; ambos. P y Q forman la clave compuesta para la subtupla PQ.

Proyección

El próximo paso es proyectar la relación R sobre cada una de estas subtuplas para formar tres nuevas relaciones, y en consecuencia.

P' = proyectar R(P')

Q' = proyectar R(Q')

PQ = proyectar R(PQ)

Las relaciones así formadas nos dan tres nuevas sub-relaciones. Una subrelación es la relación que deriva de una relación mayor. Las subrelaciones ilustradas en la figura están correlacionadas por medio de los componentes de sus claves. La clave compuesta P y Q de la relación original R. es también la clave de la sub-relación PQ. P y Q tienen a P y Q respectivamente como claves. La línea de trazos en la figura indica que Q está correlacionada con PQ por medio de la componente Q y P está correlacionada con PQ por medio de P.

Para restablecer la relación original R debemos juntar estas tres subrelaciones en algún orden, indicado simbólicamente como:

R = juntar P [juntar PQ, (Q)] (P) = juntar Q[juntar PQ P(P)] (Q).

Grafos

La nueva sub-relación que se ve en la figura se presenta en forma de grafo en la figura siguiente. Existe una considerable analogía entres estas figuras y la figura anterior. Lo importante es la diferencia. En PQ existe una línea de trazos que conecta los componentes de la clave compuesta P y Q en el centro de la figura. Los arcos parten del centro de esta línea de trazos hacia todos los componentes de P y Q, los cuales son dependientes en forma completa de ambos, es decir de P y Q. Una línea de puntos conecta P en la relación PQ a P de la relación P. Esto representa la correspondencia entre ambas veces P. Una línea de puntos conecta de un modo similar Q en PQ a Q en Q para indicar una correspondencia similar.

Efectos

El efecto de esta descomposición puede no resultar inmediatamente claro. Debemos insistir en que ninguna relación correcta debe contener tuplas duplicadas. La relación original R contiene muchas subtuplas duplicadas P' y Q'. Las mismas han sido eliminadas durante la descomposición. Esto facilita en forma extraordinaria la actualización y otras importantes operaciones que afectan a estas relaciones, las cuales serán aclaradas en los ejemplos que siguen.

Ejemplo de inventario

Vamos a utilizar ahora un ejemplo práctico para demostrar la normalización. En la figura se observa una parte de la matríz de relación PW.

Pueden verse los nombres de los atributos simbólicos y sus significados, pero no sus valores. Las columnas no aparecen en ningún orden en particular. Debe observarse la clave compuesta que distingue cada tupla, que abarca el número de pieza y el número de depósito PNO y WNO.

Arbol de Dependencia

El medio para descomponer la relación es el árbol de dependencia que se ve en la figura. Este árbol ha sido construido solamente teniendo en cuenta la dependencia completa, y no muestra las dependencias total o transitiva, que se describe más adelante, si es que las mismas existen.

Como podíamos esperar, aparecen tres sub-árboles. El sub-árbol de la izquierda, con raíz PNO, contiene los atributos que se aplican solamente a la pieza o parte. El sub-árbol de la derecha con raíz WNO describe cada depósito. EDl sub-árbol del centro corresponde a las partes y al depósito, y describe la cantidad de partes disponibles en el depósito, QOH, y el número de cajón o estante, BIN (o algún otro parámetro de ubicación), donde dichas partes pueden ser halladas.

El próximo paso es definir tres tuplas generales para cada sub-árbol,

P = (PNO, DESC, PR, UNIT)

W = (WNO, WAD, FUE)

P/W = (PNO, WNO, BIN, QOH)

La descomposición consiste en proyectar la relación PW sobre cada una de estas tuplas para obtener tres nuevas sub-relaciones:

P = proyectar PW(P)

W = proyectar PW(W)

P/W = proyectar PW(P/W)

La descomposición en la figura muestra las tres relaciones como matrices; la línea de trazos indica como se vinculan las relaciones.

Efecto

Discutiremos ahora algunas de las ventajas obtenidas mediante la descomposición. Si estas relaciones se utilizan para el control de inventario. nuestra preocupación será cuantas piezas de cada tipo están disponibles en un depósito en particular. Cuando se retiran piezas o se reciben nuevos envíos la cantidad disponible, QOH será la variable de cambio. La actualización consiste en poner al día sub-relación P/W la cual ahora contiene solamente malos componentes en lugar de los nuevos P/W.

Existe una tupla P en la sub-relación de pieza o parte, P, para cada parte y una tupla. W, en la sub relación W, para cada depósito y estos últimos probablemente no serán muchos. Consideremos la facilidad de efectuar cambios en un depósito en particular. Si un atributo de uno de los depósitos varía entraremos en W para efectuar el cambio solamente en una tupla. En la primera forma normal para PW teníamos que encontrar todas las tuplas en las cuales el valor de WNO esta el particularmente deseado, y efectuar el mismo cambio en cada una de ellas. Si dicho depósito almacenaba 100 partes, como consecuencia debía variar 100 tuplas de PW. El

procedimiento de actualización se aplica también a las descripciones de partes. Si el

precio de alguna parte o pieza cambia, este cambio es independiente del depósito en el cual se almacena dicha parte. Solamente se efectúa un cambio en P a diferencia de los muchos que hubieran sido requeridos para PW.

Tercera forma normal

Una relación se encuentra en tercera forma normal (EFN) si no existen transitividades entre sus atributos y si ya se encuentra en 2 FN.

Descripción

Una relación R a poner en tercera forma normal debe estar en la segunda forma normal. Es muy común que R sea una sub-relación; la relación original estaba en primera forma normal (para ponerla en segunda forma normal fue descompuesta en varias sub-relaciones). Estas son ahora candidatas a una descomposición adicional.

Recordamos que las propiedades de la segunda forma normal (2Fn) son:

• Tenemos una matríz m x n con un valor determinado para cada componente de cada tupla.

• Cada valor es obtenido a partir de un

dominio propiamente definimos

• Cada valor contiene una clave, ya sea simple o compuesta

• Cada componente no clave es dependiente en forma completa de su clave.

En consecuencia es evidente que tenemos, o bien una clave simple, o una clave compuesta de la cual todos los componentes no clave son dependientes en forma completa.

El objeto de esta fase es determinar todas las dependencias transitivas; la descomposición producirá a continuación sub-relaciones para las cuales no existirán dependencias transitivas -la definición de la tercera forma normal (EFN)-.

Una dependencia transitiva abarca como mínimo tres componentes. Si los componentes fueran más, la dependencia múltiple puede derivarse en varias dependencias atransitivas de tres componentes solamente dada una. Por lo tanto dirigiremos nuestra atención a una dependencia transitiva simple de tres componentes. Tal dependencia puede expresarse como:

Q —> A —-> B

En la cual se dice que B depende de A y que A depende de Q. La transitividad existe debido a que el valor de B depende en la última instancia del valor de Q.

La dependencia transitiva es degenerada si cualquiera de las dependencias anteriores es total. Esto es, podemos prever que la relación de Q a A es muchos-unos, donde varios valor único de A. Dado un valor tal Q el valor de A queda determinado. La inversa no se aplica y en consecuencia no existe una dependencia total: dado un valor de A el valor correspondiente de Q no queda determinado a menos de que se trate de una dependencia total.

El ahorro que surge de colocar la relación en tercera forma normal aparece a raíz de la granularidad del dominio involucrado. Se puede prever que:

num dominio (Q)> num dominio (A) > num dominio (B)

Determinación de al dependencia transitiva

Si el grafo utilizado para llevar la relación a la segunda forma normal es completo en termino de las transitividades existentes, no resulta necesario un grafo adicional. El grafo para convertir a la segunda forma normal requiere solamente que todas las dependencias completas y parciales sean conocidas. Supongamos que no hemos establecido todas las dependencias transitivas. Se presenta una situación simple en la figura anterior donde A, B y C son dependientes de Q. SI suponemos que existe una dependencia entre A, B y C son dependientes de Q. Si suponemos que existe una dependencia entre a y B debemos confirmarlo en forma funcional.

Una dependencia total entre A y B en el grafo de la figura puede representarse como se ve en la figura el arco desde A a B no muestra una dependencia de B respecto de A inversamente el arco a partir de B hacia A muestra una dependencia de A respecto de B; los arcos a partir de Q a A y a B nos muestra la dependencia de cada una de éstas respecto de Q. Esto puede observarse nuevamente en la figura, donde una doble arista entre A y B indica la bi-direccionalidad de esta dependencia. El hecho de que Q apunte a esta arista nos muestra que cada una de las variables A y B es claramente dependiente de aquella.

Como ejemplo sea Q el número PO, A el número de parte o pieza y B el nombre de parte, A y B son totalmente dependientes y cada uno dependen de Q.

Transitividad simple

Para la dependencia transitiva unilateral, la variable independiente apunta a la variable dependiente, tal cual se presenta en el figura donde B depende de A. El arco entre B y Q ha sido eliminando; la dependencia implícita de B respecto de Q resulta obvia.

Si se presenta la dependencia inversa, debe gratificarse como se ve en la figura.

Descomposición

Dada una sub-relación con una o más dependencias transitivas, la descomposición consiste en partir la relación en una o más de una sub-relación, donde la variable intermedia aparezca como variable dependiente en una y como variable independiente en la otra.

Caso simple Tenemos:

Q —> A —-> B

Q —> C

Dado que ambas, A y C dependen directamente de Q deben conservarse en una sub-relación Q, con clave Q.:

Q —> A; Q —> C

Debe separarse la relación directa remanente, y colocarla en su propia sub-relación A' con la A:

A —> B

Los grados de Q' y A'. Aquí la componente A relaciona Q' con A, a es la clave simple de A'. Si bien A no es la clave de Q' es le medio de relacionar un valor de Q en Q' con un valor de B en A' y se llama por lo tanto la clave externa de Q' . Para crear Q' y A' debemos utilizar las subtuplas generales Q' y A' denifidas en consecuencia:

Q' = (Q,A,C)

A' = (A,B) donde el subrayado indica una clave.

Este deben proyectarse sobre Q para obtener las sub-relaciones:

Q'= proyectar Q(Q')

A'= proyectar Q(A')

Caso Compuesto

Las dependientes transitivas múltiples han sido investigadas y exhibidas. Tenemos en consecuencia.

Q –> C

Q –> A –> B1

Q –> A –> B2

Q –> A –> B3

La descomposición separa nuevamente todas estas variables directamente dependiente de la clase original en una subtupla. Q'' = (Q, A, C)

Las variables restantes son todas dependientes directa o totalmente de A o C y se reorganizan de un modo similar. A'' = (A, B1, B2, B3); C'' = (C, D)

Deben construirse tres sub-relaciones por proyección:

Q'' = proyectar Q(Q'')

A'' = proyectar Q(A'')

C'' = proyectar Q(C'')

Aquí Q'', A'' y C'' aparecen como sub-árboles. Las mismas se relacionan por medio de la clave externa de Q'' es decir A y C; esto se muestra mediante la línea de puntos entre A y A y entre C y C. Nos podemos mover directamente entre las dos figuras sin la intervención de pasos simbólicos, utilizando solamente manipulaciones gráficas.

Descomposición Gráfica

Hemos discutido el enfoque simbólico. Dado un grafo 2FN. Debemos seleccionar en primer término los nodos apuntados por la raíz que no sean hojas. Los mismos se convierten en raíces de sus propios sub-árboles, A'' y C''. Estos sub-árboles son eliminados de Q dejando en Q'' solamente los nodos A y C, que son las raíces de A;; y C''.

Ejemplo de orden de compra

Examinaremos solamente una pequeña porción de la relación orden de compra que ha sido convertida en un grafo de dependencia. Para esta porción de la relación compra PP, tenemos:

• Las partes se compran utilizando el número de parte, PNO;

• Un vendedor, VNDR está asociado a cada parte;

• Cada vendedor tiene una clasificación de forma de pago, PAYCLS.

Por lo tanto PAYCLS representa si el vendedor debe cobrar dentro de los 10 días, 30 días, 60 días, etc. La acción para convertir la relación.

Tenemos aquí una relación transitiva que puede ser representada en consecuencia:

PNO —> PAYCLS

Sabemos que la variable intermedia, el vendedor VNDR, es el que determina el tipo de pago de modo tal que

PNO —> VNDR –> PAYCLS

para poner esta relación en la tercera forma normal, la misma se descompone en dos sub-relaciones. Las dos sub-relaciones PV y VP, se forman por proyección a partir de la relación original PP de modo tal que:

PV = proyectar PP (PNO, VNDR); PV = proyectar PP (VNDR, PAYCLS).

La relación PV relaciona partes con vendedores.

La identificación del vendedor, VNDR es la clave externa par PV. La misma se utiliza para entrar en la relación VP, en la cual es la clave primaria.

Debe notarse que, para el mantenimiento, si cambia la clase de pago solamente cambiara una entrada o tupla en VP y ninguna en PV. Para el caso de PP hubiera cambiado muchas tuplas.

Ejemplo de inventario

Presentamos ahora una porción de un ejemplo de inventario, al cual corresponde el grafo parcial. Tenemos en este caso:

• PNO es un número de parte

• PNM es el nombre de parte y tiene dependencia total con el número de parte

• PREC es el costo de UNITS multiplicado por el número de partes

• PCL es la clase de parte, la cual da el tipo de parte en términos de su peso y de su forma.

• WHN es el número de depósito donde está almacenada la parte.

• WHLOC Es la ubicación del deposito

• FUE es la categoría de seguro de incendio del depósivto.

Resulta claro a partir del grafo que el número de parte determina la clasificación de la parte, la cual a su vez determina parcialmente el deposito donde está almacenada dicha parte. Usaremos esta dependencia transitiva, que está circundada con línea de trazos gruesos, para descomponer la relación en su tercera forma normal: PNO —> WHN; PNO —> PCL —> WHN

La variable intermedia, clase de parte, PCL, es el medio de que disponemos para descomponer el grafo. Se deja como ejercicio hallar las proyecciones y la relaciones resultantes.

Ejemplo bancario

Consideremos parte de un ejemplo de banco donde cada depositante tiene un número de cuenta que lo identifica. El depositante recibe una línea de crédito. Puede extraer dinero hasta dicho valor. La parte no utilizada de crédito puede ser retirada cuando lo desee. Vemos que la línea de crédito LNCR es funcionalmente dependiente del número de cuenta CUET; el valor ya extraído DEBIT es también dependiente del número de cuenta. El valor de crédito disponible en este momento, DISP, es dependiente en forma completa de ambos, LNCR y DEBIT.

Parecería que lo lógico es descomponer el grafo y volver a presentarlo. En base a esto, P tiene como clave el número de cuenta CUENT. Debemos entrar en P para obtener LNCR y DEBIT. Estas son claves externas para P; las mismas forman la clave compuesta para entrar en Q y hallar el valor de la variable completamente dependiente DISP.

Esto funcionaría, pero hay una forma más simple de resolver el problema. El valor de crédito disponible en la actualidad es simplemente la diferencia entre la línea de crédito y el debido corriente. Todo lo que tenemos que hacer es ejecutar una sustracción. La relación original no necesita contener DISP. dado que éste se calcula simplemente durante el procesamiento. Por lo tanto podemos sencillamente omitir Q.

Transitivas múltiples.

Establecemos de entrada la condición simple de que Z sea dependiente en forma transitiva de Q. Si existe más de una variable intermedia de dependencia, la transitiva no será completa hasta que se especifiquen todas dichas variables. Es decir, si bien empezamos con la condición de transitividad, Q —> Z,

la condición completa podría ser, Q —> X —> Y —> Z

Ninguna condición intermedia Q —> X —> Z —>; Q —> Y —-> Z

sería suficiente para descomponer la original de la figura.

Cuarta forma normal

Dependencias multivaluadas

La tercera forma normal toma en cuenta la dependencia transitiva y provee una reducción óptima universal, excepto para los casos infrecuentes de dependencia multivaluadas. Ha quedado claro en épocas recientes que es posible una reducción adicional en este caso, y esto es lo que se lleva a cabo mediante la cuarta forma normal.

Existe una dependencia multivaluada cuando un valor de una variable está siempre asociado con varios valores de otra u otras variables dependientes que son siempre las mismas y están siempre presentes. Esto se ilustra mejor con el ejemplo presentado en la figura. La relación FAB describe tejidos. La variable independiente (con respecto a las dependencias (multivaluadas) es el número de tejido FABNO. Con el se encuentra asociados un modelo (o patrón) y un color. En la figura, el tejido 345 vienen en dos modelos y entres combinaciones de

modelo y color. En este caso se aplica el grafo de dependencia. Para hacer mas clara que esta es una dependencia multivariable, una cabeza doble de flecha apunta desde FABNO o PATRN y también desde FABNO a COLOR.

La ineficiencia en el registro de información y se resulta clara al examinar las dos nuevas relaciones. La primera de éstas, FABPAT lista el número de tejido contra el modelo; en el segundo caso, FABCOL, lista el número de tejido contra las combinaciones de color. Dado que la regla es que todas las combinaciones de las variables dependientes multivaluadas deben prevalecer, resulta simple reconstruir la relación FAB a partir de las dos sub-relaciones que resultaron.

Descomposición Para poner una relación o sub-relación en la cuarta forma normal debe

poder aplicarse lo siguiente:

• Debe estar en la tercera forma normal.

• Deben existir una o mas multidependencias.

Después de construir el grafo de dependencia, el próximo paso es ejecutar proyecciones utilizando la variable independiente y una de las variables multidependientes.

FABPAT = proyectar FAB (FABNO, PATRN)

FABCOL = proyectar FAB (FABNO, COLOR)

El resultado son nuevas sub-relaciones que han sido utilizadas para ahorra espacio y permitir una más fácil actualización.

Ejemplo de profesor y texto

Consideremos otro ejemplo. Los cursos dictados en una escuela corresponden a un número de curso. Asociada a cada número de curso se encuentra la descripción del mismo. Para cada curso existe una selección de textos y una selección de profesores. Puede darse cualquier combinación de texto y profesor.

El grafo de dependencia. El mismo nos muestra una dependencia total entre el número de curso y la descripción del curso. Existe una multidependencia entre texto y número de curso, y también entre profesor y número de curso.

Para descomponer la sub-relación en sus relaciones más pequeñas, se efectúan tres proyecciones. Las sub-relaciones resultantes.

2.5.1 SUBCONSULTAS

Una subconsulta es una instrucción SELECT anidad dentro de una instrucción SELECT, SELECT…INTO, INSERT…INTO, DELETE o UPDATE dentro de otra subconsulta.

Puede utilizar tres formas de sintaxis para crear una subconsulta.

Comparación [ANY [ALLA] SOME] (instrucción sql) expresión [NOT] IN (instrucción sql) [NOT EXISTS] (instrucción sql)

En donde

Comparación: es una expresión y un operador de comparación que compara la expresión con el resultado de la subconsulta.

Expresión: es una expresión por la que se busca el conjunto resultante de la subconsulta.

Instrucción SQL

Es una instrucción SELECT, que sigue el mismo formato y reglas que cualquier otra instrucción SELECT. Debe ir entre paréntesis.

Se puede utilizar una subconsulta en lugar de una expresión en la lista de campos de una instrucción SELECT o en una cláusula WHERE o HAVING. En una subconsulta, se utiliza una instrucción SELECT para proporcionar un conjunto de uno o más valores especificados para evaluar en la expresión de la cláusula WHERE o HAVING.

Se puede utilizar el predicado ANY o SOME, los cuales son sinónimos, para recuperar registros de la consulta principal, que satisfagan la comparación con cualquier otro registró recuperado en la subconsulta. El ejemplo siguiente devuelve todos los productos cuyo precio unitario es mayor que el de cualquier producto vendido con un descuento igual o mayor al 25 por ciento:

SELECT * FROM Productos WHERE PrecioUnidad > ANY (SELECT PrecioUnidad FROM DetallePedido WHERE Descuento >= 0.25)

El predicado ALL se utiliza para recuperar únicamente aquellos registros de la consulta principal que satisfacen la comparación con todos los registros recuperados en la subconsulta. Si se cambia ANY por ALL en el ejemplo anterior, la consulta devolverá únicamente aquellos productos cuyo precio unitario sea mayor que el de todos los productos vendidos con un descuento igual o mayor al 25 por ciento. Esto es mucho más restrictivo.

El predicado IN se emplea para recuperar únicamente aquellos registros de la consulta principal para los que algunos registros de la subconsulta contienen un valor igual. El ejemplo siguiente devuelve todos los productos vendidos con un descuento igual o mayor al 25 por ciento.

SELECT * FROM Productos WHERE Idproducto IN (SELECT Idproducto FROM DetallePedido WHERE Descuento >=0.25);

Inversamente se puede utilizar NOT IN para recuperar únicamente aquellos registros de la consulta principal para los que no hay ningún registro de la subconsulta que contenga un valor igual.

El predicado EXISTS (con la palabra reservada NOT opcional) se utiliza en comparaciones de verdadero/falso para determinar si la subconsulta devuelve algún registro.

Se puede utilizar también alias del nombre de la tabla en una subconsulta para referirse a tablas listadas en la cláusula FROM fuera de la subconsulta. El ejemplo siguiente devuelve los nombres de los empleados cuyo salario es igual o mayor que el salario medio de todos los empleados con el mismo titulo. A la tabla Empleados se le ha dado el alias T1.

SELECT Apellido, Nombre, Titulo, Salario FROM Empleados AS T1 WHERE Salario >= (SELECT Avg (Salario) FROM Empleados WHERE T1. Titulo= Empleados. Titulo) ORDER gv Titulo.

En el ejemplo anterior la palabra reservada AS es opcional.

SELECT Apellidos, Nombre, Cargo, Salario FROM Empleados WHERE Cargo LIKE "Agente Ven*" AND Salario > ALL (SELECT Salario FROM Empleados WHERE (Cargo LIKE "*Jefe*") OR (Cargo LIKE "*Director*"));

Obtiene una lista con el nombre con el nombre, cargo y salario de todos los agentes de ventas cuyo salario es mayor que el de todos los jefes y directores.

SELECT DISTINCTROW NombreProducto, Precio_Unidad FROM Productos WHERE (Precio_Unidad = (SELECT Precio_Unidad FROM Productos WHERE Nombré _ Producto ="Almíbar anisado")

Obtiene una lista con el nombre y el precio unitario de todos los productos con el mismo precio que el almíbar anisado.

SELECT DISTINCTROW Nombre_Contacto, Nombre_Compañia, Cargo_Contacto, Teléfono FROM Clientes WHERE (ID_Cliente IN (SELECT DISTINCTROW ID_Cliente FROM Pedidos WHERE Fecha_Pedido >=#04/1/93# < #071/93#)

Obtiene una lista de las compañías y los contactos de todos los clientes que han realizado un pedido en el segundo trimestre de 1993.

SELECT Nombre, Apellidos FROM Empleados AS E WHERE EXISTS (SELECT *FROM Pedidos AS O WHERE O ID_Empleado = E.ID_Empleado)

Selecciona el nombre de todos los empleados que han reservado al menos un pedido.

SELECT DISTINCTROW Pedidos, Id_Producto, Pedidos.Cantidad (SELECT DISTINCTROW Productos.Nombre FROM Productos WHERE Productos.Id_Producto = Pedidos.Id_Producto) AS EIProducto FROM Pedidos WHERE Pedidos.Cantidad >150 ORDER BY Pedidos.Id_Producto.

Recupera el código del producto y la cantidad perdida de la tabla pedidos, extrayendo el nombre del producto de la tabla productos.

Las restricciones de las subconsultas

Una subconsulta es una cláusula select, usada como una expresión que forma parte de otra cláusula select, update, insert o delete.

La subconsulta (select anidado) al ser evaluada substituye su resultado dentro de la cláusula exterior de consulta where.

Las subconsultas son usadas

Por que algunas veces son mas fácil de entender que un join, el cual lleva a cabo algún propósito.

Para efectuar algunas tareas que en otro caso seria imposible realizar utilizando un join (por ejemplo usar una función agregada).

Si la cláusula where de la consulta exterior incluye un nombre de columna, esta necesitara un join compatible con el nombre de la columna en la lista select_subconsulta.

Una subconsulta no puede incluir las cláusulas order by, compute o into.

El distinct no puede ser usado con subconsultas que incluyan una cláusula group by.

Subconsultas dentro de la cláusula WHERE

Si la subconsulta regresa mas de un valor, debe usar in en la cláusula where de la consulta exterior en lugar de=

Ejemplo:

Liste los oficios que se encuentran en aprobación y su estructura financiera.

Select num_ofi, tipo_inv, cantidad from est_ofi where num_ofi in (select num_ofi from oficio where tipo_ofi in (select tipo_ofi from TIPO_OFI where descri like "Aprobaci_n"))

Subconsultas que regresan Multiples Renglones

Ejemplo

Liste la clave de los proyectos, nombre y costo total de los específicos y que pertenecen al municipio de TEPEZALA

Select proyec, nombre, costo_tot from proyecto where proyec in (select proyec from pro_espcen al municipio de TEPAZALA select proyec, nombre, costo_tot from proyecto where proyec in (select proyec from pro_esp where munici= (select munici from munici where nom_ofi=TEPAZALA)))

Valores que regresan las subconsultas

Una subconsulta es una instrucción SELECT anidad dentro de una instrucción SELECT, SELECT…INTO, INSERT…INTO, DELETE o UPDATE dentro de otra subconsulta.

Puede utilizar tres formas de sintaxis para crear una subconsulta.

Comparación [ANY [ALLA] SOME] (instrucción sql) expresión [NOT] IN (instrucción sql) [NOT] EXISTS (instrucción sql)

En donde

Comparación: es una expresión y un operador de comparación que compara la expresión con el resultado de la subconsulta.

Empleados

El nombre del producto de la tabla de productos.

2.5.2 OPERADORES

Subconsultas con Operadores de Comparación

Las subconsultas pueden realizar algunas tareas que las cláusulas join no pueden hacer.

Una cláusula where en una declaración select no puede incluir una función agregada.

Una subconsulta puede incluir una función agregada

Ejemplo (mayor que y una función agregada)

Liste los proyectos, sus nombres y costo total de los que se encuentran en aprobación además de que el costo total de estos proyectos sea menor al promedio de las cantidades aprobadas de todos los proyectos.

Select proyec, nombre, costo_tot from proyecto where fase_pro= (select fase_pre from fase_pre where descri like "Aprobaci_n") and costo_tot < (select avg (can_act) from est_fin where fase_pre=

"SUBCONSULTAS EN ACCESS"

MATERIA: MANEJO DE BASE DE DATOS

MAESTRO: ING. OVIDIO PEREZ VALENTIN

ALUMNO

Marìa Alayda de Santiago Sánchez N.L: 03

Brizeida Saldaña Bernal N.L: 19

Nayeli Anahì Chàvez Gonzàlez N.L: 12

Cindy Yaneth Miranda Garcìa N.L: 9

Marìa del Rosario Garcìa Flores N.L: 28

Iris Loreth Alvarez Salcedo N.L :

GRUPO: 4104

TURNO: MATUTINO

CONALEP

IV SEMESTRE 4104

Select * from productos

Select * from SALARIO

Select * from personal

Select * from empleados

SELECT * FROM productos where cantidad > any(select cantidad from productos where cantidad >5)

SELECT DISTINCTROW cantidad,precio from productos where(precio=(Select precio from productos where cantidad=50))

SELECT nombre,sexo FROM PERSONAL

WHERE sueldo (SELECT nombre FROM SALARIO

WHERE sueldo<200000) AND sexo="femenino"

select nombre ,precio FROM productos WHERE precio = ( SELECT precio FROM productos WHERE nombre ="galletas" )

SELECT empleados.nombre FROM empleados WHERE sexo = 'femenino' AND edad > (SELECT Max( empleados.edad )FROM empleados WHERE sexo ='masculino');

*MANEJO DE BASE DE DATOS*

NOMBRES:

Marìa Alayda de Santiago Sánchez N.L: 03

Brizeida Saldaña Bernal N.L: 19

Marìa del Rosario Garcìa Flores N.L: 28

GRUPO: 4104

CARRERA: Informática

TEMA DEL TRABAJO: "JOIN"

FECHA: 27-Mayo-2005

*TABLAS*

PERSONAL

MATERIA

GUSTOS

PERSONAL JN MATERIA

PERSONAL.NOMBRE=MATERIA.NOMBRE

Sentencia de JOIN

SELECT * from PERSONAL,MATERIA where PERSONAL.NOMBRE=MATERIA.NOMBRE

PERSONAL JN GUSTOS

PERSONAL.NOMBRE=GUSTOS.NOMBRE

Sentencia de JOIN

SELECT * from PERSONAL,GUSTOS where PERSONAL.NOMBRE=GUSTOS.NOMBRE

  1. Son programas que se ocupan de acceder y actualizar las DBS. Actúan como interfase entre el programa de aplicación y la DB. Un sistema de gestión de base de datos, es una forma de almacenar la información de tal manera que se eviten la duplicación de datos. Las bases de datos relacionales son aquellas que guardan la información en modo de tablas.

  2. ¿Qué es un sistema gestor de base de datos?

    Base de datos relacional

  3. ¿Cuál es el tipo de base de datos que guarda la información en tablas?

    1.- Debe permitir la definición de todos los datos.

    2.- Debe permitir manipular datos.

    3.- Debe establecer controles para la seguridad de estos.

    4.- Debe permitir los accesos concurrentes.

  4. ¿Cuáles son los funciones de los sistemas de gestión de las base de datos?

    L.D.D. Lenguaje de descripción de datos.

    L.M.D. Lenguaje de manipulación de datos.

    L.C.M. Lenguaje de control de datos.

  5. ¿Cuáles son los sublenguajes del SQL y define a cada uno de ellos?

    1.- Definición de datos: (modifica la estructura o añade campos). La misión del L.D.D. es describir y definir todos los esquemas que participen en la base de datos. Esto consiste en la descripción de los objetos que vamos a representar. La descripción de todas las estructuras que formen nuestra base de datos.

    Definición de vista: es una visión parcial de la tabla. <<cuando en una tabla alguna parte de esta no quiero que tenga derecho a manipularla nadie>>

    2.- Manipulación de datos:L.M.D. recoge todas las operación de intercambio de datos entre las tablas, estas operaciones pueden ser de consulta o de puesta al día (inserción, modificación, supresión) estas operaciones se realizan con la ayuda del denominado L.M.D.

    -consultas

    Operaciones

    -insertar datos

    -puesto al día – modificar datos

    -suprimir datos

  6. ¿Cuáles son los objetivos de los sistemas gestores de base de datos?

    El principal objetivo de la implantación de una base de datos es poner a disposición de un gran número de usuarios en conjunto integrado de datos, estos datos podrán ser manipulados por los diferentes usuarios y es ahora cuando se debe garantizar la coherencia de los datos después de las diversas manipulaciones. Esto se garantiza con la ayuda del concepto de transacción.

  7. ¿Cuál es el principal objetivo de la implantación de una base de datos?

    1.- Concepción

    2.-Creación de la B.D. vacía

    3.-Explotación

  8. ¿Cuál es el ciclo de una vida de una base de datos?

    Concepción: la fase de concepción consiste en reproducir el mundo real con ayuda de uno de los modelos de datos conocidos (relacional). El resultado de esta fase en un esquema escrito según un formalismo cualquiera no interpretable por el S.G.B.D.

  9. ¿Qué es la concepción?

    Explotación: Es en esta fase donde los registros serán manipulados con la ayuda de los lenguajes de programación. Es ahora cuando los usuarios pueden consultar los datos y ponerlos a punto durante el resto de la vida de la base de datos.

  10. ¿Qué es la explotación?

    1.-Redundancia de datos

    2.-Puestas al día múltiple

    3.- Incoherencia de los datos

    4.-Perdida de datos:

    5.- Dependencia funcional

    6.- Estado de la tabla

  11. ¿Cuáles son los problemas adquiridos por una mala elaboración?

    Si un cliente ha realizado mas de un pedido todos los datos de este cliente estarán repetidos tantas veces como pedidos haya, lo mismo sucede para los artículos esto es opuesto al principal objetivo de una base de datos que consiste en evitar la repetición de los mismos.

  12. ¿Qué es la redundancia de los datos?

    Para poder asegurar la coherencia de los datos es necesario efectuar puestas a día múltiples. <<Cuando un cliente cambia de dirección>>

  13. ¿Qué es la apuesta al día múltiple?

    Si una operación de puesta al día múltiple no se ha realizado completamente el estado de la base de datos queda incoherente y puede producir errores importantes.

  14. ¿Qué es la incoherencia de los datos?

    La supresión de una línea en la tabla de pedidos entraña la perdida de todos los datos relativos a un cliente si no ha efectuado ningún otro pedido. Esto es cierto también para un articulo que no se pedido por ningún otro cliente. Estas anormalidades constituyen lo que se ha convenido en llamar<<comportamiento anormal de las tablas>>, para evitar esto existe un proceso llamado <<normalización>> que entre otras cosas intenta establecer los conceptos de <<dependencia funcional y estado de las tablas>>.

  15. ¿Qué es la perdida de datos?

    Este concepto se aplica a las columnas y consiste en hacer corresponder un único valor a aquella columna o columnas que consideramos más significativas.

  16. ¿Qué es la dependencia funcional?

    Nivel interno, conceptual y externo.

  17. ¿Cuál es la clasificación de la arquitectura interna de una base de datos?

    La vista conceptual es una presentación de toda la información contenida en la base de datos. Además puede ser muy diferente en la forma en que percibe los datos cualquier usuario final, es decir, debe ser un panorama de los datos. Tal como son y no como los percibe los usuarios. Debido a las limitaciones del lenguaje o bien al equipo que se esta utilizando.

    El nivel conceptual se define mediante un esquema conceptual el cuál incluye la definición de cada uno de los tipos de registros (entidades), además, el esquema conceptual no debe asociarse a representaciones de campos almacenados tales como punteros, índices, etc., si el esquema conceptual se desarrolla en forma independiente de los datos entonces el esquema externo definido en base al esquema conceptual será también independiente de los datos.

  18. ¿Qué es un nivel conceptual?

    Es la que existe entre una determinada Vista Externa y la Vista Conceptual. La diferencia que puede existir entre estos dos niveles son similares a las que pueden existir entre la vista conceptual y la vista interna.

  19. Describe la correspondencia entre el nivel externo y conceptual.

    Es la que existe entre la vista conceptual y la vista interna específica como se representan los registros y los campos conceptuales, si se modifica la estructura de la Base de Datos, es decir, nivel interno, debe también modificarse la correspondencia para no variar el esquema conceptual.

  20. Describe la correspondencia entre el nivel conceptual y el interno.

    Se cumple cuando solo las personas autorizadas (en su sentido amplio podríamos referirnos también a sistemas) pueden conocer los datos o la información correspondiente.

  21. ¿Qué es la confidencialidad?

    Consiste en que sólo las personas autorizadas puedan variar (modificar o borrar) los datos. Además deben quedar pistas para control posterior y para auditoria.

  22. ¿Qué es la integridad?

    Se cumple si las personas autorizadas pueden acceder a tiempo a la información.

  23. ¿Qué es la disponibilidad?

    Permite establecer las operaciones en un tiempo inferior o igual al prefijado.

  24. ¿Qué es el plan de continuidad?

    Confidencialidad, integridad y disponibilidad.

  25. Menciona los diferentes estratos de seguridad.

    La existencia de políticas y procedimientos o la creación de funciones como administración de la seguridad o auditoria de sistemas de información interna.

  26. Describe las medidas Técnico Administrativas.

    Como la ubicación de los centros de procesos, las protecciones físicas, el control físico de accesos, los vigilantes, las medidas contra el fuego y el agua, y otras similares.

  27. ¿Qué es la seguridad física?

    Como el control de accesos a la información exigiendo la identificación y autenticación del usuario, o el cifrado de soportes magnéticos intercambiados transmitidos por línea. (Puede haber cifrado de la información por dispositivos físicos o a trabes de programas, y en casos más críticos como la red SWFT existen los dos niveles).

  28. ¿Qué es la seguridad lógica?

    Suele ser mediante contraseña, si bien seria más lógico, aunque los castores resultan aun altos para la mayoría de sistemas, que pudieran con características biométricas del usuario, para impedir la suplantación. Entre estas pueden estar la realización de la firma con reconocimiento automático por ordenador, el análisis del fondo de ojo, la huella u otras.

  29. ¿Qué es la autentificación?

    Una subconsulta es una instrucción SELECT anidad dentro de una instrucción SELECT, SELECT…INTO, INSERT…INTO, DELETE o UPDATE dentro de otra subconsulta.

  30. ¿Qué es una subconsulta?

    Al margen de la seguridad, nos parece que el mayor riesgo, aun teniendo un entorno muy seguro, es que la informática, y la tecnología de la información en general, no cubran las necesidades de la entidad: no estén alineadas con el plan de negocio.

    Limitándonos a la seguridad propiamente dicha, los riesgos pueden ser múltiples: el primer paso es conocerlos, y el segundo es tomar decisiones al respecto; el conocerlos y no tomar decisiones no tiene sentido y debiera crearnos una situación de desasosiego.

    En definitiva, las amenazas hachas realidad pueden llegar a impactar en los datos, en las personas, en los programas, en los equipos, en la red y alguna incidencia en varios de ellos, como puede ser un incendio.

  31. ¿Cuáles son los riesgos en una base de datos?

    Otra figura es la del hacker, que intenta acceder a los sistemas más para demostrar (a veces sobre todo para demostrarse a si mismo) de que es capaz, así como que pueda superar las barreras de protección que hayan establecido.

  32. ¿Qué es lo que hace un hacker en una base de datos?

    Son activos vitales todos aquellos relacionados con la continuidad de la entidad, como pueden ser: planes estratégicos, fórmulas magistrales, diseño de prototipos, resguardos, contratos, pólizas… y datos estratégicos, que son los que más nos interesan bajo la perspectiva de la seguridad de la información.

    Y debemos protegerlos pensando en los intereses de los accionistas, de los clientes y también pensando en los empleados y en los proveedores.

  33. ¿Cuáles son las protecciones de activos vitales?

    El CONTROL INTERNO basado en los objetivos de control y llevado a cabo por los supervisores a distintos nivele.

    La AUDITORIA DE SISTEMAS DE INFORMACIÓN INTERNA, objetiva e independiente y con una preparación adecuada, como control del control.

    La AUDITORIA DE SISTEMAS DE INFORMACIÓN EXTERNA, contratada cuando se considera necesaria, y como un nivel de protección más. Igualmente objetiva e independiente.

  34. ¿Cuáles son los 3 niveles de protección?

    Basado en los objetivos de control y llevado a cabo por los supervisores a distintos nivele.

  35. ¿De que trata el control interno?

    Controles preventivos, como exigir una contraseña antes de permitir el acceso.

  36. ¿Da un ejemplo de control preventivo?

    Controles de detección, como lo que avisan de incendios en sus fases más tempranas, a veces sin verse el fuego aún.

  37. Ejemplos de controles de detección.

    1.- Equicomposicion

    2.- Thetacomposicion

    3.- Composición externa

  38. ¿Cuáles son los tipos de enlaces?

    Una composición es un enlace entre dos tablas que dispongan al menos de una columna en común, la operación de composición consiste en crear una tabla temporal compuesta por las líneas de ambas tablas que satisfagan la condicion.

  39. ¿Qué es una composición?

    Es una composición que favorece una tabla con respecto a otra así las líneas de la tabla dominante serán seleccionadas aunque la condición no se haya cumplido.

  40. ¿Qué es una composición externa?

    Se hace con dos tipos de sentencias una permite la inserción de datos del mundo exterior y dos inserta datos entre tablas.

  41. Describe la inserción de los componentes.

    Primero se realiza un producto cartesiano, después se hace una selección donde un registro sea igual a otro registro especificando el nombre del campo que debe ser igual.

  42. ¿Cómo se describe, realiza un Join?

    Se relaciona cada registro de una tabla con cada registro de otra tabla.

  43. ¿Cómo se hace un producto cartesiano?
  44. ¿Para que sirve la cláusula ANY?

Para recuperar registros de la consulta principal, que satisfagan la comparación con cualquier otro registró recuperado en la subconsulta.

MARIA ALAYDA DE SANTIAGO SÀNCHEZ.

CONALEP

MATERIA: MANEJO DE BASE DE DATOS

Partes: 1, 2, 3
 Página anterior Volver al principio del trabajoPágina siguiente