Sei sulla pagina 1di 20

SERVICIO NACIONAL DE APRENDIZAJE – SENA

Especialización:
GESTION Y SEGURIDAD DE BASE DE DATOS

Instructor:
ALEXANDRA MARCELA VILLAMIL LOPEZ

Aprendiz:
MANUEL ALEJANDRO ARIZA MARTINEZ
JOHANY RAMÍREZ LÓPEZ
LEONARDO TORRES MEZA

Actividad:
AA8-Ev2-Normalización de Bases de Datos
y Técnicas para la optimización de bases de datos

COLOMBIA
2019
INTRODUCCIÓN

La búsqueda de un nivel óptimo de rendimiento en los servicios asociados a las


bases de datos es una constante para lograr el mantenimiento proactivo que debe
proveer el administrador de las bases de datos. Consecuentemente una de las
tareas a implementar es la verificación de la estructura de la base de datos y el
desarrollo de acciones que permitan optimizarla, para esto deben ser revisados
temas asociados a la normalización y desnormalización de la base de datos, ya que
una estructura deficiente puede incidir en que las consultas a los datos relacionados
no puedan realizarse de una manera óptima y deterioren el nivel de respuesta
esperado. Otro aspecto a analizar es el uso de herramientas que permitan optimizar
las consultas, así como la creación y uso apropiado de índices para el mejoramiento
del rendimiento en la ejecución de consultas. Al tener consultas de larga duración
se consumen recursos del sistema que hacen que el servidor y las aplicaciones
funcionen con lentitud, desencadenando otros problemas y por tanto es necesario
adoptar diferentes estrategias para buscar la ejecución más eficiente de las
consultas.
APLICACIÓN Y DISEÑO DE BASE DE DATOS

Las técnicas que permiten optimizar el diseño de una base de datos han
evolucionado a medida que se desarrollan más aplicaciones. Las técnicas se basan
en la aplicación de la normalización para el desarrollo de bases de datos, junto con
una estrecha colaboración entre los administradores de bases y desarrolladores de
aplicaciones, así como técnicas de trabajo, tanto en preproducción como en los
sistemas terminados.

Normalizar la base de datos El objetivo de la normalización es la construcción de un


esquema de base de datos que satisfacen propiedades de las formas normales.

Un esquema mal definido en la etapa de diseño puede conducir a una serie de


anomalías durante la fase operativa, tales como duplicación de la información y
anomalías durante las operaciones de actualización (insertar, suprimir, modificar).
Estas anomalías no aparecerán si se descompone la base de datos desde el
principio. El proceso de normalización implementa la aplicación de una serie de
reglas conocidas como “las formas normales”. Las tres primeras formas normales
ayudan a evitar la redundancia de información y a mejorar el rendimiento de la base
de datos, específicamente en las consultas. Estas formas normales se basan en
las dependencias funcionales entre los atributos de un esquema de base de datos.

Primera forma normal (1FN).

CONDICION

Una tabla se encuentra en primera forma normal cuando sus atributos no contienen
grupos de repetición. A continuación, se presenta un ejemplo de aplicación de las
formas normales con una base de datos para una institución educativa.

En la estructura de la tabla, indicada en la siguiente figura se tiene un grupo de


repetición y por tanto no está en primera Forma Normal.
PROBLEMAS

Una tabla con esta estructura presenta varios problemas. Por ejemplo, si una pareja
tiene más de un niño en la misma institución, debemos introducir el nombre del
Padre y la Madre varias veces por cada niño. Esto forma un grupo de repetición.
Por otra parte, se puede presentar un error tipográfico en el nombre del Padre, si no
se introduce exactamente el mismo nombre todo el tiempo, se pueden causar
problemas cuando ejecuten búsquedas, así como en la presentación de informes.

Este problema se produce porque combinamos información en la misma tabla.


Ponemos la información de los padres y los niños en la misma tabla. La solución
para este problema es simple: crear una tabla separada para la información de los
padres, que se relacionan con la tabla de los Alumnos a través de una relación uno
a muchos, es decir, una pareja de padres puede tener varios hijos. Observe en la
siguiente figura la relación de padres y alumnos (representando los hijos).

EJEMPLOS

Las dos tablas resultantes de la aplicación de la Primera Forma Normal: Padres y


alumnos están ahora en primera forma normal.

Segunda forma normal (2FN).

CONDICION

Se produce cuando la clave principal está compuesta por más de un campo. En este
caso, todos los campos que dependan funcionalmente de la clave principal forman
una tabla y los campos que no se identifiquen con la clave principal deben
pertenecer a otra tabla. Continuando con el ejemplo, ahora se tiene la tabla Cursos:
PROBLEMA

CONTINUAMOS CON EL PROBLEMA


Esta tabla tiene una clave primaria compuesta y no está en segunda forma normal.
La clave principal está formada por la combinación de campos NoMatricula y
CodCurso. Al evaluar que campos dependen de la clave primaria, se obtiene que el
campo “Descripción” sólo depende del campo “CodCurso”, es decir, que con el
“código de curso” es posible encontrar su “descripción”, independientemente del
valor de “NoMatricula”. Por tanto, este campo que no es parte de la clave primaria
y depende solamente de uno de los campos que constituye la clave primaria
Compuesta, por lo que se puede afirmar que este cuadro no está en Segunda forma
normal.

EJEMPLO

Para solucionar esta situación: “se divide la tabla que no está en la segunda forma
normal en otras dos tablas, como se muestra en la siguiente figura, y las dos tablas
resultantes se encuentran en segunda forma normal.

Obteniendo Matriculas y Cursos en tablas separadas.

En conclusión, la segunda forma está conectada con la aparición de claves


primarias compuestas.
Tercera forma normal (3FN).

La tercera forma normal revisa la dependencia funcional de los campos con aquellos
que no son clave, si esto ocurre, se deben extraer de la tabla, sin que se pierda el
vínculo existente con las tablas.

En el siguiente ejemplo algunos campos no dependen directamente de la clave


principal o parte de ella, sino que depende de otro campo de la tabla, por tanto,
decimos que la tabla no está en tercera forma normal.

El campo DescripCargo sólo depende del CodCargo, que no forma parte de la clave
principal, por eso se puede afirmar que la tabla no está en tercera forma normal.

Para solucionar este problema se debe dividir la tabla en otras dos, como se indica
en la siguiente figura. Las dos tablas resultantes se encuentran en tercera forma
normal.

Como resultado del proceso de normalización, se obtiene un mayor número de


tablas, pero sin redundancia y problemas de inconsistencia de los datos.
CONSIDERACIONES FINALES Y PROBLEMAS DE LA NORMALIZACIÓN.

La teoría de la normalización nos ayuda a estructurar mejor las tablas de la base de


datos, evitando posibles redundancias. Mientras la normalización resuelve los
problemas relacionados con la estructuración de los datos en tablas, crea problemas
añadidos a su propio concepto, como es la ineficacia en la recuperación de
información. Así, el proceso de normalización envuelve la descomposición de una
tabla en tablas más pequeñas, lo cual requiere que la clave primaria de la tabla
original se incluya, como una clave foránea, en las nuevas tablas que se forman.
Esto significa que a medida que se van creando estas claves foráneas se va
incrementando las probabilidades de poner en peligro la integridad de la base de
datos.

Otro efecto adicional al número creciente de tablas en la base de datos, es que se


ve disminuido el rendimiento del sistema en la recuperación de la información
contenida, por tanto, en ciertas ocasiones es necesario llegar a un equilibrio entre
el nivel de normalización de la base de datos y el rendimiento del sistema.
SECRETARIA DE GOBIERNO

TABLA PERSONA

IF NOT EXISTS (SELECT * FROM


sys.objects WHERE object_id =
OBJECT_ID(N'[dbo].[PERSONA]') AND
type in (N'U'))
BEGIN
CREATE TABLE PERSONA (
idPERSONA INT IDENTITY NOT NULL ,
idDETENCION INT NOT NULL ,
APELLIDO VARCHAR(30) NULL,
NOMBRES VARCHAR(30) NULL,
IDENTIFICACION VARCHAR(30) NULL,
TIPODOCUMENTO INT NULL ,
PRIMARY KEY(idPERSONA,
idDETENCION),
FOREIGN KEY(idDETENCION)
REFERENCES
DETENCION(idDETENCION)
);
END
GO
Validación de la primera forma normal (1FN)
- Aplica
- Observación: No presenta inconvenientes en la tabla ya que los atributos que
contengan grupos de repetición.

Validación de la 2FN (2FN)


- Aplica
- Observación: La tabla tiene una clave primaria compuesta y está en 2FN

Validación de la tercera forma normal (3FN)


- Aplica
- Observación: No presenta dependencia funcional de los campos con
aquellos que no son clave.

TABLA DETENCION

IF NOT EXISTS (SELECT * FROM


sys.objects WHERE object_id =
OBJECT_ID(N'[dbo].[DETENCION]')
AND type in (N'U'))
BEGIN
CREATE TABLE DETENCION (
idDETENCION INT IDENTITY NOT
NULL ,
idINSPECCION INT NOT NULL ,
FECHA DATE NULL,
MOTIVO VARCHAR(4000) NULL,
TIPO INT NULL ,
HECHOS VARCHAR(4000) NULL,
PRIMARY KEY(idDETENCION),
FOREIGN KEY(idINSPECCION)
REFERENCES
INSPECCION(idINSPECCION)
);
END
GO

Validación de la primera forma normal (1FN)

- Aplica
- Observación: No presenta en la tabla, atributos que contengan grupos de
repetición.
Validación de la 2FN (2FN)

- Aplica
- Observación: No aplica al no poseer llave primaria compuesta validación de
la tercera forma normal (3FN)
- Aplica
- Observación: No presenta dependencia funcional de los campos con
aquellos que no son clave.

TABLA “INSPECCION”

IF NOT EXISTS (SELECT * FROM


sys.objects WHERE object_id =
OBJECT_ID(N'[dbo].[INSPECCION]')
AND type in (N'U'))
BEGIN
CREATE TABLE INSPECCION (
idINSPECCION INT IDENTITY NOT
NULL,
NOMBRE VARCHAR(30) NULL,
PRIMARY KEY(idINSPECCION)
);
END
GO

Validación de la primera forma normal (1FN)


- Aplica
- Observación: No presenta en la tabla, atributos que contengan grupos de
repetición.

Validación de la 2FN (2FN)


- Aplica
- Observación: No aplica al no poseer llave primaria compuesta

Validación de la tercera forma normal (3FN)


- Aplica
- Observación: No presenta dependencia funcional de los campos con
aquellos que no son clave.
TABLA INSPECCION_CONTRAVENCION

IF NOT EXISTS (SELECT * FROM


sys.objects WHERE object_id =
OBJECT_ID(N'[dbo].[INSPECCION_C
ONTRAVENCION]') AND type in
(N'U'))
BEGIN
CREATE TABLE
INSPECCION_CONTRAVENCION (
idINSPECCION INT NOT NULL ,
idCONTRAVENCION INT NOT
NULL ,
INSPECTOR VARCHAR(60) NULL,
PRIMARY KEY(idINSPECCION,
idCONTRAVENCION),
FOREIGN KEY(idINSPECCION)
REFERENCES
INSPECCION(idINSPECCION),
FOREIGN
KEY(idCONTRAVENCION)
REFERENCES
CONTRAVENCION(idCONTRAVENCI
ON)
);
END
GO

Validación de la primera forma normal (1FN)


- Aplica
- Observación: No presenta en la tabla, atributos que contengan grupos de
repetición.

Validación de la 2FN (2FN)


- Aplica
- Observación: Esta tabla tiene una clave primaria compuesta y está en 2FN.

Validación de la tercera forma normal (3FN)


- Aplica
- Observación: No presenta dependencia funcional de los campos con
aquellos que no son clave.
TABLA “CONTRAVENCIÓN”

IF NOT EXISTS (SELECT * FROM


sys.objects WHERE object_id =
OBJECT_ID(N'[dbo].[CONTRAVENCI
ON]') AND type in (N'U'))
BEGIN
CREATE TABLE CONTRAVENCION (
idCONTRAVENCION INT IDENTITY
NOT NULL ,
FECHA DATETIME NULL,
TIPO INT NULL ,
HECHOS VARCHAR(4000) NULL,
ESTADO INT NULL ,
PRIMARY
KEY(idCONTRAVENCION)
);
END;
GO

Validación de la primera forma normal (1FN)


- Aplica
- Observación: No presenta en la tabla, atributos que contengan grupos de
repetición.

Validación de la 2FN (2FN)


- Aplica
- Observación: No aplica al no poseer llave primaria compuesta.

Validación de la tercera forma normal (3FN)


- Aplica
- Observación: No presenta dependencia funcional de los campos con
aquellos que no son clave.
TABLA INVOLUCRADO

IF NOT EXISTS (SELECT * FROM


sys.objects WHERE object_id =
OBJECT_ID(N'[dbo].[INVOLUCRADO]
') AND type in (N'U'))
BEGIN
CREATE TABLE INVOLUCRADO (
idINVOLUCRADO INT IDENTITY
NOT NULL ,
idCONTRAVENCION INT NOT
NULL ,
NOMBRE VARCHAR(60) NULL,
IDENTIFICACION VARCHAR(30)
NULL,
TIPODOCUMENTO INT NULL ,
TIPOACTUACION INT NULL ,
PRIMARY KEY(idINVOLUCRADO,
idCONTRAVENCION),
FOREIGN
KEY(idCONTRAVENCION)
REFERENCES
CONTRAVENCION(idCONTRAVENCI
ON)
);
END
GO

Validación de la primera forma normal (1FN)


- Aplica
- Observación: No presenta en la tabla, atributos que contengan grupos de
repetición.

Validación de la 2FN (2FN)


- Aplica
- Observación: Esta tabla tiene una clave primaria compuesta y está en 2FN.

Validación de la tercera forma normal (3FN)


- Aplica
- Observación: No presenta dependencia funcional de los campos con
aquellos que no son clave.
TABLA QUERELLA

IF NOT EXISTS (SELECT * FROM


sys.objects WHERE object_id =
OBJECT_ID(N'[dbo].[QUERELLA]')
AND type in (N'U'))
BEGIN
CREATE TABLE QUERELLA (
idQUERELLA INT identity NOT
NULL ,
idINSPECCION INT NOT NULL ,
FECHA DATE NULL,
ASUNTO VARCHAR(4000) NULL,
HECHOS VARCHAR(4000) NULL,
ESTADO INT NULL ,
PRIMARY KEY(idQUERELLA),
FOREIGN KEY(idINSPECCION)
REFERENCES
INSPECCION(idINSPECCION)
);
END
GO

Validación de la primera forma normal (1FN)


- Aplica
- Observación: No presenta en la tabla, atributos que contengan grupos de
repetición.

Validación de la 2FN (2FN)


- Aplica
- Observación: No aplica al no poseer llave primaria compuesta

Validación de la tercera forma normal (3FN)


- Aplica
- Observación: No presenta dependencia funcional de los campos con
aquellos que no son clave.
TABLA ACTUACION

IF NOT EXISTS (SELECT * FROM


sys.objects WHERE object_id =
OBJECT_ID(N'[dbo].[ACTUACION]')
AND type in (N'U'))
BEGIN
CREATE TABLE ACTUACION (
idACTUACION INT IDENTITY NOT
NULL ,
idQUERELLA INT NOT NULL ,
FECHA DATE NULL,
HECHOS VARCHAR(4000) NULL,
ESTADO INT NULL ,
PRIMARY KEY(idACTUACION,
idQUERELLA),
FOREIGN KEY(idQUERELLA)
REFERENCES
QUERELLA(idQUERELLA)
);
END
GO

Validación de la primera forma normal (1FN)


- Aplica
- Observación: No presenta en la tabla, atributos que contengan grupos de
repetición.

Validación de la 2FN (2FN)


- Aplica
- Observación: Esta tabla tiene una clave primaria compuesta y está en 2FN.

Validación de la tercera forma normal (3FN)


- Aplica
- Observación: No presenta dependencia funcional de los campos con
aquellos que no son clave.
TABLA CONTRACTUACION

IF NOT EXISTS (SELECT * FROM


sys.objects WHERE object_id =
OBJECT_ID(N'[dbo].[CONTRACTUAC
ION]') AND type in (N'U'))
BEGIN
CREATE TABLE CONTRACTUACION
(
idCONTRACTUACION INT
IDENTITY NOT NULL ,
idCONTRAVENCION INT NOT
NULL ,
FECHA DATETIME NULL,
OBSERVACION VARCHAR(4000),
PRIMARY
KEY(idCONTRACTUACION,
idCONTRAVENCION),
FOREIGN
KEY(idCONTRAVENCION)
REFERENCES
CONTRAVENCION(idCONTRAVENCI
ON)
);
END
GO

Validación de la primera forma normal (1FN)


- Aplica
- Observación: No presenta en la tabla, atributos que contengan grupos de
repetición.

Validación de la 2FN (2FN)


- Aplica
- Observación: Esta tabla tiene una clave primaria compuesta y está en 2FN.

Validación de la tercera forma normal (3FN)


- Aplica
- Observación: No presenta dependencia funcional de los campos con
aquellos que no son clave.
TABLA DEMANDANTE

IF NOT EXISTS (SELECT * FROM


sys.objects WHERE object_id =
OBJECT_ID(N'[dbo].[DEMANDANTE]'
) AND type in (N'U'))
BEGIN
CREATE TABLE DEMANDANTE (
idDEMANDANTE INT IDENTITY
NOT NULL ,
idQUERELLA INT NOT NULL ,
NOMBRE VARCHAR(60) NULL,
IDENTIFICACION VARCHAR(30)
NULL,
TIPODOCUMENTO INT NULL ,
PRIMARY KEY(idDEMANDANTE,
idQUERELLA),
FOREIGN KEY(idQUERELLA)
REFERENCES
QUERELLA(idQUERELLA)
);
end
GO

Validación de la primera forma normal (1FN)


- Aplica
- Observación: No presenta en la tabla, atributos que contengan grupos de
repetición.

Validación de la 2FN (2FN)


- Aplica
- Observación: Esta tabla tiene una clave primaria compuesta y está en 2FN.

Validación de la tercera forma normal (3FN)


- Aplica
- Observación: No presenta dependencia funcional de los campos con
aquellos que no son clave.
TABLA DEMANDADO

IF NOT EXISTS (SELECT * FROM


sys.objects WHERE object_id =
OBJECT_ID(N'[dbo].[DEMANDADO]')
AND type in (N'U'))
BEGIN
CREATE TABLE DEMANDADO (
idDEMANDADO INT IDENTITY
NOT NULL ,
idQUERELLA INT NOT NULL ,
NOMBRE VARCHAR(60) NULL,
IDENTIFICACION VARCHAR(30)
NULL,
TIPODOCUMENTO INT NULL ,
PRIMARY KEY(idDEMANDADO,
idQUERELLA),
FOREIGN KEY(idQUERELLA)
REFERENCES
QUERELLA(idQUERELLA)
);
END
GO

Validación de la primera forma normal (1FN)


- Aplica
- Observación: No presenta en la tabla, atributos que contengan grupos de
repetición.

Validación de la 2FN (2FN)


- Aplica
- Observación: Esta tabla tiene una clave primaria compuesta y está en 2FN.

Validación de la tercera forma normal (3FN)


- Aplica
- Observación: No presenta dependencia funcional de los campos con
aquellos que no son clave.
CONCLUSIONES

Teniendo en cuenta los procesos de normalización que aseguran que las políticas
de seguridad las cuales se aplican en el almacenamiento de la base de datos y así
poder corregir errores eventuales que suceden dentro de la base.

Lo anterior explicado se da anotar que las organizaciones deben estar bien


estructuras como inteligencia de negocio ya que el manejo de información debe ser
administrada de manera adecuada y sobre todo el personal debe ser capacitado
para asumir dicha responsabilidad.
REFERENCIAS

• Material de formación “SENA – Servicio Nacional de Aprendizaje

OPTIMIZACIÓN DE LA ESTRUCTURA DE BASE DE DATOS.”


- https://es.wikipedia.org/wiki/Normalizaci%C3%B3n_de_bases_de_datos
- https://es.slideshare.net/hugofreestyle/normalizacin-de-bases-de-datos
- https://support.microsoft.com/es-co/help/283878/description-of-the-
database-normalization-basics
- https://www.cs.upc.edu/~bcasas/docencia/pfc/NormalitzacioBD.pdf

Potrebbero piacerti anche