viernes, 14 de octubre de 2011

Semana 09

ATRIBUTOS
Y DOMINIOS
DominiosUn
dominio describe un conjunto de posibles valores para cierto atributo. Como un
dominio restringe los valores del atributo, puede ser considerado como una
restricción. Matemáticamente, atribuir un dominio a un atributo significa "todos
los valores de este atributo deben de ser elementos del conjunto
especificado".Distintos
tipos de dominios son: enteros, cadenas de texto, fecha, no procedurales
etc.
Dominio
Dominio: Rango o
conjunto de posibles valores de un atributo.El
concepto de dominio es el mismo en el modelo E-R y en el modelo relacional. Pero
en este modelo tiene mayor importancia, ya que será un dato importante a la hora
de dimensionar la relación.De nuevo
estamos ante un concepto muy flexible. Por ejemplo, si definimos un atributo del
tipo entero, el dominio más amplio sería, lógicamente, el de los números
enteros. Pero este dominio es infinito, y sabemos que los ordenadores no pueden
manejar infinitos números enteros. Al definir un atributo de una relación
dispondremos de distintas opciones para guardar datos enteros. Si en nuestro
caso usamos la variante de "entero pequeño", el dominio estará entre -128 y 127.
Pero además, el atributo corresponderá a una característica concreta de una
entidad; si se tratase, por ejemplo, de una calificación sobre 100, el dominio
estaría restringido a los valores entre 0 y 100. Dominio
y atributo
·
Dominio:
conjunto finito de valores homogéneos y atómicos, caracterizados por un nombre y
un tipo de datos; además de ciertas restricciones en algunos casos.
Los
dominios se pueden definir por extensión (= España, Costa Rica, Etc.) o por
intensión (Edad > 10 < 15).
·
Atributo:
un atributo A, es el papel que juega un dominio D en una relación; se dice que D
es el dominio de A y se denota Dom(A); así el atributo Nacionalidad de la tabla
Autor, definidos sobre el dominio Nacionalidades, nos indica que dicho dominio
tiene el papel de nacionalidad del autor en la tabla Autor.

Semana 08

RECURSIVIDAD
Definición.Hablamos
de recursividad, tanto en el ámbito informático como en el ámbito matemático,
cuando definimos algo (un tipo de objetos, una propiedad
o una operación) en función
de sí mismo. La recursividad en programación
es una herramienta sencilla, muy útil y potente.
Tipos.Podemos
distinguir dos tipos de recursividad:Directa: Cuando un subprograma se llama
a si mismo una o mas veces directamente.Indirecta: Cuando se definen una
serie de subprogramas usándose unos a otros.
Características.Un
algoritmo recursivo consta de una parte recursiva, otra iterativa o no recursiva
y una condición de terminación. La parte recursiva y la condición de terminación
siempre existen. En cambio
la parte no recursiva puede coincidir con la condición de terminación.Algo
muy importante a tener en cuenta cuando usemos la recursividad es que es
necesario asegurarnos que llega un momento en que no hacemos más llamadas
recursivas. Si no se cumple esta condición el programa no parará
nunca.
Ventajas
e inconvenientes.La
principal ventaja es la simplicidad de comprensión y su gran potencia,
favoreciendo la resolución de problemas
de manera natural, sencilla y elegante; y facilidad para comprobar y convencerse
de que la solución del problema es correcta.El principal inconveniente es la
ineficiencia tanto en tiempo como en memoria,
dado que para permitir su uso es necesario transformar el programa recursivo en
otro iterativo, que utiliza bucles y pilas
para almacenar las variables.
Estructura
RepresentaciónUna tabla es una estructura homogénea en la que todos los
elementos que la componen son del mismo tipo. Son estáticas, no crecen ni
decrecen en tiempo de ejecución y tienen un límite preestablecido antes de la
compilación.Para acceder a los elementos de una tabla se utilizan los
"índices" y estos pueden ser de cualquier tipo escalar de PASCAL
(enumerados, INTEGER, CHAR, subrogo, BOOLEAN).Por ello las tablas son
estructuras de acceso directo o acceso por índice.
Búsqueda
secuencial.Búsqueda secuencial con centinela.Almacenamiento
externoUsamos espacios fuera de las de la tabla para colocar las colisiones.
Dentro del almacenamiento externo hay varios tipos.Encadenamiento directo y
zona de overflow.Encadenamiento directo.Esta realización considera la
tabla como un vector en el que cada posición contiene un elemento y un campo
adicional con el comienzo de la lista de elementos con los que existe colisión.
Es decir, las posibles colisiones se resuelven construyendo una lista de
elementos cuya imagen
hash coincida.
Ventajas:
eficientes y rápidos.Inconvenientes: Para cada elemento de la lista se debe
reservar un espacio para punteros lo que significa un desaprovechamiento de
memoria en el "manejo de lista".
Zona
de Overflow.Se reserva espacio en cierta zona de externa a la propia tabla,
de aproximadamente el 10% de su tamaño, para introducir las colisiones. Cada
sinónimo se almacena en la primera celda disponible de la zona de
overflow.Inconveniente: Desaprovechamiento de memoria (poco).Es poco
eficiente cuando se han producido colisiones, ya que la búsqueda en la zona de
overflow es secuencial.Ventajas: Ocupa menos memoria que el anterior. El
algoritmo de búsqueda y de inserción es mas sencillo.
Almacenamiento
internoCuando el espacio usado para almacenar las colisiones esta dentro de
los límites
de la tabla. Dentro del almacenamiento interno están: Encadenamiento directo y
encadenamiento vacío.
Encadenamiento
directo.Se usa dentro de la tabla un campo de tipo puntero para que apunte
al siguiente colisionado, que estará dentro de la tabla. En ese campo se guarda
la dirección
del siguiente colisionado.En el encadenamiento directo con zona de overflow
podemos sobredimensionar la tabla para almacenar las colisiones, en esta zona
las casillas estarán encadenadas con una variable que apunte al primer espacio
libre de la zona de overflow. Consiste en enlazar todos los elementos cuyas
claves generan igual índice primario por medio de enlaces dentro de la tabla a
las nuevas posiciones ocupadas por estos elementos.Inconvenientes: Espacio
reservado en cada elemento para el enlace.Ventajas: Más rápido que el
externo con zona de overflow ya que evita la búsqueda secuencial.Ocupación
de memoria: Depende del método
usado. El primer caso ocupa menos memoria, y el segundo es más
rápido.
Como todo buen diseñador de base de datos sabe, es bastante común
encontrarse con entidades recursivas en el diseño de nuestra BD, 2 ejemplos
típicos son el jefe y el subordinado, en el diseño ambas personas se encuentran
registradas como duplas dentro de la entidad Persona o Funcionario (según el
diseño que hemos tomado, incluso estaría mejor diseñado si se lo hace en base al
cargo), al no existir 2 entidades que tengan cardinalidad 1:M, por que
así obtendríamos duplicación de datos, debemos determinar un modo que
ambos estén en la misma entidad y a su vez tener la capacidad de controlar quién
es jefe de quién, esto se lograría agregando una columna más que sea del mismo
dominio que su propia PK, es decir, la columna nueva sería FK de la PK que le
determina, logrando así una cardinalidad 1:M recursiva.
Otro ejemplo típico es el caso de los contratos, estos suelen tener
la característica que vencen en una fecha determinada, por cuestiones de
ventas/marketing al cliente se le facilita normalmente este proceso con
una renovación de contrato (en algunos casos automáticas), entonces el
nuevo contrato debe poder determinarse lo siguiente: la renovación de que
contrato está siendo, o si es el primer contrato, para realizarlo se aplica el
mismo ejemplo anterior, una columna FK que sea del mismo dominio de la
PK que le determina.
ENTIDADES ASOCIATIVASEn
este subapartado veremos un mecanismo que nos permite considerar una
interrelación entre entidades como si fuese una entidad.La entidad que resulta de
considerar una interrelación entre entidades como si fuese una entidad es una
entidad asociativa, y tendrá el mismo nombre que la interrelación sobre la que
se define.La
utilidad de una entidad asociativa consiste en que se puede interrelacionar con
otras entidades y, de forma indirecta, nos permite tener interrelaciones en las
que intervienen interrelaciones. Una entidad asociativa se denota recuadrando el
rombo de la interrelación de la que proviene.
Ejemplo
de entidad asociativa
La
figura siguiente muestra un ejemplo de entidad asociativa:
Recorrido
es
una interrelación de conectividad M:N que registra las ciudades por donde han
pasado los diferentes viajes organizados por una empresa de reparto de paquetes.
Consideramos recorrido una entidad asociativa con el fin de interrelacionarla
con la entidad cliente;
de este modo nos será posible reflejar por orden de qué clientes se han hecho
repartos en una ciudad del recorrido de un viaje, así como el número de paquetes
cargados y descargados siguiendo sus indicaciones.El
mecanismo de las entidades asociativas subsume el de las entidades
débilesy
resulta todavía más potente. Es decir, siempre que utilicemos una entidad débil
podremos sustituirla por una entidad asociativa, pero no al
revés.
Ejemplo
de sustitución de una entidad débil por una asociativaA
continuación se muestra la entidad débil despacho, que tiene la interrelación
asignación
con la entidad empleado.
Podríamos
modelizar este caso haciendo que despacho fuese una entidad asociativa si
consideramos una nueva entidad número-despacho que contiene simplemente números
de despachos. Entonces, la entidad asociativa despacho se obtiene de la
interrelación entre edificio
y número-despacho.Aunque
las entidades débiles se puedan sustituir por el mecanismo de las entidades
asociativas, es adecuado mantenerlas en el modelo ER porque resultan menos
complejas y son suficientes para modelizar muchas de las situaciones que se
producen en el mundo real.
Dependencias
funcionales
El concepto de dependencia funcional Hay veces en que los atributos están relacionados entre si de manera
más especifica que la de Pertenecer a una misma relación. Hay veces en que es posible
determinar que un atributo depende de otro funcionalmente, como si existiera una función f en el “mundo”, tal que t [A] = f (t [B]). La funci´on se anotaría como f: A! B, pero como f es desconocida (o sino B seria un atributo derivado), sólo nos quedamos con A! B, la dependencia funcional, que se lee “A determina B”. Formalmente, X! Y en R se
Cumple si y sólo si 8s, t 2 R, s [X] = t[X] ) s[Y
Dependencias Funcionales (1/3)
I Es un conceptos muy importante en el diseño de base de
Datos relaciones Una dependencia funcional es una restricción entre
dos
Conjuntos de atributos de la base de datos.
Sea el esquema de relación R definido sobre el conjunto de atributos A y sean X e Y subconjuntos de A llamados descriptores. Se dice que Y depende funcionalmente de X o que X determina o implica a Y, que se representa por X! Y, si y solo si, cada valor de X tiene asociado en todo momento un ´único valor de Y.
Dependencias Funcionales (2/3)
Sea el esquema de relación R definido sobre el conjunto de atributos A y sean X e Y subconjuntos de A llamados descriptores. Se dice que Y depende funcionalmente de X o que X determina o
implica a Y , que se representa por X ! Y, si y solo si, cada valor de X tiene asociado en todo momento un ´único valor de Y .X! Y para dos duplas cualesquiera t1 y t2 de un estado relación r de R, si t1 [X] = t2 [X], entonces t1 [Y] = t2[Y ]. Si una restricción de R dice que no puede haber más de una dupla con un valor X dado en cualquier instancia de relación r (R), X es una clave candidata de R y X! Y para cualquier subconjunto de atributos de Y de R. Si X! Y, no nos dice que Y! X o no.
Dependencias Funcionales (3/3)
ej.: cód. Libro! titulo, el código del libro determina el titulo. El es el implicante y
titulo es el implicado. Siempre el implicado es un hecho (una información)
acerca del implicante.
OBS1: la afirmación cód. libro determina titulo NO significa que a
partir de cód. libro podamos conocer el titulo. Es decir, para un esquema
R, si tenemos la dependencia funcional X ! Y, dado un valor de X no podemos en general conocer el valor de Y. Solo nos limitaremos a afirmar que para dos duplas de cualquier
extensión de R que tengan el mismo valor de X, el valor de Y también será igual en ambas. I OBS2: Las dependencias son predicados o restricciones sobre cualquier
extensión válida del esquema de relación, por lo que observar una determinada
extensión (datos) no puede llevarnos a afirmar la existencia de una dependencia
funcional.

Semana 07

LA CARDINALIDAD
Es
Simplemente la forma en que se relacionan las Entidades, o expresa cuantas
entidades se
Relacionan
con otras entidades. Hay varias maneras de mostrar las
cardinalidades:
Poner
etiquetas en las líneas que unen las relaciones con las entidades, consiste en
un mínimo y máximo que contiene un cero (varios a varios) y lo usual es poner
una “M” en un
Existen 4 tipos de
relaciones que pueden establecerse entre entidades, las cuales establecen con
cuantas ocurrencias de entidad de tipo B se puede relacionar una ocurrencia de
entidad de tipo A:
4. Relación uno a
uno.
5. Relación uno a varios (n).
3. Relación varios
(n) a uno.
4. Relación varios a
varios (n)- (n)
TIPOS DE RELACIONES
Relaciones entre bases de datos
· General
Si bien este tema es objeto de numerosos teóricos y asignatura
fundamental en las más importantes escuelas de informática del mundo, afrontemos
el diseño relacional de nuestras bases de datos desde un punto de vista ameno y
práctico, plagado de ejemplos, sin renunciar en nungún caso al
rigor.
Table of Contents
1. Relaciones "uno a uno"
2. Relaciones de "uno a
varios"

3. Relaciones de "varios con
varios"

4. Conclusión
Las diferentes formas de relación entre diversas bases de datos que
podemos encontrar son:
Relaciones "uno a uno"
Estas relaciones entre bases de datos se dan cuando cada campo clave
aparece sólo una vez en cada una de las tablas.
Tomando un ejemplo del mundo real, una clara relación de "uno a uno"
podría ser, el nombre de cualquier persona y su número de teléfono. Si
partimosdel supuesto en que cada persona tiene un solo número de teléfono, se
podría hablar de una relación "uno a uno".
Gráficamente, se podría representar de la siguiente
manera:
Este tipo de relaciones se caracteriza poque cad uno de los campos
define a aquél con el que se relaciona. Es decir, conociendo el nombre de una
persona podemos conocer su número telefónico. O si sabemos su número telefónico,
podemos identificar al dueño. En estos cases, se suele aconsejar incluir todos
los datos dentro de una sola tabla.
Relaciones de "uno a varios"
El ejemplo del caso anterior (cada persona, un teléfono), si bien es
correcto teóricamente, es muy improbable desde el punto de vista de la realidad.
Conla gran expansión de los teléfonos, por lo general, cada persona tiene un
número de teléfono fijo, y además del teléfono móvil. Debemos tener en cuenta
que de el de su casa también tendrá un número de teléfono de empresa, y que
quizá también sus móviles estén divididos en ocio y trabajo.
Por ello, debemos tener nuestras bases de datos preparadas para ello.
Este tipo de relaciones es conocido como "uno a varios", y se podría representar
de la siguiente manera:
En este caso, lo aconsejable no es almacenar todos los datos en una
sola tabla, sino lo eficiente es hacerlo en tablas separadas, utilizando el
identificador ID para relacionarlas.
Echemos un vistazo a la figura anterior. En la taba Nombre
almacenamos el nombre y apellido, con su ID o número identificador. En la otra
tabla, Teléfonos, almacenamos únicamente números de teléfono, con su
correspondiente número identificador, en este caso TID. La manera en que se
relaciona una con otra es mediante el identificador ID, que está presente en
ambas tablas.
A simple vista podemos advertir que la primera de las personas de la
tabla nombres, Juan Timaná, tiene 2 números telefónicos, pues su ID, que en este
caso es 1, aparece en dos de los teléfonos de la otra tabla.
De este modo será mucho mas sencillo cambiar, eliminar o ampliar los
números de teléfono en la misma tabla.
Si estas tablas están creadas en MySQL, la sentencia que nos ayudaría
a encontrar todos los teléfonos de una determinada persona sería:
SELECT n.nombre, t.telfFROM nombre nINNER JOIN telefonos t ON n.id = t.idWHERE n.nombre = "Juan Timaná"
Relaciones de "varios con varios"
La última de la relaciones que podemos encontrar es la de "varios con
varios". Dado que en la vida las cosas rara vez son sencillas, éste será el tipo
de relación que nos encontraremos más a menudo.
Volviendo al tema de los teléfonos, hemos encontrado la manera de
relacionar cada una de las personas con sus diversos teléfonos: el de su casa,
el de su empresa, el móvil. Pero no será extraño tener en nuestra base de datos
diversas personas que trabajen en la misma empresa, por lo que el número de su
trabajo será el mismo, o miembros de una misma familia, por lo que compartirán
el mismo teléfono de su hogar.
¿Cómo tratar este tipo de relaciones? Si nos limitamos a repetir
dicho número de tablas, estaremos creando problemas de redundancia de datos, que
a largo plazo lastrarán la rapidez y eficacia de nuestras tablas.
ste tipo de relaciones podría ilustrarse de la siguiente
manera:
Como vemos, cada elemento de la base de datos puede relacionarse
libremente con uno o varios miembros de las distintas tablas.
En estos casos no hay una regla fija a la que podamos acogernos, pero
lo aconsejable es aproximarse lo más posible a la realidad, y no dudar en
establecer tablas intermedias que nos ayuden a asociar mejor los
datos.
Volviendo al tema de los teléfonos, imaginemos que varias personas de
nuestra tabla trabajan en la misma empresa ACME Productions tiene varias líneas,
por lo que los números de teléfono de trabajo de estas personas serían varios.
¿Cómo representarlo en nuestra base de datos?
En este caso hemos creado una tabla intermedia llamada "empresas". En
la tabla "nombres" incluimos un nuevo campo TID, que se relaciona con la tabla
"empresas", y es esta tabla la que se relaciona directamente con los teléfonos.
De esta manera, podemos almacenar todos los datos con facilidad sin tener que
repetir un sólo número telefónico.
Se pueden distinguir tres tipos de relaciones:
Relación Uno a Uno: Cuando un registro de una tabla sólo puede estar relacionado con un único
registro de la otra tabla y viceversa.
Por ejemplo: tenemos dos tablas una
con los datos de diferentes poblaciones y otra con una lista de Alcaldes, una
población sólo puede tener un alcalde, y un alcalde lo será únicamente de una
población.
Relación Uno a Varios: Cuando un registro de una tabla (tabla secundaria) sólo puede estar relacionado con un único
registro de la otra tabla (tabla principal) y un registro de la otra
tabla (tabla principal) puede tener más de un registro relacionado en la
primera tabla (tabla secundaria).
Por ejemplo: tenemos dos tablas una
con los datos de diferentes poblaciones y otra con los habitantes, una población
puede tener más de un habitante, pero un habitante pertenecerá (estará
empadronado) en una única población.
Relación Varios a Varios: Cuando un registro de una tabla puede estar relacionado con más de un
registro de la otra tabla y viceversa.
Por ejemplo: tenemos dos tablas una
con los datos de clientes y otra con los artículos que se venden en la empresa,
una cliente podrá realizar un pedido con varios artículos, y un artículo podrá
ser vendido a más de un cliente.
Las relaciones varios a varios se
suelen representar definiendo una tabla intermedia entre las dos tablas.
Siguiendo el ejemplo anterior sería definir una tabla líneas de pedido
relacionada con clientes y con artículos.

Semana 06

Análisis relacional de datos.
Documentación.
1. Diseño lógico de datos.Hoy en día,
prácticamente todos los sistemas de información almacenan y organizan los datos
en DDBB. Para llevar a cabo la implementación de la DDBB que necesita el sistema
habrá que tener en cuenta todas las fases de diseño de esta:- Diseño
conceptual: Este diseño es independiente del modelo de DDBB usado, del
ordenador, del sistema gestor de bases de datos, etc… Simplemente se estudia el
problema y se seleccionan los elementos del mundo real que vamos a modelar. Este
diseño es al que corresponde el diagrama E/R- Diseño lógico: Partiendo del
diseño conceptual obtenido en la fase anterior, llegamos a un diseño lógico.
Transformamos las entidades y relaciones obtenidas del modelo anterior en
tablas. Para ello usamos la normalización.- Diseño físico: Este diseño si
depende del ordenador, del sistema gestor de DDBB, etc… En este caso, empleando
el gestor de la DDBB, se implementan las tablas de las DDBB con sus
características, organización y estructuras de almacenamiento interno.Para
evitar la gran dependencia que existía antes entre los ficheros y las
aplicaciones que los utilizaban ( cualquier cambio en la estructura física o
lógica de los datos afectaba a las aplicaciones ), el instituto ANSI publicó un
informe en el que definía una arquitectura de tres niveles para ser utilizada en
el diseño de DDBB, con objeto de minorizar el impacto producido por los cambios
haciendo énfasis en la independencia que debe existir entre las referencias
externas a los datos y la forma física de almacenamiento y organización de los
mismos. Los tres niveles definidos son:- Nivel externo: Constituye un nivel
con el que interactúa el usuario. Este nivel representa una visión parcial de
los datos, de manera que usuarios diferentes tendrán una visión distinta de los
mismos, mostrando solo aquella parte que interesa al usuario.- Nivel
conceptual: Este nivel representa el esquema lógico de los datos, reflejando su
estructura y relaciones, sin entrar en detalles físicos. Este nivel se construye
mediante un modelo en el que se define en primer lugar aquella parte del mundo
real que deseamos modelar, excluyendo los datos que no son necesarios. En este
punto debemos decidir que modelo lógico se va a utilizar, existiendo varias
alternativas como puede ser el modelo relacional, el jerárquico, orientado a
objetos, etc… - Nivel físico: Este nivel debe ser transparente para el
usuario. En este nivel se especifica la estructura de los datos así como el modo
de almacenamiento empleado. Este apartado va a depender de varios factores tanto
HW como Software, entre los que se puede señalar: S.O., Sistema de ficheros del
sistema gestor de bases de datos, Unidades de almacenamiento externos, etc…
2. Transformación del modelo conceptual al
lógico.
El diseño de las DDBB del sistema se
llevara a cabo aplicando la arquitectura ANSI de tres niveles, por tanto debemos
partir del modelo conceptual y llegar hasta el esquema físico o interno.El
esquema conceptual representa los recursos del sistema y se define sin tener en
consideración cuestiones físicas.Para la definición de este esquema nos
podemos ayudar de herramientas de modelado como los diagramas.El modelo E/R
(entidad relación) fue propuesto por Chen y posteriormente algunas aportaciones
de han dado lugar E/R extendido.Los componentes del modelo E/R son:-
Entidades: representan un objeto real o abstracto sobre el que queremos
almacenar información.- Relación: define una asociación entre
entidades.- Grado de una relación: número de entidades que participan en una
relación, pudiendo ser reflexivas (una entidad se relaciona con ella misma),
binaria (participan 2 entidades) y n-aria (participan n entidades).-
Cardinalidad: define el número máximo de ocurrencias de una entidad que
participan en una relación. Puede ser de uno a uno, de uno a muchos y de muchos
a muchos.- Atributos: representan propiedades o características de una
entidad o relación.Dentro del modelo E/R extendido aparecen además otros
conceptos:- Jerarquía: una entidad puede mantener una relación de supertipo
con otras entidades. Es el caso de la generalización y especialización.-
Agregación: conversión de una relación junto con sus entidades participantes, en
una entidad para poder relacionarse con otra entidad.- Exclusividad: es un
tipo especial de relación en la que una entidad se asocia con varias entidades.
La exclusividad relaciona una entidad con otra de entre varias posibles.Una
vez obtenido el modelo conceptual (representado en el diagrama E/R) debe ser
transformado a un modelo lógico. La secuencia de pasos a aplicar para dicha
transformación son:1. Cada entidad se transforma en una tabla y los
atributos de dicha entidad en atributos de la tabla.2. Las relaciones de
muchos a muchos se transforman en tablas cuya clave estará formada por la clave
primaria de las entidades relacionadas. Las relaciones de uno a muchos propagan
la clave principal de la entidad cuya cardinalidad es uno a la entidad de
cardinalidad n.Otra herramienta empleada para el diseño lógico de datos es
el diagrama de estructura de datos (DED), en la que se establecen los diferentes
registros que forman la base de datos y las relaciones entre ellos. La forma
tridente apunta a la entidad que actúa como muchos.Este tipo de esquema solo
admite relaciones entre dos entidades, en caso de modelar relaciones en las que
intervengan más de dos entidades debemos redefinir el esquema reduciéndolo a
relaciones binarias.Se puede establecer una correspondencia entre diagramas
E/R y diagramas de estructura de datos, pudiendo pasar de un tipo de diagrama al
otro.
3. Análisis relacional de datos.El
análisis relacional de datos se centra en el estudio de la características del
modelo E/R y de la estructura del modelo lógico (E/R tabla).El diseño de
bases de datos relacionales implica la creación de un conjunto de tablas
relacionadas entre si. El modelo así obtenido puede presentar una serie de
problemas como son la redundancia de datos y ambigüedades a medida que
trabajamos con ellas. Debido a este problema, se ha definido una teoría que
indica una serie de restricciones que hemos de aplicar sobre el modelo para así
obtener un modelo normalizado, que evita los problemas planteados.Para poder
realizar el proceso de normalización hay que tener claros algunos
conceptos:- Se dice que atributo es atómico cuando no puede tener más de
un valor, en caso contrario, cuando un atributo puede tener varios valores se
dice que es un atributo multivaluado.- Las claves son atributos que
identifican de forma unívoca a las entidades. Existen varios tipos de
clave:1. Superclave: estará formada por uno o más atributos que
identificarán de forma única a una entidad.2. Clave candidata: es una
superclave mínima, es decir, una superclave que si se le quita un atributo deja
de ser superclave.3. Clave primaria: es la clave candidata que el diseñador
de la base de datos ha elegido para diferenciar las entidades.- Otro
concepto que hay que tener en cuenta es el de dependencia funcional. Existen
varios tipos: 1. Dependencia funcional: dado un conjunto B decimos que dicho
conjunto depende funcionalmente de otro conjunto A si para cualquier valor de A
le corresponde un único valor de B. Se denota A B.2. Dependencia funcional
completa: decimos que un conjunto B tiene dependencia funcional completa
respecto a otro conjunto A, si depende de dicho conjunto en su totalidad y no de
una de sus partes. Se denota A => B.3. Dependencia transitiva: se dice
que un conjunto B depende de forma transitiva de otro conjunto A, si existe un
conjunto Z que depende funcionalmente de A y B depende funcionalmente de Z. Se
denota A Z B.Las principales formas normales de la teoría de normalización
son:- Primera forma normal ( 1FN ): una tabla está en 1FN si todos los
atributos no clave, dependen funcionalmente de la clave (es decir, si dada una
clave se puede obtener el valor de todos sus atributos), o lo que es lo mismo,
no existen grupos repetitivos para un valor de clave.Pasos a
seguir:A. Se crea a partir de la tabla inicial una nueva tabla con los
atributos que dependen funcionalmente de la clave ( Que tendrán la misma clave
que la tabla inicial ). Esta tabla ya esta en primera forma normal.B. Se
crea una nueva tabla con los atributos restantes, eligiendo de entre estos uno
como clave de la tabla ( o mas de uno ). Los criterios de elección de clave
serán los mismos que se expusieron para los tipos de clave.C. Se comprueba
si esta tabla esta en primera forma normal. Si es así, la tabla inicial ya esta
normalizada y finaliza el proceso. Si no, tomamos esta tabla como tabla inicial
y volvemos a realizar el apartado A.- Segunda Forma Normal ( 2FN ): Una
tabla esta en segunda forma normal si esta en primera forma normal y además
todos los atributos que no pertenecen a la clave dependen funcionalmente de
forma completa de ella. De esta definición se desprende que de una tabla en
primera forma normal y cuya clave esta compuesta por un único atributo esta en
segunda forma normal.El proceso de normalización es como sigue: A. Se
crea a partir de la tabla inicial una nueva tabla con los atributos que dependen
funcionalmente de forma completa de la clave ( Que tendrán la misma clave que la
tabla inicial ) . Esta tabla ya esta en segunda forma normal.B. Se crea una
nueva tabla con los atributos restantes, siendo su clave el subconjunto de
atributos de la clave inicial de los que dependen de forma completa.C. Se
comprueba si esta tabla esta en segunda forma normal. Si es así, la tabla
inicial ya esta normalizada y finaliza el proceso. Si no, tomamos esta tabla
como tabla inicial y volvemos a realizar el apartado A.- Una tabla esta en
tercera forma normal esta en tercera forma normal y además no existen atributos
no claves que dependan transitivamente de la clave, es decir, no debe haber
atributos no clave que dependan de otros atributos no primos ( que no pertenecen
a la clave ).El proceso de normalización es como sigue: A. Se crea a
partir de la tabla inicial una nueva tabla con los atributos que no poseen
dependencias transitivas .( Que tendrán la misma clave que la tabla inicial ) .
Esta tabla ya esta en segunda forma normal.B. Se crea una nueva tabla con
los atributos restantes, siendo su clave el subconjunto de atributos de la clave
inicial de los que dependen de forma completa.C. Se crea una nueva tabla con
los dos atributos no clave, que intervienen en la dependencia transitiva,
seleccionando entre ambos a aquel que cumpla los requerimientos de clave. Esta
nueva tabla esta ya en tercera forma normalExisten mas formas normales:
Forma normal Óbice Codd ( FNBC ), ( 4FN ), ( 5FN ), …. Pero algunos autores
opinan que a partir de todas estas formas normales se puede producir perdida de
dependencias
4. Documentación.
Durante el desarrollo de un proyecto
software se genera un importante volumen de documentación en las diferentes
fases que componen su análisis y su diseño. Durante la fase de diseño lógico de
datos se generara información en forma de diagrama entidad relación y Diagrama
de estructuras de datos según la metodología empleada. Dichos diagramas deben
formar parte de la documentación del proyecto. Pero además de dichos diagramas
necesitaremos alguna herramienta que sirva para recopilar los elementos de datos
con los que trabajaremos en el proyecto, así como una descripción detallada de
dichos elementos. La herramienta que nos sirve para este propósito es el
Diccionario de datos. El diccionario de datos nos sirve para tomar nota de
todos los elementos a los que hacemos referencia en los diagramas empleados para
modelar el sistema que queremos construir. En el tomaremos nota de los datos,
objetos, entidades, almacenes y elementos de control a los que hacemos
referencia E/R, DED, DFD, DFC, ….

Semana 05

MODELO
LOGICO
Tema 5: Diseño lógico de datos
1. Diseño lógico de datos.
2. Transformación del modelo conceptual al
lógico.
3. Análisis relacional de datos.
4. Documentación.
1. Diseño lógico de datos.Hoy en día,
prácticamente todos los sistemas de información almacenan y organizan los datos
en DDBB. Para llevar a cabo la implementación de la DDBB que necesita el sistema
habrá que tener en cuenta todas las fases de diseño de esta:- Diseño
conceptual: Este diseño es independiente del modelo de DDBB usado, del
ordenador, del sistema gestor de bases de datos, etc… Simplemente se estudia el
problema y se seleccionan los elementos del mundo real que vamos a modelar. Este
diseño es al que corresponde el diagrama E/R- Diseño lógico: Partiendo del
diseño conceptual obtenido en la fase anterior, llegamos a un diseño lógico.
Transformamos las entidades y relaciones obtenidas del modelo anterior en
tablas. Para ello usamos la normalización.- Diseño físico: Este diseño si
depende del ordenador, del sistema gestor de DDBB, etc… En este caso, empleando
el gestor de la DDBB, se implementan las tablas de las DDBB con sus
características, organización y estructuras de almacenamiento interno.Para
evitar la gran dependencia que existía antes entre los ficheros y las
aplicaciones que los utilizaban ( cualquier cambio en la estructura física o
lógica de los datos afectaba a las aplicaciones ), el instituto ANSI publicó un
informe en el que definía una arquitectura de tres niveles para ser utilizada en
el diseño de DDBB, con objeto de minorizar el impacto producido por los cambios
haciendo énfasis en la independencia que debe existir entre las referencias
externas a los datos y la forma física de almacenamiento y organización de los
mismos. Los tres niveles definidos son:- Nivel externo: Constituye un nivel
con el que interactúa el usuario. Este nivel representa una visión parcial de
los datos, de manera que usuarios diferentes tendrán una visión distinta de los
mismos, mostrando solo aquella parte que interesa al usuario.- Nivel
conceptual: Este nivel representa el esquema lógico de los datos, reflejando su
estructura y relaciones, sin entrar en detalles físicos. Este nivel se construye
mediante un modelo en el que se define en primer lugar aquella parte del mundo
real que deseamos modelar, excluyendo los datos que no son necesarios. En este
punto debemos decidir que modelo lógico se va a utilizar, existiendo varias
alternativas como puede ser el modelo relacional, el jerárquico, orientado a
objetos, etc… - Nivel físico: Este nivel debe ser transparente para el
usuario. En este nivel se especifica la estructura de los datos así como el modo
de almacenamiento empleado. Este apartado va a depender de varios factores tanto
HW como Software, entre los que se puede señalar: S.O., Sistema de ficheros del
sistema gestor de bases de datos, Unidades de almacenamiento externos, etc…
2. Transformación del modelo conceptual al
lógico.
El diseño de las DDBB del sistema se
llevara a cabo aplicando la arquitectura ANSI de tres niveles, por tanto debemos
partir del modelo conceptual y llegar hasta el esquema físico o interno.El
esquema conceptual representa los recursos del sistema y se define sin tener en
consideración cuestiones físicas.Para la definición de este esquema nos
podemos ayudar de herramientas de modelado como los diagramas.El modelo E/R
(entidad relación) fue propuesto por Chen y posteriormente algunas aportaciones
de han dado lugar E/R extendido.Los componentes del modelo E/R son:-
Entidades: representan un objeto real o abstracto sobre el que queremos
almacenar información.- Relación: define una asociación entre
entidades.- Grado de una relación: número de entidades que participan en una
relación, pudiendo ser reflexivas (una entidad se relaciona con ella misma),
binaria (participan 2 entidades) y n-aria (participan n entidades).-
Cardinalidad: define el número máximo de ocurrencias de una entidad que
participan en una relación. Puede ser de uno a uno, de uno a muchos y de muchos
a muchos.- Atributos: representan propiedades o características de una
entidad o relación.Dentro del modelo E/R extendido aparecen además otros
conceptos:- Jerarquía: una entidad puede mantener una relación de supertipo
con otras entidades. Es el caso de la generalización y especialización.-
Agregación: conversión de una relación junto con sus entidades participantes, en
una entidad para poder relacionarse con otra entidad.- Exclusividad: es un
tipo especial de relación en la que una entidad se asocia con varias entidades.
La exclusividad relaciona una entidad con otra de entre varias posibles.Una
vez obtenido el modelo conceptual (representado en el diagrama E/R) debe ser
transformado a un modelo lógico. La secuencia de pasos a aplicar para dicha
transformación son:1. Cada entidad se transforma en una tabla y los
atributos de dicha entidad en atributos de la tabla.2. Las relaciones de
muchos a muchos se transforman en tablas cuya clave estará formada por la clave
primaria de las entidades relacionadas. Las relaciones de uno a muchos propagan
la clave principal de la entidad cuya cardinalidad es uno a la entidad de
cardinalidad n.Otra herramienta empleada para el diseño lógico de datos es
el diagrama de estructura de datos (DED), en la que se establecen los diferentes
registros que forman la base de datos y las relaciones entre ellos. La forma
tridente apunta a la entidad que actúa como muchos.Este tipo de esquema solo
admite relaciones entre dos entidades, en caso de modelar relaciones en las que
intervengan más de dos entidades debemos redefinir el esquema reduciéndolo a
relaciones binarias.Se puede establecer una correspondencia entre diagramas
E/R y diagramas de estructura de datos, pudiendo pasar de un tipo de diagrama al
otro.
3. Análisis relacional de datos.El
análisis relacional de datos se centra en el estudio de la características del
modelo E/R y de la estructura del modelo lógico (E/R tabla).El diseño de
bases de datos relacionales implica la creación de un conjunto de tablas
relacionadas entre si. El modelo así obtenido puede presentar una serie de
problemas como son la redundancia de datos y ambigüedades a medida que
trabajamos con ellas. Debido a este problema, se ha definido una teoría que
indica una serie de restricciones que hemos de aplicar sobre el modelo para así
obtener un modelo normalizado, que evita los problemas planteados.Para poder
realizar el proceso de normalización hay que tener claros algunos
conceptos:- Se dice que atributo es atómico cuando no puede tener más de
un valor, en caso contrario, cuando un atributo puede tener varios valores se
dice que es un atributo multivaluado.- Las claves son atributos que
identifican de forma unívoca a las entidades. Existen varios tipos de
clave:1. Superclave: estará formada por uno o más atributos que
identificarán de forma única a una entidad.2. Clave candidata: es una
superclave mínima, es decir, una superclave que si se le quita un atributo deja
de ser superclave.3. Clave primaria: es la clave candidata que el diseñador
de la base de datos ha elegido para diferenciar las entidades.- Otro
concepto que hay que tener en cuenta es el de dependencia funcional. Existen
varios tipos: 1. Dependencia funcional: dado un conjunto B decimos que dicho
conjunto depende funcionalmente de otro conjunto A si para cualquier valor de A
le corresponde un único valor de B. Se denota A B.2. Dependencia funcional
completa: decimos que un conjunto B tiene dependencia funcional completa
respecto a otro conjunto A, si depende de dicho conjunto en su totalidad y no de
una de sus partes. Se denota A => B.3. Dependencia transitiva: se dice
que un conjunto B depende de forma transitiva de otro conjunto A, si existe un
conjunto Z que depende funcionalmente de A y B depende funcionalmente de Z. Se
denota A Z B.Las principales formas normales de la teoría de normalización
son:- Primera forma normal ( 1FN ): una tabla está en 1FN si todos los
atributos no clave, dependen funcionalmente de la clave (es decir, si dada una
clave se puede obtener el valor de todos sus atributos), o lo que es lo mismo,
no existen grupos repetitivos para un valor de clave.Pasos a
seguir:A. Se crea a partir de la tabla inicial una nueva tabla con los
atributos que dependen funcionalmente de la clave ( Que tendrán la misma clave
que la tabla inicial ). Esta tabla ya esta en primera forma normal.B. Se
crea una nueva tabla con los atributos restantes, eligiendo de entre estos uno
como clave de la tabla ( o mas de uno ). Los criterios de elección de clave
serán los mismos que se expusieron para los tipos de clave.C. Se comprueba
si esta tabla esta en primera forma normal. Si es así, la tabla inicial ya esta
normalizada y finaliza el proceso. Si no, tomamos esta tabla como tabla inicial
y volvemos a realizar el apartado A.- Segunda Forma Normal ( 2FN ): Una
tabla esta en segunda forma normal si esta en primera forma normal y además
todos los atributos que no pertenecen a la clave dependen funcionalmente de
forma completa de ella. De esta definición se desprende que de una tabla en
primera forma normal y cuya clave esta compuesta por un único atributo esta en
segunda forma normal.El proceso de normalización es como sigue: A. Se
crea a partir de la tabla inicial una nueva tabla con los atributos que dependen
funcionalmente de forma completa de la clave ( Que tendrán la misma clave que la
tabla inicial ) . Esta tabla ya esta en segunda forma normal.B. Se crea una
nueva tabla con los atributos restantes, siendo su clave el subconjunto de
atributos de la clave inicial de los que dependen de forma completa.C. Se
comprueba si esta tabla esta en segunda forma normal. Si es así, la tabla
inicial ya esta normalizada y finaliza el proceso. Si no, tomamos esta tabla
como tabla inicial y volvemos a realizar el apartado A.- Una tabla esta en
tercera forma normal esta en tercera forma normal y además no existen atributos
no claves que dependan transitivamente de la clave, es decir, no debe haber
atributos no clave que dependan de otros atributos no primos ( que no pertenecen
a la clave ).El proceso de normalización es como sigue: A. Se crea a
partir de la tabla inicial una nueva tabla con los atributos que no poseen
dependencias transitivas .( Que tendrán la misma clave que la tabla inicial ) .
Esta tabla ya esta en segunda forma normal.B. Se crea una nueva tabla con
los atributos restantes, siendo su clave el subconjunto de atributos de la clave
inicial de los que dependen de forma completa.C. Se crea una nueva tabla con
los dos atributos no clave, que intervienen en la dependencia transitiva,
seleccionando entre ambos a aquel que cumpla los requerimientos de clave. Esta
nueva tabla esta ya en tercera forma normalExisten mas formas normales:
Forma normal Óbice Codd ( FNBC ), ( 4FN ), ( 5FN ), …. Pero algunos autores
opinan que a partir de todas estas formas normales se puede producir perdida de
dependencias
4. Documentación.
Durante el desarrollo de un proyecto
software se genera un importante volumen de documentación en las diferentes
fases que componen su análisis y su diseño. Durante la fase de diseño lógico de
datos se generara información en forma de diagrama entidad relación y Diagrama
de estructuras de datos según la metodología empleada. Dichos diagramas deben
formar parte de la documentación del proyecto. Pero además de dichos diagramas
necesitaremos alguna herramienta que sirva para recopilar los elementos de datos
con los que trabajaremos en el proyecto, así como una descripción detallada de
dichos elementos. La herramienta que nos sirve para este propósito es el
Diccionario de datos. El diccionario de datos nos sirve para tomar nota de
todos los elementos a los que hacemos referencia en los diagramas empleados para
modelar el sistema que queremos construir. En el tomaremos nota de los datos,
objetos, entidades, almacenes y elementos de control a los que hacemos
referencia E/R, DED, DFD, DFC, ….

Semana 04

RELACION
Un diagrama o modelo entidad-relación (a veces
denominado por sus siglas, E-R "Entity relationship", o, "DER" Diagrama
de Entidad Relación) es una herramienta para el modelado de datos de
un sistema de información. Estos modelos expresan entidades relevantes para un
sistema de información así como sus interrelaciones y
propiedades.El Modelo
Entidad-Relación.
Se elabora el diagrama (o diagramas)
entidad-relación.
Se completa el modelo con listas de atributos y
una descripción de otras restricciones que no se pueden reflejar en el diagrama.
Dado lo rudimentario de esta técnica
se necesita cierto entrenamiento y experiencia para lograr buenos modelos de
datos.El modelado de datos no acaba con el
uso de esta técnica. Son necesarias otras técnicas para lograr un modelo
directamente implementable en una base
de datos
. Brevemente:
Transformación de relaciones múltiples en
binarias.
Normalización de una base de datos de relaciones (algunas relaciones pueden transformarse en
atributos y viceversa).
Conversión en tablas (en caso de utilizar una
base de datos relacional).
[editar] Base teórica y
conceptualEl modelo de datos
entidad-relación está basado en una percepción del mundo real que consta de una
colección de objetos básicos, llamados entidades, y de relaciones entre esos
objetos.
[editar] EntidadRepresenta una “cosa” u "objeto" del mundo real con
existencia independiente, es decir, se diferencia unívocamente de cualquier otro
objeto o cosa, incluso siendo del mismo tipo, o una misma
entidad.Algunos Ejemplos:
Una persona. (Se diferencia de cualquier otra
persona, incluso siendo gemelos).
Un automóvil. (Aunque sean de la misma marca, el
mismo modelo,..., tendrán atributos diferentes, por ejemplo, el número de
bastidor).
Una casa (Aunque sea exactamente igual a otra,
aún se diferenciará en su dirección). Una entidad puede ser un objeto con existencia física como:
una persona, un animal, una casa, etc. (entidad concreta); o un objeto con
existencia conceptual como: un puesto de trabajo, una asignatura de clases, un
nombre,etc. (entidad abstracta).Una
entidad está descrita y se representa por sus características o atributos. Por
ejemplo, la entidad Persona puede llevar consigo las características:
Nombre, Apellido, Género, Estatura, Peso, Fecha de nacimiento, etc...
[editar] AtributosLos atributos son las características que definen o
identifican a una entidad. Estas pueden ser muchas, y el diseñador solo utiliza
o implementa las que considere más relevantes. Los atributos son las propiedades
que describen a cada entidad en un conjunto de entidades.En un conjunto de entidades, cada entidad tiene
valores específicos asignados para cada uno de sus atributos, de esta
forma, es posible su identificación unívoca.Ejemplos:A la
colección de entidades «alumnos», con el siguiente conjunto de atributos en
común, (id, nombre, edad, semestre), pertenecen las entidades:
(1, Sofía, 38 años, 2)
(2, Josefa, 19 años, 5)
(3, Carlos, 20 años, 2)
... Cada una de las entidades pertenecientes a este conjunto se
diferencia de las demás por el valor de sus atributos. Nótese que dos o más
entidades diferentes pueden tener los mismos valores para algunos de sus
atributos, pero nunca para todos.En
particular, los atributos identificativos son aquellos que permiten
diferenciar a una instancia de la entidad de otra distinta. Por ejemplo, el
atributo identificativo que distingue a un alumno de otro es su número de
id.Para cada atributo, existe un
dominio del mismo, este hace referencia al tipo de datos que será
almacenado o a restricciones en los valores que el atributo puede tomar (cadenas
de caracteres, números, solo dos letras, solo números mayores que cero, solo
números enteros...).Cuando algún atributo
correspondiente a una entidad no tiene un valor determinado, recibe el valor
nulo, bien sea porque no se conoce, porque no existe o porque no se sabe
nada al respecto del mismo.
[editar] RelaciónDescribe cierta dependencia entre entidades o permite la
asociación de las mismas.Ejemplo:
Dadas dos entidades "Habitación 502" y "Mark", es posible relacionar que la
habitación 502 se encuentra ocupada por el huésped de nombre Mark.
Una relación tiene sentido al expresar
las entidades que relaciona. En el ejemplo anterior, un huésped (entidad), se
aloja (relación) en una habitación (entidad).
[editar] Conjunto de
relacionesConsiste en una
colección, o conjunto, de relaciones de la misma naturaleza.
Ejemplo:Dados los
conjuntos de entidades "Habitación" y "Huésped", todas las relaciones de
la forma habitación-huésped, permiten obtener la información de los huéspedes y
sus respectivas habitaciones.La
dependencia o asociación entre los conjuntos de entidades es llamada
participación. En el ejemplo anterior los conjuntos de entidades
"Habitación" y "Huésped" participan en el conjunto de relaciones
habitación-huésped.Se llama grado
del conjunto de relaciones a la cantidad de conjuntos de entidades participantes
en la relación.
[editar] RestriccionesSon reglas que deben mantener los datos almacenados en la
base de datos.
[editar] Correspondencia de
cardinalidadesDado un conjunto de
relaciones en el que participan dos o más conjuntos de entidades, la
correspondencia de cardinalidad indica el número de entidades con las que puede
estar relacionada una entidad dada.Dado un
conjunto de relaciones binarias y los conjuntos de entidades A y B, la
correspondencia de cardinalidades puede ser:
Uno a Uno: Una entidad de A se relaciona
únicamente con una entidad en B y viceversa (ejemplo relación vehículo -
matrícula: cada vehículo tiene una única matrícula, y cada matrícula está
asociada a un único vehículo).
Uno a varios: Una entidad en A se
relaciona con cero o muchas entidades en B. Pero una entidad en B se relaciona
con una única entidad en A (ejemplo vendedor - ventas).
Varios a Uno: Una entidad en A se
relaciona exclusivamente con una entidad en B. Pero una entidad en B se puede
relacionar con 0 o muchas entidades en A (ejemplo empleado-centro de trabajo).
Varios a Varios: Una entidad en A se puede
relacionar con 0 o muchas entidades en B y viceversa (ejemplo asociaciones-
ciudadanos, donde muchos ciudadanos pueden pertenecer a una misma asociación, y
cada ciudadano puede pertenercer a muchas asociaciones distintas).
[editar] Restricciones de
participaciónDado un conjunto de
relaciones R en el cual participa un conjunto de entidades A, dicha
participación puede ser de dos tipos:
Total: Cuando cada entidad en A participa
en al menos una relación de R.
Parcial: Cuando al menos una entidad en A
NO participa en alguna relación de R.
[editar] ClavesEs un
subconjunto del conjunto de atributos comunes en una colección de entidades, que
permite identificar unívocamente cada una de las entidades pertenecientes a
dicha colección. Asimismo, permiten distinguir entre sí las relaciones de un
conjunto de relaciones.Dentro de los
conjuntos de entidades existen los siguientes tipos de claves:
Superclave: Es un subconjunto de atributos
que permite distinguir unívocamente cada una de las entidades de un conjunto de
entidades. Si se añade un atributo al anterior subconjunto, el resultado seguirá
siendo una superclave.
Clave candidata: Dada una superclave, si
ésta deja de serlo quitando únicamente uno de los atributos que la componen,
entonces ésta es una clave candidata.
Clave primaria: Es una clave candidata,
elegida por el diseñador de la base de datos, para identificar unívocamente las
entidades en un conjunto de entidades. Los valores de los atributos de una clave, no pueden ser
todos iguales para dos o más instancias.Para poder distinguir unívocamente las relaciones en un
conjunto de relaciones R, se deben considerar dos casos:
R NO tiene atributos asociados: En este
caso, se usa como clave primaria de R la unión de las claves primarias de todos
los conjuntos de entidades participantes.
R tiene atributos asociados: En este caso,
se usa como clave primaria de R la unión de los atributos asociados y las claves
primarias de todos los conjuntos de entidades participantes.
Si el conjunto de relaciones, R,
sobre las que se pretende determinar la clave primaria está compuesto de
relaciones binarias, con los conjuntos de entidades participantes A y B, se
consideran los siguientes casos, según sus cardinalidades:
R es de muchos a uno de A a B entonces
sólo se toma la clave primaria de A, como clave primaria de R.
R es de uno a muchos de A a B entonces se
toma sólo la clave primaria de B, como clave primaria de R.
R es de uno a uno de A a B entonces se
toma cualquiera de las dos claves primarias, como clave primaria de R.
R es de muchos a muchos de A a B entonces
se toma la unión de los atributos que conforman las claves primarias de A y de
B, como clave primaria de R.
[editar] Diagrama
entidad-relaciónAnteriormente
detallamos los conceptos relacionados al modelo ER, en esta sección
profundizaremos en como representarlos gráficamente. Cabe destacar que para todo
proceso de modelado, siempre hay que tener en claro los conceptos, estos nos
brindan conocimiento necesario y además fundamentan nuestro modelo al momento de
presentarlo a terceros.Formalmente, los
diagramas ER son un lenguaje gráfico para describir conceptos. Informalmente,
son simples dibujos o gráficos que describen información que trata un sistema de
información y el software que lo automatiza.
[editar] EntidadesLas entidades son el fundamento del modelo entidad
relación. Podemos adoptar como definición de entidad cualquier cosa o parte del
mundo que es distinguible del resto. Por ejemplo, en un sistema bancario, las
personas y las cuentas bancarias se podrían interpretar como entidades. Las
entidades pueden representar entes concretos, como una persona o un avión, o
abstractas, como por ejemplo un préstamo o una reserva. Se representan por medio
de un rectángulo.
[editar] AtributosSe representan mediante un círculo o elipse etiquetado
mediante un nombre en su interior. Cuando un atributo es identificativo de la
entidad se suele subrayar dicha etiqueta.Por motivos de legibilidad, los atributos suelen no
aparecer representados en el diagrama entidad-relación, sino descritos
textualmente en otros documentos adjuntos.
[editar] RelacionesSe representan mediante un rombo etiquetado en su interior
con un verbo. Este rombo se debe unir mediante líneas con las entidades
(rectángulos) que relaciona, para así saber cuál es la relación que lleva cada
uno.
[editar] Diagramas
extendidos

DER
extendidoLos diagramas
Entidad-Relación no cumplen su propósito con eficacia debido a que tienen
limitaciones semánticas. Por ese motivo se suelen utilizar los diagramas
Entidad-Relación extendidos que incorporan algunos elementos más al
lenguaje:
[editar] Entidades fuertes y
débilesCuando una entidad
participa en una relación puede adquirir un papel fuerte o débil.
Una entidad débil es aquella que no puede existir sin participar en la relación,
es decir, aquella que no puede ser unívocamente identificada solamente por sus
atributos.Una entidad fuerte (también
conocida como entidad regular) es aquella que sí puede ser identificada
unívocamente. En los casos en que se requiera, se puede dar que una entidad
fuerte "preste" algunos de sus atributos a una entidad débil para que, esta
última, se pueda identificar.Las entidades
débiles se representan- mediante un doble rectángulo, es decir, un
rectángulo con doble línea.
[editar] Cardinalidad de las
relacionesEl tipo de cardinalidad
se representa mediante una etiqueta en el exterior de la relación,
respectivamente: "1:1", "1:N" y "N:M", aunque la notación depende del lenguaje
utilizado, la que más se usa actualmente es el unificado. Otra forma de expresar
la cardinalidad es situando un símbolo cerca de la línea que conecta una entidad
con una relación:
"0" si cada instancia de la entidad no
está obligada a participar en la relación.
"1" si toda instancia de la entidad está
obligada a participar en la relación y, además, solamente participa una vez.
"N" , "M", ó "*" si cada instancia de la
entidad no está obligada a participar en la relación y puede hacerlo cualquier
número de veces. Ejemplos de
relaciones que expresan cardinalidad:
Cada esposo (entidad) está casado (relación) con
una única esposa (entidad) y viceversa. Es una relación 1:1.
Una factura (entidad) se emite (relación) a una
persona (entidad) y sólo una, pero una persona puede tener varias facturas
emitidas a su nombre. Todas las facturas se emiten a nombre de alguien. Es una
relación 1:N.
Un cliente (entidad) puede comprar (relación)
varios artículos (entidad) y un artículo puede ser comprado por varios clientes
distintos. Es una relación N:M.
[editar] Atributos en
relacionesLas relaciones también
pueden tener atributos asociados. Se representan igual que los atributos de las
entidades. Un ejemplo típico son las relaciones de tipo "histórico" donde debe
constar una fecha o una hora. Por ejemplo, supongamos que es necesario hacer
constar la fecha de emisión de una factura a un cliente, y que es posible emitir
duplicados de la factura (con distinta fecha). En tal caso, el atributo "Fecha
de emisión" de la factura debería colocarse en la relación "se
emite".
[editar] HerenciaLa herencia es un intento de adaptación de estos diagramas
al paradigma orientado a objetos. La herencia es un tipo de relación entre una
entidad "padre" y una entidad "hijo". La entidad "hijo" hereda todos los
atributos y relaciones de la entidad "padre". Por tanto, no necesitan ser
representadas dos veces en el diagrama. La relación de herencia se representa
mediante un triángulo interconectado por líneas a las entidades. La entidad
conectada por el vértice superior del triángulo es la entidad "padre". Solamente
puede existir una entidad "padre" (herencia simple). Las entidades "hijo" se
conectan por la base del triángulo.
[editar] Agregación

Ejemplo
agregaciónEs una abstracción
a través de la cual las relaciones se tratan como entidades de un nivel más
alto. Se utiliza para expresar relaciones entre relaciones o entre entidades y
relaciones. Se representa englobando la relación abstraída y las entidades que
participan en ella en un rectángulo. En la figura se muestra un ejemplo de
agregación en el que se representa la situación en la que un profesor, cuando
está impartiendo una clase, puede poner una incidencia ocurrida a lo largo de
ésta (se fue la luz, falta la configuración de un determinado software,
etc.).

Semana 03

ESTRUCTURAS
1. Base De DatosUna
base de datos de red esta formado por una colección de registros, los cuales están conectados entre
sí por medio de enlaces.Registro.- Es una colección de campos
(atributos)Campos.- Contiene almacenado solamente un valor.Enlace.- Asociación entre dos
registros, así que podemos verla como una relación estrictamente binaria.Estructura de datos de red, abarca más que la estructura de
árbol porque un nodo "hijo" en la estructura de red puede tener más de un
padre.Diagramas de estructura de datos.Es un esquema que
representa el diseño de una base de datos de red. Este modelo se basa en representaciones entre
registros por medio de ligas, existen relaciones en las que participan solo dos
entidades(binarias) y relaciones en las que participan más de dos entidades
(generales) ya sea con o sin atributo descriptivo en la relación.La forma de
diagramado consta de dos componentes básicos:Celdas: representan a los
campos del registro.Líneas: representan a los enlaces
entre los registros.su representación gráfica se basa en el acomodo de los
campos de un registro en un conjunto de celdas que se ligan con otro(s)
registro(s)Las estructuras de datos según la cardinalidad se
representan en los siguientes casos:Conceptos básicos.Algoritmo.- Es un conjunto de reglas que
permiten obtener un resultado determinado a partir de ciertas reglas
definidas.Algoritmo.- Es una secuencia finita de instrucciones, cada una de
las cuales tiene un significado preciso y puede ejecutarse con una cantidad
finita de esfuerzo en un tiempo finito. Ha de tener las siguientes
características: Legible, correcto, modular, eficiente, estructurado, no ambiguo
y a ser posible se ha de desarrollar en el menor tiempo
posible.Características de un algoritmo de computador:CorrectoLegibleeficienteDiseño
de algoritmos.Fases:Diseño: se dan las
especificaciones en lenguaje natural y se crea un primer modelo
matemático apropiado. La solución en esta etapa es un algoritmo expresado de
manera muy informal.Implementación: El programador convierte el algoritmo en
código, siguiendo alguna de estas 3
metodologías.* TOP-DOWN se alcanza el programa sustituyendo las palabras del
palabras del pseudocódigo por secuencias de proposiciones cada vez mas
detalladas, en un llamado refinamiento progresivo.* BOTTON-UP parte de las
herramientas mas primitivas hasta que se llega
al programa.Pruebas: Es un material que se pasa al
programa para detectar posibles errores.Esto no quiere decir que el diseño no
tenga errores, puede tenerlos para otros datos.2.
Recursividad
Definición.Hablamos de recursividad, tanto en el
ámbito informático como en el ámbito matemático, cuando definimos algo (un tipo
de objetos, una propiedad o una operación) en función de sí mismo. La recursividad en programación es una herramienta sencilla, muy
útil y potente.Tipos.Podemos distinguir dos tipos de
recursividad:Directa: Cuando un subprograma se llama a si mismo una o mas
veces directamente.Indirecta: Cuando se definen una serie de subprogramas
usándose unos a otros.Características.Un algoritmo recursivo consta de
una parte recursiva, otra iterativa o no recursiva y una condición de
terminación. La parte recursiva y la condición de terminación siempre existen.
En cambio la parte no recursiva puede coincidir
con la condición de terminación.Algo muy importante a tener en cuenta cuando
usemos la recursividad es que es necesario asegurarnos que llega un momento en
que no hacemos más llamadas recursivas. Si no se cumple esta condición el
programa no parará nunca.Ventajas e inconvenientes.La principal ventaja
es la simplicidad de comprensión y su gran potencia, favoreciendo la resolución de problemas de manera natural, sencilla y
elegante; y facilidad para comprobar y convencerse de que la solución del
problema es correcta.El principal inconveniente es la ineficiencia tanto en
tiempo como en memoria, dado que para permitir su uso es
necesario transformar el programa recursivo en otro iterativo, que utiliza
bucles y pilas para almacenar las variables.Estructura RepresentaciónUna
tabla es una estructura homogénea en la que todos los elementos que la componen
son del mismo tipo.Son estáticas, no crecen ni decrecen en tiempo de ejecución y
tienen un límite preestablecido antes de la compilación.Para acceder a los
elementos de una tabla se utilizan los "índices" y estos pueden ser de cualquier
tipo escalar de PASCAL (enumerados, INTEGER, CHAR, subrango,
BOOLEAN).Por ello las tablas son estructuras de acceso directo o acceso por
índice.Búsqueda secuencial.Búsqueda secuencial con centinela.Almacenamiento externoUsamos espacios
fuera de las de la tabla para colocar las colisiones. Dentro del almacenamiento
externo hay varios tipos.Encadenamiento directo y zona de
overflow.Encadenamiento directo.Esta realización considera la tabla como
un vector en el que cada posición contiene un elemento y un campo adicional con
el comienzo de la lista de elementos con los que existe colisión.Es decir, las
posibles colisiones se resuelven construyendo una lista de elementos cuya imagen hash coincida.Ventajas: eficientes
y rápidos.Inconvenientes: Para cada elemento de la lista se debe reserVAR un
espacio para punteros lo que significa un desaprovechamiento de memoria en el
"manejo de lista".Zona de Overflow.Se reserva espacio en cierta zona de
externa a la propia tabla, de aproximadamente el 10% de su tamaño, para
introducir las colisiones.Cada sinónimo se almacena en la primera celda
disponible de la zona de overflow.Inconveniente: Desaprovechamiento de
memoria (poco).Es poco eficiente cuando se han producido colisiones, ya que la
búsqueda en la zona de overflow es secuencial.Ventajas: Ocupa menos memoria
que el anterior.El algoritmo de búsqueda y de inserción es mas
sencillo.Almacenamiento internoCuando el espacio usado para almacenar
las colisiones esta dentro de los límites de la tabla.Dentro del almacenamiento
interno están:Encadenamiento directo y encadenamiento vacío.Encadenamiento
directo.Se usa dentro de la tabla un campo de tipo puntero para que apunte
al siguiente colisionado, que estará dentro de la tabla.En ese campo se guarda
la dirección del siguiente colisionado.En el
encadenamiento directo con zona de overflow podemos sobredimensionar la tabla
para almacenar las colisiones, en esta zona las casillas estarán encadenadas con
una variable que apunte al primer espacio libre de la zona de overflow.Consiste
en enlazar todos los elementos cuyas claves generan igual indice primario por
medio de enlaces dentro de la tabla a las nuevas posiciones ocupadas por estos
elementos.Inconvenientes: Espacio reservado en cada elemento para el
enlace.Ventajas: Más rápido que el externo con zona de overflow ya que evita
la búsqueda secuencial.Ocupación de memoria: Depende del método usado.El primer caso ocupa menos
memoria, y el segundo es más rápido.3. ListaConcepto.Una
lista es una estructura de datos homogénea y dinámica, que va a estar formada por una
secuencia de elementos, donde cada uno de ellos va seguido de otro o de
ninguno.Homogénea: Todos los elementos que la forman tienen el mismo tipo
base.Dinámica: Puede crecer o decrecer en tiempo de ejecución según nuestras
necesidades.dos listas pueden ser diferentes si:No tienen el mismo
número de elementos:L1: gato, perro.L2: gato, canario, cerdo.Cuando,
aun teniendo el mismo número de elementos, estos son distintos:L1: gato,
perro.L2: gato, cerdo.Cuando, aun teniendo el mismo número de elementos
y siendo estos los mismos, no están dispuestos en el mismo orden.L1: gato,
perro.L2: perro, gato.Hay varios criterios para clasificar las listas:
según su modo de acceso o según su información de acceso.Modo De
Acceso.Atendiendo a este, se dividen en densas y enlazadas. El modo de
acceso es independiente de la implementación realizada.Listas densasSe
caracterizan porque los elementos siguen una secuencia física. Sabemos cuales es el siguiente
elemento porque para acceder a él hemos tenido que pasar por todos los
anteriores.La localización de un elemento cualquiera será:El primero si
es el primer elemento de la lista.N-esimo si para llegar a el hemos pasado
por N-1 elementos.Siguen una estructura física secuencial luego se pueden
implementar utilizando ficheros, ARRAYS y punteros.Listas enlazadasSon
aquellas en las que cada elemento que los compone contiene la información
necesaria para acceder al elemento siguiente. La localización de un elemento
cualquiera será:Un elemento de la lista tendrá la dirección K si K es el
primero y K es conocido (dirección de inicio).Estará en la dir. J si J está
contenida en el elemento anterior.Informacion de acceso.Listas
ordinalesLos elementos se van colocando en la lista a medida que llegan y se
identifican por el orden de llegada.El acceso a un elemento es por su orden o
posición relativa dentro de la lista.Listas calificadasLos elementos se
clasifican por una clave y pueden estar ordenados o no estarlo. A un elemento se
accede por la información contenida en un campo clave.Diferencias: En la
primera clase importa en orden de llegada, mientras
que en la segunda depende de la clave.Pilas.Una pila es una lista
ordinal en la que el modo de acceso a sus elementos es del tipo LIFO. Los
añadidos y extracciones de elementos de una estructura se realizan solo por un
extremo, luego el único elemento accesible de la pila es el que se encuentre en
la cima. Esto exigirá que la manipulación sobre un elemento, necesite que el
mismo ocupe la posición de cima.Sobre una estructura de tipo pila, surgen de
forma natural las operaciones que permiten añadir elementos y
quitar elementos.Implementación utilizando tablasEsta realización
consiste en ir guardando consecutivamente los elementos de la pila en un vector
de tamaño fijo. Un índice marcará la posición del último elemento que se ha
añadido a la pila. Por tanto, las inserciones en la estructura se realizarán en
la posición inmediatamente siguiente a la posición marcada como cima, pasando a
ser esta nueva posición ocupada la nueva cima de la pila.El hecho de
utilizar un vector para almacenar los elementos, puede conducir a la situación
en que la pila esté llena, es decir, que no quepa ningún elemento más. Esto se
producirá cuando el índice que señala la cima de la pila sea igual al tamaño del
vector.Otros Tipos De ListasListas reorganizables.- Son aquellas listas
en las que el último elemento consultado se sitúa al principio.Listas
circulares.- En ellas el último elemento apunta al primero.Listas doblemente
enlazadas.- Cada elemento tiene dos punteros, uno de los cuales apunta al
elemento siguiente y otro al anterior.Listas circulares doblemente
enlazadas4. Árboles binarios.Los árboles de grado
2 tienen una especial importancia. Se les conoce con el nombre de árboles
binarios. Se define un árbol binario como un conjunto finito de elementos
(nodos) que bien está vació o está formado por una raíz con dos árboles binarios
disjuntos, llamados subárbol izquierdo y derecho de la raíz.En los apartados
que siguen se considerarán únicamente árboles binarios y, por lo tanto, se
utilizará la palabra árbol para referirse a árbol binario. Los árboles de grado
superior a 2 reciben el nombre de árboles multicamino.Árbol binario de
búsqueda.- Los árboles binarios se utilizan frecuentemente para representar conjuntos de datos cuyos elementos se
identifican por una clave única. Si el árbol está organizado de tal manera que
la clave de cada nodo es mayor que todas las claves su subárbol izquierdo, y
menor que todas las claves del subárbol derecho se dice que este árbol es un
árbol binario de búsqueda.Ejemplo:
Operaciones básicas.- Una tarea muy común a
realizar con un árbol es ejecutar una determinada operación con cada uno de los
elementos del árbol.Esta operación se considera entonces como un parámetro de
una taré más general que es la visita de todos los nodos o, como se denomina
usualmente, del recorrido del árbol.Si se considera la tarea como un proceso secuencial, entonces los nodos
individuales se visitan en un orden específico, y pueden considerarse como
organizados según una estructura lineal. De hecho, se simplifica
considerablemente la descripción de muchos algoritmos si puede
hablarse del proceso del siguiente elemento en el árbol, según un cierto orden
subyacente.Hay dos formas básicas de recorrer un árbol: El recorrido en
amplitud y el recorrido en profundidad.Recorrido en amplitud.- Es aquel
recorrido que recorre el árbol por niveles, en el último ejemplo sería:12 -
8,17 - 5,9,15Recorrido en profundidad.- Recorre el árbol por subárboles. Hay
tres formas: Preorden, orden central y postorden.Preorden: Raiz, subárbol
izquierdo y subárbol derecho.Orden central: Subarbol izquierdo, raiz,
subarbol derecho.Postorden: Subarbol izquierdo, subarbol derecho,
raiz.Ejemplo:Preorden: 20 - 12 - 5 - 2 - 7 - 13 - 15 - 40 - 30 - 35
- 47Orden central: 2 - 5 - 7 - 12 - 13 - 15 - 20 - 30 - 35 - 40 -
47Postorden: 2 - 7 - 5 - 15 - 13 - 12 - 35 - 30 - 47 - 40 -
20Ejemplo:Preorden: / + a b * c d Notación polacaOrden central: a +
b / c * d Notación infijaPostorden: a b + c d * / Notación polaca
inversaEstructura de datosVariablesLas variables son estructura de
datos usados para almacenar información. Hay dos tipos de información que puede
ser almacenada: Números y texto. Antes de usar una variable ésta, deberá
primero ser definida:Dim nombre_de_variable As TipoEjemplo:Dim precio As LongDim nombre_de_articulo As
String
Tipo
Rango permitido
Integer
-32,768 a 32,767
Long
-2,147,483,648 a 2,147,483,647
Single
-3.402823E38 a -1.401298E-45
1.401298E-45 a 3.402823E38
Double
-1.79769313486232D308 a
-4.94065645841247D-324
4.94065645841247D-324 a
1.79769313486232D308
Currency
-922337203685477.5808 a
922337203685477.5807
String
0 a 65,000 bytes
Variant
Valores de fechas: 1/1/0000 a 12/32/9999
Numérico: igual que Double
Texto: Igual que String
Si una nueva variable es declarada sin
especificación VB por default la deberá tomar como tipo Variant
Una vez que una
variable se ha creado, se le puede asignar un valor. Para esto se usa el
operador ' = '. En el primer ejemplo de abajo a una variable se le asigna un
valor constante, mientras que en el segundo se le asigna el contenido de una
variable multiplicada por 10.Ejemplo 1: precio = 29.95Ejemplo 2:
precio_total = precio * 10El Alcance de una variable es definido como su
rango de operación. Hay tres tipos de alcance en una variable:
Local - La variable solo puede ser usada en el procedimiento actual ( use Dim dentro del
procedimiento requerido).
Módulo - La variables pueden ser accesadas desde cualquier procedieminento
de la forma actual (use Dim dentro de la sección de Declaraciones Generales de
la forma).
Global - Pueden ser accesados desde cualquier procedimiento y desde
cualquier forma. (usa Global dentro de la sección de Declaraciones Generales de
un módulo). Variables EstáticasEl declarar variables y arreglos
como local en un procedimieneto/función es muy usado, porque esto minimíza los
efectos extraños que pueden ocurrir cuando se usan variables globales. Sin
embargo, cuando usamos una variable local en un procedimiento VB crea un espacio
de memoria para mantener el valor de esta variable , esto sucede cuando lee el
estatuto Dim, pero cuando llega al final del procedimiento (End Sub) VB libera
el espacio asigndo para el valor de la variable local. Agrega el siguiente
código a un botón de comando y observa que valores son impresos:Sub Command1_Click
()Dim numero As Integer ' Crea una variable Local normalnumero = numero
+ 1Print numeroEnd SubDespués de dar clic varias veces al botón de
comando deberás ver una columna de unos en el lado izquierdo de la forma. El
valor nunca será arriba de uno a pesar de que el valor de la variable se
incrementa en uno cada vez. Esto es porque cada vez que el procediemineto es
llamado, haciendo clic en el botón, VB esta trabajan con una variable diferente.
Esta tiene exactamente el mismo nombre en el programa pero es una variable
completamente diferente. Para que esto no suceda así, introduce Staticen el
lugar de Dim:Sub Command1_Click ()Static numero As Integer ' Crea una
variable estática localnumero = numero + 1Print
numeroEnd SubAhora en vez de que el valor de la variable se pierda
cuando el procedimiento termina, con este cambio (static) su valor permanecerá
hasta que todo el programa termine. De esta manera, podemos ver una lista de
números que se incrementan en uno cada vez que se le da clic al botón de
comando.Nota: La nueva variable estática es una variable de alcance local,
si cualquier procedimiento trata de accesar esta variable no prodrá lograrlo.
Agrega a la forma un nuevo botón de comando, el cual deberá tener un nuevo
procedimiento 'Click', y trata de corregir o imprimir el valor de la variable
estática que contiene el primer botón.El contenido de un arreglo local,
también puede mantenerse mientras el programa se ejecute. Para hacer esto agrega
el estatuto 'Static' en lugar de 'Dim' como lo hicimos en el ejemplo de
arriba.Static salarios(199) As Long

Semana 02

SISTEMA
DE ARCHIVO
Un camino para hacerse una idea
del alcance de la gestión de archivos es de mirar una representación típica de
la organización del software, como se muestra en la figura de abajo:Diferentes
sistemas van a tener diferente organizaciones pero estas organizaciones son
razonablemente representativas. A un nivel mas bajo los manejadores de
dispositivos (device drivers) se comunican directamente con los dispositivos de
periféricos o con sus canales o controladores.
Un controlador dedispositivos es responsable de iniciar las operaciones de
E/S en un dispositivo y procesar la terminación de una petición de E/S. Para
operaciones de archivos, el controlador típico de dispositivos son discos y
unidades de cinta. Los manejadores de los dispositivos son usualmente
considerados como parte del sistema operativo.El próximo nivel esta referido
con el nombre de sistema de archivos básicos ( basic file system), o nivel de
E/S física ( physical I/O) . Esta es la interfase
primaria con el ambiente fuera del sistema de la computadora. Este nivel trata con bloques de
datos que son intercambiados con sistemas de disco o cinta. De este modo. se
preocupa de ubicar dichos bloques en el dispositivo de almacenamiento secundario
y del almacenamiento intermedio de los mismos en memoria principal. Este nivel no comprenderá
el contenido de los datos o la estructura de los archivos implicados. El
sistema de archivos básicos es usualmente considerado como parte del sistema
operativo.El supervisor básico de E/S (Basic I/O supervisor) es el
responsable de la iniciación y terminación de todas las E/S con archivos. En
este nivel, hay unas estructuras de control que se encargan de la entrada y de
salida con los dispositivos la planificación y el estado de los archivos. El supervisor
básico de E/S se encarga de seleccionar el dispositivo donde se va a realizar la
E/S con los archivos dependiendo del archivo seleccionado. También se encarga de
la planificación de los accesos a disco y cinta para optimizar el rendimiento.
En este nivel se asignan los buffers de E/S y se reserva la memoria secundaria. El supervisor básico de
E/S es parte del sistema operativo.La E/S lógica habilita a
los usuarios y aplicaciones de acceder a registros. Así mientras el sistema de
archivos básico trabaja con bloques de datos. el modulo lógico de E/S trabaja
con el archivo de registros. La E/S lógica provee una capacidad de E/S de
registro de propósito general y mantiene los datos básicos acerca de los
archivos.El nivel del sistema de archivo mas cercano de usuario es
usualmente el método de acceso (access method). Provee una interfase estándar
entre aplicaciones y los archivos del sistema a dispositivos que guarden datos.
Los diferentes métodos de acceso reflejan los diferentes
estructuras de datos y diferentes maneras de acceder y procesar el
dato.1.5) Funciones de la gestión de
archivos (File management Functions)Los usuarios y las aplicaciones
interactúan con el sistema de archivos mediante comandos para crear y borrar archivos y
realizar operaciones sobre los archivos. Antes de ejecutar alguna operación, los
archivos del sistema deben identificar y localizar el archivo seleccionado. Esto
requiere el uso de alguna clase de directorio que es reservado para
describir la localización de todos los archivos, mas sus atributos. Además
, la mayoría de los sistemas compartidos aplican algún control de acceso
a los usuarios: solamente los usuarios autorizados están permitidos para acceder
a archivos particulares en determinados lugares. Las operaciones básicas que el
usuario o el programa puede ejecutar sobre un archivo se puede realizar a nivel
de registro. El usuario o la aplicación ve el archivo con una estructuraque
organiza los registros, como una estructura secuencial. De este modo, para
traducir las ordenes del usuario a ordenes específicas de manipulación de
archivos., debe emplearse el método de acceso apropiado para esta estructura de
archivo.2) Organización y acceso a
archivos (File organizittion and access)En esta parte vamos a usar el
termino organización de archivos para referirnos a la estructura lógica de los
registros determinada por la manera en que se accede a ellos. La organización
fisica del archivo en almacenamiento secundario depende de la estrategia de agrupación y de la estrategia de
asignación de archivos.Para seleccionar una organización de archivos hay
diversos criterios que son importantes:
Acceso Rápido para recuperar la información
Fácil actualización
Economia de almacenamiento
Mantenimiento simple.
Fiabilidad para asegurar la confianza de los datos. La prioridad
relativa de estos criterios va a depender de las aplicaciones que va a usar el
archivo.El numero de alternativas de organización de archivos que se han
implementado o propuesto es inmanejable,incluso para un libro dedicado a los sistemas de
archivos.La mayor parte de las estructuras empleadas en los sistemas reales
se encuadran en una de estas categorias opuede implementarse como una
combinación de estas:
Pilas (The pile)
Archivos secuenciales (sequential file)
Archivos Secuenciales indexados. (indexed sequential file)
Archivos indexados.(indexed file)
Archivos directos o de dispersión (direct, or hashed, file).
TIPOS DE
ARCHIVOS Archivos
SecuencialesLa forma mas común de estructura de archivo es el
archivo secuencial. En este tipo de archivo, un formato fijo es usado para los
registros. Todos los registros tienen el mismo tamaño, constan del mismo numero
de campos de tamaño fijo en un orden particular. Como se conocen la longitud y
la posición de cada campo, solamente los valores de los campos se necesitan
almacenarse; el nombre del campo y longitud de cada campo son atributos de
la estructura de archivos.Un campo particular, generalmente el
primero de cada registro se conoce como el campo clave. El campo clave
identifica unívocamente al registro. así, los valores de la clave para registros diferentes
son siempre diferentes.Los archivos secuenciales son típicamente utilizados
en aplicaciones de proceso de lotes Y son óptimos para dichas aplicaciones si se
procesan todos los registros. La organización secuencias de archivos es la
única que es fácil de usar tanto en disco como en cinta.Para las
aplicaciones interactivas que incluyen peticione s o actualizaciones de
registros individuales, los archivos secuenciales ofrecen un rendimiento
pobre.Normalmente un archivo secuencial se almacena en bloques, en un orden
secuencial simple de los registros. La organización física del archivo en una
cinta o disco se corresponde exactamente con la ubicación lógica del archivo. En
este caso, el procedimiento para ubicar los nuevos registros
en un archivo de pila separado, llamado archivo de registro (log file) o archivo
de transacciones. Periódicamente, se realiza una actualización por lotesque
mezcla el archivo de registro con el archivo maestro para producir un nuevo
archivo en secuencia correcta de claves.2.3) Archivos Secuenciales indexadosUn método popular para
superar las desventajas de los archivos secuenciales es el del archivo
secuencias indexado. El archivo secuencial indexado mantiene las caracteristicas
básicas de los archivos secuenciales: los registros están organizados en una
secuencia basada en un campo. Dos características se añaden: un índice del
archivo para soportar los accesos aleatorios y un archivo de desbordamiento (
overflow ). El indice provee una capacidad de búsqueda para llegar rapidamente a
las proximidades de un registro deseado. El archivo de desbordamiento (overflow)
es similar al archivo de registro usado en un archivo secuencial, pero esta
intregrado de forma que los registros del archivo de desbordamiento se ubican en
la dirección de un puntero desde si registro
precedente. En la estructura secuencial indexada mas simple, se usa un solo
nivel de indexacion. El indice, en este caso, es un archivo secuencial simple.
Cada registro del archivo indice tiene dos campos: un campo clave, que es el
mismo que el campo clave del archivo principal y un puntero al archivo
principal. Para encontrar un campo especifico se busca en el indice hasta
encontrar el valor mayor de la clave que es igual o precede al valor deseado de
la clave. La busqueda continua en el archivo principal a partir de la posición
indicada por el puntero.2.4) Archivos IndexadosLos archivos secuenciales indexados
retienen la limitación del archivo secuencial: la eficacia en el procesamiento se limita al
basado en un único campo del archivo. Cuando es necesario buscar un registro
basándose en algún otro atributo distinto del campo clave ambas formas de
archivo secuencial no son adecuadas. En algunas aplicaciones esta flexibilidad
es deseable.Para alcanzar esta flexibilidad, se necesita una estructura que
utilice múltiples índices, uno para cada tipo de campo que pueda ser objeto de
la búsqueda.Se suelen utilizar dos tipos de índices. Uno indice exhaustivo
contiene una entrada par cada registro del archivo principal. Otro índice
parcial contendrá entradas a los registros donde este el campo de interés. Con registros de longitud variable,
algunos registros no contendran todos los campos.Los archivos indexados son
muy utilizados en aplicaciones donde es critica la oportunidad de la informacion
y donde los datos son rara vez procesados de forma exhaustiva.2.5) Archivos Directos o de
DispersiónLos archivos directos explotan la capacidad de los discos para
acceder directamente a cualquier bloque de dirección conocida. Como en los
archivos secuenciales y secuenciales indexados, se requiere un campo clave en
cada registro. Sin embargo, aquí no hay concepto de ordenamiento secuencial.