domingo, 27 de febrero de 2011

3.- Ejercicio: Taller Mecánico

 "TALLER MECANICO"

 

Implementación del diseño lógico


CREATE DATABASE TALLER;
USE TALLER

CREATE TABLE IF NOT EXISTs `CLIENTE`(
`RFC` varchar(10) not null PRIMARY KEY,
`Nombre` varchar (60) not null,
`Direccion` varchar (60) not null,
`tel` varchar(10)
)ENGINE = InnoDB;

CREATE TABLE IF NOT EXISTS `MECANICO`(
`Idmec` varchar(10) not null PRIMARY KEY,
`Nombre` varchar (60) not null,
`Direccion` varchar (60) not null,
`tel` varchar(10),
`Costoxhora` DECIMAL(2) not null
)ENGINE = InnoDB;

CREATE TABLE IF NOT EXISTS `VEHICULO`(
`Matricula` varchar (10) not null PRIMARY KEY,
`Modelo` varchar (60) not null,
`Color` varchar (60),
`Fecha_ent` datetime not null,
`Hora_ent` datetime not null,
`RFC` varchar (10) not null,
`Mec` varchar(10) not null,
FOREIGN KEY (`RFC`) REFERENCES `CLIENTE` (`RFC`),
FOREIGN KEY (`Mec`) REFERENCES `MECANICO` (`Idmec`)
)ENGINE = InnoDB;


CREATE TABLE IF NOT EXISTS `REPUESTO`(
`Idrep` varchar(10) not null PRIMARY KEY,
`Descripción` varchar (60) not null,
`CostoUnit` int not null,
`PrecioUnit` int not null
)ENGINE = InnoDB;


CREATE TABLE IF NOT EXISTS `HOJAP`(
`Idhoja` varchar (10) not null PRIMARY KEY,
`concepto` varchar (100) not null,
`Cantidad` int not null,
`Reparacion` varchar(10) not null,
`Idmec` varchar(10) not null,
FOREIGN KEY (`Idmec`) REFERENCES `MECANICO` (`Idmec`),
FOREIGN KEY (`Reparacion`) REFERENCES `REPUESTO` (`Idrep`)
)ENGINE = InnoDB;


CREATE TABLE IF NOT EXISTS `FACTURA`(
`Nofact` varchar(10) not null PRIMARY KEY,
`Fecha` datetime not null,
`Imp_pesos` decimal(2) not null,
`Imp_dol` decimal(2) not null,
`RFC` varchar(10) not null,
`Idhoja` varchar(10) not null,
FOREIGN KEY (`RFC`) REFERENCES CLIENTE (`RFC`),
FOREIGN KEY (`Idhoja`) REFERENCES HOJAP (`Idhoja`)
)ENGINE = InnoDB;

INSERT INTO `CLIENTE` VALUES ('RFLM019890','Moon Light','ECATEPEC','57492608');

INSERT INTO `MECANICO` VALUES
     ('TTT00012','CARLOS LOPEZ','ATIZAPAN','554545454','50.50'),
     ('AHHASDHSDS','ANTONIO SANCHEZ','ECATEPEC','26462010','62.50');

SELECT * FROM CLIENTE;


INSERT INTO `CLIENTE` VALUES
     ('ABCD445512','SRITA_CHERRY','ARAGON','51525857'),
     ('RDC1101986','RULO DOM','CHICOLOAPAN','58520720');







domingo, 20 de febrero de 2011

2.- Nomalización

NORMALIZACION
El proceso de normalización consiste verificar el cumplimiento de ciertas reglas que aseguran la eliminación de redundancias e inconsistencias. Esto se hace mediante la aplicación de ciertos procedimientos y en ocasiones se traduce en la separación de los datos en diferentes relaciones.
         El proceso de normalización de una base de datos consiste en aplicar una serie de reglas a las relaciones obtenidas en el modelo E-R (entidad-relación).
         Las bases de datos relacionales se normalizan para:
Evitar la redundancia de los datos.
Evitar problemas de actualización de los datos en las tablas.
Proteger la integridad de los datos.
         En el modelo relacional es frecuente llamar tabla a una relación, la cual  tiene que cumplir con algunas restricciones:
Cada columna debe tener su nombre único.
No puede haber dos renglones iguales. No se permiten los duplicados.
Todos los datos en una columna deben ser del mismo tipo
Ejemplo
Estamos en un servicio de biblioteca y queremos llevar el control del préstamo que incluya los siguientes datos:
Información sobre el usuario del servicio, datos del libro y la información sobre el préstamo que se realiza.
Diagrama E-R para el ejemplo
Estamos en un servicio de biblioteca y queremos llevar el control del préstamo que incluya los siguientes datos:
Información sobre el usuario del servicio, datos del libro y la información sobre el préstamo que se realiza.

 
 
Existe una relación muchos a muchos que hay que romper.
Primera Forma Normal
         En una relación (tabla) no pueden existir grupos de repetición, es decir, un atributo no puede tomar más de un valor del dominio subyacente:
         Considerando la entidad usuario, sus atributos son:
            i_usuario#, n_usuario, i_libro,   d_prestamo, d_entrega
         Y considerando la entidad libro, sus atributos son:
            i_libro#, n_título, n_editorial, n_país, d_año
La entidad usuario, presenta el siguiente problema: cada vez que un usuario pida un libro hay que escribir su número de usuario (i_usuario) y su nombre (n_usuario), además en la realidad se tendrán muchos datos más de los usuarios de la biblioteca.
¿Qué problemas puede traer esto?
Hacer una tabla con datos y ver qué pasa



Aplicando la Primera Forma Normal
  1. Identificar “grupos de repetición”.  En el ejemplo el “grupo de repetición” es lo que está en rojo: i_usuario#, n_usuario, i_libro,  d_prestamo, d_entrega
  2. Eliminar “grupos de repetición”.  Para poderlos eliminar se crea una nueva tabla con una llave primaria compuesta, una parte es la llave primaria de la tabla original (i_usuario) y la otra parte es la llave primaria del grupo de repetición (i_libro), las entidades quedan así:
usuario (i_usuario#, n_usuario)
prestamo (i_usuario#, i_libro#, d_prestamo, d_entrega)
         De una entidad se crearon 2 entidades
         La entidad  libro queda igual
libro(i_libro#, n_título, n_editorial, n_país, d_año)
Segunda Forma Normal
         Establece que todas las dependencias parciales se deben eliminar y separar dentro de sus propias tablas.  Una dependencia parcial es un atributo que no depende completamente de la llave primaria.  Normalmente se presenta  cuando la llave primaria es compuesta, es decir, que está formada por dos atributos.
         Analizando la entidad préstamo que es la que tiene la llave primaria compuesta:
prestamo (i_usuario#, i_libro#, d_prestamo, d_entrega)
En este ejemplo todas las entidades se encuentran en 2 FN, ya que los atributos d_prestamo y d_entrega dependen completamente de la llave primaria compuesta y no de una parte de ésta.
Aplicando la Segunda Forma Normal
         Cuando alguna entidad se encuentre en 2fn, será necesario:
  1. Determinar cuáles atributos  no dependen de la llave primaria compuesta de la tabla.
  2. Eliminar esas columnas de la tabla base.
  3. Crear una segunda tabla con esos atributos cuya llave primaria será el atributo del cual dependen.
Tercera Forma Normal
         Una relación está en 3FN si no hay dependencias transitivas. Una dependencia transitiva es aquella en la cual existen columnas (atributos) que dependen de otras columnas (atributos) que tampoco son llave.
         En el ejemplo, estas dos entidades están en 3FN:
usuario (i_usuario#, n_usuario)
prestamo (i_usuario#, i_libro#, d_prestamo, d_entrega)
         Pero en esta entidad se puede aplicar la 3FN
libro(i_libro#, n_título, n_editorial, n_país, d_año)
Aplicando la Tercera Forma Normal
         Los pasos a seguir son:
  1. Determinar que columnas son dependientes de otra columna no llave.
        En el ejemplo el atributo n_pais y d_año dependen del atributo no llave n_editorial, por lo tanto se puede sacar a otra entidad.
  1. Eliminar esas columnas de la tabla base
  2. Crear otra tabla con esas columnas y con la columna no llave de la cual son dependientes, crear una llave primaria para esta tabla.
            - En el ejemplo, a partir de la entidad libro quedarían las siguientes dos entidades:
     libro(i_libro#, n_título, n_editorial, n_país, d_año)
    editorial(i_editorial#, n_editorial, n_editorial, n_país, d_año)



En conclusión:
La normalización es una técnica que se utiliza para crear relaciones lógicas apropiadas entre tablas de una base de datos. Ayuda a prevenir errores lógicos en la manipulación de datos. La normalización facilita también agregar nuevas columnas sin romper el esquema actual ni las relaciones.

Se discutieron las primeras tres formas. Éstas proveen suficiente nivel de normalización para cumplir con las necesidades de la mayoría de las bases de datos. Normalizar demasiado puede conducir a tener una base de datos ineficiente y hacer a su esquema demasiado complejo para trabajar. Un balance apropiado de sentido común y práctico puede ayudarnos a decidir cuándo normalizar.


Bibliografía:

jueves, 3 de febrero de 2011

1.- Clasificación y capacidades de los manejadores de Bases de Datos

Concepto de Base de Datos (BD): 
Es una colección de datos relacionados que representa información operacional de una organización.

DEFINICIÓN DE UN SISTEMA MANEJADOR DE BASE DE DATOS (SMBD) (DBMS):

El sistema de gestión de bases de datos es esencial para el adecuado funcionamiento y manipulación de los datos contenidos en la base. Se puede definir como: "El Conjunto de programas, procedimientos, lenguajes, etc. que suministra, tanto a los usuarios no informáticos como a los analistas, programadores o al administrador, los medios necesarios para describir, recuperar y manipular los datos almacenados en la base, manteniendo su integridad, confidencialidad y seguridad".


Funciones:
Las funciones esenciales de un SMDB son la descripción, manipulación y utilización de los datos.
Descripción:  Incluye la descripción de: Los elementos de datos, su estructura, sus interrelaciones, sus validaciones. Tanto a nivel externo como lógico global e interno esta descripción es realizada mediante un LDD o Lenguaje de Descripción de Datos.
Manipulación: Permite: Buscar, Añadir, Suprimir y Modificar los datos contenidos en la Base de Datos.
La manipulación misma supone: Definir un criterio de selección, Definir la estructura lógica a recuperar, Acceder a la estructura física. Esta manipulación es realizada mediante un LMD o Lenguaje de Manipulación de Datos.
Utilización: La utilización permite acceder a la base de datos, no a nivel de datos sino a la base como tal, para lo cual: Reúne las interfaces de los usuarios y suministra procedimientos para el administrador.


Tareas:
El manejador es responsable de las siguientes tareas:
1      Interacción con el manejador de archivos:  Los datos en la base se guardan en disco mediante el sistema de archivos, proporcionado comúnmente por el sistema operativo. El manejador de la base, traduce las diferentes proposiciones del manejo de datos en comandos del sistema de archivos de bajo nivel. De esta forma el manejador se puede encargar del almacenamiento, recuperación y actualización de los datos en la base.
2      Implantación de la integridad: Los valores de los datos que se almacenan en la base, deben satisfacer ciertas limitantes de consistencia, estas limitantes deben ser determinadas por el administrador, pero es el manejador el encargado de verificar que las actualizaciones que se hagan a la base cumplan con dichas normas.
3      Puesta en práctica de la seguridad: El manejador de la base es quien verifica que los accesos a la base sean realizados por las personas autorizadas.
4      Respaldo y recuperación: Entre las labores que debe ejecutar el manejador está la de verificar de forma constante la integridad de la base, y lograr recuperación de datos y/o mejoras en caso que se requieran.
5      Control de concurrencia: Se podría entender, esta, como la principal tarea del manejador de la base, o por lo menos la más difícil. Cuando varios usuarios están accesando la base al mismo tiempo, es posible que la consistencia de los datos no se conserve. El manejador debe encargarse de coordinar los accesos de los diferentes usuarios, de forma que los datos en la base no se dañen.
En términos ideales, un DBMS debe contar con estas funciones, sin embargo, no todos las poseen, así existen algunos manejadores que no cumplen la función de respaldo o de seguridad, dejándola al usuario o administrador; sin embargo un DBMS que sea completo y que deba manejar una base de datos multiusuario grande, es conveniente que cuente con todas estas operaciones.

 CLASIFICACION DE LOS MANEJADORES DE BASE DE DATOS (DBMS):

La forma o vista externa con que se presentan los datos al usuario en la mayoría de los sistemas actuales es idéntica o muy semejante a la vista conceptual.
La estructura lógica, en el ámbito conceptual o externo, es la base para la clasificación de los DBMS en las cuatro categorías siguientes: jerárquica, red, relacional y orientada a objetos.
Cualquier categoría debe permitir un acceso aleatorio a los datos requeridos, utilizando para tal fin una estructura de datos: redes, árboles, tablas o listas enlazadas.
Cada DBMS está diseñado para manejar un tipo de estructura lógica. No se pueden procesar programas diseñados para otro DBMS.
a). Enfoque jerárquico
La base de datos jerárquica consta de muchos registros. Cada nodo representa un tipo de registro conceptual o un segmento. Cada registro o segmento está constituido por un cierto número de campos que lo describen.
Cada rama representa una relación uno a muchos. Un cliente del banco puede tener muchos movimientos en su cuenta. En este caso 'muchos' significa cero, uno o más de uno.
b). Enfoque de red
Para representar este tipo de relación, es necesario que los dos tipos de registro estén interconectados por medio de un registro conector llamado conjunto conector.

c). Enfoque relacional
Un DBMS de enfoque relacional utiliza tablas bidimensionales llamadas relaciones para la representación lógica de los datos y las relaciones entre ellos.
Si las consultas sobre claves múltiples en el enfoque jerárquico se conseguían mediante relaciones padre-hijo, en el enfoque en red mediante conjuntos, para el enfoque relacional, la relación uno a muchos entre el registro padre de un archivo y los registros hijos de otro archivo de la base de datos relacional se consigue mediante la utilización de campos de conexión, es decir, insertando el valor de la clave principal del registro padre en cada una de los registros hijos, consiguiendo relaciones parecidas al enfoque en red.
Hay características propias del enfoque relacional que no se presentan en los otros dos enfoques:
-      La facilidad para su representación lógica, al realizarse mediante tablas separadas y no presentarse ningún tipo de jerarquía.
-      La posibilidad de recuperar una tabla o un grupo de registros mediante una proposición del DML, sin necesidad de acceder a otras relaciones. Su modo de operación no esta orientado a registros sino sobre la tabla como conjunto.
-      Se puede acceder a datos de cualquier columna de la tabla o filas de una o más relaciones.
Requisitos que han de cumplir las tablas en las bases de datos relacionales:
-      La tabla puede tener solo un tipo de registro
-      Cada registro posee un numero determinado de campos, cada uno de ellos con su nombre correspondiente. La base de datos tendrá muchas tablas.
-      Dentro de cada tabla, cada campo es distinto
-      Cada  registro de una tabla es único; no hay registros duplicados.
-      Los registros dentro de cada tabla no tienen una secuencia determinada.
-      Se pueden crear nuevas tablas relacionando campos procedentes de dos o más tablas existentes.

e). Enfoque orientado a objetos
En los últimos años la tecnología de diseño de las bases de datos se ha aplicado a terrenos ajenos al campo del procesamiento de datos, que en general  carecen de al menos una de las características siguientes:
·         Uniformidad
·         Orientación a registros
·         Elementos de datos de pequeño tamaño
·         Campos atómicos
Las nuevas aplicaciones incluyen estas nuevas características:
·         Diseño asistido por computadora (CAD, Computer - Aided Desing)
·         Ingeniería de software asistida por computadora (CASE, Computer- Aided Software  Engineering).
·         Bases de datos multimedia.
·         Sistemas de información para oficinas (SIO).
·         Bases de datos de hipertexto.
Estas nuevas aplicaciones de las bases de datos no se consideraban en los años setenta, cuando se diseñaron inicialmente la mayor parte de los sistemas comerciales de base de datos. Ahora son posibles debido al incremento de memoria principal y de tamaño de los discos, al  aumento de la velocidad de las unidades centrales de procesamiento, al menor costo del hardware y a la mejor comprensión de la gestión de las bases de datos obtenidos en los últimos años.
El modelo relacional y los modelos relacionales entre entidades no resultan suficientes para modelar las necesidades de datos de estas aplicaciones nuevas. Además, hasta las necesidades de modelado de las aplicaciones comerciales tradicionales se han hecho más complejas con el paso del tiempo, y resulta difícil expresar algunas de estas necesidades en el modelo relacional, como por ejemplo, imágenes y base de datos de hipertexto.


CAPACIDADES QUE DEBE OFRECER UN SMBD:

- Control de redundancias.
- Restricción de accesos no autorizados
- Proporcionar múltiples interfaces de usuario.
- Representar relaciones complejas entre datos.
- Forzar el uso de restricciones de integridad.
- Proporcionar métodos de respaldos y recuperación

Para concluir aqui presentamos los Manejadores  de Bases de Datos (SGDB) (SMBD) (DBMS) disponibles en el mercado dividos como libres y no libres o de propietario:
Libres:

PostgreSQL
Firebird
SQLite
DB2 Express-C
Apache Derby
OpenBase


PostgreSQL es un sistema de gestión de base de datos relacional orientada a objetos y libre, publicado bajo la licencia BSD.

Como muchos otros proyectos de código abierto, el desarrollo de PostgreSQL no es manejado por una empresa y/o persona, sino que es dirigido por una comunidad de desarrolladores que trabajan de forma desinteresada, altruista, libre y/o apoyados por organizaciones comerciales. Dicha comunidad es denominada el PGDG (PostgreSQL Global Development Group).

Características
Algunas de sus principales características son, entre otras:
Alta concurrencia
Mediante un sistema denominado MVCC (Acceso concurrente multiversión, por sus siglas en inglés) PostgreSQL permite que mientras un proceso escribe en una tabla, otros accedan a la misma tabla sin necesidad de bloqueos. Cada usuario obtiene una visión consistente de lo último a lo que se le hizo commit. Esta estrategia es superior al uso de bloqueos por tabla o por filas común en otras bases, eliminando la necesidad del uso de bloqueos explícitos.


Amplia variedad de tipos nativos


PostgreSQL provee nativamente soporte para:


    * Números de precisión arbitraria.
    * Texto de largo ilimitado.
    * Figuras geométricas (con una variedad de funciones asociadas).
    * Direcciones IP (IPv4 e IPv6).
    * Bloques de direcciones estilo CIDR.
    * Direcciones MAC.
    * Arrays.


Adicionalmente los usuarios pueden crear sus propios tipos de datos, los que pueden ser por completo indexables gracias a la infraestructura GiST de PostgreSQL. Algunos ejemplos son los tipos de datos GIS creados por el proyecto PostGIS.


Otras características


    * Claves ajenas también denominadas Llaves ajenas o Claves Foráneas (foreign keys).
    * Disparadores (triggers): Un disparador o trigger se define como una acción específica que se realiza de acuerdo a un evento, cuando éste ocurra dentro de la base de datos. En PostgreSQL esto significa la ejecución de un procedimiento almacenado basado en una determinada acción sobre una tabla específica. Ahora todos los disparadores se definen por seis características:
          o El nombre del disparador o trigger
          o El momento en que el disparador debe arrancar
          o El evento del disparador deberá activarse sobre...
          o La tabla donde el disparador se activará
          o La frecuencia de la ejecución
          o La función que podría ser llamada


Entonces combinando estas seis características, PostgreSQL le permitirá crear una amplia funcionalidad a través de su sistema de activación de disparadores (triggers).


    * Vistas.
    * Integridad transaccional.
    * Herencia de tablas.
    * Tipos de datos y operaciones geométricas.
    * Soporte para transacciones distribuidas. Permite a PostgreSQL integrase en un sistema distribuido formado por varios recursos (p.ej, una base de datos PostgreSQL, otra Oracle, una cola de mensajes IBM MQ JMS y un ERP SAP) gestionado por un servidor de aplicaciones donde el éxito ("commit") de la transacción goblal es el resultado del éxito de las transacciones locales. Más información en inglés en http://www.theserverside.com/discussions/thread.tss?thread_id=21385#95297 y en http://java.sun.com/javaee/technologies/jta/index.jsp


Algunos de los lenguajes que se pueden usar son los siguientes:

    * Un lenguaje propio llamado PL/PgSQL (similar al PL/SQL de oracle).
    * C.
    * C++.
    * Java PL/Java web.
    * PL/Perl.
    * plPHP.
    * PL/Python.
    * PL/Ruby.
    * PL/sh.
    * PL/Tcl.
    * PL/Scheme.
    * Lenguaje para aplicaciones estadísticas R por medio de PL/R



Firebird es un sistema de administración de base de datos relacional (o RDBMS) (Lenguaje consultas: SQL) de código abierto, basado en la versión 6 de Interbase, cuyo código fue liberado por Borland en 2000. Su código fue reescrito de C a C++. El proyecto se desarrolla activamente, el 18 de abril de 2008 fue liberada la versión 2.1 y el 26 de diciembre de 2009 fue liberada la versión 2.5.0 RC1.


Características
    * Es multiplataforma, y actualmente puede ejecutarse en los sistemas operativos: Linux, HP-UX, FreeBSD, Mac OS, Solaris y Microsoft Windows.
    * Ejecutable pequeño, con requerimientos de hardware bajos.
    * Arquitectura Cliente/Servidor sobre protocolo TCP/IP y otros (embedded).
    * Soporte de transacciones ACID y claves foráneas.
    * Es medianamente escalable.
    * Buena seguridad basada en usuarios/roles.
    * Diferentes arquitecturas, entre ellas el Servidor Embebido[1] (embedded server) que permite ejecutar aplicaciones monousuario en ordenadores sin instalar el software Firebird.
    * Bases de datos de sólo lectura, para aplicaciones que corran desde dispositivos sin capacidad de escritura, como cd-roms.
    * Existencia de controladores ODBC, OLEDB, JDBC, PHP, Perl, .net, etc.
    * Requisitos de administración bajos, siendo considerada como una base de datos libre de mantenimiento, al margen de la realización de copias de seguridad.
    * Pleno soporte del estándar SQL-92, tanto de sintaxis como de tipos de datos.
    * Completo lenguaje para la escritura de disparadores y procedimientos almacenados denominado PSQL.
    * Capacidad de almacenar elementos BLOB (Binary Large OBjects).
    * Soporte de User-Defined Functions (UDFs).
    * Versión autoejecutable, sin instalación, excelente para la creación de catálogos en CD-Rom y para crear versiones de evaluación de algunas aplicaciones.




SQLite es un sistema de gestión de bases de datos relacional compatible con ACID, contenida en una relativamente pequeña (~275 kiB)[2] biblioteca en C. SQLite es un proyecto de dominio público[1] creado por D. Richard Hipp.

A diferencia de los sistema de gestión de bases de datos cliente-servidor, el motor de SQLite no es un proceso independiente con el que el programa principal se comunica. En lugar de eso, la biblioteca SQLite se enlaza con el programa pasando a ser parte integral del mismo. El programa utiliza la funcionalidad de SQLite a través de llamadas simples a subrutinas y funciones. Esto reduce la latencia en el acceso a la base de datos, debido a que las llamadas a funciones son más eficientes que la comunicación entre procesos. El conjunto de la base de datos (definiciones, tablas, índices, y los propios datos), son guardados como un sólo fichero estándar en la máquina host. Este diseño simple se logra bloqueando todo el fichero de base de datos al principio de cada transacción.


Lenguajes de programación


    * La biblioteca puede ser usada desde programas en C/C++, aunque enlaces para Tcl y muchos otros lenguajes de programación interpretado están disponibles.
    * SQLite se encuentra embebido en el REALbasic framework, haciendo posible que aplicaciones desarrolladas en REALbasic para Windows, Linux o Mac OS X usen la base de datos SQLite.
    * Existe un módulo DBI/DBD para Perl disponible en CPAN, DBD::SQLite, no es una interface para SQLite, sino que incluye el motor completo de SQLite en sí mismo por lo cual no necesita ningún software adicional.
    * Hay también un módulo para Python llamado PySQLite.[3]
    * Hay otro módulo para Visual Basic 6 llamado VBSqlite[2]
    * Desde Delphi se puede usar SQLite a través de los componentes libres ZeosLib[3].
    * PHP incluye SQLite, desde la versión 5. SQLite también funciona con PHP 4 pero no viene incluido en él. Para más detalles vea el manual y PECL info.
    * Desde Java se puede acceder mediante el driver de SQLiteJDBC
    * Desde Lazarus 0.9.8 y Free Pascal 2.0.0, SQLite está disponibles para programadores de Pascal. Hay un tutorial en inglés aquí.
    * Mac OS X v10.4 incluye SQLite, y es una de las opciones en la Core Data API de Apple. AppleScript puede abrir, crear, y manipular base de datos SQLite por medio de la aplicación de ayuda "Database Events" de Mac OS X 10.4.
    * BlitzMAX posee un MOD que permite trabajar con bases de datos SQLite. Para más detalles y descarga del MOD vea [4].
    * El componente de base de datos (gb.db) de Gambas soporta SQLite en sus versiones 1, 2 y 3
    * El lenguaje de programación de vídeo juegos Bennu tiene un mod de SQlite disponible




DB2 express-C es un motor de base de datos perteneciente a la empresa IBM, conteniendo parte de las funcionalidades de la versión de pago DB2 propiedad tambien de la empresa IBM, este motor de base de datos es gratuita pero no libre (como aquellas que tienen licencia GPL) y cuenta con la ventaja de no tener limite de crecimiento en sus archivos de base de datos.

Apache Derby es un sistema gestor de base de datos relacional escrito en Java que puede ser empotrado en aplicaciones Java y utilizado para procesos de transacciones online. Tiene un tamaño de 2 MB de espacio en disco. Inicialmente distribuido como IBM Cloudscape, Apache Derby es un proyecto open source licenciado bajo la Apache 2.0 License. Actualmente se distribuye como Sun Java DB.
Caracteristicas:   
* APIs para JDBC y SQL. Soporta todas las características de SQL92 y la mayoría de SQL99. La sintaxis SQL usada proviene de IBM DB2.
    * Su código mide alrededor de 2000KB comprimido.
    * Soporta cifrado completo, roles y permisos. Además posee SQL SCHEMAS para separar la información en un única base de datos y control completo de usuarios.
    * Soporta internamente procedures, cifrado y compresión.
    * Trae soporte multilenguaje y localizaciones específicas.
    * A partir de la versión 10.4 trae un sistema simple de replicación maestro-esclavo.
    * Transacciones y recuperación ante errores ACID.
    * Posee tres productos asociados a la marca:
          o Derby Embedded Database Engine: El motor propiamente dicho.
          o Derby Network Server: Permite convertir Derby en una base de datos que sigue el modelo cliente-servidor tradicional.
          o Database Utilities: Un paquete de utilidades.




 No Libres (Propietario):

MySQL
Advantage Database
dBase
FileMaker
Microsoft Fox Pro
gsBase
IBM DB2
IBM Informix
Interbase de CodeGear, filial de Borland
MAGIC
Microsoft Access
Microsoft SQL Server
NexusDB
Open Access
Oracle
Paradox
PervasiveSQL
Progress (DBMS)
Sybase ASE
Sybase ASA
Sybase IQ
WindowBase
IBM IMS Base de Datos Jerárquica
CA-IDMS

MySQL es un sistema de gestión de base de datos relacional, multihilo y multiusuario con más de seis millones de instalaciones.[1] MySQL AB —desde enero de 2008 una subsidiaria de Sun Microsystems y ésta a su vez de Oracle Corporation desde abril de 2009— desarrolla MySQL como software libre en un esquema de licenciamiento dual.

Por un lado se ofrece bajo la GNU GPL para cualquier uso compatible con esta licencia, pero para aquellas empresas que quieran incorporarlo en productos privativos deben comprar a la empresa una licencia específica que les permita este uso. Está desarrollado en su mayor parte en ANSI C.

Al contrario de proyectos como Apache, donde el software es desarrollado por una comunidad pública y el copyright del código está en poder del autor individual, MySQL es patrocinado por una empresa privada, que posee el copyright de la mayor parte del código.

Esto es lo que posibilita el esquema de licenciamiento anteriormente mencionado. Además de la venta de licencias privativas, la compañía ofrece soporte y servicios. Para sus operaciones contratan trabajadores alrededor del mundo que colaboran vía Internet. MySQL AB fue fundado por David Axmark, Allan Larsson y Michael Widenius.

Lenguajes de programacion
Existen varias APIs que permiten, a aplicaciones escritas en diversos lenguajes de programación, acceder a las bases de datos MySQL, incluyendo C, C++, C#, Pascal, Delphi (via dbExpress), Eiffel, Smalltalk, Java (con una implementación nativa del driver de Java), Lisp, Perl, PHP, Python, Ruby,Gambas, REALbasic (Mac y Linux), (x)Harbour (Eagle1), FreeBASIC, y Tcl; cada uno de estos utiliza una API específica. También existe una interfaz ODBC, llamado MyODBC que permite a cualquier lenguaje de programación que soporte ODBC comunicarse con las bases de datos MySQL. También se puede acceder desde el sistema SAP, lenguaje ABAP.

Advantage Database Server es un sistema de administración de bases de datos relacionales completo, cliente-servidor, que se incrusta fácilmente y que le proporciona acceso a datos basados en tabla y basados en SQL de método de acceso secuencia indexado (ISAM, Indexed Sequential Access Method).

Funciones y beneficios
Advantage Database Server ofrece una ruta de crecimiento para las aplicaciones de bases de datos integradas, que permite que las aplicaciones utilicen conjuntos de funciones de nivel empresarial. Los desarrolladores que utilizan Advantage Database Server tienen la flexibilidad de utilizar varias plataformas y diferentes lenguajes de desarrollo con controladores nativos.  Requiere poco o nada de mantenimiento.

Advantage Database Server proporciona acceso a datos mediante comandos SQL relacionales nativos o de navegación directos.

Lenguajes de programacion
El sistema de administración ofrece un acceso a datos optimizado para Delphi, Visual Studio, Visual Objects, Visual Basic y más.

Microsoft SQL Server es un sistema para la gestión de bases de datos producido por Microsoft basado en el modelo relacional. Sus lenguajes para consultas son T-SQL y ANSI SQL. Microsoft SQL Server constituye la alternativa de Microsoft a otros potentes sistemas gestores de bases de datos como son Oracle o PostgreSQL o MySQL.

Caracteristicas
    * Soporte de transacciones.
    * Escalabilidad, estabilidad y seguridad.
    * Soporta procedimientos almacenados.
    * Incluye también un potente entorno gráfico de administración, que permite el uso de comandos DDL y DML gráficamente.
    * Permite trabajar en modo cliente-servidor, donde la información y datos se alojan en el servidor y los terminales o clientes de la red sólo acceden a la información.
    * Además permite administrar información de otros servidores de datos.

Este sistema incluye una versión reducida, llamada MSDE con el mismo motor de base de datos pero orientado a proyectos más pequeños, que en sus versiónes 2005 y 2008 pasa a ser el SQL Express Edition, que se distribuye en forma gratuita.

Es común desarrollar completos proyectos complementando Microsoft SQL Server y Microsoft Access a través de los llamados ADP (Access Data Project). De esta forma se completa la base de datos (Microsoft SQL Server), con el entorno de desarrollo (VBA Access), a través de la implementación de aplicaciones de dos capas mediante el uso de formularios Windows.

En el manejo de SQL mediante líneas de comando se utiliza el SQLCMD

Para el desarrollo de aplicaciones más complejas (tres o más capas), Microsoft SQL Server incluye interfaces de acceso para varias plataformas de desarrollo, entre ellas .NET, pero el servidor sólo está disponible para Sistemas Operativos Windows.

Oracle es un sistema de gestión de base de datos relacional (o RDBMS por el acrónimo en inglés de Relational Data Base Management System), desarrollado por Oracle Corporation.

Se considera a Oracle como uno de los sistemas de bases de datos más completos,[cita requerida] destacando:

    * soporte de transacciones,
    * estabilidad,
    * escalabilidad y
    * Soporte multiplataforma.

Su dominio en el mercado de servidores empresariales ha sido casi total hasta hace poco, recientemente sufre la competencia del Microsoft SQL Server de Microsoft y de la oferta de otros RDBMS con licencia libre como PostgreSQL, MySql o Firebird. Las últimas versiones de Oracle han sido certificadas para poder trabajar bajo GNU/Linux.


Conclusión:
En este trabajo me pude dar cuenta de la variedad de sistemas manejadores de bases de datos que existen en el mercado, cada una cuenta con diferentes caracteristicas que satisfacen a las diferentes necesidades del usuario. He observado que existe mucha competencia, aunque los lideres son aquellos que ofrecen mayor seguridad y eficiencia hacia el usuario. Tambien me di cuenta que existe diversidad de software no libre y gratuito que es eficiente.


R e f e r e n c i a s  B i b l i o g r a f i c a s :
http://es.wikipedia.org/wiki/Sistema_de_gesti%C3%B3n_de_bases_de_datos#SGBD_libres
http://www.mailxmail.com/curso-procesamiento-datos-oracle/sistema-manejador-base-datos
http://es.wikipedia.org/wiki/MySQL
http://www.sybase.es/products/databasemanagement/advantagedatabaseserver