Instituto Tecnológico de Tuxtla Gutierez

BUSCADOR

en Web en Blog

martes, 4 de octubre de 2011

2.2.1 Integridad, Integridad Refencial declarativa

2.2.1 Integridad.
Se refiere a las medidas de salvaguardar, que se incluyen en un sistema de información para evitar la pérdida accidental de los datos.

Primero repasemos un poco los tipos de relaciones.

Tipos de relaciones.
 
Entre dos tablas de cualquier base de datos relacional pueden haber dos tipos de relaciones, relaciones uno a uno y relaciones uno a muchos:
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 de profesores y otra de departamentos y queremos saber qué profesor es jefe de qué departamento, tenemos una relación uno a uno entre las dos tablas ya que un departamento tiene un solo jefe y un profesor puede ser jefe de un solo departamento.
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 tabla principal puede tener más de un registro relacionado en la tabla secundaria, en este caso se suele hacer referencia a la tabla principal como tabla 'padre' y a la tabla secundaria como tabla 'hijo', entonces la regla se convierte en 'un padre puede tener varios hijos pero un hijo solo tiene un padre (regla más fácil de recordar).
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. En este caso la tabla principal será la de poblaciones y la tabla secundaria será la de habitantes. Una población puede tener varios habitantes pero un habitante pertenece a una sola población. Esta relación se representa incluyendo en la tabla 'hijo' una columna que se corresponde con la clave principal de la tabla 'padre', esta columna es lo denominamos clave foránea (o clave ajena o clave externa).
Una clave foránea es pues un campo de una tabla que contiene una referencia a un registro de otra tabla. Siguiendo nuestro ejemplo en la tabla habitantes tenemos una columna población que contiene el código de la población en la que está empadronado el habitante, esta columna es clave ajena de la tabla habitantes, y en la tabla poblaciones tenemos una columna codigo de poblacion clave principal de la tabla.

 
  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. En este caso las dos tablas no pueden estar relacionadas directamente, se tiene que añadir una tabla entre las dos que incluya los pares de valores relacionados entre sí.
Por ejemplo: tenemos dos tablas una con los datos de clientes y otra con los artículos que se venden en la empresa, un cliente podrá realizar un pedido con varios artículos, y un artículo podrá ser vendido a más de un cliente.
No se puede definir entre clientes y artículos, hace falta otra tabla (por ejemplo una tabla de pedidos) relacionada con clientes y con artículos. La tabla pedidos estará relacionada con cliente por una relación uno a muchos y también estará relacionada con artículos por un relación uno a muchos.

Cuando se define una columna como clave foránea, las filas de la tabla pueden contener en esa columna o bien el valor nulo (ningún valor), o bien un valor que existe en la otra tabla, un error sería asignar a un habitante una población que no está en la tabla de poblaciones. Eso es lo que se denomina integridad referencial y consiste en que los datos que referencian otros (claves foráneas) deben ser correctos. La integridad referencial hace que el sistema gestor de la base de datos se asegure de que no hayan en las claves foráneas valores que no estén en la tabla principal.
La integridad referencial se activa en cuanto creamos una clave foránea y a partir de ese momento se comprueba cada vez que se modifiquen datos que puedan alterarla.[1]









 
2.2.2 Integridad referencial declarativa.

La integridad referencial es un sistema de reglas que utilizan la mayoría de las bases de datos relacionales para asegurarse que los registros de tablas relacionadas son válidos y que no se borren o cambien datos relacionados de forma accidental produciendo errores de integridad. [1]

La integridad de los datos es la propiedad que asegura que información dada es correcta, al cumplir ciertas aserciones.
Las restricciones de integridad aseguran que la información contenida en una base de datos es correcta.
Las restricciones de integridad son propiedades de la base de datos que se deben satisfacer en cualquier momento.
Oracle es un sistema de gestión de base de datos (SGBD) relacional que permite la definición de restricciones de integridad dentro del diseño de su base de datos al ser creada.
Las restricciones de integridad aseguran que la información contenida en la base de datos cumple ciertas restricciones para los diferentes estados.
Existen dos tipos de restricciones:
  • Estáticas: limitan los estados permitidos de la Base de Datos.
  • Dinámicas:  restringen las posibles transiciones de estados de la base datos.
Para incorporar el tratamiento de las restricciones de integridad en el sistema pueden realizarse:
  • Añadiendo código adicional para verificar y asegurar que se cumplen las restricciones.
  • Declarando las restricciones como parte del esquema de la base de datos.
La definición en la fase de diseño de las restricciones de integridad proporciona mayor número de ventajas, ya que:
  • Reduce el costo de desarrollo de software.
  • Es más confiable al ser centralizado y uniforme.
  • Mantenimiento más fácil.
De acuerdo con la forma de especificación del comando CREATE TABLE dada anteriormente, la cláusula <table_constraint> puede entonces tener las siguientes formas:
CONSTRAINT <constraint_name> PRIMARY KEY (>[,>])
CONSTRAINT <constraint_name> UNIQUE ([,])
CONSTRAINT <constraint_name> FOREIGN KEY (<column_name>[,<column_name>]) REFERENCES <table_name>
CONSTRAINT <constraint_name> CHECK (<condition>)
Donde:
es el nombre con el que se designará al “constraint" en el esquema donde se crea la tabla que lo incluye.
es el nombre de una columna de la tabla en la que se define el “constraint"
1
<table_name> es el nombre de una tabla definida en el esquema donde existe la tabla que incluye el “constraint".
<condition> es una expresión lógica de SQL.[2]


Referencias 
[1] http://www.aulaclic.es/sql/b_8_1_1.htm
[2] http://www.paginasprodigy.com.mx/evaristopacheco/taller/integridadReferencialDeclarativa.html

2.2.1,2 Resumen -- Integridad , Integridad referencial declarativa

2.2.1 Integridad


Se refiere a las medidas de salvaguardar, que se  incluyen en un sistema de información para evitar la pérdida accidental de los datos.
Asegurar que la información no es alterada sin autorización



Integridad de datos en bases de datos: Integridad de datos se refiere al estado de corrrección y completidud de los datos ingreados en una base de datos.
La SGBD relacional deben encargarse de mantener la integridad de los datos almacenados en una base de datos con respecto a las reglas predefinidas o restricciones. La integridad también puede verificarse inmediatamente antes del momento de introducir los datos a la base de datos (por ejemplo, en un formulario empleando validación de datos).
Un claro ejemplo de error de integridad es el ingreso de un tipo de dato incorrecto dentro de un campo.
Por ejemplo, ingresar un texto cuando se espera un número entero.


Tipos de restricciones.
 
*Estáticas: limitan los estados permitidos de la Base de Datos.
-las más importantes son las que afectan a las claves primarias.
“Ninguna de las partes que componen una clave primaria puede ser NULL
-Las modificaciones de claves primarias deben estar muy bien controladas.
*Dinámicas:  restringen las posibles transiciones de estados de la base datos.
 
 
2.2.1. Integridad referencial declarativa
La integridad referencial declarativa (DRI) y las relaciones entre tablas vienen a garantizar algo importantísimo en los sistemas relacionales, en este caso la consistencia de los datos. No es de recibo que exista en una base de datos una entrega al  cliente 50, y que el cliente 50 no exista!!, y eso es lo que nos garantiza la DRI, que esas cosas no sucedan.
 
Ejemplo :
Puede existir una cabecera que no tenga líneas, aunque la DRI garantiza que si existe una línea su cabecera si existe. Esto puede llevarnos a situaciones a veces difíciles de entender, sobre todo al principio. Si se construye una sentencia select que devuelve los registros de la cabecera, aparecen X registros, si la sentencia se completa con las unión con las líneas aparecen Y, pero Y puede ser hasta menor que X, sería ‘normal’ que fuese mayor, pero ¿menor?
/* Siempre nos basamos en una bd que exista en el sistema y que se llame pruebas */
 pruebas go create table cabecera( id int identity (1,1) primary key not null,
fecha datetime default getdate()) go create table lineas (id int not null, orden int not null,
Descripcion varchar(100) not null, constraint pk_lineas primary key (id,orden), constraint fk_lineas foreign key (id) references cabecera) go
/* además metemos 100 cabeceras */
declare @i int
set @i=0
while @i<100
begin
insert into cabecera default values
select @i=@i+1
end
go
/* y dos lineas *//
insert into lineas values (1,1,’Esto es una prueba’)
insert into lineas values (1,2,’Esto es una prueba linea 2′)
go
select * from cabecera
— 100 filas
Esto es normal, el sistema nos devuelve las 100 filas de la cabecera,
 .
.
El resultado serán las 101 filas, siendo todos los valores de la tabla líneas null, en aquellas que no tienen registros relacionados. Aparece una fila más que cabeceras por que una cabecera tiene dos líneas, por tanto esa cabecera aparecerá dos veces.
go
select * from cabecera left join lineas on cabecera.id=lineas.id where lineas.id is null
— 99 filas = 101 −2 filas.


jueves, 29 de septiembre de 2011

2.1 CREACION DE BASE DE DATOS

 2.1 Creacion de base de Datos
   2.2 Creación de tablas
 
Una base de datos relacional consiste en un conjunto de tablas, a cada una de las cuales se le asigna un nombre exclusivo. Cada tabla tiene una estructura , donde se representaron las bases de datos E-R mediante tablas. Cada fila de la tabla representa una relación entre un conjunto de valores. Dado que cada tabla es un conjunto de dichas relaciones, hay una fuerte correspondencia entre el concepto de tabla y el concepto matemático de relación, del que toma su nombre el modelo de datos relacional. A continuación se introduce el concepto de relación.[1]
 
Una base de datos en un sistema relacional está compuesta por un conjunto de tablas, que corresponden a las relaciones del modelo relacional. En la terminología usada en SQL no se alude a las relaciones, del mismo modo que no se usa el término atributo, pero sí la palabra columna, y no se habla de tupla, sino de línea. A continuación se usarán indistintamente ambas terminologías, por lo que tabla estará en lugar de relación, columna en el de atributo y línea en el de tupla, y viceversa.
Prácticamente, la creación de la base de datos consiste en la creación de las tablas que la componen. En realidad, antes de poder proceder a la creación de las tablas, normalmente hay que crear la base de datos, lo que a menudo significa definir un espacio de nombres separado para cada conjunto de tablas. De esta manera, para una DBMS se pueden gestionar diferentes bases de datos independientes al mismo tiempo sin que se den conflictos con los nombres que se usan en cada una de ellas. El sistema previsto por el estándar para crear los espacios separados de nombres consiste en usar las instrucciones SQL "CREATE SCHEMA". A menudo, dicho sistema no se usa (o por lo menos no con los fines y el significado previstos por el estándar), pero cada DBMS prevé un procedimiento propietario para crear una base de datos. Normalmente, se amplía el lenguaje SQL introduciendo una instrucción no prevista en el estándar: "CREATE DATABASE".
La sintaxis empleada por PostgreSQL, pero también por las DBMS más difundidas, es la siguiente:

CREATE DATABASE nombre_base de datos

Con PostgreSQL está a disposición una orden invocable por shell Unix (o por shell del sistema usado), que ejecuta la misma operación:

createdb nombre_base de datos

Para crear nuestra base de datos bibliográfica, usaremos pues la orden:

createdb biblio

Una vez creada la base de datos, se pueden crear las tablas que la componen. La instrucción SQL propuesta para este fin es:

CREATE TABLE nombre_tabla (
nombre_columna tipo_columna [ cláusula_defecto ] [ vínculos_de_columna ]
[ , nombre_columna tipo_columna [ cláusula_defecto ] [ vínculos_de_columna ] ... ]
[ , [ vínculo_de tabla] ... ] )



nombre_columna: es el nombre de la columna que compone la tabla. Sería mejor no exagerar con la longitud de los identificadores de columna, puesto que SQL Entry Level prevé nombres con no más de 18 caracteres. Consúltese, de todos modos, la documentación de la base de datos específica. Los nombres tienen que comenzar con un carácter alfabético.

tipo_columna: es la indicación del tipo de dato que la columna podrá contener. Los principales tipos previstos por el estándar SQL son:

  • CHARACTER(n)
    Una cadena de longitud fija con exactamente n caracteres. CHARACTER se puede abreviar con CHAR

  • CHARACTER VARYING(n)
    Una cadena de longitud variable con un máximo de n caracteres. CHARACTER VARYING se puede abreviar con VARCHAR o CHAR VARYING.

  • INTEGER
    Un número estero con signo. Se puede abreviar con INT. La precisión, es decir el tamaño del número entero que se puede memorizar en una columna de este tipo, depende de la implementación de la DBMS en cuestión.

  • SMALLINT
    Un número entero con signo y una precisión que no sea superior a INTEGER.

  • FLOAT(p)
    Un número con coma móvil y una precisión p. El valor máximo de p depende de la implementación de la DBMS. Se puede usar FLOAT sin indicar la precisión, empleando, por tanto, la precisión por defecto, también ésta dependiente de la implementación. REAL y DOUBLE PRECISION son sinónimo para un FLOAT con precisión concreta. También en este caso, las precisiones dependen de la implementación, siempre que la precisión del primero no sea superior a la del segundo.

  • DECIMAL(p,q)
    Un número con coma fija de por lo menos p cifras y signo, con q cifras después de la coma. DEC es la abreviatura de DECIMAL. DECIMAL(p) es una abreviatura de DECIMAL(p,0). El valor máximo de p depende de la implementación.

  • INTERVAL
    Un periodo de tiempo (años, meses, días, horas, minutos, segundos y fracciones de segundo).

  • DATE, TIME y TIMESTAMP
    Un instante temporal preciso. DATE permite indicar el año, el mes y el día. Con TIME se pueden especificar la hora, los minutos y los segundos. TIMESTAMP es la combinación de los dos anteriores. Los segundos son un número con coma, lo que permite especificar también fracciones de segundo.

cláusula_defecto: indica el valor de defecto que tomará la columna si no se le asigna uno explícitamente en el momento en que se crea la línea. La sintaxis que hay que usar es la siguiente:

DEFAULT { valor | NULL }

donde valor es un valor válido para el tipo con el que la columna se ha definido.

vínculos_de_columna: son vínculos de integridad que se aplican a cada atributo concreto. Son:

  • NOT NULL, que indica que la columna no puede tomar el valor NULL.
  • PRIMARY KEY, que indica que la columna es la llave primaria de la tabla.
  • una definición de referencia con la que se indica que la columna es una llave externa hacia la tabla y los campos indicados en la definición. La sintaxis es la siguiente:

    REFERENCES nombre_tabla [ ( columna1 [ , columna2 ... ] ) ]
    [ ON DELETE { CASCADE | SET DEFAULT | SET NULL } ]
    [ ON UPDATE { CASCADE | SET DEFAULT | SET NULL } ]


    Las cláusulas ON DELETE y ON UPDATE indican qué acción hay que ejecutar en el caso en que una tupla en la tabla referenciada sea eliminada o actualizada. De hecho, en dichos casos en la columna referenciante (que es la que se está definiendo) podría haber valores inconsistentes. Las acciones pueden ser:

    • CASCADE: eliminar la tupla que contiene la columna referenciante (en el caso de ON DELETE) o también actualizar la columna referenciante (en el caso de ON UPDATE).
    • SET DEFAULT: asignar a la columna referenziante su valor de defecto.
    • SET NULL: asignar a la columna referenciante el valor NULL.

  • un control de valor, con el que se permite o no asignar un valor a la columna en función del resultado de una expresión. La sintaxis que se usa es:

    CHECK (expresión_condicional)

    donde expresión_condicional es una expresión que ofrece verdadero o falso.
    Por ejemplo, si estamos definiendo la columna COLUMNA1, con el siguiente control:

    CHECK ( COLUMNA1 < 1000 )

    en dicha columna se podrán incluir sólo valores inferiores a 1000.

vínculo_de_tabla: son vínculos de integridad que se pueden referir a más columnas de la tabla. Son:

  • la definición de la llave primaria:

    PRIMARY KEY ( columna1 [ , columna2 ... ] ) Véase que en este caso, a diferencia de la definición de la llave primaria como vínculo de columna, ésta se puede formar con mas de un atributo.

  • las definiciones de las llaves externas:

    FOREIGN KEY ( columna1 [ , columna2 ... ] ) definiciones_de_referencia

    La definición_de_referencia tiene la misma sintaxis y significado que la que puede aparecer como vínculo de columna.

  • un control de valor, con la misma sintaxis y significado que el que se puede usar como vínculo de columna.

Para aclarar mejor el uso de la instrucción CREATE TABLE, veamos algunas órdenes que implementan la base de datos bibliográfica ejemplificada.

CREATE TABLE Publication (
ID INTEGER PRIMARY KEY,
type CHAR(18) NOT NULL
);


La instrucción anterior crea la tabla Publication, formada por las dos columna ID de tipo INTEGER, y type de tipo CHAR(18). ID es la llave primaria de la relación. En el atributo type hay un vínculo de no nulidad.

CREATE TABLE Book (
ID INTEGER PRIMARY KEY REFERENCES Publication(ID),
title VARCHAR(160) NOT NULL,
publisher INTEGER NOT NULL REFERENCES Publisher(ID),
volume VARCHAR(16),
series VARCHAR(160),
edition VARCHAR(16),
pub_month CHAR(3),
pub_year INTEGER NOT NULL,
note VARCHAR(255)
);


Crea la relación Book, formada por nueve atributos. La llave primaria es el atributo ID, que es también una llave externa hacia la relación Publication. Sobre los atributos title, publisher y pub_year hay vínculos de no nulidad. Además, el atributo publisher es una llave externa hacia la tabla Publisher.

CREATE TABLE Author (
publicationID INTEGER REFERENCES Publication(ID),
personID INTEGER REFERENCES Person(ID),
PRIMARY KEY (publicationID, personID)
);


Crea la relación Author, compuesta por dos atributos: publicationID y personID. La llave primaria en este caso está formada por la combinación de los dos atributos, como está indicado por el vínculo de tabla PRIMARY KEY. PublicationID es una llave externa hacia la relación Publication, mientras que personID lo es hacia la relación Person.


REFERNCIAS 
[1] Silberschatz, Abraham; F.korth, Henry; Sudarshan , S. Fudamentos de bases de Datos. 4a. Ed. 2002 . McGraw-Hill
[2] http://www.htmlpoint.com/sql/sql_07.htm

lunes, 26 de septiembre de 2011

RESUMEN 2.1 CREACION DE BASE DE DATOS






Una base de datos en un sistema relacional está compuesta por un conjunto de tablas, que corresponden a las relaciones del modelo relacional. 

 2.1 Creación de base de datos.

Existen dos  lenguajes para el manejo de base de datos: 
 DDL (Data Definition Language) Lenguaje de definición de datos. Es el lenguaje que se usa para crear bases de datos y tablas, y para modificar sus estructuras, así como los permisos y privilegios.
 DML (Data Manipilation Language) lenguaje de manipulación de datos. Es el que se usa para modificar y obtener datos desde las bases de datos. 
Hay que crear la base de datos, lo que a menudo significa definir un espacio de nombres separado para cada conjunto de tablas.

Cada conjunto de relaciones que componen un modelo completo forma una base de datos. Desde el punto de vista de SQL, una base de datos es sólo un conjunto de relaciones (o tablas), y para organizarlas o distinguirlas se accede a ellas mediante su nombre.
 
Debido a esto, crear una base de datos es una tarea muy simple. Claro que, en el momento de crearla, la base de datos estará vacía, es decir, no contendrá ninguna tabla.
  
žPara empezar, crearemos una base de datos para nosotros solos, y la llamaremos "prueba". Para crear una base de datos se usa una sentencia CREATE DATABASE:
žmysql> CREATE DATABASE prueba;
 Query OK, 1 row affected (0.03 sec)
mysql>
Podemos averiguar cuántas bases de datos existen en nuestro sistema usando la sentencia SHOW DATABASES:
žmysql> SHOW DATABASES;


2.2 Creación de tablas.  

El mandato para la creación de tablas o esquemas relacionales es CREATE TABLE. Básicamente se debe definir los atributos que componen la tabla, la clave primaria, las posibles claves ajenas y las restricciones a imponer sobre los valores de los atributos. Cada definición se separa de la siguiente con una coma. La sintaxis general es la siguiente:


 
CREATE TABLE nombre_tabla(
definición de atributo 1,
.....................
definición de atributo a,
definición de clave primaria,
definición de clave foránea 1,
.....................
definición de clave foránea f,
definición de restricción 1,
definición de restricción r);

Definicion de atributos 

El tipo de datos del atributo especifica sus posibles valores válidos. Los tipos de datos más habituales son NUMBER (número entero), DATE (fecha), CHAR (cadena de caracteres de longitud fija) y VARCHAR2 (cadena de caracteres de longitud máxima fija y longitud real variable).


Si no se especifica ninguna restricción sobre el atributo, entonces puede tomar cualquier valor compatible con su tipo de datos, y el valor nulo (null). Las posibles restricciones son:


PRIMARY KEY : El atributo es clave primaria. Por tanto no acepta valores repetidos ni nulos.
UNIQUE: El atributo no acepta valores repetidos, pero sí nulos.
NOT NULL: El atributo no acepta valores nulos, pero sí únicos.
CHECK:  Restricción arbitraria.

martes, 13 de septiembre de 2011

1.2 CARACTERISTICAS DE LOS DBMS

CARACTERISTICAS GENERALES

En primer lugar hemos de tener en cuenta varias características que definen un SGBD:
• Modelo de datos: relacional, jerárquico o en red.
• Lenguajes de definición y manipulación de datos (SQL)
• Herramientas de ayuda para el desarrollo: lenguajes de cuarta generación, generadores de aplicaciones, asistentes, generadores de informes, CASE,
etc.
En segundo lugar hemos de evaluar el rendimiento del SGBD. Para ello hemos de definir un conjunto de pruebas mediante las cuales podamos valorar ciertas características muy concretas en cada producto. La evaluación se realiza midiendo el tiempo que tarda cada SGBD en llevar a cabo las pruebas, ya que la velocidad representa la eficiencia en la realización de cada función.
• Capacidad de almacenamiento y recuperación de datos: velocidad de ejecución de consultas, creación de ´índices, importación de datos, etc.
• Protección de datos: acceso simultáneo de varios usuarios, etc.
• Control de accesos de los usuarios: intentos de acceso de usuarios no autorizados, etc.
• Consumo de recursos: memoria RAM, etc. (algunos SGBD incorporan monitores que permiten realizar un seguimiento de los recursos consumidos).

CARACTERISTICAS PARTICULARES DE CADA SGBD (DBMS)
Libres


• PostgreSQL 2
PostgreSQL destaca por su amplísima lista de prestaciones que lo hacen capaz de competir con cualquier SGBD comercial:
•    Está desarrollado en C, con herramientas como Yacc y Lex.
•    La API de acceso al SGBD se encuentra disponible en C, C++, Java, Perl, PHP, Python y TCL, entre otros.
•    Cuenta con un rico conjunto de tipos de datos, permitiendo además su extensión mediante tipos y operadores definidos y programados por el usuario.
•    Su administración se basa en usuarios y privilegios.
•    Sus opciones de conectividad abarcan TCP/IP, sockets Unix y sockets NT, además de soportar completamente ODBC.
•    Los mensajes de error pueden estar en español y hacer ordenaciones correctas con palabras acentuadas o con la letra ‘ñ’.
•    Es altamente confiable en cuanto a estabilidad se refiere.
•    Puede extenderse con librerías externas para soportar encriptación,  búsquedas por similitud fonética (soundex), etc.
•    Control de concurrencia multiversión, lo que  mejora sensiblemente las operaciones de bloqueo y transacciones en sistemas multiusuario.
•    Soporte  para  vistas,  claves  foráneas,  integridad  referencial,  disparadores, procedimientos almacenados, subconsultas y casi todos los tipos y operadores soportados en SQL92 y SQL99.
•    Implementación de algunas extensiones de orientación a objetos. En PostgreSQL es posible definir un nuevo tipo de tabla a partir de otra previamente definida.
Limitaciones:
Las limitaciones de este tipo de gestores de bases de datos suelen identificarse muy fácilmente analizando las prestaciones que tienen previstas para las próximas versiones. Encontramos lo siguiente:
•    Puntos de recuperación dentro de transacciones. Actualmente, las transacciones abortan completamente si se encuentra un fallo durante su ejecución. La definición de puntos de recuperación permitirá                     recuperar  mejor transacciones complejas.
•    No soporta tablespaces para definir dónde almacenar la base de datos, el esquema, los índices, etc.
•    El soporte a orientación a objetos es una simple extensión que ofrece prestaciones como la herencia, no un soporte completo.
MySQL3
Interioridades y portabilidad
 * Escrito en C y en C++
* Probado con un amplio rango de compiladores diferentes
* Funciona en diferentes plataformas. Consulte 
* Usa GNU Automake, Autoconf, y Libtool para portabilidad.
* APIs disponibles para C, C++, Eiffel, Java, Perl, PHP, Python, Ruby, y Tcl. Consulte
* Uso completo de multi-threaded mediante threads del kernel. Pueden usarse fácilmente multiple CPUs si están disponibles.
* Proporciona sistemas de almacenamiento transaccionales y no transaccionales.
* Usa tablas en disco B-tree (MyISAM) muy rápidas con compresión de índice.
* Relativamente sencillo de añadir otro sistema de almacenamiento. Esto es útil si desea añadir una interfaz SQL para una base de datos propia.
 Un sistema de reserva de memoria muy rápido basado en threads.

RESUMEN 1.2 CARACTERISTICAS DE LOS DBMS(SGBD)

Características de los DBMS
    - Control de redundancia
    - Restriccion de los accesos no autorizados
    - Cumplimiento de las restricciones de integridad
     - Respaldo y recuperacion
Control de redundancia:
    Cada grupo de usuarios mantienen sus propios archivos para manejar sus aplicaciones de procesamiento de datos 
Restricción de los accesos
   Cuando muchos comparten una misma es probable que no todos tengan la autorizacion
para tener acceso a toda la info.
Cumplimiento:
   El SGBD ofrece recursos para cumplir todas las restricciones que tenga esta misma
Respaldo:
  Debe contar con recursos para recuperarse de fallos de hardware o de software


Tipos de DBMS
 Son 5 tipos de gestores:
* Modelo  jerarquico, es como un arbol alreves utiliza punteros para navegar

* Modelo de red,  este utiliza punteros pero sion arbol invertido hacia loa datos almacenados

* Modelo Relacional, los datos se almacenan en tablas

Existen diferentes DBMS:
-  postreSQL
- MySQL7.7

Los mas comerciales
- Oracle
- DB2



Caracteristica de un DBMS , como ejemplo:

MySQL

Interioridades y portabilidad
Escrito en C y en C++.
.
.
.Proporciona sistemas de almacenamiento