Fundamentos de Bases de Datos
Introducción
El mundo alrededor de nosotros está lleno de datos, nuestro cerebro se encuentra constantemente procesando estos datos aunque no nos demos cuenta de ello. Nuestros ojos capturan la luz de diferentes intencidades y colores y nuestro cerebro traduce esta información en imágenes que podamos identificar. Nuestros oídos capturan sonidos y el cerebro analiza su naturaleza y resalta cualquiera a la que debamos prestar atención. Todos nuestros sentidos están continuamente capturando información que llevan hacia el cerebro quien la analiza, filtra y resalta para que les prestemos atención o los descartemos como irrelevantes.
Por supuesto que alguna información también es almacenada para su posterior uso, es por ello que podemos llegar a recordar ciertos olores pero no recordemos el porque. ¿Por qué podemos recordar ciertas caras o alguna canción en particular?
Esto es posible debido a que nuestro cerebro es capaz no solo de manejar una cantidad inmensa de datos, si no que también puede procesarla de tal manera que puede descomponer objetos complejos en unidades indivisibles de información que podamos entender.
Sin embargo, también existe cierto tipo de información para la que nuestro cerebro no está bien diseñado para manejar en grandes cantidades, tales como los números o información de negocios.


Esto, debido a que está hecho para propósitos más específicos, como protegernos de depredadores, encontrar comida o perpetuar nuestro árbol genealógico, sin embargo para información del tipo de un número telefónico dentro de una lista de contactos, necesitamos del uso de tecnologías como lo son los Sistemas de Bases de Datos.
Definición de Base de Datos
Pese a que no existe una definición estandarizada, en términos generales, se puede decir que una Base de Datos es una colección de Datos Organizados, entendiéndose como datos a valores (en forma de texto o números), medidas, hechos u observaciones, que son colectados en un formato estructurado para su posterior procesamiento.
Las bases de datos existen en casi todos los sistemas de información del mundo, por ello, es importante que estén bien diseñadas desde el principio, para garantizar que los datos puedan ser almacenados y recuperados de la manera más eficiente posible y evitar complicaciones como inconsistencias o duplicidad de datos.


El almacenamiento también es fundamental para cada sistema, así mismo el tener la información bien organizada dentro de una base de datos, nos permite extraerla y combinarla con otros datos para producir nueva información que nos pueda ser de utilidad.
Por ejemplo, la lista de pedidos de un supermercado, se puede asociar con los datos demográficos de las personas que los realizan para entender las preferencias de compras de clientes con características similares y responder a preguntas como ¿Que tipo de productos veganos prefieren las mujeres de al rededor de 30 años?
Tipos de Bases de Datos
Existen diferentes tipos de bases de Datos, dependiendo de las necesidades:
Bases de Datos Relacionales.- Son bases de datos en donde se organiza la información en tablas, filas y columnas para establecer relaciones entre los datos.
Bases de Datos Jerárquicas.- Se trata de un sistema de gestión de base de datos que organiza la información en una estructura de árbol, similar a un organigrama.
Bases de Datos NoSQL.- Es un enfoque para el diseño de bases de datos que permite el almacenamiento y consulta de datos fuera de las estructuras tradicionales que se encuentran en las bases de datos relacionales.
Cada tipo de Base de Datos, está diseñada para ser utilizada en una amplia gama de escenarios.
Bases de Datos Relacionales
Para poder entender a fondo lo que son las Bases de Datos Relacionales, primero necesitamos conocer qué es SQL y como se relaciona con las bases de datos. SQL es la abreviatura de las siglas en inglés: “Structured Query Language” y se trata de un lenguaje que utilizan las bases de datos para consultar y extraer información.
Los datos o información, son el bien más preciado de toda empresa u organización y pueden ser colectados para su uso prácticamente desde cualquier parte. Por ejemplo, tu servicio de Streaming almacena información de tu cuenta de usuario, como tu nombre, correo electrónico, pagos etc. Tu banco almacena datos como tu nombre, dirección, teléfono, número de cuenta, etc.
Es por ello que la información es tan importante y de ahí la necesidad ser asegurada, pero también debe ser almacenada y accedida de manera rápida y ágil, aquí es donde entran en juego las Bases de Datos.
Cuando la información es almacenada en un formato tabular, es decir, que los datos se almacenan en tablas, como en una hoja de cálculo en donde hay columnas y registros, a esto se le llama Base de Datos Relacional, en donde las columnas son las propiedades de un objeto como lo pueden ser el nombre y apellidos, una tabla es la abstracción de dicho objeto, como lo puede ser el “usuario” y un conjunto de tablas es un grupo de objetos relacionados, como una lista de empleados o de películas, pues bien, en una base de datos relacional, nosotros podemos crear relaciones entre estas tablas.
Tomemos el ejemplo de un cine, en donde las entidades (objetos) son las Películas, las Salas y las Proyecciones; la representación de estos datos en forma de tabla podría ser como sigue:


Nótece que en la tabla de Películas existe un solo registro para cada una, así mismo, los detalles de cada película son almacenados solamente una vez. También en la tabla Salas, hay un solo registro para cada sala que hay en el cine.
En la tabla Proyecciones, hay un solo registro para cada película proyectada, los datos en la columna "IDPeli" son registrados por cada proyección, pero no se repite ninguno de los demás detalles sobre la película. De igual forma se registran los datos de la columna "IDSala", de manera que si es necesario cambiar los detalles de una película o de una sala, esto solo se realizará en un solo lugar (es decir en la tabla Películas o Salas).
Este enfoque implica que no hay redundancia de datos y por tanto, la probabilidad de que se produzcan errores que provoquen incoherencias en la información es menor, además es mucho más sencillo mantener los datos actualizados.
Cuando se desea ver un listado de todas las proyecciones de películas, se combinan los datos de las 3 tablas para mostrar la información completa:


Esta combinación es posible gracias al uso de herramientas de SQL que permiten extraer solamente la información que necesitamos de cada tabla y mostrarla como si fuera una sola.
Como se mencionó anteriormente, una Base de Datos es un Repositorio o Colección de Datos, por lo que, a un programa diseñado para el almacenamiento de Datos, también se le puede considerar dentro de este rubro. Los sistemas de Bases de Datos proveen funcionalidades para Añadir, Modificar y Consultar Información.
Al conjunto de herramientas de Software que sirven para manipular la información de una Base de Datos, se le conoce como Database Management System (DBMS por sus siglas en inglés). En el caso de las Bases de Datos Relacionales, también se les llama Relational Database Management System (RDBMS).
Los términos Base de Datos, Servidor de Base de Datos, Sistema de Base de Datos, Servidor de Datos y Sistema Manejador de Base de Datos, también son altamente utilizados.
Entre los comandos de SQL más utilizados por las personas que manejan Bases de Datos, encontramos los siguientes:
Create Table.- Para la creación de Tablas dentro de una Base de Datos
Insert In to.- Para insertar registros dentro de una Tabla
Select * From.- Para extraer información desde una Tabla
Update.- Para modificar la información existente en una Tabla
Delete.- Para eliminar registros en una Tabla
Modelos de Información y Modelos de Entidad Relación
Empecemos por entender lo que es un Modelo de Información, se trata de una Representación Formal Abstracta de Entidades, que incluyen sus propiedades, relaciones y las operaciones que se pueden realizar con ellos. Estas propiedades modeladas, pueden ser del mundo real como una biblioteca.
Un modelo de Información es a nivel conceptual y define, como ya se dijo, las relaciones entre los objetos, existen varios tipos de modelos de información, siendo el más popular el Modelo Jerárquico, típicamente utilizados para mostrar organigramas.
Tal como se muestra en la siguiente figura, el modelo jerárquico organiza su información utilizando una estructura de árbol, en donde la raíz es el Nodo Padre seguido de los Nodos Hijo. Un nodo hijo, no puede tener más de un nodo padre, pero un nodo padre si puede tener varios nodos hijo.
El Modelo Relacional, es el más utilizado en bases de datos debido a que este modelo permite la independencia de datos, mismos que se almacenan en estructuras tabulares. Esto provee de independencia lógica de datos, independencia física de datos e independencia física de almacenamiento.
Tomemos como ejemplo la base de datos de una biblioteca (una abstracción simplificada de lo que realmente es una biblioteca), en la siguiente figura se muestra un Diagrama de Entidad - Relación que representa las entidades (tablas) y como se relacionan entre ellas, en donde tenemos por un lado a los autores que escriben los libros, los prestatarios quienes pueden llevar libros en préstamo, varias copias de cada libro, etc.


El primer sistema de Administración de Bases de Datos Jerárquica, fue el liberado por IBM en 1968, construido originalmente como el sistema de base de datos para el programa espacial APOLLO de la NASA.
Dato Curioso


Sin embargo, para llegar a este nivel de abstracción, primero es necesario entender algunos puntos.
Un modelo de Entidad Relación propone imaginar una base de datos como una colección de entidades, más allá de ser utilizado como un modelo por sí mismo. Es por esta razón que el modelo es utilizado como herramienta para el diseño de Bases de Datos Relacionales, en donde las entidades son objetos que existen de manera independiente de cualquier otra entidad dentro de la base de datos, lo que hacer simple poder convertir un diagrama de Entidad Relación en una colección de tablas.
Los componentes básicos de un Diagrama de Entidad Relación son los atributos, cada entidad tiene sus propios atributos, los cuales son elementos de datos que caracterizan a dicha entidad, dicho de otra manera, los atributos son los que nos dicen los detalles y características de las entidades. Para representar un Diagrama de Entidad Relación, las entidades se colocan dentro de un rectángulo y los atributos dentro de óvalos, tal y como se muestra en la siguiente figura:


Las entidades, pueden ser un sustantivo (persona, lugar o cosa), continuando con nuestro ejemplo, el libro viene siendo la entidad, y sus atributos son ciertas propiedades o características del mismo, en este caso, serían su título, edición, año en que fue impreso, etc. De esta manera, la entidad libro se convierte en una tabla dentro de nuestra base de datos y los atributos, en las columnas de dicha tabla.


Siguiendo adelante, los libros son escritos por Autores, por lo que Autores sería otra entidad tal como se muestra en la figura.
Para la entidad Autores, los atributos serían sus Apellidos, Nombre, correo electrónico (email), ciudad, país, así como un identificador (un valor único para cada autor). Como ya se mencionó, la entidad se convierte en otra tabla de nuestra base de datos y sus atributos en las columnas de dicha tabla.
De igual manera, continuando con el ejemplo, podemos identificar otras entidades como la de los Prestatarios quienes toman copias de los libros en préstamo y así sucesivamente. De esta manera llegamos al diagrama de Entidad Relación que mostramos anteriormente.


Manejadores de Bases de Datos (DBMS)
Como ya se expuso anteriormente, un DBMS es una aplicación que les permite a los Especialistas en Bases de Datos manejar una o más Bases de Datos. Algunos ejemplos de Manejadores de Bases de Datos son los siguientes:
MySQL
Oracle Data base
DB2 Express C
MSSQL Server
La mayoría de los DBMS proveen una interfaz gráfica que nos permite visualizar de manera más intuitiva los elementos que forman nuestra Base de Datos, algunas de sus características incluyen los medios para realizar tareas como:
Modificar la estructura de la Base de Datos
Creación de índices
Optimización de la Base de Datos
Búsqueda de Datos
Además también te dará acceso a una ventana en donde podrás escribir y ejecutar sentencias de SQL.

