domingo, 4 de diciembre de 2011

BASE DE DATOS EN VISUAL BASIC 6.0

 ADO CON VISUAL BASIC 6.0

En este ejemplo vamos a usar un control FlexGrid para asignar un Recordset y mostrar los datos directamente.
Por tanto, tendrás que crear un nuevo proyecto de Visual Basic 6.0 y agregar ese componente, el cual se muestra como:Microsoft Hierarchical FlexGrid Control 6.0 (SP4) (OLEDB) y en realidad es el control MSHFLXGD.OCX.
También tendrás que añadir una referencia a la librería de OLEDB, en mi caso he usado Microsoft ActiveX Data Objects 2.8 Library, pero supongo que con otra versión anterior funcionará, pero no lo he probado, y como esa referencia está disponible después de instalar el SQL Server 2005 Express, pues... ¿para qué complicarnos?
Dependiendo de la forma en que quieras acceder a la base de datos, necesitarás (como es de suponer) una base de datos de SQL Server 2005, por ejemplo la base de datos "pubs".
Si lo que pretendes es acceder a un fichero con la extensión .mdf, pues tendrás que tener el fichero al que quieres acceder. Es decir una base de datos de SQL Server 2005 en un fichero físico, el cual puedes guardar en el mismo directorio del ejecutable o donde más te plazca, que esa es una de las ventajas de SQL Server 2005: el poder usar un fichero de base de datos directamente, con lo que no necesitas distribuir una base de tipo Access.

El código de ejemplo
En el código de ejemplo, te voy a mostrar las dos formas de acceder.
1.- Acceder a una base de una instancia
En el caso de la base de datos "pubs", la cadena de conexión será la siguiente:
Provider=SQLNCLI;
Initial Catalog=pubs;
Data Source=(local)\SQLEXPRESS;
integrated security=SSPI; persist security info=True;
En este caso, la base de datos se supone que está en la instancia SQLEXPRESS del servidor del equipo actual, si no es así, tendrás que cambiar el valor de Data Source.
La base de datos es pubs, si no fuera esa, cambia el nombre asignado a Initial Catalog.
La autenticación usada es la de Windows, si no fuera esa, tendrás que indicar el usuario y el password y cambiar adecuadamente el valor de Integrated Security, aquí tienes un ejemplo de cómo "formar" una cadena de conexión a una base de datos de SQL Server.
Suponiendo que la conexión a la base de datos la hacemos desde el evento Click de un botón y que la cadena de selección esSELECT * FROM authors, para mostrar los datos en el control FlexGrid (llamado MSHFlexGrid1), el código sería el siguiente:
Private Sub btnConectar_Click()
    ' La conexión a la base de datos
    Dim cn As ADODB.Connection
    Set cn = New ADODB.Connection
   
    ' Para la cadena de selección
    Dim sSelect As String
   
    ' Para una base de datos normal:
    sSelect = "SELECT * FROM authors"

    cn.Open "Provider=SQLNCLI; " & _
             "Initial Catalog=pubs; " & _
             "Data Source=(local)\SQLEXPRESS; " & _
             "integrated security=SSPI; persist security info=True;"
   
    ' El recordset para acceder a los datos
    Dim rs As ADODB.Recordset
    Set rs = New ADODB.Recordset

    ' Abrir el recordset de forma estática, no vamos a cambiar datos
    rs.Open sSelect, cn, adOpenStatic

    ' Permitir redimensionar las columnas
    MSHFlexGrid1.AllowUserResizing = flexResizeColumns

    ' Asignar el recordset al FlexGrid
    Set MSHFlexGrid1.DataSource = rs
   
    rs.Close
    cn.Close

End Sub

2- Acceder a una base de un fichero
Para acceder a una base de datos que está en un fichero, necesitarás indicar la ruta (path) en la que está ese fichero con la extensión .mdf. En este ejemplo, esa ruta está en la variable sBase.
La cadena de conexión sería la siguiente:
Provider=SQLNCLI;
AttachDBFileName= ruta completa del fichero de la base de datos;
Data Source=(local)\SQLEXPRESS;
integrated security=SSPI; persist security info=True;
Como es de suponer, el nombre (y el directorio completo) de la base de datos es lo que tienes que asignar aAttachDBFileName. Además debes indicar en Data Source el nombre de la instancia de SQLEXPRESS que se usará para acceder a esa base de datos, al menos debes indicar una instancia válida.
En el siguiente código tienes cómo usar una base de datos llamada PruebaPrecios.mdf que está en un directorio llamadobases del disco E. Esa base de datos debe tener una tabla llamada Clientes que es la que se usa en el siguiente ejemplo, que como en el código del ejemplo anterior, se ejecuta desde el evento Click de un botón y asigna los datos al FlexGrid que tenemos en el formulario.
Private Sub btnConectar_Click()
    ' La conexión a la base de datos
    Dim cn As ADODB.Connection
    Set cn = New ADODB.Connection
   
    ' Para la cadena de selección
    Dim sSelect As String
   
    ' Para usar un fichero directamente:
    Dim sBase As String

    ' Poner aquí el path y el nombre de la base
    sBase = "E:\bases\PruebaPrecios.mdf"

    ' Y la cadena de selección adecuada
    sSelect = "SELECT * FROM Clientes"
    '
    cn.Open "Provider=SQLNCLI; " & _
             "AttachDBFileName=" & sBase & "; " & _
             "Data Source=(local)\SQLEXPRESS; " & _
             "integrated security=SSPI; persist security info=True;"
   
    ' El recordset para acceder a los datos
    Dim rs As ADODB.Recordset
    Set rs = New ADODB.Recordset

    ' Abrir el recordset de forma estática, no vamos a cambiar datos
    rs.Open sSelect, cn, adOpenStatic
   
    ' Permitir redimensionar las columnas
    Me.MSHFlexGrid1.AllowUserResizing = flexResizeColumns

    ' Asignar el recordset al FlexGrid
    Set Me.MSHFlexGrid1.DataSource = rs
   
    rs.Close
    cn.Close

End Sub
DAO CON VISUAL BASIC 6.0
2.- Ordenes SQL para cambiar los datos de una tabla.
UPDATE tabla
SET nombre_campo = 'nuevo_valor'
WHERE opciones_a_tener_en_cuenta
Ejemplo: Actualizar la tabla Clientes poniendo el campo Agente a LIBRE si la fecha de ÚltimaVisita es anterior al 1 de Enero de 1996 (este es un caso sobre una base de datos que uso en mi trabajo, pero como ejemplo puede valer):
UPDATE Clientes SET Agente = 'LIBRE' WHERE [ÚltimaVisita] < DateValue('01/01/96')
Normalmente el campo de fechas será según tengáis configurado el sistema.


 3.- Caracteres no "standard" en los nombres de los campos
Si al crear las tablas de la base de datos usas caracteres acentuados, eñes, espacios, etc. Cuando hagas una consulta o lo uses en un Recordset, etc, ponlos entre corchetes, fijates en cómo se usa ÚltimaVisita en el ejemplo anterior.


4.- Procesar una consulta SQL (Execute)
Para ejecutar una orden SQL en una base de datos, usar la orden Execute en la variable de una base de datos (Database)
'SQLTmp= orden SQL
'Db será una base de datos:
'Dim Db As Database  'Variable para las Bases de Datos
'Set Db = OpenDatabase("Nombre_Base_Datos")
 
On Error Resume Next
Db.Execute SQLTmp, dbFailOnError
If Err Then
             MsgBox "Se ha producido un error al ejecutar la orden:" & vbCrLf & SQLTmp
End If


5.- Procesar una consulta SQL creando un Recordset
Se creará un Recordset con el resultado de una consulta SQL realizada a uan base de datos, posteriormente se procesarán los datos que ha producido dicha consulta.
Por ejemplo si tenemos una base de datos con nuestra colección discográfica, podríamos hacer una consulta con todos los CD's de Phil Collins
Suponiendo que el formato de los discos (CD, LP, etc.) es Formato y el Nombre del Autor está en Cantante, la orden a ejecutar sería:
SQLTmp = "SELECT * FROM mis_discos WHERE Formato Like '*CD*' AND Cantante Like '*Phil Collins*'"
Por supuesto se puede usar = en lugar de Like, si estamos seguros de que no necesitamos los comodines, ya que la consulta es "bastante" más rápida. Es decir quedaría así:
SQLTmp = "SELECT * FROM mis_discos WHERE Formato = 'CD' AND Cantante = 'Phil Collins'"
'Ejecutar orden SQL con los datos solicitados
 
'Db será una base de datos:
'Dim Db As Database  'Variable para las Bases de Datos
'Set Db = OpenDatabase("Nombre_Base_Datos")
 
Dim SQLTmp As String
Dim MySnap As Recordset
 
SQLTmp = "select * from " & Nombre_Tabla & " <Consulta> " & " order by " & Clasificar
Set MySnap = Db.OpenRecordset(SQLTmp, dbOpenSnapshot)
Err = 0
MySnap.MoveFirst
If Err Then
             Err = 0
             'no hay datos, avisar
             MsgBox "No hay datos que coincidan con la búsqueda especificada," & vbCrLf & "(o no está bien realizada)", 64, "Listados"
             Exit Sub
End If
 
'Añadir el resultado a un List
List1.Clear
 
MySnap.MoveFirst
Do Until MySnap.EOF
             'Procesar los datos...
             '
             List1.AddItem MySnap("Cantante") & " " & MySnap("[Canción]") '...y demás datos
 
        MySnap.MoveNext
Loop
MySnap.Close


6.- Evitar el error al asignar un campo Null de una base de datos.
Además de evitar el error, es más rápido que usar If...Then... para comprobar si el campo es nulo o está vacío.
Para cadenas:
Cadena = "" & rs!Campo

Para números:
'Numero = 0 & rs!Campo
Numero = CInt("0" & rs!Campo)


7.- Comprobar si un registro se está editando.
Esto puede ser útil si el programa tiene que acceder a una base de datos en red o bien si accedes en el mismo equipo a una base de datos.
Lo que hay que hacer es usar EditMode y comprobar si se está editando.
Veamos un ejemplo:
With Data1.Recordset
    'Escribe el código para buscar el registro a editar, etc.
    '...
    Do While .EditMode = dbEditInProgress
             DoEvents
    Loop
    'Cuando llegue aquí, es que ya está libre...
    .Edit
    '...hacer los cambios al registro...
    .Update
End With
Los valores que devuelve EditMode, pueden ser:
dbEditNone          Si no se está editando.
dbEditInProgress    Se está editando actualmente.
dbEditAdd           Se ha añadido un registro con AddNew
                    y el registro actual todavía está en el buffer.


8.- Seleccionar los registros que queremos en un Recordset
Para asignar a un Data (Recordset) los datos que quieras de una tabla, usa la propiedad Recordsource.
Data1.RecordSource = "SELECT * FROM Tabla WHERE (condiciones de selección) ORDER BY campo, [campo2]"
Data1.Refresh
El Refresh que no se te olvide, si no quieres que produzca error.
Condiciones de selección, serán las comparaciones (consulta) que quieres incluir para la selección.
Por ejemplo, si quieres incluir todos los clientes de Málaga que tengan coche, clasificados por la población:
Data1.RecordSource = "SELECT * FROM Clientes WHERE Provincia = 'Málaga' AND Coche = 'Si' ORDER BY [Población]"
Fijate que Población está entre corchetes, esto es necesario, porque la ó (o acentuada) es un caracter "extraño" y se debe poner entre corchetes para que el Jet lo entienda. Lo mismo hay que hacer si el nombre del campo incluye espacios.
Otra cosa a tener en cuenta es que si usas =, el contenido del campo "debe coincidir exactamente", si en Provincia tienes algo como: Málaga (Andalucía), no lo "encontrará". Para que lo incluya también, cambia el signo igual por LIKE:
Data1.RecordSource = "SELECT * FROM Clientes WHERE Provincia LIKE '*Málaga*' AND Coche = 'Si' ORDER BY [Población]"
Más cosas, en la parte ORDER BY, se pueden incluir más de un campo, separados por comas.
El asterisco (*) que hay después de SELECT, es para que incluya todos los campos de la tabla.
Si sólo quieres incluir algunos campos, especificalos en lugar del asterisco y separalos con comas:
Data1.RecordSource = "SELECT Nombre,Apellidos, [Población], Provincia, Coche FROM Clientes WHERE Provincia LIKE 'Málaga' AND Coche = 'Si' ORDER BY [Población]"


CONSULTAS EN SQL
El lenguaje de consulta estructurado o SQL (por sus siglas en inglés structured query language) es un lenguaje declarativo de acceso a bases de datos relacionales que permite especificar diversos tipos de operaciones en estas. Una de sus características es el manejo del álgebra y el cálculo relacional permitiendo efectuar consultas con el fin de recuperar -de una forma sencilla- información de interés de una base de datos, así como también hacer cambios sobre ella.

Consultas SQL
Una consulta SQL es una consulta creada con una instrucción SQL (cadena o instrucción de SQL: expresión que define un comando de SQL, como SELECT, UPDATE o DELETE, e incluye cláusulas como WHERE y ORDER BY. Las instrucciones o cadenas de SQL se utilizan en consultas y en funciones de agregado.). Puede utilizar el Lenguaje de consulta estructurado (SQL o Structured Query Language) para consultar, actualizar y administrar bases de datos relacionales, como Access.
Cuando se crea una consulta en la vista Diseño (vista Diseño: ventana que muestra el diseño de estos objetos de base de datos: tablas, consultas, formularios, informes, macros y páginas de acceso a datos. En la vista Diseño, puede crear objetos de base de datos nuevos y modificar el diseño de otros existentes.) de la consulta, Access construye en segundo plano las instrucciones SQL equivalentes.
De hecho, la mayoría de las propiedades de consulta de la hoja de propiedades de la vista Diseño de la consulta tienen cláusulas y opciones equivalentes a las que están disponibles en la vista SQL (vista SQL: ventana que muestra la instrucción SQL para la consulta activa o que se utiliza para crear una consulta específica de SQL (unión, paso a través o definición de datos). Cuando se crea una consulta en la vista Diseño, Access construye el SQL equivalente en la vista SQL.). Si lo desea, puede ver o editar la instrucción SQL en la vista SQL. Sin embargo, después de hacer cambios en una consulta en la vista SQL, puede que su aspecto no sea el que tenía en la vista Diseño.
Algunas consultas SQL, denominadas consultas específicas de SQL (consulta específica de SQL: consulta que consta de una instrucción SQL. Las subconsultas y consultas de paso a través, unión y definición de datos son consultas específicas de SQL.), no se pueden crear en la cuadrícula de diseño (cuadrícula de diseño: cuadrícula utilizada para diseñar una consulta o un filtro en la vista Diseño de consulta o en la ventana Filtro u orden avanzado. Para las consultas, esta cuadrícula se conocía antes como la cuadrícula QBE.). En el caso de las consultas de paso a través (consulta de paso a través: una consulta específica de SQL que se utiliza para enviar comandos directamente a un servidor de base de datos ODBC.
Las consultas de paso a través permiten trabajar directamente con las tablas del servidor en lugar de hacer que el motor de base de datos Microsoft Jet procese los datos.), consultas de definición de datos (consulta de definición de datos: consulta específica de SQL que contiene instrucciones DDL (lenguaje de definición de datos). Estas instrucciones permiten crear o alterar objetos de la base de datos.) y consultas de unión (consulta de unión: consulta que utiliza el operador UNION para combinar los resultados de dos o más consultas de selección.), debe crear las instrucciones SQL directamente en la vista SQL. En el caso de las subconsultas (subconsulta: instrucción SQL SELECT que está dentro de otra consulta de selección o de acción.), la instrucción SQL se escribe en la fila Campo o en la fila Criterios de la cuadrícula de diseño de la consulta.

Consultas
Creando una consulta
Para buscar y recuperar tan sólo los datos que cumplen las condiciones especificadas, incluyendo datos de varias tablas, cree una consulta. Una consulta puede también actualizar o eliminar varios registros al mismo tiempo, y realizar cálculos predefinidos o personalizados en los datos.
  Esta consulta tiene acceso a tablas distintas para recuperar la información de Id. de pedido, fecha de entrega, nombre de la organización y ciudad para los clientes de Londres cuyos pedidos se entregaron en el mes de abril.











miércoles, 31 de agosto de 2011

VISUAL BASIC


VISUAL BASIC

INTRODUCCIÓN

Visual Basic 6.0 es uno de los lenguajes de programación que más entusiasmo despiertan entre los programadores de PCs, tanto expertos como novatos. En el caso de los programadores expertos por la facilidad con la que desarrollan aplicaciones complejas en poquísimo tiempo (comparado con lo que cuesta programar en Visual C++, por ejemplo). En el caso de los programadores novatos por el hecho de ver de lo que son capaces a los pocos minutos de empezar su aprendizaje. El precio que hay que pagar por utilizar Visual Basic 6.0 es una menor velocidad o eficiencia en las aplicaciones. Visual Basic 6.0 es un lenguaje de programación visual, también llamado lenguaje de 4ª gene- ración

PROGRAMAS SECUENCIALES, INTERACTIVOS Y ORIENTADOS A EVENTOS

En los primeros tiempos de los ordenadores los programas eran de tipo secuencial (también llamados tipo batch) Un programa secuencial es un programa que se arranca, lee los datos que necesita, realiza los cálculos e imprime o guarda en el disco los resultados. De ordinario, mientras un programa secuencial está ejecutándose no necesita ninguna intervención del usuario. A este tipo de programas se les llama también programas basados u orientados a procedimientos o a algoritmos (procedural languages).

Los programas interactivos exigen la intervención del usuario en tiempo de ejecución, bien para suministrar datos, bien para indicar al programa lo que debe hacer por medio de menús. Los programas interactivos limitan y orientan la acción del usuario. Un ejemplo de programa interactivo podría ser Matlab

PROGRAMAS PARA EL ENTORNO WINDOWS Visual Basic 6.0

Está orientado a la realización de programas para Windows, pudiendo incorporar todos los elementos de este entorno informático: ventanas, botones, cajas de diálogo y de texto, bo- tones de opción y de selección, barras de desplazamiento, gráficos, menús, etc. Prácticamente todos los elementos de interacción con el usuario de los que dispone Windows 95/98/NT/XP pueden ser programados en Visual Basic 6.0 de un modo muy sencillo. En ocasiones bastan unas pocas operaciones con el ratón y la introducción a través del teclado de algunas senten- cias para disponer de aplicaciones con todas las características de Windows 95/98/NT/XP. En los siguientes apartados se introducirán algunos conceptos de este tipo de programación

Modo de Diseño y Modo de Ejecución

La aplicación Visual Basic de Microsoft puede trabajar de dos modos distintos: en modo de diseño y en modo de ejecución. En modo de diseño el usuario construye interactivamente la aplicación, colocando controles en el formulario, definiendo sus propiedades, y desarrollando funciones para gestionar los eventos.

Formularios y Controles

Cada uno de los elementos gráficos que pueden formar parte de una aplicación típica de Windows 95/98/NT/XP es un tipo de control: los botones, las cajas de diálogo y de texto, las cajas de selec- ción desplegables, los botones de opción y de selección, las barras de desplazamiento horizontales y verticales, los gráficos, los menús, y muchos otros tipos de elementos son controles para Visual Ba- sic 6.0. Cada control debe tener un nombre a través del cual se puede hacer referencia a él en el programa. Visual Basic 6.0 proporciona nombres por defecto que el usuario puede modificar. En el Apartado Nombres de objetos se exponen algunas reglas para dar nombres a los distintos controles. En la terminología de Visual Basic 6.0 se llama formulario (form) a una ventana

Objetos y Propiedades

Los formularios y los distintos tipos de controles son entidades genéricas de las que puede haber varios ejemplares concretos en cada programa. En programación orientada a objetos (más bien ba- sada en objetos, habría que decir) se llama clase a estas entidades genéricas, mientras que se llama objeto a cada ejemplar de una clase determinada. Por ejemplo, en un programa puede haber varios botones, cada uno de los cuales es un objeto del tipo de control command button, que sería la clase.

Nombres de objetos

En principio cada objeto de Visual Basic 6.0 debe tener un nombre, por medio del cual se hace refe- rencia a dicho objeto. El nombre puede ser el que el usuario desee, e incluso Visual Basic 6.0 pro- porciona nombres por defecto para los diversos controles. Estos nombres por defecto hacen refe- rencia al tipo de control y van seguidos de un número que se incrementa a medida que se van intro- duciendo más controles de ese tipo en el formulario (por ejemplo VScroll1, para una barra de des- plazamiento -scroll bar- vertical, HScroll1, para una barra horizontal, etc.). Los nombres por defecto no son adecuados porque hacen referencia al tipo de control, pero no al uso que de dicho control está haciendo el programador. Por ejemplo, si se utiliza una barra de desplazamiento para introducir una temperatura, conviene que su nombre haga referencia a la pala- bra temperatura, y así cuando haya que utilizar ese nombre se sabrá exactamente a qué control co- rresponde. Un nombre adecuado sería por ejemplo hsbTemp, donde las tres primeras letras indican que se trata de una horizontal scroll bar, y las restantes (empezando por una mayúscula) que servirá para definir una temperatura.

Eventos

Ya se ha dicho que las acciones del usuario sobre el programa se llaman eventos. Son eventos típi- cos el clicar sobre un botón, el hacer doble clic sobre el nombre de un fichero para abrirlo, el arras- trar un icono, el pulsar una tecla o combinación de teclas, el elegir una opción de un menú, el escri- bir en una caja de texto, o simplemente mover el ratón. Más adelante se verán los distintos tipos de eventos reconocidos por Windows 95/98/NT/XP y por Visual Basic 6.0. Cada vez que se produce un evento sobre un determinado tipo de control, Visual Basic 6.0 arranca una determinada función o procedimiento que realiza la acción programada por el usuario para ese evento concreto. Estos procedimientos se llaman con un nombre que se forma a partir del nombre del objeto y el nombre del evento, separados por el carácter (_), como por ejemplo txtBox_click, que es el nombre del procedimiento que se ocupará de responder al evento click en el objeto txtBox.

Métodos

Los métodos son funciones que también son llamadas desde programa, pero a diferencia de los pro- cedimientos no son programadas por el usuario, sino que vienen ya pre-programadas con el lengua- je. Los métodos realizan tareas típicas, previsibles y comunes para todas las aplicaciones. De ahí que vengan con el lenguaje y que se libere al usuario de la tarea de programarlos. Cada tipo de obje- to o de control tiene sus propios métodos. Por ejemplo, los controles gráficos tienen un método llamado Line que se encarga de dibujar líneas rectas. De la misma forma existe un método llamado Circle que dibuja circunferencias y ar- cos de circunferencia Es obvio que el dibujar líneas rectas o circunferencias es una tarea común para todos los programadores y que Visual Basic 6.0 da ya resuelta.
Proyectos y ficheros Cada aplicación que se empieza a desarrollar en Visual Basic 6.0 es un nuevo proyecto. Un proyec- to comprende otras componentes más sencillas, como por ejemplo los formularios (que son las ven- tanas de la interface de usuario de la nueva aplicación) y los módulos (que son conjuntos de funcio- nes y procedimientos sin interface gráfica de usuario).

jueves, 25 de agosto de 2011

SISTEMAS DE GESTORES DE BASE DE DATOS


SISTEMAS DE GESTORES DE BASE DE DATOS

SISTEMAS DE ARCHIVOS
Un sistema de archivos es un conjunto de programas que prestan servicio a los usuarios finales, donde cada programa define y maneja sus propios datos. Los sistemas de archivos surgen de la necesidad de reemplazar el manejo de los archivos manuales para obtener acceso a los datos con mayor rapidez.
Los sistemas de archivos presentan algunos inconvenientes que se atribuyen a que la definición de los datos se encuentra codificada dentro de los programas de aplicación, y no siendo almacenada de forma independiente a las aplicaciones.

BASE DE DATOS
Una base de datos es un conjunto de datos almacenados entre los que existen relaciones lógicas y ha sido diseñada para satisfacer los requerimientos de información de una organización, almacenando en ella su descripción. 
En las bases de datos se almacenan grandes cantidades de datos, que son definidos una sola vez y que pueden ser acezados por varios usuarios a la vez, teniendo todos los datos integrados y creando una dependencia de datos a la organización y no a los departamentos o núcleos de la misma, eliminando la redundancia de datos y estableciendo una mínima duplicidad de los datos.

SISTEMA DE GESTIÓN DE BASE DE DATOS (SGBD)

Los sistemas de Gestión de Bases de Datos, son aplicaciones que permiten a los usuarios definir, crear y mantener la base de datos y proporciona un acceso controlado a la misma.
Algunos de los SGBD más conocidos son: SQL, DB2, SLQ/DS, ORACLE, INGRES, INFORMIX, SYBASE, PARADOX, DBASE, ACCESS, FOXPRO, R, RM/T y RM/V2.


OBJETIVOS DE UN SGBD 

Definir la Base de Datos mediante el Lenguaje de Definición de Datos, el cual permite especificar la estructura, tipo de datos y las restricciones sobre los datos, almacenándolo todo en la base de datos.
Gestionar la estructura física de los datos y su almacenamiento, proporcionando eficiencia en las operaciones de la base de datos y el acceso al medio de almacenamiento.
Eliminar la redundancia de datos, establecer una mínima duplicidad en los datos y minimizar el espacio en disco utilizado.
Proveer interfaces procedimentales y no procedimentales, permitiendo la manipulación por usuarios interactivos y programadores.
Independizar la descripción lógica de la Base de datos y las descripciones particulares de los diferentes puntos de vistas de los usuarios.

ACTORES EN EL ENTORNO DE UNA BASE DE DATOS

Administrador de la base de datos: se encarga del diseño físico de la base de datos y de su implementación, realiza el control de la seguridad y de la concurrencia, mantiene el sistema para que siempre se encuentre operativo y se encarga de que los usuarios y las aplicaciones obtengan buenas prestaciones.
El diseñador de la base de datos debe tener un profundo conocimiento de los datos de la empresa y también debe conocer sus reglas de negocio. Las reglas de negocio describen las características principales de los datos tal y como las ve la empresa.

VENTAJAS DE LOS SGBD
INTEGRACIÓN DE LOS DATOS


Control sobre la redundancia de datos: Los sistemas de archivos almacenan varias copias de los mismos datos en archivos distintos. Sin embargo, en una base de datos no se puede eliminar la redundancia completamente, ya que en ocasiones es necesaria para modelar las relaciones entre los datos, o bien es necesaria para mejorar las prestaciones.

EXISTENCIA DE LOS SGBD 

Mejora en la integridad de datos: La integridad de la base de datos se refiere a la validez y la consistencia de los datos almacenados. Estas restricciones se pueden aplicar tanto a los datos, como a sus relaciones, y es el SGBD quien se debe encargar de mantenerlas.
Mejora en la seguridad: Los SGBD permiten mantener la seguridad mediante el establecimiento de claves para identificar al personal autorizado a utilizar la base de datos.
Mejora en la accesibilidad a los datos: Muchos SGBD proporcionan lenguajes de consultas o generadores de informes que permiten al usuario hacer cualquier tipo de consulta sobre los datos, sin que sea necesario que un programador escriba una aplicación que realice tal tarea.

INCONVENIENTES DE LOS SGBD
Complejidad: Los SGBD son conjuntos de programas muy complejos con una gran funcionalidad.
Tamaño: Los SGBD son programas complejos y muy extensos que requieren una gran cantidad de espacio en disco y de memoria para trabajar de forma eficiente.
Coste económico del SGBD: El coste de un SGBD varía dependiendo del entorno y de la funcionalidad que ofrece.
Costo del equipamiento adicional: Tanto el SGBD, como la propia base de datos, pueden hacer que sea necesario adquirir más espacio de almacenamiento.
ARQUITECTURA DE TRES NIVELES
Hay tres características importantes inherentes para el enfoque de las bases de datos; estas son: a) separación entre los programas y los datos (independencia entre los programas y datos); b) el manejo de múltiples vistas de usuario y c) el empleo de un catálogo para almacenar la descripción (esquema) de la base de datos.

Los tres niveles de la arquitectura son: Interno, Conceptual y Externo.

1. El nivel interno: tiene un esquema interno, el cual describe la estructura de almacenamiento físico de la Base de Datos. El esquema interno utiliza un modelo físico de data y describe los detalles completos de almacenamiento de data y el acceso a los caminos de la BD.
2. El nivel conceptual: tiene un esquema conceptual el cual describe la estructura de todas las Bases de Datos para una comunidad de usuarios. El esquema conceptual es una descripción global de la BD que oculta los detalles de las estructuras de almacenamiento físico y se concentra en describir las entidades, los tipos de data, las relaciones y constantes.
3. El nivel externo: o nivel de vista incluye un número de esquemas externos o vistas de usuario. Cada esquema externo describe la vista de la BD de un grupo o de los usuarios de la BD. Cada vista típicamente describe la parte de la BD en la cual un grupo de usuarios en particular esta interesado y oculta el resto de la BD para otros grupos de usuario.


En su mayoría, los DBMS no se distinguen del todo en tres niveles, pero en algunos de ellos se cuenta, en cierta medida, con la arquitectura de tres esquemas. Algunos DBMS incluyen ciertos detalles del nivel físico en el esquema conceptual.
En una arquitectura de tres esquemas cada grupo de usuarios hace referencia exclusivamente a su propio esquema externo, por tanto el DBMS debe de transformar una solicitud expresada en un esquema externo a el esquema conceptual, luego la solicitud ahora en esquema conceptual es llevada al esquema interno, es después procesada sobre la base de datos, por ejemplo si fuese un pedido de datos, será necesario modificar el formato de la información antes de ser enviada al usuario externo.

MÓDULOS DE LOS DBMS
 

Los DBMS son software tremendamente complicados; a continuación se muestran los componentes de software que constituyen un DBMS y el tipo de software del sistema que interactúan con los DBMS.

La BD y los catálogos del DBMS usualmente son almacenados en discos.
El acceso a disco es controlado principalmente por el sistema operativo el cual controla las I/O a los discos.
Un módulo de administración de datos almacenados de alto nivel (Storey data manager) del DBMS controla el acceso a la información del DBMS almacenada en disco, sí este es parte de la BD o del catálogo.

El compilador DDL (DDL compeler) procesa las definiciones de esquema especificadas en el DDL y almacena la descripción de los esquemas en el catálogo del DBMS; Este contiene información como los nombres de los archivos y de los elementos de información, los detalles de almacenamiento de cada archivo, la información de correspondencia entre los esquemas y las restricciones.
El procesador en tiempo real (réuntame procesos) de la BD maneja el acceso a la BD en tiempo real, este recibe las operaciones de obtención y actualización y las lleva a la BD para su ejecución.
El procesador de consultas (query prossesor) maneja las consultas de alto nivel que son ingresadas interactivamente, donde el usuario espera los resultados de la búsqueda en el momento.
El precompilador (precompiler) extrae los comandos del DML de un programa de aplicación escrito en un lenguaje de programación host.
Estos comandos son enviados al compilador DML para su compilación en código objeto para el acceso de la BD.
Esta figura se utiliza para mostrar las partes más representativas de los DBMS en cuanto a módulos se refiere. El DBMS también puede interactuar con los compiladores de los lenguajes de programación host, y puede ofrecer interfaces amigables para ayudar al usuario cuando especifiquen sus solicitudes.

DISEÑO DE UNA BASE DE DATOS

El diseño de una base de datos es un proceso complejo que abarca decisiones en distintos niveles. Así, el diseño de una base de datos se descompone en diseño conceptual, diseño lógico y diseño físico.

DISEÑO CONCEPTUAL
El diseño conceptual se refiere a la etapa donde se debe construir un esquema de la información a partir de los requerimientos y resultados de usuario, independientemente de cualquier consideración física, como aspectos de implementación, DBMS a utilizar, hardware disponible, entre otras.
Al construir el esquema, los diseñadores descubren la semántica de los datos, encontrando entidades, atributos y relaciones. El objetivo es comprender:

La perspectiva que cada usuario tiene de los datos.
La naturaleza de los datos, independientemente de su representación física.
El uso de los datos a través de las áreas de aplicación.
El esquema conceptual se puede utilizar para que el diseñador transmita lo que ha entendido sobre los requerimientos de usuario, de manera particular, la información que maneja y los resultados sobre la manipulación de ésta de una empresa.

DISEÑO LÓGICO
 

El diseño lógico es el proceso de construir un esquema de la información, basándose en un modelo de base de datos específico independiente del DBMS y de cualquier otra consideración física. Conforme se va desarrollando el esquema lógico, éste se va probando y validando con los requisitos de usuario. La normalización es una técnica que se utiliza para comprobar la validez de los esquemas lógicos basados en el modelo relacional, ya que asegura que las relaciones (tablas) obtenidas no tienen datos redundantes.

El esquema lógico es una fuente de información para el diseño físico. Además, juega un papel importante durante la etapa de mantenimiento del sistema, ya que permite que los futuros cambios que se realicen sobre los programas de aplicación o sobre los datos, se representen correctamente en la base de datos.

DISEÑO FÍSICO
 

El diseño físico es el proceso de producir la descripción de la implementación de la base de datos en memoria secundaria, donde las estructuras de almacenamiento y los métodos de acceso garanticen un acceso eficiente a los datos.
En general, el propósito del diseño físico es describir cómo se va a implementar físicamente el esquema lógico obtenido en la fase anterior. Por ejemplo, en el modelo relacional, esto consiste en:

Obtener un conjunto de relaciones (tablas) y las restricciones que se deben cumplir sobre ellas.
Determinar las estructuras de almacenamiento y los métodos de acceso que se van a utilizar para conseguir unas prestaciones óptimas.
Diseñar el modelo de seguridad del sistema.