Diseño de una base de datos

27
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

Transcript of Diseño de una base de datos

Page 1: Diseño de una base de datos

John Denis Suarez OrtizDorvin Eduardo Bardales Lucana

Diseño de una Base de Datos

BASE DE DATOS I

Ingeniería de Sistemas y Telemática

Page 2: Diseño de una base de datos

 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

Page 3: Diseño de una base de datos

 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

Page 4: Diseño de una base de datos

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.

Page 5: Diseño de una base de datos

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.

Page 6: Diseño de una base de datos

Tercer nivel de F/N.Eliminar aquellos campos que no dependan de la clave.

Page 7: Diseño de una base de datos

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.

Page 8: Diseño de una base de datos

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.

Page 9: Diseño de una base de datos

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

Page 10: Diseño de una base de datos

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.

Page 11: Diseño de una base de datos

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: 

Page 12: Diseño de una base de datos

Integridad de entidadLa 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 dominioLa 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

Page 13: Diseño de una base de datos

Integridad referencialLa 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 usuarioLa 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

Page 14: Diseño de una base de datos

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.

Page 15: Diseño de una base de datos

BuffersUn 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.

ÍndicesLos índices son usados para encontrar rápidamente los registros que tengan un determinado valor en alguna de sus columnas.

Rendimiento de una BD

Page 16: Diseño de una base de datos

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

Page 17: Diseño de una base de datos

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

Page 18: Diseño de una base de datos

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

Page 19: Diseño de una base de datos

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

Page 20: Diseño de una base de datos

• 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

Page 21: Diseño de una base de datos

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 correctamenteDespué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.

Page 22: Diseño de una base de datos

•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

Page 23: Diseño de una base de datos

  Recursos del sistema cliente Servidorhardware cpu Cpu más rápido posible de

doble núcleo o mayorEl más rápido posible

  Ram La máxima posible La máxima posible.  Disco duro Disco duro rápido, con

suficiente espacio libreLa máxima posible.Varios discos duros de alta capacidad y alta velocidad

  Red Conexión de alta velocidad Conexión de alta velocidadsoftware Sistema operativo Afinado para mejor operación

de aplicación clienteAfinado 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

Page 24: Diseño de una base de datos

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 EQUIPOEl buen diseño de una base de datos nos dará un mejor rendimiento de la misma.

Page 25: Diseño de una base de datos

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

Page 26: Diseño de una base de datos

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

Page 27: Diseño de una base de datos

BIBLIOGRAFÍA

https://www.cs.upc.edu/~bcasas/docencia/pfc/NormalitzacioBD.pdf http://www.monografias.com/trabajos30/base-datos/base-datos.shtml#ixzz46hPqSGl2https://technet.microsoft.com/es-es/library/ms184276(v=sql.105).aspxhttp://revista.seguridad.unam.mx/numero-12/principios-b%C3%A1sicos-de-seguridad-en-bases-de-datoshttp://miweb.yabiru.com.ar/sisop/ADR/material/2.2_ADR_Estimacion_de_tamanio_de_una_DB_presenta.pdfhttp://www.slinfo.una.ac.cr/manualsite/mantenimiento/PRC02.html