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

Universidad Mariano Gálvez de Guatemala

Seminario de Desarrollo y Diseño de Sistemas


Ing. Fernando de Paz

NORMALIZACION Y AISLAMIENTO
(BASE DE DATOS)

Jorge Samayoa 1790-05-13916

Ingeniería en Sistemas de la Información y Ciencias de la Computación

Guatemala, 14 de Julio de 2018


Normalización de bases de datos
La normalización de bases de datos es un proceso que consiste en designar y aplicar una serie de
reglas a las relaciones obtenidas tras el paso del modelo entidad-relación al modelo relacional.

Las bases de datos relacionales se normalizan para:

 Evitar la redundancia de los datos.


 Disminuir problemas de actualización de los datos en las tablas.
 Proteger la integridad de datos.

En el modelo relacional es frecuente llamar tabla a una relación, para que una tabla sea considerada
como una relación tiene que cumplir con algunas restricciones:

 Cada tabla debe tener su nombre único.


 No puede haber dos filas iguales. No se permiten los duplicados.
 Todos los datos en una columna deben ser del mismo tipo.

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

Reglas de Codd
Edgar Frank Codd se percató de que existían bases de datos en el mercado que decían ser
relacionales, pero lo único que hacían era guardar la información en las tablas, sin estar literalmente
normalizadas dichas tablas; entonces Codd publicó doce (12) reglas que un verdadero sistema
relacional debería tener, en la práctica algunas de ellas son difíciles de realizar. Un sistema podrá
considerarse "más relacional" cuanto más siga estas reglas.

Regla 1: La regla de la información

Toda la información en un RDBMS está explícitamente representada de una sola manera por valores
en una tabla.

Cualquier cosa que no exista en una tabla no existe del todo. Toda la información, incluyendo
nombres de tablas, nombres de vistas, nombres de columnas, y los datos de las columnas deben
estar almacenados en tablas dentro de las bases de datos. Las tablas que contienen tal información
constituyen el Diccionario de Datos. Esto significa que todo tiene que estar almacenado en las tablas.

Toda la información en una base de datos relacional se representa explícitamente en el nivel lógico
exactamente de una manera: con valores en tablas. Por tanto los metadatos (diccionario, catálogo)
se representan exactamente igual que los datos de usuario. Y puede usarse el mismo lenguaje (ej.
SQL) para acceder a los datos y a los metadatos (regla 4).

Regla 2: La regla del acceso garantizado

Cada ítem de datos debe ser lógicamente accesible al ejecutar una búsqueda que combine el
nombre de la tabla, su clave primaria, y el nombre de la columna.

Esto significa que, dado un nombre de tabla, dado el valor de la clave primaria, y dado el nombre de
la columna requerida, deberá encontrarse uno y solamente un valor. Por esta razón la definición de
claves primarias para todas las tablas es prácticamente obligatoria.

Regla 3: Tratamiento sistemático de los valores nulos

La información inaplicable o faltante puede ser representada a través de valores nulos.

Un RDBMS (Sistema Gestor de Bases de Datos Relacionales) debe ser capaz de soportar el uso de
valores nulos en el lugar de columnas cuyos valores sean desconocidos.

Se reconoce la necesidad de la existencia del valor nulo, el cual podría servir para representar, o
bien, una información desconocida (ejemplo, no se sabe la dirección de un empleado), o bien una
información que no aplica (a un empleado soltero no se le puede asignar un nombre de esposa). Así
mismo, consideremos el caso de un alumno que obtiene 0 puntos en una prueba y el de un alumno
que no presentó la prueba.

Hay problemas para soportar los valores nulos en las operaciones relacionales, especialmente en
las operaciones lógicas, para lo cual se considera una lógica trivaluada, con tres (no dos) valores de
verdad: Verdadero, Falso y null. Se crean tablas de verdad para las operaciones lógicas:

null AND null = null

Verdadero AND null = null

Falso AND null = Falso

Verdadero OR null = Verdadero, etc.

Regla 4: La regla de la descripción de la base de datos


La descripción de la base de datos es almacenada de la misma manera que los datos ordinarios, esto
es, en tablas y columnas, y debe ser accesible a los usuarios autorizados.

La información de tablas, vistas, permisos de acceso de usuarios autorizados, etc, debe ser
almacenada exactamente de la misma manera: En tablas. Estas tablas deben ser accesibles igual
que todas las tablas, a través de sentencias de SQL (o similar).

Regla 5: La regla del sub-lenguaje integral

Debe haber al menos un lenguaje que sea integral para soportar la definición de datos, manipulación
de datos, definición de vistas, restricciones de integridad, y control de autorizaciones y
transacciones.

Esto significa que debe haber por lo menos un lenguaje con una sintaxis bien definida que pueda
ser usado para administrar completamente la base de datos.

Regla 6: La regla de la actualización de vistas

Todas las vistas que son teóricamente actualizables, deben ser actualizables por el sistema mismo.

La mayoría de las RDBMS permiten actualizar vistas simples, pero deshabilitan los intentos de
actualizar vistas complejas.

Regla 7: La regla de insertar y actualizar

La capacidad de manejar una base de datos con operandos simples se aplica no sólo para la
recuperación o consulta de datos, sino también para la inserción, actualización y borrado de datos'.

Esto significa que las cláusulas para leer, escribir, eliminar y agregar registros (SELECT, UPDATE,
DELETE e INSERT en SQL) deben estar disponibles y operables, independientemente del tipo de
relaciones y restricciones que haya entre las tablas o no.

Regla 8: La regla de independencia física

El acceso de usuarios a la base de datos a través de terminales o programas de aplicación, debe


permanecer consistente lógicamente cuando quiera que haya cambios en los datos almacenados, o
sean cambiados los métodos de acceso a los datos.
El comportamiento de los programas de aplicación y de la actividad de usuarios vía terminales
debería ser predecible basados en la definición lógica de la base de datos, y éste comportamiento
debería permanecer inalterado, independientemente de los cambios en la definición física de ésta.

Regla 9: La regla de independencia lógica

Los programas de aplicación y las actividades de acceso por terminal deben permanecer
lógicamente inalteradas cuando quiera que se hagan cambios (según los permisos asignados) en las
tablas de la base de datos.

La independencia lógica de los datos especifica que los programas de aplicación y las actividades de
terminal deben ser independientes de la estructura lógica, por lo tanto los cambios en la estructura
lógica no deben alterar o modificar estos programas de aplicación.

Regla 10: La regla de la independencia de la integridad

Todas las restricciones de integridad deben ser definibles en los datos, y almacenables en el
catálogo, no en el programa de aplicación.

Las reglas de integridad

Ningún componente de una clave primaria puede tener valores en blanco o nulos (ésta es la norma
básica de integridad).

Para cada valor de clave foránea deberá existir un valor de clave primaria concordante. La
combinación de estas reglas asegura que haya integridad referencial.

Regla 11: La regla de la distribución

El sistema debe poseer un lenguaje de datos que pueda soportar que la base de datos esté
distribuida físicamente en distintos lugares sin que esto afecte o altere a los programas de
aplicación.

El soporte para bases de datos distribuidas significa que una colección arbitraria de relaciones, bases
de datos corriendo en una mezcla de distintas máquinas y distintos sistemas operativos y que esté
conectada por una variedad de redes, pueda funcionar como si estuviera disponible como en una
única base de datos en una sola máquina.

Regla 12: Regla de la no-subversión

Si el sistema tiene lenguajes de bajo nivel, estos lenguajes de ninguna manera pueden ser usados
para violar la integridad de las reglas y restricciones expresadas en un lenguaje de alto nivel (como
SQL).
Algunos productos solamente construyen una interfaz relacional para sus bases de datos No
relacionales, lo que hace posible la subversión (violación) de las restricciones de integridad. Esto no
debe ser permitido.

Aislamiento (sistemas de base de datos)


En base de datos sistemas, aislamiento determina cómo es visible para otros usuarios y sistemas de
integridad de la transacción. Por ejemplo, cuando un usuario crea una orden de compra y ha creado
el encabezado, pero no las líneas PO, está disponible para otros sistemas y usuarios, llevar a cabo la
cabecera concurrente ¿operaciones (por ejemplo, un informe sobre las órdenes de compra), a ver?

Un nivel de aislamiento bajo aumenta la capacidad de muchos usuarios de acceder a los datos al
mismo tiempo, pero aumenta el número de concurrencia podrían tropezar con usuarios de efectos
(como Lee sucio o actualizaciones perdidas). Por el contrario, un mayor nivel de aislamiento reduce
los tipos de efectos de la concurrencia que los usuarios pueden encontrar, pero requiere más
recursos del sistema y aumenta las probabilidades de que una transacción bloqueará otra.

Normalmente se define a nivel de base de datos como una propiedad que define cómo/cuando los
cambios realizados por una sola operación que se hacen visible al otro, pero en sistemas antiguos
podrán aplicarse sistemáticamente, por ejemplo, mediante el uso de tablas temporales. En sistemas
de dos niveles, un gestor de TP es necesaria para mantener el aislamiento. En los sistemas de n-
capas (como tratar de reservar el último asiento en un vuelo de múltiples sitios web) es necesaria
una combinación de procedimientos almacenados y administración de transacciones para cometer
la reserva y confirmar al cliente.

El aislamiento es uno de los ÁCIDO (Atomicidad, coherencia, aislamiento, durabilidad) propiedades.

Control de concurrencia

Control de concurrencia comprende los mecanismos subyacentes en un DBMS que encarga de


aislamiento y garantiza la corrección relacionado. Es muy utilizado por las base de datos y
almacenamiento de motores (véase arriba) tanto para garantizar la correcta ejecución de
transacciones concurrentes y (mecanismos diferentes) la corrección de otros procesos DBMS. Los
mecanismos de transacción típicamente restringen (sincronización) de operaciones de acceso a
datos de base de datos horarios de transacción) a ciertas órdenes caracterizados como
el serializabilidad y capacidad de recuperación propiedades del calendario. Restricción de ejecución
de la operación de acceso de base de datos normalmente significa menor rendimiento (tasas de
ejecución), y así los mecanismos de control de concurrencia están diseñados para proporcionar el
mejor rendimiento posible bajo las restricciones. A menudo, cuando sea posible sin dañar la
corrección, la propiedad serializabilidad está comprometida para un mejor rendimiento. Sin
embargo, la capacidad de recuperación no puede ser comprometida, puesto que tales resultados
típicamente en una violación de la integridad de base de datos rápida.

Bloqueo de dos fases es el método más común de control de concurrencia transacción a bases de
datos, utilizado para proporcionar tanto serializabilidad y capacidad de recuperación para la
corrección. Para poder acceder a un objeto de base de datos una transacción primero necesita
adquirir una cerradura para este objeto. Dependiendo del tipo de operación de acceso (por ejemplo,
lectura o escritura de un objeto) y el tipo de bloqueo, adquiriendo la cerradura puede bloqueado y
pospuesto, si otra transacción tiene una cerradura para ese objeto.

Niveles de aislamiento
De los cuatro ÁCIDO propiedades en una DBMS (Database Management System), la propiedad de
aislamiento es el que más a menudo posible relajado. Al intentar mantener el más alto nivel de
aislamiento, generalmente adquiere un DBMS cerraduras en datos o implementos control de
concurrencia multiversión, que puede resultar en una pérdida de simultaneidad. Esto requiere
añadir lógica para la aplicación para funcionar correctamente.

La mayoría de bases de datos ofrecen una serie de niveles de aislamiento de transacción, que
controlan el grado de bloqueo que se produce cuando se selecciona datos. Para muchas aplicaciones
de base de datos, la mayoría de las transacciones de la base de datos puede ser construida para
evitar que requieren aislamiento altos niveles (e.g. SERIALIZABLE), reduciendo así la fijación
sobrecarga para el sistema. El programador debe analizar cuidadosamente código de acceso de base
de datos para asegurar que cualquier relajación de aislamiento no causa errores de software que
son difíciles de encontrar. Por el contrario, si se utilizan los niveles más altos de aislamiento, la
posibilidad de interbloqueo se incrementa, lo cual también requiere análisis cuidadoso y técnicas
de programación para evitar.

Los niveles de aislamiento definidos por el ANSI/ISO SQL estándar son las siguientes:

Serializable

Este es el más alto nivel de aislamiento.

Con un bloqueo basado en control de concurrencia Implementación de


DBMS, serializabilidad requiere leer y escribir cerraduras (adquirida en datos seleccionados) ser
lanzado a finales de la transacción. También gama de cerraduras debe adquirirse cuando
un SELECCIONE consulta utiliza una distancia DONDE cláusula, especialmente para evitar
la fantasma

Cuando utilizando sin bloqueo basado en control de concurrencia, no se adquieren cerraduras; Sin
embargo, si el sistema detecta un escribir colisión entre varias transacciones concurrentes, sólo uno
de ellos puede cometer. Ver aislamiento de instantánea para obtener más detalles sobre este tema.

Lecturas repetibles

En este nivel de aislamiento, basada en una cerradura control de concurrencia DBMS aplicación
mantiene Lee y escribe las cerraduras (adquiridas en datos seleccionados) hasta el final de la
transacción. Sin embargo, gama de cerraduras No se logró, así que fantasma Lee puede ocurrir.
Lectura comprometida

En este nivel de aislamiento, basada en una cerradura control de concurrencia Implementación de


DBMS mantiene en escribe las cerraduras (adquiridas en datos seleccionados) hasta el final de la
transacción, pero Lee las cerraduras son liberados tan pronto como el SELECCIONE la operación se
realiza (las lecturas no repetibles fenómeno puede ocurrir en este nivel de aislamiento, como se
explica más abajo). Como en el nivel anterior, gama de cerraduras No se logró.

Ponerlo en palabras más simples, leer comprometido es un nivel de aislamiento que garantiza que
cualquier lectura de datos se ha comprometido en este momento se lee. Simplemente restringe el
lector de ver cualquier lectura intermedia, no comprometido, 'sucio'. No hace ninguna promesa
alguna si la transacción emite la lectura, encontrará los mismos datos; datos están libres de cambiar
después de que se lee.

Read uncommitted

Este es el más bajo nivel de aislamiento. En este nivel, Lee sucio se permite, por una sola transacción
puede ocurrir No-todavía-confiado cambios realizados por otras transacciones.

Puesto que cada nivel de aislamiento es más fuerte que los menores, que no hay mayor nivel de
aislamiento permite una acción prohibida por una baja, la norma permite un DBMS para ejecutar
una transacción en un nivel de aislamiento más fuerte que la solicitada (por ejemplo, una
transacción "Leer comprometidos" puede en realidad realizar en un nivel de aislamiento
"Repeatable leer").

Nivel de aislamiento predeterminado

El nivel de aislamiento predeterminado de diferentes DBMS de varía bastante. Más bases de datos
que presentan las transacciones permiten al usuario establecer algún nivel de aislamiento. Algunos
DBMS también requieren sintaxis adicional cuando se realiza una instrucción SELECT para adquirir
las cerraduras (ej.: SELECCIONE... PARA LA ACTUALIZACIÓN para adquirir bloqueos de escritura
exclusiva en filas accesada).

Sin embargo, las definiciones anteriores han sido criticadas [3] como ambiguo y no precisa que
refleja el aislamiento proporcionado por muchas bases de datos:

Se presenta una serie de debilidades en el enfoque de la anomalía a la definición de los niveles de


aislamiento. Los tres fenómenos de ANSI son ambiguos. Incluso sus interpretaciones más amplias
no excluyen comportamiento anómalo. Esto conduce a unos resultados contraintuitivos. En
particular, los niveles de aislamiento basadas en la cerradura tienen diferentes características que
sus equivalentes de ANSI. Esto es desconcertante porque sistemas de base de datos comercial
típicamente utilizan bloqueos. Además, los fenómenos de ANSI no distinguen entre varios niveles
de aislamiento populares en sistemas comerciales.

También hay otras críticas relativas a la determinación del aislamiento de ANSI SQL, en eso anima a
implementadores hacer "cosas malas":
... se basa en formas sutiles en la suposición de que un esquema de bloqueo se utiliza para el control
de concurrencia, en contraposición a un esquema de concurrencia optimista o varias versiones. Esto
implica que la semántica propuesta es mal definida.

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