sábado, 24 de septiembre de 2011

Base de datos orientada a objetos



1. Estructuras de objetos, Constructores de tipos, Encapsulamiento de operaciones, métodos y persistencia. 
Estructura de objetos: el modelo orientado a objetos se basa en encapsular código y datos en una única unidad, llamada objeto. 

Un objeto tiene asociado: 
- Un conjunto de variables que contienen los datos del objetos. El valor de cada variable es un objeto. 

- Un conjunto de mensajes a los que el objeto responde. 
- Un método devuelve un valor como respuesta al mensaje. 

Constructores de tipos: en la BDOO, los valores de los objetos complejos se pueden construir a partir de otros objetos mediante ciertos constructores de tipos. Estos objetos se pueden representar con un identificador, un constructor y un valor. Pueden haber varios contructores según el modelo de datos y el sistema OO. 
Los 3 constructores básicos son: 

- Contructores de atomos. 
- Constructores de tuplas. 

- Constructores de conjuntos. 
Como hemos visto, cada objeto es una estructura compleja en cuyo interior hay datos y programas, todos ellos relacionados entre sí, como si estuvieran encerrados conjuntamente en una cápsula. Esta propiedad (encapsulamiento), es una de las características fundamentales en la OOP. 

Metodos: Los métodos son las operaciones que pueden realizarse sobre el objeto, que normalmente estarán incorporados en forma de programas (código) que el objeto es capaz de ejecutar y que también pone a disposición de sus descendientes a través de la herencia. 
Persistencia: Es la capacidad que tiene el programador para que sus datos se conserven al finalizar la ejecución de un proceso, de forma que se puedan reutilizar en otros procesos. 

2. Jerarquia de tipos, herencia y clases. 
Los esquemas de BDOO suelen necesitar un gran número de clases. Sin embargo, varias clases son parecidas entre sí. 

Para permitir la representación directa de parecidos entre las clases, hay que ubicarlas en una jerarquía de especializaciones. El concepto de jerarquía de clases es parecido al de especialización del modelo E-R. Las especializaciones de las clases son denominadas subclases; lo cual especifica atributos y métodos adicionales para una clase existente. Los objetos creados por medio de una sub clases heredan todos los atributos y métodos de la clase padre. Algunas de estas características heredadas pueden ellas mismas haber sido heredadas de clases más altas en la jerarquía. 
En una base de datos existen objetos que responden a los mismos mensajes, utilizan los mismos métodos y tienen variables del mismo nombre y tipo. Sería inútil definir cada uno de estos objetos por separado por lo tanto se agrupan los objetos similares para que formen una clase, a cada uno de estos objetos se le llama instancia de su clase. Todos los objetos de su clase comparten una definición común, aunque difieran en los valores asignados a las variables. 

3. Objetos complejos, 
Objetos Complejos: Están construidos mediante algunos más simples ó mediante la aplicación de constructores a ellos. Los Objetos más simples sonobjetos como: Integer, Carácter, String de Bytes de cualquier longitud, booleanos ó punto flotante y algunos pueden ser de tipo atómico. 

Tipos estructurados: Los tipos estructurados permiten representación directa de los atributos compuestos en los diagramas entidad-relación. 
Extensibilidad.- Proporciona los tipos de datos como: Caracter, booleano, String, etc.

Conceptos Avanzados de Base de datos


     1.       Diferencia entre Entidad Relacion y Entidad Relacion Extendido.
      Una entidad Relacion representa 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. En una entidad relación los atributos son las caracteristicas que definen a una entidad.
          Mientras en una entidad relación extendido, estas se clasifican en subclases y superclases.
      Una entidad no puede ser solo miembro de una subclase, también debe pertenecer a una superclase. Una entidad puede ser miembro de varias subclases. En este tipo de entidades, los atributos también son los que definen a la entidad, estos atributos son heredados de las subclases.
     2.       Modelado de Clases, superclases, especialización.
     Clases: Una clase puede ser una subclase o una superclase.
-          Subclase: Grupo de elementos con algo en común, que pertenecen a una entidad.
-          Superclase: Entidad de la procede una subclase.
Especializacion: es el proceso por el cual se definen las diferentes subclases de una superclase. El conjunto se subclases se define basandomos en características diferenciadoras de las ocurrencias de la entidad de la superclase.
     3.       Generalizacion, Agregacion y Asociacion.
-          Generalizacion: en este proceso suprimimos las diferencias entre las distintas entidades, identificando sus características comunes, y generalizando estas entidades en una superclase de las cuales las entidades iniciales serán subclases especiales. Muchas veces este proceso se considera el proceso inverso de la especialización.
-          Agregacion: Para modelar objetos complejos, no solo bastan los tipos de datos básicos que los lenguajes de programación ofrencen (Enteros, reales, cadenas de caracteres), sino también instancias de clases definidas por el programador. Para estas instancias tenemos 2 posibilidades:
·         Por Valor: Es un tipo de relación estatica, en donde el tiempo de vida del objeto incluido esta condicionado por el tiempo de vida del que lo incluye.
·         Por Referencia: Es un tipo de relación dinámica, en donde el tiempo de vida del objeto incluido es independiente del que lo incluye.
-          Asociacion: es la relación entre clases que permite asociar objetos que colaboran entre si. Esta relación no es una relación fuerte, por lo tanto el tiempo de vida de un objeto no depende del tiempo de vida del otro.
     4.       Modelo de datos con especialización y generalización.
      Las subclases y superclases se corresponden con entidades y por tanto se representaran con rectángulos en el diagrama Entidad Relacion.
-          Restriciones:
·         Podemos tener varias especializaciones definidas sobre la misma superclase, pero una especialización puede consistir en solo una subclase.
·         En algunas especializaciones podremos determinar exactamente que ocurrencias de entidad se convertirán en ocurrencias de cada subclase, mediante la utilización de una condición en algún atributo de la superclase.
·         Si todas las subclases en una especialización tienen una condición de pertenencia en el mismo atributo de la superclase, la especialización se llamara una especialización definida por atributo.
·         Cuando la condición no exista, la subclase será una subclase definida por el usuario.
·         Todas las subclases de la especialización deben de estas separadas.
·         Cada ocurrencia de entidad de la superclase debe ser miembro de alguna subclase de la especialización.
-          Reglas de inserción y borrado.
·         Borrar una tupla de una supeficie implica el borrado instantáneo de todas las subclases a las que pertenezca.
·         Insertar una tupla en una superficie implica que tiene que ser insertada obligatoriamente en todas las subclases definidas por predicado.
·         Insertar una tupla en una superclase de una especialización implica una inserción obligatoria en al menos una de sus subclases.
     5.       Uso de Categorias y Categorizacion.
      En muchos casos las relaciones superclase/subclase tienen una superclase única. Sin embargo en otros   casos se necesita representar una relación superclase/clase simple con mas de una superclase, donde las  superclases son diferentes entidades. Estos casos la subclase es llamada categoría.
      Una categoría tiene dos o mas superclases que pueden representar distintas entidades, mientras que las    otras relaciones superclase/subclase tienen una sola superclase.
       La herencia de atributos funciona mas selectiva en las categorías, una subclase puede heredar los    atributos de cualquiera de sus superclases.
       Una categoría puede ser total o parcial.
       Las superclases de una categoría pueden tener diferentes claves.

domingo, 18 de septiembre de 2011

Modelo de Base de Datos Jerarquico

El modelo de base de datos jerarquico, basa su diagrama en la relacion PADRE/HIJO.
Para este tipo de base de datos se utilizan las siguientes estructuras:
 1.  Segmento Padre: Aquel que posee hijos(Todos sus hijos estan en el mismo nivel).
 2.  Segmento Hijo: Aquel que depende de otro segmento (Padre).
 3. Segmento Raiz: Es el segmento que ocupa el nivel superior del arbol (No tiene padres).
La base de datos jerarquica posee ciertas restricciones:
- Al tener poca flexibilidad (ya que tiene un modelo de N:1), nos induce a caer en redundancias, lo que ocurriria si usaramos un modelo de N:M.
La tranformacion de una entidad relación a el modelo de base de datos jerarquicos se realiza segun la figura siguiente:



Vínculos virtuales:
Esta relación jerárquica no es estrictamente obligatoria, de manera que pueden establecerse relaciones entre nodos hermanos. En este caso la estructura en forma de árbol se convierte en una estructura en forma de grafo dirigido. Esta variante se denomina Bases de datos de red. En elmodelo jerárquico sólo se pueden modelar relaciones 1:N, aunque esto se podía arreglar mediante el uso de los llamados "vínculos virtuales" que posibilitan las relaciones N:M.

Este tipo de modelo de base de datos posee un lenguaje de definición de datos y de manipulación de datos. El siguiente es un ejemplo de lenguaje de manipulacion de datos.

2 Data Manipulation Language. 
2.1 Consultas
Se realizan con la orden GET. Se realizan dos tareas: 
1) Localiza un registro en la BD y hace que el puntero de dirección indique a él. 
2) Copia dicho registro a la plantilla del área de trabajo 
Clases de Consultas: 
- GET FIRST <tipo_registro> [WHERE <condición>] 
Localiza el primer registro del tipo indicado. si hay cláusula where, se localiza el primero que 
cumple la condición. También se usa como GET UNIQUE. 
- GET NEXT <tipo_registro> [WHERE <condición>] 
Localiza el siguiente registro del tipo indicado. Si hay cláusula where, se localiza el siguiente que 
cumple la condición. 
GET NEXT WITHIN PARENT <tipo_registro> [WHERE <condición>] 
Localiza el siguiente registro del tipo indicado, dentro de un subárbol cuya raíz es el último 
registro localizado con GET FIRST o GET NEXT. Si hay cláusula where, se localiza el siguiente 
que cumple la condición. 
Consultas con retención del registro: 
   El usuario que hace la consulta retiene el registro hasta que lo libera. El registro está bloqueado 
y no pueden acceder a él los demás usuarios. Las órdenes con retención son equivalentes a las 
anteriores: 
   GET HOLD { FIRST │NEXT │NEXT WITH} 
2.2. Actualizaciones.
Las operaciones se realizan a nivel de registro. Los registros se almacenan desde las plantillas del 
área de trabajo. 
- INSERT <tipo_registro> [WHERE <condición>]  
El registro se inserta en la primera posición de la base de datos donde se pueden colocar registros 
de ese tipo. Si hay cláusula where el sistema busca un registro que satisfaga la condición, y el 
registro recién creado se inserta como su hermano más a la izquierda. 
- REPLACE 
Sustituye el contenido de un registro con el de la plantilla del área de trabajo. Dicho registro debe 
haber sido recuperado previamente con un GET HOLD ... para que el puntero de dirección 
señale hacia él. 
- DELETE 
Elimina un registro. Dicho registro debe haber sido recuperado previamente con un GET HOLD 
... para que el puntero de dirección señale hacia él.

Base de Datos de Red

En este modelo las entidades se representan como nodos y sus relaciones son las líneas que los unen. En esta estructura cualquier componente puede relacionarse con cualquier otro. 


Estructuras de una base de datos de red:
Las estructuras para estas bases de datos contienen dos componentes básicos:
-          Celdas: Campos del registro.
-          Lineas: Enlaces entre registros.
Existen dos tipos de estructuras; cuando el enlace no tiene atributos y cuando si tiene atributos.
      1.       Cuando el enlace no tiene atributos descriptivos:




          1.1   Caso 1: Cuando presenta una cardinalidad de uno a uno.


          1.2   Caso 2: Cuando presenta una cardinalidad de muchos a uno.


          1.3   Caso 3: Cuando presenta una cardinalidad de muchos a muchos.


      2.       Cuando el enlace tiene atributos descriptivos.


           2.1   Caso 1: Cuando presenta una cardinalidad de uno a uno.


           2.2   Caso 2: Cuando presenta una cardinalidad de muchos a uno.


           2.3   Caso 3: Cuando presenta una cardinalidad de muchos a muchos.


     
Este modelo de base de datos no posee restricciones; ya que, a diferencia de las bases de datos jerarquicas, un elemento de la base de datos de red puede tener muchos padres se hace mas fácil la manipulación de los elementos.

La tranformacion de una Entidad Relacion a un modelo de base de datos se realiza como nos muestra el grafico.
                                                             Entidad Relación
Base de datos de red


Para programar una base de datos de red se necesitan primero las atributos los cuales se usaran. Acontinuación, se especifica mediante un ejemplo:

type materia = record
     clave: string[7]
     nombreM: string[25]
     cred: string[2];
     end;
type alumno = record
     nombre: string[30];
     control: string[8];
     materia: Materia; {Enlace a materia}
     end


      

domingo, 11 de septiembre de 2011

Cuarta Forma Normal

La cuarta forma normal consiste en resolver las dependencias multivalores que contenga nuestra modelación de la base de datos. Estas dependencias multivalores se dan cuando la clave primaria de una tabla esta contiene un atributo, pero la clave primaria mas de un campo por ese atributo. Esto quiere decir que por cada clave primaria hay muchos atributos pero cada uno de esos atributos tiene solo una clave primaria.

Acontinucion presentaremos 4 ejemplos para poder explicar mejor la realizacion de esta forma normal.

Ejemplo 1:
En esta tabla vizualizamos que los diferentes restaurantes de pizza ofrecen diferentes tipos de pizza en diferentes areas de envio.



Podemos ver que Restaurante tiene una relacion de muchos a muchos tanto con Variedad de Pizza como Area de Envio. Por lo tanto por cada dependencia multivaluada se debe realizar una tabla.










Ejemplo 2:
En este segundo ejemplo tenemos una tabla con la clave del alumno y la especilidad de que pertenece(una o mas de una), como claves primarias de la tabla. El atributo curso corresponde a actividades que el alumno realiza(Puede ser mas de una por especialidad).


Clave posee una dependencia multivalor con el curso, por lo tanto se crea una tabla Clave-Curso.









Ejemplo 3:
La tabla que vemos acontinuacion representa una base de datos de un banco donde un tenemos el nombre del cliente, el tipo de credito que tiene y la direccion del cliente .


Al cliente tener mas de una direccion y mas de un credito, ocurre una dependencia multivalor entre credito y direccion.






Ejemplo 4:
En este ultimo ejemplo tenemos una tabla con el N° de curso el profesor que dicta el curso y los materiales pedidos por cada profesor para el curso que dictan.


Encontramos en esta tabla que entre el curso y el profesor existe una relacion de muchos a muchos y por lo tanto debemos resolver este multivalor.




Tercera Forma Normal

Una tabla se encuentra en tercera forma normal, cuando cumple con las condiciones de la segunda forma normal y además todos los atributos que no pertenezcan a la clave primaria no tengan dependencia transitiva. Una dependencia transitiva ocurre cuando un atributo no solo depende de las claves primarias, sino que también depende de un atributo no primario. Lo que se hace en este caso es realizar otra tabla que contenga estos dos o mas atributos para que así todas las tablas de nuestro modelo no posean dependencia transitiva entre los atributos no claves. Esta forma normal no soluciona las dependencias multivalores que se puedan mostrar en la modelación de una base de datos.

Acontinucion les daremos ejempos de como aplicar la tercera forma normal en una normalizacion de base de datos:

Ejemplo 1:
En esta tabla podemos ver el historial de los campeones de cada torneo realizado. La tabla presenta como clave primaria el torneo disputado y año en que se jugo el torneo; y como atributos posee el nombre del ganador del torneo y su fecha de nacimiento.





Podemos observar que la fecha de nacimiento depende del jugador que gano el campeonato, por lo que se encuentra en dependencia transitiva. Para resolver esta dependencia debemos separa en otra tabla laa fecha de nacimiento y el jugador.



Ejemplo 2:
En el segundo ejemplo tenemos una tabla de un centro educativo donde tenemos por clave primaria a el codigo identificador de la clase, entre sus atributos tenemos al profesor que dicta el curso y la oficina del profesor del curso.


Vemos que un profesor solo tiene una oficina, por lo tanto profesor y oficina presentan una dependencia transitiva; la cual podemos resolver creando una tabla Profesor-Oficina.











Ejemplo 3:
En este ejemplo tenemos los codigos de los ciudadanos y sus direcciones. Siendo la clave primaria el Numuero IdentiFicador.



En esta tabla podemos ver que tanto la direccion, el poblado y la provincia dependen del Codigo Postal, por lo que se encuentran en dependencia transitiva.



Ejemplo 4:
En este ultimo ejemplo tenemos una tabla de los empleados de una empresa donde estan idenficados por el numero de seguro social(Clave Primaria), ademas tienen su nombre su puesto de trabajo y el salario que ganan.




Como podemos ver el salario de cada persona depende del puesto donde trabaja por lo tanto existe una dependencia transitiva en esta tabla por lo cual tenemos que hacer una tabla con el puesto y el salario.

Segunda Forma Normal


En la segunda forma normal, nos debemos asegurar que cada tabla que tengamos esté en dependencia funcional completa; esto quiere decir que cada atributo que no pertenezca a la clave primaria dependa de la o las claves primarias de aquella tabla. Una tabla que esta en primera forma norma también puede cumplir con la segunda forma normal, solo tiene que satisfacer las condiciones de la segunda forma normal.
Sin embargo, la segunda forma normal falla en algunos aspectos como cuando dos o más atributos que no pertenecen a la clave primaria se encuentran en dependencia transitiva.

Acontinuacion les mostraremos unos ejemplos de como se transforma una tabla de primera forma normal hacia la segunda forma normal:

Ejemplo 1:
Se tiene una tabla con la clave primaria Empleado y Habilidad y como atributo dato a  lugar de trabajo. Pero podemos ver que un empleado puede tener mas de una habilidad pero este siempre trabajara en el mismo lugar de trabajo.





Para que esta tabla se encuentre en dependencia funcional completa debemos de separar el lugar de trabajo, ya que este no depende de la habilidad, solo del empleado. Por lo tanto, se separa en otra tabla el lugar de trabajo.











Ejemplo 2:
En este ejemplo podemos ver la tabla sobre modelos de cepillos de dientes en la cual la clave primaria es Nombre Completo del Modelo. Pero uno de los atributos dato de esta tabla no esta en dependencia funcional con la clave primaria.


Para poder corregir este error tenemos que sacar este atributo a otra tabla en la cual se encuentre en dependencia funcional completa.













Ejemplo 3:
El tercer ejemplo nos muestra una base de datos de cuidadanos y sus domicilios especificados en direccion, poblado y provincia. Teniendo como clave primaria a NIF(Numero IdentiFicador) y el Codigo Postal no todos los atributos dependen de esta clave. 


Por lo tanto, debemos de separar Nom y Ape que no dependen del Codigo Postal.








Ejemplo 4: 
En este ultimo ejemplo mostrado vemos una tabla donde los atributos dato(Nombre y Promedio) no dependen funcionalmente de la clave primaria(ID-Estudiante e ID-Clase).


Por lo que utilizamos la segunda forma normal para que el modelado se encuentre en dependencia funcional completa.