• No se han encontrado resultados

2. Modelado de Datos Estructurados

N/A
N/A
Protected

Academic year: 2022

Share "2. Modelado de Datos Estructurados"

Copied!
22
0
0

Texto completo

(1)

2. Modelado de Datos Estructurados

2.1 Definición

Son aquellos datos fuertemente tipados Poseen una estructura o estilo rígido

Por lo general se asocian a una base de datos (relacional u orientada a objetos).

2.2 Administración de bases de datos

2.2.1 Roles

La información es el centro de todas las aplicaciones de hoy en día.

La administración de la información es una tarea que tiene demasiada responsabilidad ya que el éxito o fracaso depende directamente de ella.

Hablar de la administración de información es hablar de roles, algunas organizaciones (dependiendo de los recursos humanos) los dividen en:

Data Administrator (DA): quienes son las personas encargadas de lidiar con los aspectos comerciales o profesionales de los datos.

Database Administrator (DBA): encargado de los aspectos técnicos.

Nota: en pequeñas organizaciones ambos roles son ejecutados por la misma persona, a la cual por lo general se le conoce como DBA.

otros roles que no están directamente relacionados con la información pero que interactúan directamente con las personas mencionadas son:

System Administrator (SA): quien se encarga de toda la infraestructura de servidores, discos, firewalls, etc.

Programmers/Developers: el dolor de cabeza de los DBAs.

Managers: a quien rendirle cuentas.

Customers/End users: gente sin ningún conocimiento técnico.

(2)

DBA vs DA

DBA vs DA vs SA

(3)

Habilidades requeridas para ser un "buen" DBA:

Técnicas:

Conocimiento de bases de datos

Conocimiento de desarrollo de aplicaciones

Conocimiento de administración de sistemas/servidores Comerciales:

Entender procesos de una organización Seguir tendencias de la industria

Sociales

Comunicación Administración

Resolución de problemas Educación continua

Aspectos a considerar una oferta de trabajo de DBA:

La compañía ofrece capacitación regular ?

Se permite contactar regularmente a grupos de usuarios locales ? Existen DBA de respaldo o solamente uno de 24/7 ?

Existen DBAs y SAs o se espera realizar ambas actividades ? Cómo es la relación con las personas de desarrollo ?

El DBA es tomado en cuenta para cuestiones de revisiones, presupuestos, etc. ?

Y que hay acerca del salario ??

(4)

2.3 Modelado de Datos

2.3.1 Definición

Es el proceso de analizar los aspectos de interés para una organización y la relación que tienen unos con otros.

Resulta en el descubrimiento y documentación de los recursos de datos del negocio.

El modelado hace la pregunta " Qué ? " en lugar de " Cómo ? ", esta última orientada al procesamiento de los datos.

Es una tarea difícil, bastante difícil, pero es una actividad necesaria cuya habilidad solo se adquiere con la experiencia.

2.3.2 Metas y beneficios

Registrar los requerimientos de datos de un proceso de negocio.

Dicho proceso puede ser demasiado complejo y se tendrá que crear un "enterprise data model", el cual deberá estar constituído de líneas individuales.

Permite observar:

Patrones de datos

Usos potenciales de los datos

2.3.4 Tipos de modelos de datos

(5)

Basicamente son 3:

Conceptual: muy general y abstracto, visión general del negocio/institución.

Lógico: versión completa que incluye todos los detalles acerca de los datos.

Físico: esquema que se implementara en un manejador de bases de datos (DBMS).

2.4 Modelado de Datos Conceptual y Lógico

Algunos aspectos a considerar al momento de realizar el modelado/análisis No pensar físicamente, pensar conceptualmente

No pensar en procesos, pensar en estructura

No pensar en navegación, pensar en términos de relaciones

2.4.1 Modelo Entidad Relación

Generalmente todo modelo tiene una representación gráfica, para el caso de datos el modelo mas popular es el modelo entidad-relación o digrama E/R.

Se denomina asi debido a que precisamente permite representar relaciones entre entidades (objetivo del modelado de datos).

La figura 2.1 muestra distintos ejemplos de notaciones, en realidad todas muy similares.

Figura 2.1 Notación E/R (1) Ross, (2) Bachmann, (3) Martin, (4) Chen, (5) Rumbaugh

También debido al aumento de popularidad y uso de UML también se puede emplear dicha notación (figura 2.3).

(6)

Figura 2.3 Notación UML

Lo importante es que en toda organización se debe establecer un estándar que deben seguir todos los modelos de la misma.

El modelo debe estar compuesto por:

Entidades: todo lo que existe y es capaz de ser descrito (sustantivo).

Atributos: es una característica (adjetivo) de una entidad que puede hacer 1 de tres cosas:

Identificar Relacionar Describir

Relaciones: la conexión que existe entre 2 entidades (verbo).

Cardinalidad: número de ocurrencias que pueden existir entre un par de entidades.

Super llave: conjunto de uno o más atributos que "juntos" identifican de manera única a una entidad

Llave candidata: es una super llave mínima

Llave primaria: la seleccionada para identificar a los elementos de un conjunto de entidades.

Componentes simbólicos

Atributos: Nombre, Edad, Semestre, Id.

Entidades: Alumno, Salón, Profesor.

Entidades Débiles: No tienen llaves primarias.

(7)

Generalización: Agrupa propiedades en común a diferentes objetos.

Relación Cardinalidad

Figura 2.4 Componentes simbólicos E/R Guías de nombramiento

Es importante mantener guías o reglas para poder tener una documentación uniforme y consistente de todos los datos.

Entidades: una sola palabra (en singular) y con mayúsculas Atributos:

FirstName first_name

de relacion: VendorID, ProductName

Valores: definir que valores son válidos (NULL no es un valor) Relaciones de Cardinalidad

(Muchos a Muchos)

(Uno a Muchos)

(Uno a Uno)

Figura 2.5 Relaciones Modelo E/R Ejemplo Modelo E-R

(8)

Figura 2.5 Ejemplo Modelo E/R

Figura 2.5 Modelo E/R en E/R Generalización

Figura 2.7 Generalización

(9)

2.4.2 Conversión a tablas (esquema de datos)

El modelo es una representación visual que gráficamente nos da una perspectiva de como se encuentran los datos involucrados en un proyecto u organización.

Pero el modelo no nos presenta propiamente una instancia de los datos, un ejemplo que muestre con claridad algunas datos de muestra y como se relacionan en realidad. Por eso es conveniente crear un

"esquema", el cual consiste de tablas las cuales en sus renglones (tuplas) contienen instancias de los datos.

Las tablas 2.1 y 2.3 muestran las reglas que se deben seguir para poder crear dicho esquema.

modelo e-r conversión a tablas

una tabla por cada conjunto de entidades

nombre de tabla = nombre de conjunto de entidades una tabla por cada conjunto de relaciones m-m

nombre de tabla = nombre de conjunto de relaciones definición de columnas para cada tabla

conjuntos fuertes de entidades

columnas = nombre de atributos conjuntos débiles de entidades

columnas = llave_primaria (dominante) U atributos(subordinado) conjunto de relaciones R (m-m) entre A, B

columnas (R) = llave_primaria (A) U llave_primaria (B) U atributos(R) conjunto de relaciones R (1-1) entre A y B

columnas (A) = atribs(A) U llave primaria(B) U atributos(R) conjunto de relaciones R (1-m) entre A y B

columnas (B) = atribs(B) U llave primaria(A) U atributos(R)

Tabla 2.1

Para el ejemplo de la Figura 2.5 tendríamos:

escuela

id_escuela url nombre

departamento

clave_depto url nombre id_escuela curso

clave_curso seccion nombre clave_depto

(10)

profesor

id_prof nombre extension

estudiante

id_estud nombre carrera

profesor_curso

id_prof clave_curso

estudiante_curso

id_estud clave_curso

modelo e-r

de generalización a tablas dos posibilidades:

crear una tabla para el conjunto de entidades A de mayor nivel columnas (A) = atributos(A)

para cada conjunto de entidades B de menor nivel, crear una tabla tal que columnas

(B) = atributos (B) U llave_primaria (A)

si A es un conjunto de entidades de mayor nivel para cada conjunto de entidades B de menor nivel, crear una tabla tal que:

columnas (B) = atributos (B) U atributos (A)

Tabla 2.3

2.4.3 Normalización

Una vez creadas las tablas hay que verificar si aún se puede reducir u optimizar de alguna manera.

2.4.3.1 Dependencias funcionales

Es identificar aquellos atributos que dependen de otros y que generalizan el concepto de super-llave

(11)

Ejemplo:

ID ---> Nombre

ID --> Puesto --> Sueldo

2.4.3.2 Primera forma normal

Una tabla se encuentra en 1a NF, si todos sus atributos son atómicos (indivisibles) El ejemplo clásico:

nombre dirección teléfono

En 1a. NF

nombre apellido_paterno apellido_materno dirección teléfono

2.4.3.3 Segunda forma normal

Una tabla se encuentra en 2a NF, si está en 1a NF y cada atributo que NO es llave es "completamente"

dependiente de la llave.

Si tenemos la tabla:

calificaciones_cursos

id_estudiante depto clave_curso descripción calificación

NO se encuentra en 2a NF { id,clave,depto} --> descripción {clave,depto} --> descripción Normalizando quedaría

curso

depto clave_curso descripción estud_curso

(12)

id depto clave_curso calificación

2.4.3.4 Tercera forma normal

Un esquema relacional se encuentra en 3NF si para toda dependencia funcional X --> A:

X --> A es una dependencia funcional trivial o

X es una super llave o

A es miembro de una llave candidata de R

Lo anterior no quiere decir que una sola llave candidata deba contener a todos los atributos de A, cada atributo de A puede estar contenido en llaves candidatas diferentes.

deptos

nombre_depto extensión id_jefe empleados

id_empleado nombre_depto id_jefe donde es evidente que nombre_depto --> id_jefe, quedaría entonces:

deptos

nombre_depto extensión id_jefe empleados

id_empleado nombre_depto

2.5 Modelado Físico

El paso de un modelo lógico a uno físico requiere un profundo entendimiento del manejador de bases de datos que se desea emplear, incluyendo características como:

Conocimiento a fondo de los tipos de objetos (elementos) soportados

Detalles acerca del indexamiento, integridad referencial, restricciones, tipos de datos, etc

(13)

Detalles y variaciones de las versiones Parámetros de configuración

Data Definition Language (DDL)

Como se comentó en el modelado lógico el paso de convertir el modelo a tablas hace que las entidades pase a ser tablas (más las derivadas de las relaciones) y los atributos se convierten en las columnas de dichas tablas.

Físicamente esta metáfora de una tabla se mapea al medio físico, con algunas consideraciones como se menciona en las siguientes secciones.

2.5.1 Atributos

2.5.1.1 Tipos de Datos

Revisar los tipos de datos disponibles en el DBMS, en especial Número de dígitos en números enteros

La precisión de los flotantes

Cadenas de caracteres de longitud fija (char(50)) y variable (varchar(50)) Blobs (Binary large objects) y Clobs (Character large objects)

2.5.1.2 Llaves primarias

En ocasiones se pueden presentar casos en donde la llave primaria no puede representarse en alguno de los tipos ofrecidos por el dbms, en ese caso se podria definir alguno y bien optar por otra llave primaria.

Importante:

Algunos dbms poseen la capacidad de "autoincrement" o "identity property" con la cual pueden automáticamentemanipular algun atributo para generar llaves incrementales. Pero es importante verificar: como se manejan internamente ?, se pueden reiniciar ?, se permite especificar algun valor inicial ?.

2.5.1.3 Orden de las atributos (columnas)

Algo importante dependiendo del dbms que se utilice pero por lo general la secuencia es:

Columnas de longitud fija que no se actualizan frecuentemente.

Aquellas que nunca se actualizan que por lo general tendrán longitud variable.

Las que se actualizan frecuentemente.

(14)

2.5.1.4 Integridad Referencial

En la medida de lo posible indicar cuales columnas brindan o sirven de vínculo entre 2 tablas.

El usuario (programador) puede hacerse cargo de esto pero es mejor que el dbms se haga cargo.

No se recomienda en ambientes de desarrollo.

2.5.2 Indices

"Es una tabla que contiene una lista de elementos (llaves) y números de referencia donde dichos elementos se encuentran (campos de referencia)".

Un índice es un atajo desde un campo llave hacia la localización real de los datos.

Es el punto clave de la optimización de velocidad de toda base de datos.

Si se busca alguna tupla en base a un atributo que no tiene un índice entonces se realiza un escaneo de la tabla completa lo cual es demasiado costoso, por eso es recomendable usar índices en:

Llaves primarias Llaves foráneas Indices de acceso Ordenamiento

No olvidar que el uso de un índice implica:

Overhead debido a la actualización de los mismos Espacio adicional en disco

Procesos batch de muchos datos pueden volverse demasiado lentos Manipulación de archivos adicionales por el sistema operativo Tipos de índices:

Btrees

(15)

Bitmaps

Male 1000011101 Female 0110000010 Unknown 0001100000

Reverse Key

Basado en btrees pero usando el campo en orden inverso Craig --> giarC

Partitioned

Btrees separados en diferentes "chunks" que inclusive pueden ser distintas particiones del disco

Ordered

Especificacion del btree para indicar si ordena ascendente o descendentemente

(16)

otros serían:

Hashing

Acceso directo a los datos a través de una fórmula de hash. El

inconveniente es que requiere de espacio adicional en disco y no es útil al recuperar "rangos" de datos.

Clustering

La idea es mantener las tuplas ordenadas bajo algún criterio. El inconveniente es que requiere de espacio adicional, cuando se acaba entonces se puede seguir insertando pero se pierde el concepto de clustering.

Interleaving Data

Cuando 2 tablas de antemano se sabe que se mezclarán (join) para buscar cierta información entonces es conveniente hacer esa mezcla en el disco. La mayoría de los dbms no lo hacen de manera directa, se prefiere el

clustering.

2.5.3 Structured Query Language (SQL)

CREATE

create table table_name (

column_name column_type column_modifiers, ...,

column_name column_type column_modifiers);

create table musicians(

(17)

musician_id INT, last_name CHAR(40), first_name CHAR(40), nickname CHAR(40));

INSERT

insert into table_name (column_name, ..., column_name) values (value, ..., value);

insert into musicians (musician_id, last_name, first_name, nickname) values(2,'Lydon','John','Johnny Rotten');

UPDATE

update table_name set column_name= value, ...,

column_name=value

where column_name=value;

update albums set year=1994 where album_id=4;

update albums

set category='old music'

(18)

where year < 1980;

DELETE

delete from table_name where column_name=value

delete from albums where albums_id=4;

SELECT

select column_name, ..., column_name from table_name

where column_name=value;

select title from albums

where category='industrial';

JOIN

select bands.band_name from bands,albums

where albums.category='alternative' and bands.band_id=albums.band_id;

(19)

SUBQUERIES select title from albums, where band_id in (select bands.band_id from bands, band_musician

where band_musician.musician_id=2

and bands.band_id=band_musician.band_id);

2.6 Bases de datos temporales

2.6.1 Temporalidad

Relacionado con datos que implican o relacionan el tiempo.

Es útil para poder hacer consultas sobre una situación particular en un punto particular del tiempo.

La investigación en el área es algo que se estudia desde hace varios años, ej. Temporal SQL un artículo publicado en 1994 por Rick Snodgrass (Universidad de Arizona).

La necesidad surge de simplificar lo que de por si es posible modelar con las técnicas tradicionales.

2.6.2 Caso práctico

2.6.2.1 Problema inicial

Si una empresa desea tener almacenada la información de sus proveedores, puede tener un esquema como:

Esquema

Supplier(ID, Name)

Sell (ID_Supplier, ID_Product) Product(ID, Name, Description)

Restricciones de integridad Las llaves primarias son:

Supplier(ID, Name)

Sell (ID_Supplier, ID_Product)

(20)

Product(ID, Name, Description)

ID_Supplier en la relación Sell hace referencia a la llave primaria de Supplier ID_Product en la relación Sell hace referencia a la llave primaria de Product

de manera que una consulta como el encontrar el nombre del vendedor o los productos que vende puede ser algo muy fácil de hacer en SQL:

SELECT Name FROM Supplier, Sell

WHERE Supplier.ID=Sell.ID_Supplier and Supplier.name='Samsung'

Otras consultas:

Obtener los proveedores que son capaces de ofrecer al menos 1 producto.

1.

Obtener los proveedores que no pueden ofrecer ningún producto.

2.

2.6.2.3 Problema de antigüedad

Sin embargo si la compañía desea mantener un histórico de los distintos productos ofrecidos por cada proveedor a lo largo de la historia, entonces el problema se complica y habria que modificar el

esquema a algo como:

Supplier(ID, Name, Since date)

Sell (ID_Supplier, ID_Product, Since date)

Qué restricciones de integridad se presentan ??

Llaves primarias

Supplier(ID, Name, Since date)

Sell (ID_Supplier, ID_Product, Since date) Fechas válidas

Ningún vendedor puede ofrecer productos si es que aún no tiene un contrato

Consultas:

Obtener los proveedores que son capaces de ofrecer al menos 1 producto y para cada uno de los productos obtener la fecha desde la cual lo hace.

1.

Obtener los proveedores que no pueden ofrecer ningún producto y desde cuándo no pueden hacerlo.

2.

2.6.2.4 La solución real

(21)

Supplier(ID, Name, From date, To date)

Sell (ID_Supplier, ID_Product, From date, To date)

Nota: Algunos DBMS ofrecen la opción de incluir "intervalos (Intervals) como un tipo de dato.

Qué se está asumiendo ?

No se pueden tener 2 contratos al mismo tiempo El tiempo de terminación puede estar abierto

Qué restricciones de integridad se presentan ??

Fechas válidas

Que el To sea mayor que el From Llaves primarias

Supplier(ID, Name, From date, To date)

Sell (ID_Supplier, ID_Product, From date, To date) Nota: valdría la pena normalizar la relación Supplier ?

Qué pasa con cuestiones como "asegurarse que un producto se ofrezca en un contrato válido" ?

2.6.3 Conclusiones

El manejo de datos temporales es delicado y no se puede tomar a la ligera.

Las restricciones de integridad pueden llegar a complicarse al grado de que se puede llegar a hacer todo un método o Store Procedure para verificarlas.

Las consultas siempre se podrán hacer, aunque en ocasiones serán muy complicadas y dependerán de las bondades del manejador de base de datos.

Hay excelente material bibliográfico al respecto:

Developing time-oriented database applications

El libro de Date, Temporal data and the relational model Los Drafts de TSQL (Temporal SQL)

(22)

Referencias

Documento similar

que hasta que llegue el tiempo en que su regia planta ; | pise el hispano suelo... que hasta que el

Para ello, trabajaremos con una colección de cartas redactadas desde allí, impresa en Évora en 1598 y otros documentos jesuitas: el Sumario de las cosas de Japón (1583),

dente: algunas decían que doña Leonor, &#34;con muy grand rescelo e miedo que avía del rey don Pedro que nueva- mente regnaba, e de la reyna doña María, su madre del dicho rey,

Entre nosotros anda un escritor de cosas de filología, paisano de Costa, que no deja de tener ingenio y garbo; pero cuyas obras tienen de todo menos de ciencia, y aun

Sanz (Universidad Carlos III-IUNE): &#34;El papel de las fuentes de datos en los ranking nacionales de universidades&#34;.. Reuniones científicas 75 Los días 12 y 13 de noviembre

(Banco de España) Mancebo, Pascual (U. de Alicante) Marco, Mariluz (U. de València) Marhuenda, Francisco (U. de Alicante) Marhuenda, Joaquín (U. de Alicante) Marquerie,

6 Para la pervivencia de la tradición clásica y la mitología en la poesía machadiana, véase: Lasso de la Vega, José, “El mito clásico en la literatura española

La campaña ha consistido en la revisión del etiquetado e instrucciones de uso de todos los ter- mómetros digitales comunicados, así como de la documentación técnica adicional de