Sunteți pe pagina 1din 37

UNIDAD 3

Diseo y Creacin de Base de Datos


Introduccin
La creacin de una base de datos tiene tres fases:
1. Diseo del modelo conceptual o entidad relacin, que consiste en la
determinacin de los aspectos de inters de una organizacin y cmo
esos aspectos se relacionan. Estos aspectos de inters se les conoce como
entidades, y de cada uno de stos se deben identificar atributos o
caractersticas que deben ser almacenadas. El modelo conceptual se
representa con el diagrama entidad relacin de la base de datos.
Introduccin
2. Diseo del modelo lgico consiste en transformar
el diagrama entidad relacin a tablas mediante un
conjunto de reglas preestablecidas. En otras palabras,
es el proceso de transformar desde el modelo
entidad relacin, en donde la informacin se
representa con entidades y sus relaciones, al modelo
relacional en donde la informacin se representa en
tablas. Esto se hace porque el modelo conceptual no
tiene una implementacin a nivel de estructuras de
datos, pero si lo tiene el modelo relacional (tablas). En
esta fase tambin se elimina la redundancia en las
tablas a travs de un proceso conocido como
normalizacin.
Introduccin
3. Diseo del modelo fsico, consiste en la creacin
de la base de datos en un computador utilizando un
DBMS, para lo cual se crea el Script (instrucciones en
SQL) para la creacin de la base de datos, cada
tabla con sus atributos, restricciones e integridad o
constraints como: not null, default, unique, claves
primarias, checks, integridad referencial y triggers.
Otros objetos tiles para la gestin, seguridad y
rendimiento de la Base de datos como: vistas,
procedimientos almacenados, ndices, grupos de
usuarios, permisos, etc. Finalizando esta fase, la base
de datos queda lista para su utilizacin.
Del Modelo Lgico al modelo Fsico
Para realizar esta transformacin se debe conocer
aspectos sobre el DBMS como:
Los objetos de Base de Datos soportados y los archivos
requeridos.
Detalles de: ndices soportados, integridad referencial, constraints,
tipos de datos, etc. , y funcionalidades del DBMS.
Detalles de las nuevas funcionalidades en las versiones del DBMS.
Parmetros de configuracin.
Experiencia en el Lenguaje de Definicin de Datos (DDL) para
traducir el diseo fsico a objetos de la base de datos.

Es la traduccin de trminos lgicos a objetos


fsicos.
Transformacin de Entidades a
Tablas
Se puede variar el mapeo de entidades a tablas a
travs de la desnormalizacin para aumentar el
rendimiento y la disponibilidad.
Transformacin de Dominios a Tipos
de Datos
Para columnas tipo texto, usar tipos de dato de
longitud fija en vez de tipos de datos de longitud
variable. Puede desperdiciar un poco de espacio
pero hay menor sobrecarga en inserciones y
actualizaciones

Es preferible usar compresin, que implementar


columnas de longitud variable cuando se quiere
ahorrar espacio.
Ordenando Columnas
El Orden recomendado es:
1. Columnas no actualizables de tipos fijos de datos.

2. Columnas no actualizables de tipo variable

3. Columnas frecuentemente actualizables

Esto es para hacer mas livianos los registros de los


archivos log.
Integridad Referencial
Una clave fornea es cuando la clave primaria de una tabla se
coloca como atributo de otra tabla, para relacionarlas. La
integridad referencial garantiza que los valores que se insertan en
la columna clave fornea sean validados previamente en la tabla
donde es clave primaria. Si un valor de clave fornea no est
insertado previamente en la columna donde es clave primaria, no
ser admitido por el sistema.
Construya Estructuras de Datos Fsicas

Se debe mapear cada tabla a un archivo segn su


uso.
Construya Estructuras de Datos Fsicas
Calcular el tamao de cada tabla.
Para calcular el almacenamiento necesario para una tabla se debe
determinar el tamao en bytes de cada fila, sumando los tamaos
de cada columna, luego, se debe determinar el nmero esperado
de filas que tendr la tabla, el producto de tamao de filas x
nmero de filas es el tamao de la tabla. Se debe reservar un
espacio adicional tomando en cuenta que se tienen punteros que
enlazan a las filas, y las cabeceras de los bloques de datos, que
almacenan informacin de control. El espacio adicional para
punteros y cabeceras depende de cada SGBD.
Hay que reservar espacio de almacenamiento para los ndices y
para inserciones adicionales en las tablas.
Se debe usar compresin en el almacenamiento porque ahorra
espacio en disco y hace mas eficiente la Entrada Salida.
Diseo y Desempeo de la Base de
Datos
Existen varias tcnicas para mejorar el acceso a los
datos.
Diseo de ndices
Un ndice es una ruta de acceso alternativa a los
datos.
La estructura de un ndice hace fcil encontrar
datos en la base de datos, con menos operaciones
de E / S.
El DBMS decide cuando usar un ndice.
ndices tipo rbol B
Diseo y Desempeo de la Base de
Datos
CREAR INDICES EN LAS SIGUIENTES SITUACIONES:
Cuando las tablas son muy grandes, para apoyar a las consultas
ms frecuentes.
Cuando el resultado de las consultas tiene menos del 25% del
total de las filas de una tabla.
En las claves forneas, para mejorar el rendimiento de las
junturas y el chequeo de integridad referencial.
En la claves primarias, para reforzar la unicidad de los datos.
En las claves candidatas, si se hacen bsquedas por esas
columnas.
Si se agregan columnas adicionales a un ndice, se puede
satisfacer consultas solo accediendo al ndice.
Los ndices pueden disminuir las necesidades de ordenamientos,
que son procesos de alto costo.
Diseo y Desempeo de la Base de
Datos
INDICES AGRUPADOS (CLUSTERED)
Ordenan fsicamente los datos de una tabla de
acuerdo a una columna. Solo puede crearse un ndice
agrupado por cada tabla. Son tiles en los siguientes
casos:
Cuando un gran nmero de consultas recuperan rangos
de datos basndose en valores especficos de columna.
Por una clave fornea, cuando sta representa la parte
muchos de una cardinalidad uno a muchos y se necesita
recuperar los datos por la clave fornea.
Cuando los datos son ordenados frecuentemente usando
ORDER BY, GROUP BY, UNION, SELECT DISTINCT, JOINS).
Diseo y Desempeo de la Base de
Datos
Costos de ndices
Trabajo adicional en actualizaciones.
Espacio adicional.
Mayor tiempo en ejecucin de LOAD y REORG.
Archivos adicionales para almacenar los ndices.

Se deben asignar a los ndices reas de buffer


diferentes de los datos.
Desnormalizacin
Normalizacin es ubicar cada hecho en el lugar ms apropiado, para minimizar la
redundancia de datos y los problemas de integridad. La integridad mejora los
procesos de actualizacin de datos, porque solo se actualiza una vez cada dato,
pero puede afectar al rendimiento de las consultas, porque para recuperar un dato
a veces debemos enlazar varias tablas, y eso es un proceso costoso.

La desnormalizacin es un proceso en el que deliberadamente se crea redundancia


para que un mismo dato est disponible en varios sitios de la base de datos, para
aligerar las consultas de dicho dato.

CUANDO DESNORMALIZAR

Nunca se debe desnormalizar, a menos que se tenga problemas severos de


rendimiento en las consultas, a su conocimiento de cmo la SGBD trabaja, le
asegure que los beneficios de la desnormalizacin superan a los beneficios de
tener una base de datos normalizada.
Desnormalizacin
Siempre se debe considerar los siguientes aspectos
antes de la desnormalizacin.

El sistema puede alcanzar un rendimiento aceptable


sin desnormalizacin? .

El rendimiento del sistema despus de la


desnormalizacin todava es inaceptable? .

El sistema se volver menos confiable luego de la


desnormalizacin? .
Desnormalizacin
En el diseo y el funcionamiento se recomienda mantener tablas
normalizadas y desnormalizadas para que las tablas
desnormalizadas solo sean de lectura y mejore as el rendimiento
de la Base de Datos.

Se debe usar triggers para sincronizar datos redundantes en


actualizaciones.

Estas situaciones no siempre requieren desnormalizacin, pero son


recomendaciones de cuando la desnormalizacin puede ser
considerada, siempre que hayan problemas de rendimiento.
Desnormalizacin
Cuando desnormalizar?
Cuando varias consultas requieren junturas en un ambiente
transaccional.
Cuando consultas que necesitan clculos entre varias
columnas, requieren almacenar clculos.
Las tablas deben ser accesibles en diferentes maneras, por
diferentes usuarios, durante el mismo perodo.
Cuando una clave primaria es muy extensa.
Algunas columnas se consultan en gran porcentaje del
tiempo, causando un SQL muy complejo e ineficiente para
ser utilizado.
Desnormalizacin
Tablas Prejuntadas
Si dos o ms tablas necesitan unirse de forma frecuente por
requerimientos de una aplicacin, pero el costo de la juntura
es prohibitivo, considere la creacin de tablas prejuntadas.
Las tablas prejuntadas, tienen las siguientes caractersticas:
No contienen columnas redundantes
Contienen slo las columnas que sea absolutamente necesarias
para satisfacer las necesidades de la aplicacin.
Sea genera peridicamente, utilizando SQL para juntar las
tablas normalizadas

El beneficio de la prejuntura es que se ahorra el costo de la


combinacin, ya que se efecta una sola vez.
Desnormalizacin
Tablas de Reportes.
A menudo es imposible desarrollar un reporte para el
usuario final utilizando slo SQL. Este tipo de informes
requieren un formato especial o manipulacin de datos. Si
algunos informes crticos o muy visibles de esta naturaleza
deben ser vistos en un entorno en lnea, considere la
creacin de una tabla que representa el reporte.
La tabla de reporte debe:
Contener una columna para cada columna del reporte.
Tener sus filas fsicamente en la secuencia en que deben
aparecer en el informe para que el ordenamiento no es
necesario.
No subvertir principios relacionales (como elementos de datos
1FN y atmicos) .
Desnormalizacin
Tablas Espejo
Cuando se tiene un trfico intenso generado por
consultas y actualizaciones en las tablas de la BD,
generadas por una o ms aplicaciones, se puede
mejorar el rendimiento creando tablas espejo de
las tablas ms accedidas. Mientras unos usuarios
accedes a la una tabla, otros acceden a la tabla
espejo. Se debe generar un mecanismo de
replicacin que mantenga sincronizadas a cada
tabla original con su tabla espejo.
Desnormalizacin
Dividir tablas (fragmentacin)
Si diferentes partes de una tabla son accedidos por
diferentes usuarios, se puede dividir la tabla en dos o
ms partes, para que cada grupo de usuarios acceda
solo a la parte que le interesa. La tabla original
tambin puede ser mantenida, si otras aplicaciones
utilizan toda la tabla. Este mecanismo mejora el
rendimiento de las consultas ya que cada parte de la
tabla se puede ubicar en un servidor fsicamente
cercano de los usuarios que la necesitan, disminuyendo
el trfico de red y permitiendo que una misma tabla
sea accedida en paralelo por varios usuarios.
Desnormalizacin
Fragmentacin vertical
Separa las columnas de una tabla en dos tablas,
manteniendo en las dos a la clave primaria de la
tabla original y se debe generar integridad
referencial entre las dos y la tabla original. No
eliminar filas de ninguna de las tablas
fragmentadas en forma aislada.
Si se conserva a la tabla original y las particiones
son tablas solo de lectura, no es necesario generar
integridad referencial.
Desnormalizacin
Fragmentacin horizontal
Divide a una tabla en dos o mas tablas, ubicando a las
filas en cada tabla resultante, en base a un criterio de
seleccin. Por ejemplo, si se tiene una tabla Estudiante,
en la que estn todos los estudiantes de la Universidad,
se puede dividir para que en cada fragmento queden
estudiantes de una sola facultad. Se puede tambin
mantener a la tabla original, para procesos que as lo
requieren, pero siempre manteniendo sincronizados los
datos con cada fragmento.
Desnormalizacin
Tablas combinadas
Si hay tablas con una relacin uno a uno, considere la
posibilidad de combinarlas en una sola tabla. Por
supuesto, si cada participante en la relacin uno-a-uno
tiene diferentes relaciones con otras tablas, tendr que
tomar eso en cuenta a la hora desnormalizacin. A
veces, incluso las relaciones uno-a-muchos se pueden
combinar en una sola tabla, pero el proceso de
actualizacin de datos ser considerablemente
complicado debido al aumento en los datos
redundantes.
Desnormalizacin
Datos Redundantes
Algunas veces los datos de una o ms columnas de una
tabla son accedidas casi todo el tiempo en una consulta
de otra tabla. En estos casos, considere aadir las
columnas a la tabla de consulta como datos
redundantes. Mediante la realizacin de estas columnas
adicionales, las junturas pueden ser eliminadas y as
mejorar el rendimiento. Esto se debe intentar slo si el
acceso a los datos, se ejecuta con rendimiento
insuficiente.
Desnormalizacin
Grupos de datos repetidos
El proceso de normalizacin transforma grupos de
datos repetidos en filas distintas, en lugar de ubicar
esos datos en columnas separadas en la misma fila.
Aunque la normalizacin de grupos de datos repetidos
optimiza la integridad de los datos y el rendimiento de
actualizacin, por lo general los procesos de consultas
producen mas accesos a disco y son menos eficientes.
Esto sucede porque hay ms filas en la tabla y ms
filas deben ser ledos con el fin de satisfacer las
consultas.
Desnormalizacin
Ejemplo de grupos de datos repetidos.
Tabla normalizada:
CREATE TABLE SALDO_CLIENTE
(codigoCliente INTEGER NOT NULL,
mes INTEGER NOT NULL,
saldoPromedio DECIMAL(15,2),
constraint PKCB PRIMARY KEY (codigoCliente, mes))
Ventajas: puede almacenar un infinito nmero de saldos
promedio por cliente.
Desventajas: para obtener 6 saldos de un cliente se deben
acceder a 6 filas distintas.
Desnormalizacin
Ejemplo de grupos de datos repetidos.
Tabla desnormalizada:
CREATE TABLE SALDO_CLIENTE

(codigoCliente INTEGER NOT NULL,


saldoPromedio1 DECIMAL(15,2),
saldoPromedio2 DECIMAL(15,2),
saldoPromedio3 DECIMAL(15,2),
saldoPromedio4 DECIMAL(15,2),
saldoPromedio5 DECIMAL(15,2),
saldoPromedio6 DECIMAL(15,2),
constraint PKCB PRIMARY KEY (codigoCliente))
Ventajas: para obtener 6 saldos de un cliente se debe acceder a 1 sola fila.
Desventajas: solo puede almacenar hasta 6 saldos por cliente.
Desnormalizacin
Datos derivados o calculados
Son aquellos cuyo valor depende de los valores de
otras columnas, y se los obtiene con un proceso de
clculo matemtico.
Si el costo de obtener datos mediante frmulas
complicadas es prohibitivo, piense en almacenar
fsicamente los datos calculados en una columna en
lugar de calcularlo cada vez que se lo necesita.
Desnormalizacin
Datos derivados o calculados
Pero cuando los valores componentes del valor calculado cambian,
es imperativo que los datos derivados almacenados tambin
cambien, caso contrario, la informacin almacenada se vuelve
inconsistente. Los datos incorrectos repercutirn negativamente en la
capacidad de uso, eficacia y fiabilidad de la base de datos. Para
evitar estos problemas, considere almacenar los datos calculados
slo cuando los siguientes criterios se cumplen:

Los datos de base para el clculo del valor derivado son relativamente
estticos.
El costo de realizar el clculo del valor derivado es bastante alto.
El patrn de uso de las tablas de origen es tal que el nuevo clculo se
puede realizar rpidamente cuando los datos de origen cambien.
Desnormalizacin
Jerarquas
Una jerarqua es una estructura que es fcil de
modelar con una base de datos relacional, pero
puede causar dificultades de recuperacin de
datos a menos que el DBMS soporte extensiones de
SQL para recorrer la jerarqua. Por esta razn, las
aplicaciones que requieren jerarquas con
frecuencia contienen tablas desnormalizadas para
acelerar la recuperacin de datos.
VISTAS (VIEW)

Otro aspecto de diseo fsico de base de datos es la


creacin de vistas para soportar los requerimientos de
datos de una aplicacin o de un usuario especfico. Una
vista es una manera de convertir una instruccin SELECT en
una tabla", accesible mediante SQL. Por lo tanto, una vista
puede ser considerada una tabla lgica. No se requiere la
estructura fsica de una vista; es una representacin de
datos que se almacenan en otras tablas (o en otras vistas).
Los datos de la vista no se almacenan en ningn lugar y slo
existe fsicamente en las tablas subyacentes. Las vistas
tambin pueden basarse en otras vistas.
Qu es una vista?
Usos de las vistas

Las vistas deben crearse en funcin de su utilidad para el desarrollo de


aplicaciones y para los usuarios de consultas ad hoc. Se utilizan para:
Proporcionar seguridad a un nivel de fila y columna
Asegurar eficientes vas de acceso a los datos
Ocultar al usuario la complejidad de los datos
Mostrar datos derivados
Cambiar los nombres de las tablas
Cambiar los nombres de las columnas

En cualquier caso, asegrese de documentar el por qu de cada vista


creada para que cuando se hagan cambios estructurales en las tablas de
la base de datos se modifiquen tambin las vistas que acceden a esas
tablas.

S-ar putea să vă placă și