Antiguamente las aplicaciones almacenaban la información en ficheros independientes, es decir, antes de que surgieran las bases de datos todo el tratamiento de la información se realizaba mediante ficheros. Los ficheros se diseñaban a medida para cada sistema de información, sin que existiera un formato común. Esta forma de organizar la información impedía que la información de una empresa se pudiese explotar correctamente a medio o largo plazo. Por ejemplo; el programa (software) utilizado por el departamento de recursos humanos debía gestionar un fichero con los datos de los empleados, mientras que el programa de contabilidad mantenía otro fichero distinto con los mismos datos de los empleados pero organizados de otra forma. Esta forma de gestionar los datos dio lugar a los siguientes inconvenientes:
Redundancia de datos ( existía duplicidad de la misma información ).
Mal aprovechamiento del espacio de almacenamiento.
Aumento en el tiempo de proceso de las aplicaciones.
Inconsistencia de la información debida a la redundancia de datos. Por ejemplo: si un dato cambiaba en el fichero de una aplicación, NO cambiaba en los demás ficheros.
Aislamiento de la información (imposibilidad de transferencia a otros programas a nos ser que se desarrollasen programas de migración de datos específicos ).
En definitiva vemos que existía una gran falta de flexibilidad originada en gran medida por la dependencia total de la estructura física de los datos.
Resulta interesante desde el punto de vista histórico realizar una breve descripción teórica sobre la organización de ficheros. Actualmente las aplicaciones de gestión de bases de datos se encargan de configurar una estructura óptima.
En relación con su contenidos, distinguimos los siguientes tipos básico de fichero:
Texto plano. Almacenan secuencias de caracteres correspondientes a una codificación determinada (ASCII, Unicode, EBCDIC, etc.). Son legibles mediante un software de edición. (.TXT, .CSV, .HTML).
Binarios. Contienen información codificada en binario para su procesamiento por parte de aplicaciones. Su contenido resulta ilegible en un editor de texto. (.EXE, .PDF, .GIF).
Cuando se utilizan ficheros de texto plano para almacenar información se pueden clasificar de acuerdo a su organización interna:
Secuenciales. La información se escribe en posiciones físicamente contiguas. Para acceder a un dato hay que recorrer todos los anteriores.
Si nos fijamos, el programador ha decidido utilizar la almohadilla (#) como separador de datos, el dólar($) como separador de contactos y el tanto por ciento (%) como marca de fin de fichero.
De acceso directo o aleatorio. Cada línea de contenido se organiza con unos tamaños fijos de dato. Se puede acceder directamente al principio de cada línea.
En esta ocasión, cada contacto ocupa una línea del fichero y cada dato utiliza un número de caracteres fijo aunque no lo ocupe totalmente, de esta forma, podemos acceder a cualquier fila de forma fácil multiplicando la posición en la que se encuentra el registro menos uno por el número de caracteres de un registro.
Indexados. consiste en la existencia de uno o varios archivos adjuntos que ordenan el dato (llamado clave) por el que se desea ordenar el fichero y lo relacionan con la localización de la línea correspondiente.
La evolución lógica de los problemas derivados del uso de ficheros fue estandarizar el acceso a la información mediante un diseño físico concreto que sirviera para cualquier aplicación. Este nuevo enfoque se centra en los datos, en lugar de en los procesos (ficheros).
Una base de datos es un conjunto de datos almacenados en un soporte informático de forma que puede accederse de forma eficiente por varias aplicaciones y usuarios simultáneamente. Los datos deben de estar interrelacionados y estructurados de acuerdo a un modelo definido.
Si nos centramos en sus ventajas e inconvenientes, tenemos:
Ventajas
Se elimina la redundancia y la inconsistencia de datos.
Facilita el acceso a los datos de forma independiente de la aplicación.
Garantiza la seguridad y la privacidad. Es el propio sistema quien pone medios para garantizar cierta seguridad y privacidad.
Permite el acceso concurrente a la información.
Inconvenientes
Instalación más costosa.
Necesitan personal especializado.
La implantación es larga y difícil.
No suelen ser rentables a corto plazo.
Existen distintos modelos de bases de datos:
Jerárquico
En red
Relacional
Orientado a objetos
Objeto-relacional
NoSql
Cada uno de ellos tienen sus ventajas e inconvenientes, en nuestro caso trabajaremos el modelo relacional que es el más usado de todos ellos.
Entre los distintos niveles de abstracción de la base de datos destacamos:
Nivel lógico (Externo): cada usuario posee información de aquella parte de la BD que le afecta o corresponde. Cada usuario o grupo de usuarios tiene una lista de la parte que le corresponde.
Nivel conceptual: es la totalidad de la información de la BD. Es el diseño abstracto de la BD.
Nivel físico: es el nivel más cercano al hardware (se encuentra ligado a él). A nivel físico se describe cómo se encuentran los datos almacenados físicamente
Es un conjunto de programas, procedimientos y lenguajes que proporcionan los medios necesarios para describir, recuperar y manipular los datos almacenados en la BD, manteniendo la integridad, confidencialidad y seguridad.
Generalizando, podemos encontrar la siguiente enumeración de componentes en la mayoría de los SGBD:
Datos. Almacenados de forma eficiente en ficheros del sistema operativo.
Herramientas de acceso a los datos. Un lenguaje de programación mediante el que usuarios técnicos puedan crear, leer y modificar la información.
Utilidades. Herramientas adicionales para gestión (usuarios, grupos y permisos, etc).
Entornos gráficos. Simplifican la gestión del SGBD y sirven como alternativa a la línea de comandos.
Generalizando, podemos encontrar la siguiente enumeración de componentes en la mayoría de los SGBD:
Recuperar y modificar la información de los ficheros que conforman la base de datos de forma transparente para el usuario.
Garantizar la integridad de los datos, impidiendo inconsistencias semánticas.
Ofrecer un lenguaje de programación mediante el que interaccionar con la inforrr1ación.
Proveer el diccionario de datos.
Solucionar los conflictos derivados de accesos concurrentes a la información.
Gestionar transacciones, garantizando la unidad de varias instrucciones de escritura relacionadas entre sí.
Incluir utilidades de backup.
Proporcionar mecanismos de seguridad para evitar accesos y operaciones indebidos.
Cualquier desarrollo de un sistema de información parte de un proceso de análisis estructurado cuyo objetivo es identificar de forma precisa, exhaustiva y verificable las necesidades del sistema.
La modelización de datos es una actividad que se realiza a lo largo del proceso de desarrollo del sistema de información en varias fases:
Al principio del proceso de análisis se crea el modelo conceptual de datos.
Dicho modelo se describe en términos gráficos mediante el diagrama entidad/relación, conformando un modelo lógico de datos.
Durante el proceso de diseño del software el diagrama entidad/relación se refina, convirtiéndose en un modelo físico de datos.
Finalmente, dicho modelo físico se implanta en el SGBD elegido, adaptándose a la sintaxis y características de rendimiento de este.
Se trata de una técnica cuyo objetivo es la representación y definición de todos los datos que se introducen, almacenan, transforman y producen dentro de un sistema de información, sin tener en cuenta las necesidades de la tecnología existente, ni otras restricciones.
Una entidad es cualquier objeto real o abstracto que tiene existencia por sí mismo y se puede identificar de una forma clara y precisa, y del cual se desea registrar información en el sistema.
La representación gráfica de una entidad consiste en un rectángulo con el nombre de la entidad en su interior, generalmente en mayúsculas. Los atributos asociados a una entidad se pueden representar de dos formas: mediante óvalos que incluyen el nombre del atributo o mediante círculos con el nombre del atributo en el exterior:
Una relación es una asociación o vínculo entre ocurrencias de varias entidades. Se nombran con expresiones verbales y se representan con un rombo.
Las relaciones pueden ser de distinto tipo:
Binarias: entre dos entidades
Terciarias: entre tres entidades.
N-arias: entre N entidades.
Reflexivas: se relaciona con ocurrencias de la misma tabla.
Indica el número máximo de ocurrencias de una entidad con las que se puede relacionar una ocurrencia de otra entidad.
1:N (uno a ene/uno a muchos). Una ocurrencia de una entidad puede relacionarse con varias de otra entidad, pero cada ocurrencia de la segunda entidad solo puede relacionarse con una única ocurrencia de la primera entidad.
N:M (ene a eme/muchos a muchos). Cada ocurrencia de una entidad puede relacionarse con varias de otra entidad, y cada ocurrencia de la segunda entidad también puede relacionarse con varias de la primera.
1: 1 (uno a uno). Una ocurrencia de una entidad se relaciona con otra ocurrencia de otra entidad y viceversa.
La modalidad (a veces llamada cardinalidad, con la consiguiente confusión) define el número mínimo y máximo de ocurrencias de una entidad que pueden estar relacionadas con una ocurrencia de otra u otras entidades, identificando relaciones optativas (en las que no tiene por qué haber correspondencia). La modalidad se indica a ambos lados de la relación, y su valor máximo coincide con el valor de la cardinalidad correspondiente al lado de la relación en el que nos encontremos. Puede ser de los siguientes tipos:
0:1 (cero a uno): Cada ocurrencia de la primera entidad puede relacionarse con una ocurrencia de la segunda entidad o no. No puede relacionarse con varias.
1:1 (uno a uno): Cada ocurrencia de la primera entidad debe relacionarse obligatoriamente con una y solo una ocurrencia de la segunda entidad.
1:N (uno a ene/uno a muchos): Cada ocurrencia de la primera entidad debe relacionarse obligatoriamente con al menos una ocurrencia de la segunda entidad. Puede relacionarse con varias.
0:N (cero a ene/cero a muchos). Cada ocurrencia de la primera entidad no tiene limitada su relación con ocurrencias de la segunda entidad. Puede relacionarse con una, varias o ninguna.
Veamos algunos ejemplos:
En algunas ocasiones, ciertas propiedades o características susceptibles de constituir un atributo afectan a más de una entidad y son más propios de la relación.
En toda entidad debe existir al menos un atributo o conjunto de atributos cuyos valores identifican deforma unívoca a cada una de las ocurrencias.
ACTIVIDAD 1
Diseña el modelo entidad/relación de una base de datos para una pequeña empresa que debe contener información acerca de clientes, artículos y pedidos. Hasta el momento se registran los siguientes datos en documentos:
Para cada cliente:
Nombre.
Apellido 1.
Apellido 2.
Dni.
Dirección de envío.
Para cada artículo:
Nombre
Precio
Para cada pedido, que puede constar de:
Varios artículos
Se indica la cantidad de cada uno de los artículos
Fecha en la que se realiza el pedido
Las direcciones de envío se entenderán como:
Número
Calle
Ciudad
Se basa en la utilización de tablas. Cada una de estas tablas tiene definidos una serie de columnas que se las llama Campos o Atributos y a las filas se las llama Tuplas. A través de estas columnas se relacionan unas tablas con otras.
La transformación de componentes del diagrama entidad-relación en elementos del modelo físico de datos sigue las siguientes reglas:
Toda entidad se convierte en una tabla. Las tablas se representan como un rectángulo con el nombre de la tabla en la parte superior y la lista de campos en la inferior. Los campos que conforman la clave primaria irán subrayados.
Todo atributo pasa a ser un campo. Los atributos marcados como parte de la clave primaria se convierten en campos de la clave primaria de la nueva tabla.
Las relaciones presentan una casuística basada en su cardinalidad. Uno de los objetivos fundamentales a la hora de diseñar una base de datos es evitar la proliferación de valores nulos.
Relaciones M:N, ternarias y n-arias. Se convierten en tabla. Su clave primaria será la concatenación de las claves primarias de las entidades que relacionan.
Relaciones 1 :N. Se presentan tres posibilidades básicas:
Si la relación tiene algún atributo, se convierte en tabla:
Si la modalidad mínima en el lado de cardinalidad 1 es 1 y no hay atributos, la relación desaparece. Los atributos que conforman la clave primaria de la entidad de modalidad máxima 1 se propagarán a la entidad de modalidad máxima N:
Debemos referirnos aquí a un nuevo concepto. Cuando el ca1npo o campos que conforman la clave primaria en una tabla aparecen en otra tabla distinta, se dice que conforman una clave ajena o foránea (foreign key). En el ejemplo nEditorialID es clave primaria en TEditorial y clave ajena en TLibro.
Relaciones 1 :1. Sucede igual que con las relaciónes 1:N. Pero en esta ocasión queda a elección del diseñador hacia que lado se propaga la clave primaria.
Una vez que hemos aprendido como debemos pasar del mundo real al mundo del diseño de una base de datos, el siguiente paso será comenzar a construir "físicamente" nuestra base de datos. Para ello, será necesario adentrarnos en el maravilloso mundo del lenguaje SQL.
Para cualquier consulta sobre el uso de SQL, utilizaremos la siguiente WEB como documentación de referencia:
¿Qué es?, Para qué sirve, Elementos del lenguaje, Normas de escritura.
Características de SQL
Declarativo --> Un lenguaje es declarativo cuando con ellos no indicamos cómo hacer las cosas, es decir, lo único que indicamos con las instrucciones que programamos es qué cosas queremos hacer pero NO como hacerlas.
Código más corto y más optimizado.
Métodos únicos para programar.
Fácil de optimizar.
Normalizado.
Potente y versátil.
Lenguaje natural.
Capacidad de SQL
Definición de la estructura de la base de datos --> Nos permite crear y modificar la estructura de la BBDD.
Consultar, organizar y reorganizar los datos --> Podremos consultar actualizar y reorganizar los datos de la BBDD.
Especificación de conexiones seguras --> Somos capaces de controlar el acceso a los datos por parte de los usuarios.
El lenguaje SQL esta compuesto por comandos, clausulas, operadores, funciones y literales. Todo un conjunto de elementos que nos permitirán realizar una multitud de operaciones sobre nuestros datos. Los distintos comandos del lenguaje se clasifican de la siguiente forma:
Lenguaje de Definición de Datos (DDL): Esta parte del lenguaje se utiliza para crear y definir nuevas bases de datos, tablas, campos, etc...
Lenguaje de Manipulación de Datos (DML): Esta parte del lenguaje nos permite generar consultas para ordenar, filtrar y extraer datos de la base de datos. También nos permite insertar y eliminar datos de la base de datos.
Control y seguridad de Datos (DCL): Con esta parte del lenguaje podremos administrar los permisos de acceso de los distintos usuarios de nuestra base de datos.
Cadenas de caracteres
CHAR (CHARACTER). Cadena de caracteres de longitud fija.
VARCHAR (CHARACTER VARYING). Cadena de caracteres con longitud variable.
CLOB (CHARACTER LARGE OBJECT). Cadena de caracteres de gran tamaño almacenada en un fichero distinto al de la tabla correspondiente.
Números
INT (INTEGER). N{1mero entero al1nacenado en 4 bytes (rango de valores entre -2.147 .483.648 y 2.147 .483.647).
SMALLINT. Número entero almacenado en 2 bytes (rango de valores entre -32.768 y 32.767).
NUMERIC o DEC (DECIMAL). Número con parte decimal de tan1año fijo. Se debe especificar el número de dígitos totales y el de dígitos decimales, de modo que un campo Salario se definiría co1no NUMERIC(8, 2) -seis dígitos enteros y dos decimales-.
Fechas, horas e intervalos
DATE. Fecha expresada en la secuencia año-1nes-día (''yyyy-MM-dd'').
TIME. Hora expresada en la secuencia hora-minuto-segundo (''hh:mm:ss'').
TIMESTAMP. Almacena la fecha y hora de inserción o modificación del registro, en formato año-mes-día-hora-minuto-segundo (''yyyy-MM-dd hh:mm:ss'').
Valores lógicos
BOOLEAN. Incluye los valores ''true'' (verdadero) y ''false'' (falso), y puede almacenar el valor NULL en algunas implementaciones.
Podemos decir que las clausulas son palabras especiales del lenguaje SQL que nos permiten modificar el comportamiento de un determinado comando. Entre las más importantes, destacamos las siguientes:
Por otro lado, los operadores nos van a permitir aplicar condiciones cuando queramos analizar nuestros datos. Entre los más importantes destacamos los siguientes:
Las funciones nos van a permitir calcular valores agregados partiendo de la selección de datos realizada. Entre las funciones más importantes destacamos las siguientes:
Una restricción es una condición que una o varias columnas de una tabla debe cumplir obligatoriamente. Entre los distintos tipos de restricciones destacamos las siguientes:
Primary Key: Todas las tablas deben tener una restricción de este tipo y solo una. Esta clave podrá ser referenciada como una clave ajena y aplicarán las restricciones NOT NULL y UNIQUE al campo o campos de la tabla que formen la clave primaria.
Foreing Key: Son campos que se relacionan con las claves primarias de otras tablas. Por tanto, cuando se guarda el valor, este debe existir en la tabla de origen.
Not Null: Obliga a que el dato de la columna que tenga esta restricción nunca sea NULL.
Unique: Impide que existan valores duplicados en la columna.
Default: Nos permite insertar un valor por defecto en el campo de la tabla que implemente esta restricción. Este valor se define en la misma restricción.
NOTA IMPORTANTE: El orden en el que ejecutamos los comandos (o instrucciones) es muy importante ya que necesitaremos crear algunos elementos para poder crear los siguientes.
Describe cada uno de los sistemas de información y sus relaciones entre ellos. Esta descripción se hace por medio de una ficha técnica que incluye las tecnologías y productos sobre los cuales está construido el sistema, su arquitectura de software, su modelo de datos, la información de desarrollo y de soporte, y los requerimientos de servicios tecnológicos, entre otros.
La arquitectura cliente-servidor es un modelo de diseño de software en el que las tareas se reparten entre los proveedores de recursos o servicios, llamados servidores, y los demandantes, llamados clientes. Un cliente realiza peticiones a otro programa, el servidor, quien le da respuesta.
Cliente: se trata de una aplicación informática o un ordenador que consume un servicio remoto en otro ordenador conocido como servidor, normalmente a través de una red de telecomunicaciones.
Servidor web: Almacena documentos HTML, imágenes, archivos de texto, escrituras, y demás material Web compuesto por datos (conocidos colectivamente como contenido), y distribuye este contenido a clientes que la piden en la red.
Servidor de aplicaciones: Usualmente se trata de un dispositivo de software que proporciona servicios de aplicación a las computadoras cliente. Un servidor de aplicaciones generalmente gestiona la mayor parte (o la totalidad) de las funciones de lógica de negociación y de acceso a los datos de las aplicaciones.
Servidor de base de datos: provee servicios de base de datos a otros programas u otras computadoras.
Cliente
Inicia las solicitudes o peticiones, por tanto tiene un papel activo en la comunicación (dispositivo maestro o amo).
Espera y recibe las respuestas del servidor.
Puede conectarse a varios servidores a la vez.
Normalmente interactúa directamente con los usuarios finales mediante una interfaz gráfica de usuario.
Servidor
Al iniciarse espera a que lleguen las solicitudes de los clientes, desempeña entonces un papel pasivo en la comunicación (dispositivo esclavo).
Tras la recepción de una solicitud, la procesa y luego envía la respuesta al cliente.
Acepta las conexiones de un gran número de clientes (en ciertos casos el número máximo de peticiones puede estar limitado).
Arquitectura Cliente-Servidor
El Cliente y el Servidor pueden actuar como una sola entidad y también pueden actuar como entidades separadas, realizando actividades o tareas independientes.
Las funciones de Cliente y Servidor pueden estar en plataformas separadas, o en la misma plataforma.
Su representación típica es un centro de trabajo (PC), en donde el usuario dispone de sus propias aplicaciones de oficina y sus propias bases de datos, sin dependencia directa del sistema central de información de la organización.
Un servidor de base de datos, también conocido como database server o RDBMS (Relational DataBase Management Systems) en caso de bases de datos relacionales, es un tipo de software de servidor que permiten la organización de la información mediante el uso de tablas, índices y registros.
A nivel de hardware, un servidor de base de datos es un equipo informático especializado en servir consultas a clientes remotos o locales que solicitan información o realizan modificaciones a los registros y tablas que existen dentro de las bases de datos del sistema (en muchos casos desde un servidor web o de aplicaciones).
Un servidor de base de datos es un servicio que provee de información a otras aplicaciones web o equipos/hosts. Mediante el uso de un cliente de base de datos, se puede acceder a la información que se guarda en las diferentes bases de datos.
XAMPP es un servidor web local multiplataforma que permite la creación y prueba de páginas web u otros elementos de programación. En nuestro caso lo utilizaremos ya que nos proporciona un servidor de bases de datos en el cual podremos crear nuestras propias bases de datos que posteriormente explotaremos.
Para instalar