martes, 1 de febrero de 2011

base de datos MYSQL


martes 25 de enero de 2011

BASE DE DATOS MYSQL

1: BASE DE DATOS:

Una base de datos o banco de datos (en ocasiones abreviada con la sigla BD o con la abreviatura b. d.) .es un conjunto de datos pertenecientes a un mismo contexto y almacenados sistemáticamente para su posterior uso.
MYSQL es un sistema de administración relacional de bases de datos.Archiva datos en tablas separadas en vez de colocar todos los datos en un gran archivo. Esto permite velocidad y flexibilidad. Las tablas están conectadas por relaciones definidas que hacen posible combinar datos de diferentes tablas sobre pedido.

2: INDICE:

Un índice (o KEY, o INDEX) es un grupo de datos que MySQL asocia con una o varias columnas de la tabla. En este grupo de datos aparece la relación entre el contenido y el número de fila donde está ubicado.

Los índices -como los índices de los libros- sirven para agilizar las consultas a las tablas, evitando que mysql tenga que revisar todos los datos disponibles para devolver el resultado.

Podemos crear el índice a la vez que creamos la tabla, usando la palabra INDEX seguida del nombre del índice a crear y columnas a indexar (que pueden ser varias):

INDEX nombre_indice (columna_indexada, columna_indexada2...)
La sintaxis es ligeramente distinta segun la clase de índice:

PRIMARY KEY (nombre_columna_1 [,nombre_columna2...]) UNIQUE INDEX nombre_indice (columna_indexada1 [,columna_indexada2 ...]) INDEX nombre_index (columna_indexada1 [,columna_indexada2...])



3: CLAVE:

El campo clave sirve para localizar un registro dado y eventualmente seleccionar alguno de sus campos. El hecho de que sea no repetido permite utilizar búsqueda binaria para localizar un registro. Si quisiéramos buscar un campo del registro que no es el campo llave la búsqueda tendría que realizarse de manera secuencial, o bien construir una tabla alternativa en la que el campo llave sea el que nos interesa. Es de notarse que no es posible bajo ninguna circunstancia buscar con una llave incompleta o equivocada.

4: MODELO ENTIDAD RELACION:

Un diagrama o modelo entidad-relación (a veces denominado por su siglas, E-R "Entity relationship", o, "DER" Diagrama de Entidad Relación) es una herramienta para el modelado de datos de un sistema de información. Estos modelos expresan entidades relevantes para un sistema de información así como sus interrelaciones y propiedades.

1. Se elabora el diagrama (o diagramas) entidad-relación.

2. Se completa el modelo con listas de atributos y una descripción de otras restricciones que no se pueden reflejar en el diagrama.

Dado lo rudimentario de esta técnica se necesita cierto entrenamiento y experiencia para lograr buenos modelos de datos.

El modelado de datos no acaba con el uso de esta técnica. Son necesarias otras técnicas para lograr un modelo directamente implementable en una base de datos. Brevemente:

• Transformación de relaciones múltiples en binarias.

• Normalización de una base de datos de relaciones (algunas relaciones pueden transformarse en atributos y viceversa).

• Conversión en tablas (en caso de utilizar una base de datos relacional).

5: CONSTRAINT:

Puede colocar restricciones para limitar el tipo de dato que puede ingresarse en una tabla. Dichas restricciones pueden especificarse cuando la tabla se crea por primera vez a través de la instrucción CREATE TABLE, o luego de crear la tabla a través de la instrucción ALTER TABLE.

Los tipos comunes de restricciones incluyen las siguientes:

- NOT NULL

- UNIQUE

- CHECK

- Clave primaria

- Clave externa

Cada uno se describe en detalle a continuación.

NOT NULL :En forma predeterminada, una columna puede ser NULL. Si no desea permitir un valor NULL en
una columna, querrá colocar una restricción en esta columna especificando que NULL no es ahora un valor permitido.

Por ejemplo, en la siguiente instrucción,
CREATE TABLE Customer
(SID integer NOT NULL,
Last_Name varchar (30) NOT NULL,
First_Name varchar(30));

Las columnas “SID” y “Last_Name” no incluyen NULL, mientras que “First_Name” puede incluir NULL.

UNIQUE :La restricción UNIQUE asegura que todos los valores en una columna sean distintos.

Por ejemplo, en la siguiente instrucción,

CREATE TABLE Customer
(SID integer Unique,
Last_Name varchar (30),
First_Name varchar(30));

La columna “SID” no puede incluir valores duplicados, mientras dicha restricción no se aplica para columnas “Last_Name” y “First_Name”.

Por favor note que una columna que se especifica como clave primaria también puede ser única. Al mismo tiempo, una columna que es única puede o no ser clave primaria.

CHECK :La restricción CHECK asegura que todos los valores en una columna cumplan ciertas condiciones.

Por ejemplo, en la siguiente instrucción,

CREATE TABLE Customer
(SID integer CHECK (SID > 0),
Last_Name varchar (30),
First_Name varchar(30));

La columna “SID” sólo debe incluir enteros mayores a 0.

Por favor note que la restricción CHECK no sea ejecutada por MySQL en este momento



Restricciones (constraints) FOREIGN KEY

InnoDB también soporta restricciones de claves foráneas. La sintaxis para definir una restricción de clave foránea en InnoDB es así:

[CONSTRAINT símbolo] FOREIGN KEY [id] (nombre_índice, ...)
REFERENCES nombre_de_tabla (nombre_índice, ...)
[ON DELETE {RESTRICT
CASCADE
SET NULL
NO ACTION}]

[ON UPDATE {RESTRICT
CASCADE
SET NULL
NO ACTION}]

Las definiciones de claves foráneas están sujetas a las siguientes condiciones:

• Ambas tablas deben ser InnoDB y no deben ser tablas temporales.

• En la tabla que hace referencia, debe haber un índice donde las columnas de clave extranjera estén listadas en primer lugar, en el mismo orden.

• En la tabla referenciada, debe haber un índice donde las columnas referenciadas se listen en primer lugar, en el mismo orden. En MySQL/InnoDB 5.0, tal índice se creará automáticamente en la tabla referenciada si no existe aún.

• No están soportados los índices prefijados en columnas de claves foráneas. Una consecuencia de esto es que las columnas BLOB y TEXT no pueden incluirse en una clave foránea, porque los índices sobre dichas columnas siempre deben incluir una longitud prefijada.

• Si se proporciona un CONSTRAINTsímbolo, éste debe ser único en la base de datos. Si no se suministra, InnoDB crea el nombre automáticamente.

InnoDB rechaza cualquier operación INSERT o UPDATE que intente crear un valor de clave foránea en una tabla hija sin un valor de clave candidata coincidente en la tabla padre. La acción que InnoDB lleva a cabo para cualquier operación UPDATE o DELETE que intente actualizar o borrar un valor de clave candidata en la tabla padre que tenga filas coincidentes en la tabla hija depende de la accion referencial especificada utilizando las subcláusulas ON UPDATE y ON DETETE en la cláusula FOREIGN KEY. Cuando el usuario intenta borrar o actualizar una fila de una tabla padre, InnoDB soporta cinco acciones respecto a la acción a tomar:

• CASCADE: Borra o actualiza el registro en la tabla padre y automáticamente borra o actualiza los registros coincidentes en la tabla hija. Tanto ON DELETE CASCADE como ON UPDATE CASCADE están disponibles en MySQL 5.0. Entre dos tablas, no se deberían definir varias cláusulas ON UPDATE CASCADE que actúen en la misma columna en la tabla padre o hija.

• SET NULL: Borra o actualiza el registro en la tabla padre y establece en NULL la o las columnas de clave foránea en la tabla hija. Esto solamente es válido si las columnas de clave foránea no han sido definidas como NOT NULL. MySQL 5.0 soporta tanto ON DELETE SET NULL como ON UPDATE SET NULL.

• NO ACTION: En el estándar ANSI SQL-92, NO ACTION significa ninguna acción en el sentido de que unintento de borrar o actualizar un valor de clave primaria no sera permitido si en la tabla referenciada hay una valor de clave foránea relacionado. (Gruber, Mastering SQL, 2000:181). En MySQL 5.0, InnoDB rechaza la operación de eliminación o actualización en la tabla padre.

• RESTRICT: Rechaza la operación de eliminación o actualización en la tabla padre. NO ACTION y RESTRICT son similares en tanto omiten la cláusula ON DELETE u ON UPDATE. (Algunos sistemas de bases de datos tienen verificaciones diferidas o retrasadas, una de las cuales es NO ACTION. En MySQL, las restricciones de claves foráneas se verifican inmediatamente, por eso, NO ACTION y RESTRICT son equivalentes.)

• SET DEFAULT: Esta acción es reconocida por el procesador de sentencias (parser), pero InnoDB rechaza definiciones de tablas que contengan ON DELETE SET DEFAULT u ON UPDATE SET DEFAULT.


6: TABLA:

Una tabla de MySQL es completamente diferente a la tabla normal que usted come en la cena. En MySQL y otros sistemas de base de datos, el objetivo es almacenar la información de manera ordenada. En la tabla se hace esto por lo que la tabla consta de columnas y filas.

Las columnas especifican lo que los datos van a ser, mientras que las filas contienen los datos reales. A continuación se muestra cómo se puede imaginar una tabla de MySQL. (C = Columna, Fila R =)
C1 (Nombre), C2 (Edad), C3 (Peso)

R1 R1 C1 (Juan) R1 C2 (21) R1 C3 (120)

R2 R2 C1 (Sally Grande) C2 R2 (27) R2 C3 (400)

R3 R3 C1 (Tiny Tim) R3 C2 (6) R3 C3 (35)

R4 R4 C1 (Normal Ned) R4 C2 (35) R4 C3 (160)

Hemos añadido el número de fila y columna (R # C #), para que pueda ver que una fila es de lado a lado, mientras una columna corresponde a abajo. En una verdadera tabla de MySQL sólo el valor que se almacena no, el R y C # #!

Esta tabla tiene tres categorías, o "columnas", de los datos: Nombre, edad y peso. Esta tabla tiene cuatro entradas, o en otras palabras, cuatro filas.

7: REGISTRO O TUPLA:      

Conjunto de elementos de distinto tipo que se guardan de forma consecutiva en memoria.

En algunos lenguajes y especialmente en la teoría de bases de datos, una tupla se define como una función finita que mapea (asocia unívocamente) los nombres con algunos valores.

Un pequeño ejemplo puede ilustrar esto:

(Jugador: "Luis", puntuación: 25)

En este caso se trata de una función que mapea el campo "jugador" con la cadena "Luis" y el campo "puntuación" al número entero 25. Es de notar que el orden de los componentes no es relevante, de esta forma la misma tupla puede ser re-escrita como: (puntuación: 25, jugador: "Luis”). En un modelo relacional tal y como se define en las tuplas, se suele representar una proposición simple, en este caso existe un jugador con el nombre "Luis" y que posee una puntuación de 25.

En los lenguajes de programación las tuplas se suelen usar para formar estructuras de datos. Por ejemplo, lo siguiente podría ser una definición de una estructura de datos para una lista enlazada:

(Value: 16, previous-node: 1174782, next-node: 1174791)


9: SELECT (EJEMPLOS):

se usa para recuperar filas seleccionadas de una o más tablas. El soporte para sentencias UNION y subconsultas está disponible a partir de MySQL 4.0 y 4.1, respectivamente.

• Cada select_expr indica una columna que se quiere recuperar.

• puede usarse también para recuperar filas calculadas sin referencia a ninguna tabla. Por ejemplo:

mysql> SELECT 1 + 1;

-> 2


10: UPDATE (EJEMPLOS):

Actualiza columnas en registros de tabla existentes con nuevos valores. la cláusula set indica qué columna modificar y los valores que puede recibir. la cláusula where , si se da, especifica qué registros deben actualizarse. de otro modo, se actualizan todos los registros. si la cláusula order by se especifica, los registros se actualizan en el orden que se especifica. la cláusula limit es el límite de registros a actualizar.

el comando update soporta los siguientes modificadores:

• si usa la palabra clave low_priority , la ejecución de update se retrasa hasta que no haya otros clientes leyendo de la tabla.

• si usa la palabra clave ignore, el comando de actualización no aborta incluso si ocurren errores durante la actualización. los registros que presenten conflictos de clave duplicada no se actualizan. los registros cuyas columnas se actualizan a valores que provocarían errores de conversión de datos se actualizan al valor válido más próximo.

si accede a una columna de tbl_name en una expresión, update usa el valora ctual de la columna. por ejemplo, el siguiente comando pone la columna age a uno más que su valor actual:

mysql> update persondata set age=age+1;

las asignaciones update se avalúna de izquierda a derecha. por ejemplo, el siguiente comando dobla la columna age y luego la incrementa:

mysql> update persondata set age=age*2, age=age+1;

si pone en una columna el valor que tiene actualmente, mysql se da cuenta y no la actualiza.

si actualiza una columna declarada como not null con un valor null, la columna recibe el valor por defecto apropiado para el tipo de la columna y se incrementa el contador de advertencias. el valor por defecto es 0 para tipos numéricos, la cadena vacía ('') para tipos de cadena, y el valor “cero” para valores de fecha y hora.

update retorna el número de registros que se cambian. en mysql 5.0, la función mysql_info() de la api de c retorna el número de registros coincidentes actualizados y el número de advertencias que ocurren durante el update.

11: DELETE (EJEMPLOS):

Borra los registros de tbl_name que satisfacen la condición dada por where_definition, y retorna el número de registros borrados.

si realiza un comando delete sin cláusula where se borran todos los registros. una forma más rápida de hacerlo, cuando no quiere saber el número de registros borrados, se usa truncate table

el comando delete soporta los siguientes modificadores:

• si especifica low_priority, la ejecución de delete se retarda hasta que no hay más clientes leyendo de la tabla.

• para tablas myisam , si usa la palabra quick , el motor de almacenamiento no mezcla las hojas del índice durante el borrado, que puede acelerar algunos tipos de operaciones de borrado.

• en mysql 5.0, la palabra clave ignore hace que mysql ignore todos los errores durante el proceso de borrar registros. (los errores encontrados durante la etapa de parseo se procesan de la forma habitual.) los errores que se ignoran debido al uso de esta opción se retornan como advertencias

12: DROP (EJEMPLOS)

Este comando elimina un objeto de la base de datos. Puede ser una tabla, vista, índice, trigger, función, procedimiento o cualquier otro objeto que el motor de la base de datos soporte. Se puede combinar con la sentencia ALTER.

DROP INDEX elimina el índice con el nombre 'index_name' de la tabla 'tbl_name'. En MySQL 3.22 y posteriores, DROP INDEX se mapea como una sentencia para eliminar el índice. DROP INDEX no hace nada en versiones anteriores a MySQL 3.22.

EJEMPLO

DROP INDEX index_name ON tbl_name

13: FUNCIONES DE GRUPO (TODAS)

Funciones de Grupo (I)

• AVG: Para saber la medida de los valores de campos específicos en cada grupo

([DISTINCT
ALL] n)

o Valor promedio de n.

• COUNT: Contar el número de líneas que entran en cada grupo

({*
[DISTINCT
ALL
] expr})

o Cantidad de filas con expr no nulo. Con * se cuentan todas las filas incluyendo duplicadas y valores nulos.

• MAX ([DISTINCT
ALL] expr)

o Valor máximo de expr.

• MIN ([DISTINCT
ALL] expr)

o Valor mínimo de expr., ignorando los valores nulos.

Funciones de Grupo (II)

• STDDEV ([DISTINCT
ALL] n)

o Desviación estándar de n, ignorando los valores nulos.

• SUM ([DISTINCT
ALL] n)

o Suma los valores de n, ignorando los valores nulos.

• VARIANCE ([DISTINCT
ALL] n)

o Varianza de n, ignorando los valores nulos

• Estas funciones no se pueden usar en la cláusula WHERE.

14: MYISAM:

Es la tecnología de almacenamiento de datos usada por defecto por el sistema administrador de bases de datos relacionales MySQL. Este tipo de tablas están basadas en el formato ISAM pero con nuevas extensiones. En las últimas versiones de MySQL, el motor InnoDB está empezando a reemplazar a este tipo de tablas por su capacidad de ejecutar transacciones de tipo ACID y bloqueo de registros e integridad referencial.

Cada tabla de tipo MyISAM se guarda en tres archivos. Los archivos tienen el nombre de la tabla y una extensión que indica el tipo de archivo,

• .frm almacena la definición de la tabla

• .MYD (MyData) contiene los registros de la tabla

• .MYI (MyIndex) contiene los índices de la tabla

Para : especificar que deseas usar el tipo de tablas MyISAM, se indica con la opción ENGINE al crear la tabla o modificarla, por ejemplo

CREATE TABLE t (i INT) ENGINE = MYISAM;

La principal característica de este tipo de almacenamiento es la gran velocidad que obtiene en las consultas, ya que no tiene que hacer comprobaciones de la integridad referencial, ni bloquear las tablas para realizar las operaciones por la ausencia de características de atomicidad. Este tipo de tablas está especialmente indicado para sistemas que no tienen un número elevado de inserciones como pueden ser las páginas web.

15: INNODB:

Es una tecnología de almacenamiento de datos de código abierto para la base de datos MySQL, incluido como formato de tabla estándar en todas las distribuciones de MySQL AB a partir de las versiones 4.0. Su característica principal es que soporta transacciones de tipo ACID y bloqueo de registros e integridad referencial. InnoDB ofrece una fiabilidad y consistencia muy superior a MyISAM, la anterior tecnología de tablas de MySQL, si bien el mejor rendimiento de uno u otro formato dependerá de la aplicación específica.

Comparación con MyISAM

MyISAM es la alternativa habitual a InnoDB a la hora de escoger la tecnología de almacenamiento de datos en MySQL. Estas son algunas de las diferencias entre los dos:

• InnoDB se recupera de un problema volviendo a ejecutar sus logs, mientras que MyISAM necesita repasar todos los índices y tablas que hayan sido actualizados y reconstruirlos si esos cambios no han sido escritos en disco. El primer proceso requiere más o menos el mismo tiempo siempre, mientras que el segundo aumenta con el tamaño de la base de datos.

• MyISAM deja al sistema operativo la tarea de hacer la caché de las lecturas y escrituras de los registros, mientras que InnoDB realiza él mismo la tarea, combinando cachés de registro y de índice. InnoDB no envía directamente los cambios en las tablas al sistema operativo para que las escriba, lo que puede hacerlo mucho más rápido que MyISAM en ciertos escenarios.

• InnoDB almacena físicamente los registros en el orden de la clave primaria, mientras que MyISAM los guarda en el orden en que fueron añadidos. Cuando la clave primaria se escoge de acuerdo con las necesidades de las consultas más habituales esto puede suponer una mejora sustancial del rendimiento. Por otro lado, si los datos se insertan en un orden que difiera sustancialmente del orden de la clave primaria, se obliga a InnoDB a reordenar mucho los datos para mantenerlos en el orden adecuado.

• InnoDB no dispone de la compresión de datos de la que disfruta MyISAM, de modo que tanto el espacio en disco como la caché en la memoria RAM pueden ser más grandes. Este problema se ha reducido en MySQL 5.0, reduciéndolo en aproximadamente un 20%.

• Cuando opera con transacciones ACID, InnoDB debe escribir en disco al menos una vez por cada transacción, aunque puede combinar las escrituras de varias inserciones concurrentes. Para los discos duros típicos, esto supone un límite de aproximadamente 200 transacciones por segundo, por lo que aumentarlas exige controladores de disco con caché de escritura y sistema de alimentación ininterrumpido para mantener la integridad. InnoDB ofrece diversos modos de funcionamiento que reducen este efecto, pero conllevan una pérdida de integridad transaccional. MyISAM no tiene ese problema porque no soporta transacciones.


16: INSERT (EJEMPLOS):

Una sentencia INSERT de SQL agrega uno o más registros a una (y sólo una) tabla en una base de datos relacional.

Forma básica

INSERT INTO ''tabla'' (''columna1'', [''columna2,... '']) VALUES (''valor1'', [''valor2,...''])

Las cantidades de columnas y valores deben ser iguales. Si una columna no se especifica, le será asignado el valor por omisión. Los valores especificados (o implícitos) por la sentencia INSERT deberán satisfacer todas las restricciones aplicables. Si ocurre un error de sintaxis o si alguna de las restricciones es violada, no se agrega la fila y se devuelve un error.

Ejemplo

INSERT INTO agenda_telefonica (nombre, numero) VALUES ('Roberto Jeldrez', 4886850);
Cuando se especifican todos los valores de una tabla, se puede utilizar la sentencia acortada:
INSERT INTO ''tabla'' VALUES (''valor1'', [''valor2,...''])

Ejemplo (asumiendo que 'nombre' y 'número' son las únicas columnas de la tabla 'agenda_telefonica'):

INSERT INTO agenda_telefonica VALUES ('Roberto Jeldrez', 4886850);


17: WHERE (EJEMPLOS):

Es aquí donde debemos proponer la condición que han de cumplir todas las filas para salir en el resultado de la consulta. La complejidad del criterio de búsqueda es prácticamente ilimitada, y en él se pueden conjugar operadores de diversos tipos con funciones de columnas, componiendo expresiones más o menos complejas.

Operadores de Comparación

Operador Operación Ejemplo

= Igualdad select * from emp where cod_dep = 100;

!=, <>, ^= Desigualdad select * from emp where cod_dep != 100;

< Menor que select * from emp where cod_dep < 200;

> Mayor que select * from emp where cod_dep > 200;

<= Menor o igual que select * from emp where cod_dep <= 200;

>= Mayor o igual que select * from emp where cod_dep >= 200;

in Igual a cualquiera de los miembros entre paréntesis select * from emp where cod_dep in (100, 300);

not in Distinto a cualquiera de los miembros entre paréntesis select * from emp where cod_dep not in (200);

between Contenido en el rango select * from emp where cod_emp between 100 and 199;

not between Fuera del rango select * from emp where cod_emp not between 100 and 199;

like '_abc%' Contiene la cadena 'abc' a partir del segundo carácter y luego cualquier cadena de caracteres select * from emp where nombre like 'Ma%';

Operadores de Aritméticos

Operador Operación Ejemplo

+ Suma select nombre, salario+comision from emp where oficio='VENDEDOR';

- Resta select nombre from emp where sysdate-fecha_alta > 365;

* Producto select nombre, salario*12 from emp;

/ División select nombre, salario/31 from emp;

Operadores de Cadenas de Caracteres

Operador Operación Ejemplo

Concatenación select nombre

oficio from emp;



18: PARA QUE SIRVEN LAS BASES DE DATOS:

una base de datos es un sistema de información que permite realizar los siguientes procesos:

1: creacion de las estructuras de informacion:TABLAS

2: busqueda de información en las tablas: CONSULTAS

3: captura de datos para las tablas:FORMULARIOS

4: resumen de información: INFORMES

5: ejecucion de lista de acciones:MACROS:y descripcion de procesos complejos:MODULOS

19: BASES DE DATOS RELACIONALES:

Éste es el modelo utilizado en la actualidad para modelar problemas reales y administrar datos dinámicamente. Tras ser postulados sus fundamentos en 1970 por Edgar Frank Codd, de los laboratorios IBM en San José (California), no tardó en consolidarse como un nuevo paradigma en los modelos de base de datos. Su idea fundamental es el uso de "relaciones". Estas relaciones podrían considerarse en forma lógica como conjuntos de datos llamados "tuplas". Pese a que ésta es la teoría de las bases de datos relacionales creadas por Codd, la mayoría de las veces se conceptualiza de una manera más fácil de imaginar. Esto es pensando en cada relación como si fuese una tabla que está compuesta por registros (las filas de una tabla), que representarían las tuplas, y campos (las columnas de una tabla).

En este modelo, el lugar y la forma en que se almacenen los datos no tienen relevancia (a diferencia de otros modelos como el jerárquico y el de red). Esto tiene la considerable ventaja de que es más fácil de entender y de utilizar para un usuario esporádico de la base de datos. La información puede ser recuperada o almacenada mediante "consultas" que ofrecen una amplia flexibilidad y poder para administrar la información.

El lenguaje más habitual para construir las consultas a bases de datos relacionales es SQL, Structured Query Language o Lenguaje Estructurado de Consultas, un estándar implementado por los principales motores o sistemas de gestión de bases de datos relacionales.

Durante su diseño, una base de datos relacional pasa por un proceso al que se le conoce como normalización de una base de datos.

20: BACKUP DE UNA BASE DE DATOS:

Una copia de seguridad completa de la base de datos crea una copia de seguridad de toda la base de datos, que incluye parte del registro de transacciones para que se pueda recuperar la copia de seguridad completa de la base de datos. Las copias de seguridad completas representan la base de datos en el momento en que finalizó la copia de seguridad.

Las copias de seguridad de bases de datos son fáciles de utilizar. Una copia de seguridad completa de una base de datos contiene todos los datos de la base de datos. Para las bases de datos pequeñas, de las que se puede hacer una copia de seguridad con rapidez, la práctica recomendada es utilizar copias de seguridad completas de la base de datos. Sin embargo, a media que la base de datos aumenta de tamaño, las copias de seguridad completas requieren una mayor cantidad de tiempo y espacio de almacenamiento. Por ello, para una base de datos grande, puede que desee complementar las copias de seguridad completas con copias de seguridad diferenciales.

El siguiente ejemplo muestra cómo crear una copia de seguridad completa de la base de datos mediante WITH FORMAT para sobrescribir cualquier copia de seguridad existente y crear un nuevo conjunto de medios.

Modelo de recuperación simple:

-- Back up the AdventureWorks2008R2 database to new media set.

BACKUP DATABASE AdventureWorks2008R2

TO DISK = 'Z:\SQLServerBackups\AdventureWorks2008R2SimpleRM.bak'

WITH FORMAT;

GO

21: REALIZAR UNA TABLA EN EXCEL CON TODOS LOS TIPOS DE DATOS DE MYSQL:



22: HACER UN EJEMPLO DE UN MODELO ENTIDAD RELACION:






23: HACER UN EJEMPLO DE UN DICCIONARIO DE DATOS CON MINIMO 3 TABLAS:

es importante tomar en cuenta que el diccionario de datos es justamente eso diccionario es decir debe describir que significa la informacion que se esta manejando, es cierto que debe contener el nombre el tipo de datos la longitud, etc pero lo que lo hace diccionario es el significado que le demos en nuestra logica de negocio, Ejm.

Tramites.- lugar donde se almacena los tramites del sistema, comprende:

codigo.- es el codigo que maneja la empresa

estado.- indica si el tramite esta iniciado (IN), pendiente(PE) o terminado(TE).





24: DEFINIR NORMALIZACION DE BASES DE DATOS (1FN, 2FN, 3FN):

Que son:?

La normalización de bases de datos relacionales toma un esquema relacional y le aplica un conjunto de técnicas para producir un nuevo esquema que representa la misma información pero contiene menos redundancias y evita posibles anomalías en las inserciones, actualizaciones y borrados.



Sobre las tablas relacionales se pueden definir diferentes restricciones. La integridad de entidad es una restricción que nos indica que cada entidad representada por una tupla tiene que ser diferente de las demás en su relación, es decir, debe haber algunos atributos cuyos valores identifiquen unívocamente las tuplas. La integridad referencial indica que una clave ajena solo debe contener valores que o bien sean nulos, o bien existan en la relación referenciada por la clave ajena.

1FN

Una tabla está en Primera Forma Normal si:

• Todos los atributos son atómicos. Un atributo es atómico si los elementos del dominio son indivisibles, mínimos.

• La tabla contiene una clave primaria.

• La clave primaria no contiene atributos nulos.

• No debe de existir variación en el número de columnas.

• Los Campos no clave deben identificarse por la clave (Dependencia Funcional)

Una tupla no puede tener múltiples valores en cada columna. Los datos son atómicos. (Si a cada valor de X le pertenece un valor de Y y viceversa)

Esta forma normal elimina los valores repetidos dentro de una BD.

2FN

Dependencia Funcional. Una relación está en 2FN si está en 1FN y si los atributos que no forman parte de ninguna clave dependen de forma completa de la clave principal. Es decir que no existen dependencias parciales. (Todos los atributos que no son clave principal deben depender únicamente de la clave principal).

En otras palabras podríamos decir que la segunda forma normal está basada en el concepto de dependencia completamente funcional. Por ejemplo {DNI, ID_PROYECTO} HORAS_TRABAJO (con el DNI de un empleado y el ID de un proyecto sabemos cuántas horas de trabajo por semana trabaja un empleado en dicho proyecto) es completamente dependiente dado que ni DNI HORAS_TRABAJO ni ID_PROYECTO HORAS_TRABAJO mantienen la dependencia. Sin embargo {DNI, ID_PROYECTO} NOMBRE_EMPLEADO es parcialmente dependiente dado que DNI NOMBRE_EMPLEADO mantiene la dependencia.

3FN

La tabla se encuentra en 3FN si es 2FN y si no existe ninguna dependencia funcional transitiva entre los atributos que no son clave.

Un ejemplo de este concepto sería que, una dependencia funcional X->Y en un esquema de relación R es una dependencia transitiva si hay un conjunto de atributos Z que no es un subconjunto de alguna clave de R, donde se mantiene X->Z y Z->Y.

Por ejemplo, la dependencia SSN->DMGRSSN es una dependencia transitiva en EMP_DEPT de la siguiente figura. Decimos que la dependencia de DMGRSSN el atributo clave SSN es transitiva vía DNUMBER porque las dependencias SSN→DNUMBER y DNUMBER→DMGRSSN son mantenidas, y DNUMBER no es un subconjunto de la clave de EMP_DEPT. Intuitivamente, podemos ver que la dependencia de DMGRSSN sobre DNUMBER es indeseable en EMP_DEPT dado que DNUMBER no es una clave de EMP_DEPT.

Formalmente, un esquema de relacion R está en 3 Forma Normal Elmasri-Navathe,2 si para toda dependencia funcional , se cumple al menos una de las siguientes condiciones:

1. X es superllave o clave.

2. A es atributo primo de R; esto es, si es miembro de alguna clave en R.

Además el esquema debe cumplir necesariamente, con las condiciones de segunda forma normal.

No hay comentarios:

Publicar un comentario