1. John Denis Suarez Ortiz
Dorvin Eduardo Bardales Lucana
Diseño de una Base de
Datos
BASE DE DATOS I
Ingeniería de Sistemas y Telemática
2. Uno de los pasos cruciales en la construcción de una aplicación que maneje una base de datos, es
sin duda, el diseño de la base de datos.
Si las tablas no son definidas apropiadamente, podemos tener muchos problemas al momento de
ejecutar consultas a la base de datos para tratar de obtener algún tipo de información.
No importa si nuestra base de datos tiene sólo 20 registros, o algunos cuantos miles, es importante
asegurarnos que nuestra base de datos está correctamente diseñada para que tenga eficiencia y
que se pueda seguir utilizando por largo del tiempo.
INTRODUCCION
3. Básicamente, las reglas de Normalización están encaminadas a eliminar redundancias
e inconsistencias de dependencia en el diseño de las tablas. Tienes que tener en
cuenta que debes crear una BD funcional y eficiente.
NORMALIZACIÓN CERO:
Normalización de Bases de Datos y Técnicas de diseño
4. Primer nivel de Formalización/Normalización. (F/N)
1. Eliminar los grupos repetitivos de las tablas individuales.
2. Crear una tabla separada por cada grupo de datos relacionados.
3. Identificar cada grupo de datos relacionados con una clave primaria.
Ahora diremos que nuestra tabla está en el primer nivel de F/N. Hemos solucionado el problema de
la limitación del campo url. Pero sin embargo vemos otros problemas. Cada vez que introducimos un
nuevo registro en la tabla usuarios, tenemos que duplicar el nombre de la empresa y del usuario.
5. Segundo nivel de F/N
1. Crear tablas separadas para aquellos grupos de datos que se aplican a varios registros.
2. Relacionar estas tablas mediante una clave externa.
Hemos creado tablas separadas y la clave primaria en la tabla usuarios, userId, está relacionada
ahora con la clave externa en la tabla urls.
6. Tercer nivel de F/N.
Eliminar aquellos campos que no dependan de la clave.
7. Relaciones entre los Datos
Antes de definir el cuarto nivel de F/N, veremos tres tipos de relaciones entre los datos: uno-a-uno, uno-con-
varios y varios-con-varios. Por un momento imaginemos que ponemos el campo url en una tabla separada, y
cada vez que introducimos un registro en la tabla usuarios también introducimos una sola fila en la tabla urls.
Entonces tendríamos una relación uno-a-uno: cada fila en la tabla usuarios tendría exactamente una fila
correspondiente en la tabla urls. Para los propósitos de nuestra aplicación no sería útil la normalización.
Las tablas en el ejemplo del Segundo Nivel de F/N. Nuestras tablas permiten a un sólo usuario tener asociadas
varias urls. Esta es una relación uno- con-varios, el tipo de relación más común, y hasta que se nos presentó el
dilema del Tercer Nivel de F/N. la única clase de relación que necesitamos.
La relación varios-con-varios, sin embargo, es ligeramente más compleja. En el ejemplo del Tercer Nivel de F/N
que tenemos a un usuario relacionado con varias urls.
8. Para disminuir la duplicación de los datos (este proceso nos llevará al Cuarto Nivel de
F/N), hemos creado una tabla que sólo tiene claves externas y primarias url_elations.
9. Cuarto Nivel de F/N.
1. En las relaciones varios-con-varios, entidades independientes no pueden ser almacenadas
en la misma tabla.
Ya que sólo se aplica a las relaciones varios-con-varios, la mayoria de los desarrolladores
pueden ignorar esta regla de forma correcta. Pero es muy útil en ciertas situaciones, tal como
está. Hemos optimizado nuestra tabla urls eliminado duplicados y hemos puesto las relaciones
en su propia tabla.
Ejemplo:
SELECT nombre, url FROM usuarios, urls, url_relations WHERE url_relations.relatedUserId = 1 AND
usuarios.userId = 1 AND urls.urlId = url_relations.relatedUrlId
Y si queremos recorrer todas las urls de cada uno de los usuarios, hariamos algo así:
SELECT nombre, url FROM usuarios, urls, url_relations WHERE usuarios.userId =
url_relations.relatedUserId AND urls.urlId = url_relations.relatedUrlId
10. Quinto Nivel de F/N.
Existe otro nivel de normalización que se aplica a veces, pero es de hecho algo esotérico y en la
mayoría de los casos no es necesario para obtener la mejor funcionalidad de nuestra estructura de
datos o aplicación. Su principio sugiere:
1. La tabla original debe ser reconstruida desde las tablas resultantes en las cuales ha sido
troceada.
Los beneficios de aplicar esta regla aseguran que no has creado ninguna columna extraña en tus
tablas y que la estructura de las tablas que has creado sea del tamaño justo que tiene que ser. Es
una buena práctica aplicar esta regla, pero a no ser que estés tratando con una extensa estructura
de datos probablemente no la necesitarás.
11. Integridad de los datos
La exigencia de integridad de los datos garantiza la calidad de los datos de la base de datos.
Ejemplo:
Si se especifica para un empleado el valor de identificador de 123, la base de datos no debe
permitir que ningún otro empleado tenga el mismo valor de identificador. Si tiene una
columna empleado_valoracion para la que se prevean valores entre 1 y5, la base de datos no
debe aceptar valores fuera de ese intervalo.
Dos pasos importantes en el diseño de las tablas son la identificación de valores válidos para
una columna y la determinación de cómo forzar la integridad de los datos en la columna. La
integridad de datos pertenece a una de las siguientes categorías:
12. Integridad de entidad
La integridad de entidad define una fila como entidad única para una tabla determinada. La
integridad de entidad exige la integridad de las columnas de los identificadores o la clave
principal de una tabla, mediante restricciones PRIMARY KEY.
Integridad de dominio
La integridad de dominio viene dada por la validez de las entradas para una columna
determinada. Puede exigir la integridad de dominio para restringir el tipo mediante tipos de
datos, el formato mediante reglas y restricciones CHECK, o el intervalo de valores posibles
mediante restricciones FOREIGN KEY, restricciones CHECK, definiciones DEFAULT, definiciones
NOT NULL y reglas.
Integridad de los datos
13. Integridad referencial
La integridad referencial protege las relaciones definidas entre las tablas cuando se crean
o se eliminan filas. Para conseguir esa coherencia, es preciso que no haya referencias a
valores inexistentes y que, si cambia el valor de una clave, todas las referencias a ella se
cambien en consecuencia en toda la base de datos.
Integridad definida por el usuario
La integridad definida por el usuario permite definir reglas de empresa específicas que
no pertenecen a ninguna otra categoría de integridad. Todas las categorías de integridad
admiten la integridad definida por el usuario. Esto incluye todas las restricciones de nivel
de columna y nivel de tabla en CREATE TABLE, procedimientos almacenados y
desencadenadores.
Integridad de los datos
14. La seguridad de los datos
La gran mayoría de los datos sensibles del mundo están almacenados en sistemas
gestores de bases de datos comerciales tales como Oracle, Microsoft SQL Server
entre otros, y atacar una bases de datos es uno de los objetivos favoritos para los
criminales.
Por lo que la atención generalmente se ha centrado en asegurar los perímetros de
las redes por medio de, firewalls, IDS / IPS y antivirus, cada vez más las
organizaciones se están enfocando en la seguridad de las bases de datos con
datos críticos, protegiéndolos de intrusiones y cambios no autorizados.
15. Buffers
Un buffer es una ubicación de la memoria
reservada para el almacenamiento temporal de
información digital. La primera cosa que
deberíamos tener muy clara es el hecho de que
hay una gran diferencia entre “Datos que están
en memoria” y “Datos que no están en
memoria”.
Rendimiento
de una BD
Consultas
La optimización de las consultas
podría ser el punto más extenso
de los tres por la gran variedad de
posibilidades que tenemos a la
hora de optimizar consultas.
Índices
Los índices son usados para
encontrar rápidamente los
registros que tengan un
determinado valor en alguna de
sus columnas.
Rendimiento
de una BD
16. Para el mantenimiento de los componentes de la base de datos es recomendable realizar un estudio
previo de la empresa, para así verificar el funcionamiento de estos componentes y para determinar si
existe sobresaturación de la información, esto con el fin de tener una idea más clara de lo que puede
hacerse sobre la base de datos para que esta esté optimizada.
Es muy importante que antes de realizar cualquier cambio en la base de datos
esta se debe respaldar, para así evitar cualquier inconveniente.
Mantenimiento
17. Análisis de los archivos de control (log files).
Cuando en una base de datos se produce algún problema, como puede ser la desconexión de un cliente, la
caída de esta puede estar debida a algún fallo interno, etc. Esta genera un mensaje en un fichero. El análisis
de estos mensajes puede dar una idea de la estabilidad de la base de datos, así como del acceso a la misma.
Análisis de las páginas de la base de datos.
Una base de datos está formada por distintos tipos de páginas:
Estructura de las tablas
Índices
Datos
Es conveniente verificar la integridad de éstas páginas con las herramientas del propio sistema.
Transacciones en el limbo.
En una BD cuando se inicia un proceso de modificación de datos se inicia una transacción. Esta puede ser
finalizada, o deshecha. Sin embargo, si el cliente desde el inicio de la transacción pierde la conexión con la
BD, esta transacción queda pendiente o en el “limbo”. Conviene eliminar periódicamente este tipo de
transacciones que no finalizaron.
Mantenimiento
18. Gestión de índices.
Los índices en general se guardan en forma de árbol binario. Cuando los datos sufren muchos cambios, los
índices empiezan a ocupar más páginas, aumentando lo que se conoce como profundidad del índice. Una
reconstrucción periódica de estas tablas reubica los índices de nuevo, mejorando las prestaciones de la BD.
Gestión de usuarios.
El alta y baja de los usuarios que acceden a la BD es una tarea que debe realizarse puntualmente, ya que a
su vez contribuye a la seguridad de ésta.
Gestión de permisos.
No todos los usuarios tienen los mismos privilegios, y al igual que se gestiona el alta y baja de éstos, debe
gestionarse los permisos sobre las tablas, vistas, etc.
Copias de seguridad (backups).
Tanto en frío como en caliente. En caliente significa que los usuarios siguen conectados a la BD mientras se
hace la copia de ésta. No todos los sistemas de BD lo permiten. En frío es cuando sólo está conectado el
ABD a ésta.
Mantenimiento
19. Estimar el tamaño de una base de datos
Para la estimación del tamaño que ocupara una base de datos se deben tener en cuenta los
siguientes valores:
• Ti: Tamaño inicial de la base “limpia”. Este valor dependerá del motor seleccionado, de su
versión y del SO.
• Td: Tamaño de las tablas con sus datos. Es el valor que ocuparan los datos, este es el más
estándar de los valores ya que se obtiene calculando el tamaño de cada una de las tablas
sumando lo que ocuparan cada una de sus filas. Si hay que tener en cuenta que no todos los
motores poseen exactamente los mismos tipos de datos por lo que los tamaños podrían variar.
Además hay que tener en cuenta que cada motor maneja diferente las características de las
columnas (manejo de nulls por ejemplo).
• Tidx: Tamaño de los índices. Este tamaño se obtiene de la suma de todos los índices que
tenga cada una de las tablas. Y para su cálculo se deberá tener en cuenta el tipo de índice
(cluster, no cluster) y el método que utilice el motor seleccionado para almacenarlo
20. • Tc: Tamaño de las funciones y/o procedimientos (generalmente este tamaño es insignificante
respecto de los demás.
• Tud: este tamaño depende de la configuración de la base y de los tipos de procesos que se
ejecuten. En la mayoría de los casos suele ser un espacio a considerar si se tiene un alto
volumen de transacciones concurrentes o si las transacciones ejecutan muchas sentencias en
cada transacción.
• Tlog: Tamaño para logs de transacciones. Este valor puede variar de acuerdo a la
configuración de la base.
• CS: Coeficiente de seguridad Tdb
Tamaño de la base de datos
Tdb=(Ti+Td+Tidx+Tc+Tud+Tlog) * CS
Estimar el tamaño de una base de datos
21. RESUMEN
Es importante diseñar una base de datos para modelar con precisión las funciones empresariales, ya
que una base de datos bien diseñada ofrecerá un mejor rendimiento.
Se debe tener en claro la normalización de base de datos ya que gracias a esto podemos lograr un
buen diseño, las bases de datos normalizadas se caracterizan por tener un mayor número de tablas
estrechas (con pocas columnas).
La exigencia de integridad de los datos garantiza la calidad de los datos de la base de datos. Por
ejemplo, si se especifica para un empleado el valor de identificador de 123, la base de datos no debe
permitir que ningún otro empleado tenga el mismo valor de identificador. Si tiene una
columna empleado_valoracion para la que se prevean valores entre 1 y5, la base de datos no debe
aceptar valores fuera de ese intervalo.
Una de las funciones de las bases de datos consiste en proteger los datos, ya que es muy importante
la seguridad de una entidad.
Una base de datos deberá de asegurarse de que realice todas las operaciones importantes rápidas y
correctamente
Después de creado una base de datos debe de tener una constante mantenimiento para el buen
funcionamiento de la misma
También debemos de tener claro la estimación del tamaño de la base de datos ya que gracias a esto
se podrá ver si se necesita reajustes.
22. •Los nombres de las tablas deberían ir en plural y los nombres de las
columnas en singular.
•Utilizar caracteres alfanuméricos.
•Utilizar el guion bajo (_) para separar palabras.
•Limitar los nombres a menos de 64 caracteres.
•Utilizar palabras en minúsculas.
RECOMENDACIONES
•Utilizar las letras ID o COD en las columnas de clave primaria y
foránea.
•En una tabla, colocar primero la clave primaria seguida de las claves
foráneas.
•Los nombres de los campos deben ser descriptivos de su contenido.
Los nombres de los campos deben ser unívocos entre tablas,
excepción hecha de las claves
RECOMENDACIONES
23. Recursos del sistema cliente Servidor
hardware cpu Cpu más rápido posible de doble
núcleo o mayor
El más rápido posible
Ram La máxima posible La máxima posible.
Disco duro Disco duro rápido, con suficiente
espacio libre
La máxima posible.
Varios discos duros de alta
capacidad y alta velocidad
Red Conexión de alta velocidad Conexión de alta velocidad
software Sistema operativo Afinado para mejor operación de
aplicación cliente
Afinado para mejor operación de
la aplicación servidor
Red Afinado para mejor rendimiento Afinado para mejor rendimiento
aplicación Optimizar un gestor de base de
datos en aplicación cliente
Optimizar servidor del Dbms para
mejor desempeño
•Tener en cuenta esta tabla para mejorar el rendimiento de una base de datos bien diseñada:
RECOMENDACIONES
24. CONCLUSIONES
Al desarrollar este trabajo damos una inducción en el tema de Diseño de Bases de Datos.
Nos muestra la gran importancia que para cualquier entidad, ya sea una empresa grande o
chica, para el gobierno, hasta para la vida cotidiana de una persona tienen las bases de
datos. Todo gira alrededor de ellas, todos los procesos del mundo están registrados en ellas,
de ahí la importancia de llevar a cabo un diseño eficiente y libre de errores de las mismas.
APRECIACIÓN DEL EQUIPO
El buen diseño de una base de datos nos dará un mejor rendimiento de la misma.
25. Eficiente: Que realiza o cumple un trabajo o función a la perfección.
Eficiencia: Capacidad para realizar o cumplir adecuadamente una función
Esotérico: Que es incomprensible o difícil de entender.
Procedimientos almacenados: es un programa (o procedimiento) almacenado físicamente en una
base de datos. Su implementación varía de un gestor de bases de datos a otro.
Desencadenadores: es una clase especial de procedimiento almacenado que se ejecuta
automáticamente cuando se produce un evento en el servidor de bases de datos.
GLOSARIO
26. Firewalls: es un software o hardware que comprueba la información procedente de Internet
o de una red y, a continuación, bloquea o permite el paso de ésta al equipo
Dbms: Database Management System" (DBMS) son un tipo de software muy específico,
dedicado a servir de interfaz entre la base de datos, el usuario y las aplicaciones que la
utilizan.
Software: Conjunto de programas y rutinas que permiten a la computadora realizar
determinadas tareas.
Hardware: Conjunto de elementos físicos o materiales que constituyen una computadora o
un sistema informático.
GLOSARIO