Está en la página 1de 28

MODELO ENTIDAD

RELACION
Que es una vista
• Una vista es una tabla virtual generada a partir de la ejecución
de varias consultas sobre una o más tablas. Los datos que se
recuperan mediante una consulta a una vista se presentarán
igual que los de una tabla.
Finalidad
• Las vistas suelen usarse para centrar, simplificar y personalizar
la percepción de la base de datos para cada usuario.
• Las vistas pueden emplearse como mecanismos de seguridad,
que permiten a los usuarios obtener acceso a los datos por
medio de la vista.
Como se crea una vista
• La sentencia CREATE VIEW permite crear una vista. Asigna a
la vista un nombre y especifica la consulta que define la vista.
La creación de una vista implica el tener permiso de acceso a
todas las tablas referenciadas en la consulta.

• Ejemplo
CREATE VIEW vista AS
SELECT campo1, campo2, ... , campoN
FROM tabla
WHERE campo1=valor AND campo2='texto'
Normalización
• La normalización es el proceso de organizar los datos de una base de
datos. Se incluye la creación de tablas y el establecimiento de relaciones
entre ellas según reglas diseñadas tanto para proteger los datos como
para hacer que la base de datos sea más flexible al eliminar la
redundancia y las dependencias incoherentes.
• Los datos redundantes desperdician el espacio de disco y crean
problemas de mantenimiento. Si hay que cambiar datos que existen en
más de un lugar, se deben cambiar de la misma forma exactamente en
todas sus ubicaciones. Un cambio en la dirección de un cliente es
mucho más fácil de implementar si los datos sólo se almacenan en la
tabla Clientes y no en algún otro lugar de la base de datos.
1ra Forma Normal
• Elimine los grupos repetidos de las tablas individuales.
• Cree una tabla independiente para cada conjunto de datos
relacionados.
• Identifique cada conjunto de datos relacionados con una clave
principal.
• No use varios campos en una sola tabla para almacenar datos
similares.
2da Forma Normal
• Cree tablas independientes para conjuntos de valores que se apliquen
a varios registros.
• Relacione estas tablas con una clave externa.
• Los registros no deben depender de nada que no sea una clave
principal de una tabla, una clave compuesta si es necesario
3ra Forma Normal
• Elimine los campos que no dependan de la clave.
• Los valores de un registro que no sean parte de la clave de ese
registro no pertenecen a la tabla. En general, siempre que el
contenido de un grupo de campos pueda aplicarse a más de un único
registro de la tabla, considere colocar estos campos en una tabla
independiente.
Que es un Trigger?
• Un trigger, también conocido como disparador (Por su traducción al
español) es un conjunto de sentencias SQL las cuales se ejecutan de
forma automática cuando ocurre algún evento que modifique a una
tabla. Pero no me refiero a una modificación de estructura, no, me
refiero a una modificación en cuando a los datos almacenados, es
decir, cuando se ejecute una sentencia INSERT, UPDATE o DELETE.
• Lo interesante aquí es que podemos programar los triggers de tal
manera que se ejecuten antes o después, de dichas sentencias;
Dando como resultado seis combinaciones de eventos.
Combinaciones
• BEFORE INSERT Acciones a realizar antes de insertar uno más o registros en una tabla.
• AFTER INSERT Acciones a realizar después de insertar uno más o registros en una
tabla.
• BEFORE UPDATE Acciones a realizar antes de actualizar uno más o registros en una
tabla.
• AFTER UPDATE Acciones a realizar después de actualizar uno más o registros en una
tabla.
• BEFORE DELETE Acciones a realizar antes de eliminar uno más o registros en una tabla.
• AFTER DELETE Acciones a realizar después de eliminar uno más o registros en una
tabla.
Ventajas
• Con los triggers seremos capaces validar todos aquellos valores los
cuales no pudieron ser validados mediante un constraints,
asegurando así la integridad de los datos.
• Los triggers nos permitirán ejecutar reglas de negocios.
• Utilizando la combinación de eventos nosotros podemos realizar
acciones sumamente complejas.
• Los trigger nos permitirán llevar un control de los cambios realizados
en una tabla. Para esto nos debemos de apoyar de una segunda tabla
(Comúnmente una tabla log).
Desventajas
• Los triggers al ejecutarse de forma automática puede dificultar llevar
un control sobre qué sentencias SQL fueron ejecutadas.
• Los triggers incrementa la sobrecarga del servidor. Un mal uso de
triggers puede tornarse en respuestas lentas por parte del servidor.
Como se crea un Trigger
• CREATE TRIGGER NTABLA_(A/B)(I/D/U)
• EJECUTAR ACCION ON NTABLA
• FOR EACH ROW/STATEMENT
• INSERT INTO REG_TABLA(DATO) VALUES (NEW.DATO)

• PARA BORRAR UN TRIGGER:


• DROP TRIGGER NOMBRE_TRIGGER
Indices
• Los índices de las tablas ayudan a indexar el contenido de diversas columnas para facilitar la
búsquedas de contenido de cuando se ejecutan consultas sobre esas tablas.
• De ahí que la creación de índices optimiza el rendimiento de las consultas y a su vez el de la
BBDD.
• ¿Qué tipo de índices hay?
• Podemos tener los siguientes tipos de índices en una tabla de MySQL:
• Únicos
• Primarios
• Ordinarios
• De texto completo
• Parte de campos o columnas
Sintaxis de la sentencia de MySQL CREATE INDEX

• CREATE [ONLINE|OFFLINE] [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name


• [index_type]
• ON tbl_name (index_col_name,...)
• [index_option] ...

• CREATE INDEX nombre_indice ON nombrede_tabla(columna [columna2...]);

• Con el código superior CREATE INDEX estaríamos creando uno o varios índices


ordinarios en una tabla existente.
Tipos de Indices
• Índice único (UNIQUE, ADD UNIQUE)
• Un índice único no permite la inserción los valores duplicados en dicha columna
que marquemos como único. S puede aplicar a varias columnas.

• CREATE TABLE nombre_de_la_tabla (nombre_columna1, nombre columna 2...)


• UNIQUE [nombre_indice] (nombre_columna)

• ALTER TABLE nombre_de_la_tabla ADD UNIQUE [nombre_indice]


(nombre_columna, [bombre_columna2]...);
• Índice Primario (PRIMARY KEY)
• Un índice primario es también conocido como Primary KEY,  permite
crear un índice en cuyo valor es único y no puede ser NULL. Solo
puede haber un índice primario por tabla.

• CREATE TABLE nombre_de_la_tabla (nombre_columna1, nombre


columna 2...)
• PRIMARY KEY (nombre_columna)

• ALTER TABLE nombre_de_la_tabla ADD PRIMARY KEY


(nombre_columna);
• Índice Ordinario (ADD INDEX)
• Este tipo de índice en MySQL permite le existencia o inserción de
valores duplicados en una tabla. Con este tipo solamente mejoramos
la ejecución y rendimiento de las consultas (Que no es poco).

• CREATE TABLE nombre_de_la_tabla (nombre_columna1, nombre


columna 2...)
• INDEX (nombre_columna, [bombre_columna2]...)

• ALTER TABLE nombre_de_la_tabla ADD INDEX [nombre_indice]


(nombre_columna, [bombre_columna2]...);
• Índices de texto completo (FULLTEXT)
• Estos índices FULLTEXT o de texto completo se usan en tablas del tipo
MyISAM, se debe relacionar con columnas de tipo TEXT, CHAR o VARCHAR.
• Optimizan el rendimiento de las consultas con búsquedas en tablas con gran
información de campos de texto.

• CREATE TABLE nombre_de_la_tabla (nombre_columna1, nombre columna


2...)
• FULLTEXT (nombre_columna, [bombre_columna2]...)

• ALTER TABLE nombre_de_la_tabla ADD FULLTEXT [nombre_indice]


(nombre_columna, [bombre_columna2]...);
• Índices con parte de campos o columnas
• Similar al índice anterior FULLTEXT pero solamente cogiendo parte del contenido de
la columna. Este tipo de índices aligeran las consultas sobre campos de textos. Por
ejemplo si realizamos búsquedas sobre tablas de nombres o apellidos con
seleccionar los primeros caracteres nos valdría para realizar la comparación. Estos
índices se definen seleccionando los primeros X caracteres de la columna.

• CREATE TABLE nombre_de_la_tabla (nombre_columna1, nombre columna 2...)


• INDEX (nombre_columna(X), [bombre_columna2(X)]...)

• ALTER TABLE nombre_de_la_tabla ADD INDEX (nombre_columna(X),


[bombre_columna2(X)]...);
Transacciones

• Las transacciones de bases de datos permiten agrupar


sentencias (por ejemplo SQL) en bloques, que van a ser
ejecutados simultáneamente de tal forma que podamos
evaluar si alguna de las sentencias ha fallado y de ser así
poder deshacer los cambios en el momento sin alterar de
forma alguna la base de datos.
Como funcionan las transacciones?
• ¿ Como funcionan las transacciones MySQL ?
• Cada transacción puede verse como una función, y dentro de ella puede haber
tantas instrucciones como sea necesario.

• START TRANSACTION;
• UPDATE users SET name='jane' WHERE id=1;
• UPDATE users SET name='jhona' WHERE id=2;
• COMMIT; / ROLLBACK;

• En este caso tenemos dos sentencias, cada una de ellas para editar un registro,
MySQL las evalúa y las guarda en un estado temporal y posteriormente son
ejecutadas o desechadas con los comandos COMMIT o ROLLBACK.
Los pasos para usar transacciones en
MySQL son:
• Iniciar una transacción con el uso de la sentencia BEGIN.

• Actualizar, insertar o eliminar registros en la base de datos.

• Si se quieren los cambios a la base de datos, completar la transacción con


el uso de la sentencia COMMIT. Únicamente cuando se procesa un
COMMIT los cambios hechos por las consultas serán permanentes.

• Si sucede algún problema, podemos hacer uso de la sentencia ROLLBACK


para cancelar los cambios que han sido realizados por las consultas que
han sido ejecutadas hasta el momento.
ACID
• Atomicidad: Si cuando una operación consiste en una serie de pasos, de los
que o bien se ejecutan todos o ninguno, es decir, las transacciones son
completas.

• Consistencia: (Integridad). Es la propiedad que asegura que sólo se empieza


aquello que se puede acabar. Por lo tanto se ejecutan aquellas operaciones
que no van a romper las reglas y directrices de Integridad de la base de datos.
La propiedad de consistencia sostiene que cualquier transacción llevará a la
base de datos desde un estado válido a otro también válido. "La Integridad de
la Base de Datos nos permite asegurar que los datos son exactos y
consistentes, es decir que estén siempre intactos, sean siempre los
esperados y que de ninguna manera cambian ni se deformen. De esta
manera podemos garantizar que la información que se presenta al usuario
será siempre la misma."
ACID
• Aislamiento: Esta propiedad asegura que una operación no puede afectar
a otras. Esto asegura que la realización de dos transacciones sobre la
misma información sean independientes y no generen ningún tipo de error.
Esta propiedad define cómo y cuándo los cambios producidos por una
operación se hacen visibles para las demás operaciones concurrentes. El
aislamiento puede alcanzarse en distintos niveles, siendo el parámetro
esencial a la hora de seleccionar SGBDs.

• Durabilidad: (Persistencia). Esta propiedad asegura que una vez realizada


la operación, esta persistirá y no se podrá deshacer aunque falle el sistema
y que de esta forma los datos sobrevivan de alguna manera.

También podría gustarte