lunes, 26 de noviembre de 2012

Procedimientos almacenados y disparadores (trigger)


Disparador
Un disparador (o trigger) es un tipo especial de procedimiento almacenado asociado a una tabla que se ejecuta al realizar una operación “básica” (INSERT, un DELETE o un UPDATE) sobre ésta.
La instrucción que permite la creación de un trigger es:
CREATE TRIGGER
 y su sintaxis es la siguiente:
CREATE TRIGGER Nombre_del_Trigger ON Nombre_de_la_tabla FOR {INSERT,UPDATE,DELETE} AS (Sentecias_SQL)

Las ventajas de usar los Triggers son:
·         La entrada en vigor automática de restricciones de los datos, hace que los usuarios entren sólo valores válidos.
·         El mantenimiento de la aplicación se reduce, los cambios a un triggers se refleja automáticamente en todas las aplicaciones que tienen que ver con la tabla sin la necesidad de recompilar o relinquear.


Ejemplo 1



Ejemplo 2


Ejemplo 3                 



Procedimientos Almacenados
Un procedimiento es un subprograma que ejecuta una acción específica y que no devuelve ningún valor. Un procedimiento tiene un nombre, un conjunto de parámetros (opcional) y un bloque de código.

La sintaxis de dicha instrucción es básicamente la siguiente:
CREATE PROCEDURE Nombre_del_procedimiento [Lista_de_parámetros] AS (Sentencias SQL)[RETURN [Valor]]



Cursores


¿Cuándo  debemos usar cursores?
Los cursores se utilizan para manejar las sentencias SELECT. Un cursor esta formado por un conjunto de registros devueltos por una instrucción SQL del tipo SELECT. Desde un punto de visto interno a la base de datos, los cursores son segmentos de memoria utilizados para realizar operaciones con los registros devueltos tras ejecutar una sentencia SELECT.
 Hay que usarlos cuando no haya otra forma de manipular conjuntos de datos en una sola instrucción.

¿Como crear y  llamar un proceso en mysql?
Los procedimientos almacenados y rutinas se crean con comandos CREATE PROCEDURE y CREATE FUNCTION .
Un procedimiento se invoca usando un comando CALL , y sólo puede pasar valores usando variables de salida
Sintaxis:
CREATE PROCEDURE nombre_del_procedimiento ([parámetros[,...]]) [characteristicas ...] cuerpo

¿Como crear una función en mysql?
Se crean con el comando CREATE FUNCTION .
Una función puede llamarse desde dentro de un comando como cualquier otra función (esto es, invocando el nombre de la función), y puede retornar un valor escalar.
Hay dos formas de añadir nuevas funciones a MySQL:
•Puede añadir funciones con la interfaz de funciones definidas de usuario (UDF) (N.del T. Acrónimo para User Defined Functions). Las funciones definidas por el usuario se ocmpilan como ficheros objeto y se añaden y borran del servidor dinámicamente usando los comandos CREATE FUNCTION y DROP FUNCTION .
•Puede añadir funciones como funciones nativas MySQL. Se compilan en el servidor mysqld y están disponibles permanentemente

Como crear y ejecutar un procedimiento






lunes, 12 de noviembre de 2012

Cuestionario: Transacciones


¿Qué es una transacción?
Una transacción es una unidad de la ejecución de un programa que lee y escribe datos a y desde la Base de Datos. Puede consistir en varias operaciones de acceso a la base de datos. Una Transacción está delimitada por instrucciones de inicio transacción y fin transacción (la transacción consiste en todas las operaciones que se ejecutan entre inicio transacción y fin transacción).
¿Qué significa ACID? y defina cada una de las palabras que forman las siglas
Una unidad lógica de trabajo debe exhibir cuatro propiedades, conocidas como propiedades ACID (atomicidad, coherencia, aislamiento y durabilidad), para ser calificacada como transacción.
¿Qué significa Tx?
Transaccion
¿Para que nos sirve el Rollback?
Señala el final sin éxito de una transacción, elimina todas las modificaciones de datos realizadas desde el inicio de la transacción y también libera los recursos que retiene la transacción.
Defina Integridad de datos
Hace referencia a que todas las características de los datos (reglas, definiciones, fechas, etc) deben ser correctos para que los datos estén completos.
Defina concurrencia
La concurrencia es la propiedad de los sistemas que permiten que múltiples procesos sean ejecutados al mismo tiempo, y que potencialmente puedan interactuar entre sí
Defina Grado de consistencia
Podría definirse como la coherencia entre todos los datos de la base de datos. Cuando se pierde la integridad también se pierde la consistencia. Pero la consistencia también puede perderse por razones de funcionamiento.

Mencione aspectos relacionados al procesamiento de transacciones
Modelo de estructura de transacciones: Considerar si las transacciones son planas o anidadas.
Consistencia de la base de datos interna. Los algoritmos de control de datos semántico tienen que satisfacer siempre las restricciones de integridad cuando una transacción pretende hacer un commit.

Protocolos de confiabilidad. En transacciones distribuidas es necesario introducir medios de comunicación entre los diferentes nodos de una red para garantizar la atomicidad y durabilidad de las transacciones. Así también, se requieren protocolos para la recuperación local y para efectuar los compromisos (commit) globales.

Algoritmos de control de concurrencia. Los algoritmos de control de concurrencia deben sincronizar la ejecución de transacciones concurrentes bajo el criterio de correctitud. La consistencia entre transacciones se garantiza mediante el aislamiento de las mismas.

Protocolos de control de réplicas. El control de réplicas se refiere a cómo garantizar la consistencia mutua de datos replicados. Por ejemplo se puede seguir la estrategia read-one-write-all (ROWA).
Defina los estados de una transacción:
Activa (Active):
El estado inicial la transacción permanece en este estado durante su ejecución
Parcialmente comprometida (Uncommited)
Después de ejecutarse la última transacción.
Fallida (Failed):
tras descubrir que no se puede continuar la ejecución normal.
Abortada (Rolled Back):
Después de haber retrocedido la transacción y restablecido la base de datos a su estado anterior al comienzo de la transacción.
Comprometida (Commited
Tras completarse con éxito.
El estándar ANSI/ISO SQL define cuatro niveles de aislamiento transaccional en función de tres eventos que son permitidos o no dependiendo del nivel de aislamiento. Estos eventos son:
Lectura sucia. Las sentencias SELECT son ejecutadas sin realizar bloqueos, pero podría usarse una versión anterior de un registro. Por lo tanto, las lecturas no son consistentes al usar este nivel de aislamiento.

Lectura no repetible. Una transacción vuelve a leer datos que previamente había leído y encuentra que han sido modificados o eliminados por una transacción cursada.
Lectura fantasma. Una transacción vuelve a ejecutar una consulta, devolviendo un conjuntó de registros que satisfacen una condición de búsqueda y encuentra que otros registro que satisfacen la condición han sido insertadas por otra transacción cursada.


Creacion & Privilegios de Usuarios




jueves, 20 de septiembre de 2012

Bases Datos: Prestamos


Logo


                                       
                                   Mysql



                                                                             
                              Access





martes, 11 de septiembre de 2012


ALTER

Este comando permite modificar la estructura de un objeto- Se pueden agregar / quitar campos a una tabla, modificar el tipo de un campo, agregar / quitar índices a una tabla, modificar un trigger, etc.

Ejemplo 1 (agregar columna a una tabla):

ALTER TABLE TABLA NOMBRE (

ADD NUEVO_ CAMPO INT UNSIGNED)

DROP

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.

Ejemplo 1:

DROP TABLE TABLA_NOMBRE

Ejemplo 2:

ALTER TABLE TABLA_NOMBRE

(DROP COLUMN CAMPO_NOMBRE 1)

Referencias

EJEMPLO :






miércoles, 5 de septiembre de 2012


                                            INVESTIGACION

Motor de base de datos
El Motor de base de datos es el servicio principal para almacenar, procesar y proteger los datos. El Motor de base de datos proporciona acceso controlado y procesamiento de transacciones rápido para cumplir con los requisitos de las aplicaciones consumidoras de datos más exigentes de su empresa. 
Use Motor de base de datos para crear bases de datos relacionales para el procesamiento de transacciones en línea o datos de procesamiento analíticos en línea. Se pueden crear tablas para almacenar datos y objetos de base de datos como índices, vistas y procedimientos almacenados para ver, administrar y proteger los datos.Puede usar SQL Server Management Studio para administrar los objetos de bases de datos y SQL Server Profiler para capturar eventos de servidor. 
 
MyISAM
MyISAM es el motor de almacenamiento por defecto. Se basa en el código ISAM pero tiene muchas extensiones útiles. (Tenga en cuenta que MySQL 5.0 no soportaISAM.) 
Cada tabla MyISAM se almacena en disco en tres ficheros. Los ficheros tienen nombres que comienzan con el nombre de tabla y tienen una extensión para indicar el tipo de fichero. Un fichero .frm almacena la definición de tabla. El fichero de datos tiene una extensión .MYD (MYData) . El fichero índice tiene una extensión .MYI(MYIndex) . 
Para especificar explícitamente que quiere una tabla MyISAM, indíquelo con una opción ENGINE: 

CREATE TABLE t (i INT) ENGINE = MYISAM;
(Nota: Antiguas versiones de MySQL usaban TYPE en lugar de ENGINE (por ejemplo: TYPE = MYISAM). MySQL 5.0 soporta esta sintaxis para compatibilidad con versiones anteriores pero TYPE está obsoleto y ahora se usa ENGINE .) 
Normalmente, la opción ENGINE no es necesaria; MyISAM es el motor de almacenamiento por defecto a no ser que se cambie. 

MyISAM soporta las siguientes características: 
·         Soporte de un tipo VARCHAR auténtico; una columna VARCHAR comienza con la longitud almacenada en dos bytes. 
·         Tablas con VARCHAR pueden tener longitud de registro fija o dinámica. 
·         VARCHAR y CHAR pueden ser de hasta 64KB. 
·         Un índice hash puede usarse para UNIQUE. Esto le permite tener UNIQUE o cualquier combinación de columnas en una tabla . (Sin embargo, no puede buscar en un índice UNIQUE .)       

INNOBD
InnoDB es una tecnología de almacenamiento de datos de fuente abierta para 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.
Ventajas: InnoDB
·         Soporte de transacciones
·         Bloqueo de registros
·         Nos permite tener las características ACID (Atomicity, Consistency, Isolation and Durability: Atomicidad, Consistencia, Aislamiento y Durabilidad en español), garantizando la integridad de nuestras tablas.
·         Es probable que si nuestra aplicación hace un uso elevado de INSERT y UPDATE notemos un aumento de rendimiento con respecto a MyISAM.
 
Transacciones ACID
ACID es un conjunto de características o propiedades que garantizan que las transacciones en una base de datos son fiables. En el contexto de bases de datos, una transacción es una única operación sobre los datos.

Un ejemplo de una transacción más compleja es la transferencia de fondos de una cuenta a otra, la cual implica múltiples operaciones individuales.

Si un sistema supera la prueba ACID, significa que es fiable.


Propiedades ACID

* Atomicidad: cualquier cambio de estado que produce una transacción es atómico. Es decir, ocurren todos o no ocurre ninguno. En otras palabras, esta propiedad asegura que una operación se realiza o no se realiza, por lo tanto no puede quedar el sistema a medias.

* Consistencia: propiedad que asegura que una transacción no romperá con la 
integridad de una base de datos, pues respeta todas las reglas y directrices de ésta.

* Aislamiento: propiedad que asegura que no se afectarán entre sí las transacciones. En otras palabras, dos o más transacciones sobre los mismos datos no generarán un problema.

* Durabilidad: propiedad que asegura la persistencia de una transacción, es decir, una vez que la transacción quedó aceptada no podrá deshacerse aunque falle el sistema

Diferencias entre MyISAM y InnoDB
MyISAM, en la mayoría de los casos será más rápido que InnoDB en selecciones, actualizaciones e inserciones bajo circunstancias normales.
InnoDB también es un motor de almacenamiento ágil, pero se destaca porque incorpora características como bloqueo a nivel filas, transacciones y diseño de tablas relacionales. Aunque la primera de las características nombradas solo se destaca en tablas que son “martilladas” constantes, como por ejemplo una tabla de logs, para el resto de los casos, un bloqueo a nivel tabla es suficiente en condiciones normales.
InnoDB se recupera de errores o reinicios no esperados del sistema a partir de sus logs, mientras que MyISAM requiere una exploración, reparación y reconstrucción de índices de los datos de las tablas que aun no habían sido volcadas a disco