Вы находитесь на странице: 1из 11

MODELAJE DE BASE DE DATOS

Un modelaje de base de datos o esquema de base de datos es la estructura o el formato de


una base de datos, descrita en un lenguaje formal soportada por el sistema de gestión de
bases de datos. En otras palabras, un "modelo de base de datos" es la aplicación de un modelo
de datos usado en conjunción con un sistema de gestión de bases de datos.
Los esquemas generalmente son almacenados en un diccionario de datos. Aunque un
esquema se defina en un lenguaje de base de datos de texto, el término a menudo es usado
para referirse a una representación gráfica de la estructura de la base de datos.

Un modelo de base de datos es una teoría o especificación que describe como una base de
datos es estructurada y usada. Varios modelos han sido sugeridos.
Modelos comunes:
- Modelo jerárquico
- Modelo de red
- Modelo relacional
- Modelo entidad-relación
- Modelo objeto-relacional
- Modelo de objeto

Un modelo de datos no es solamente un modo de estructurar datos, sino que también define el
conjunto de las operaciones que pueden ser realizadas sobre los datos. El modelo relacional,
por ejemplo, define operaciones como selección, proyección y unión. Aunque estas
operaciones pueden no ser explícitas en un lenguaje de consultas particular, proveen las bases
sobre las que éstos son construidos.

MODELOS

Varias técnicas son usadas para modelar la estructura de datos. La mayor parte de sistemas de
base de datos son construidos entorno a un modelo de datos particular, aunque sea cada vez
más común para productos ofrecer el apoyo a más de un modelo. Ya que cualquier varia
puesta en práctica lógica modela física puede ser posible, y la mayor parte de productos
ofrecerán al usuario algún nivel de control en la sintonía de la puesta en práctica física, desde
las opciones que son hechas tienen un efecto significativo sobre el funcionamiento. Un ejemplo
de esto es el modelo emparentado: todas las puestas en práctica serias del modelo
emparentado permiten la creación de índices que proporcionan rápido acceso a filas en una
tabla si conocen los valores de ciertas columnas.
MODELO JERÁRQUICO

En un modelo jerárquico, los datos son organizados en una estructura parecida a un árbol,
implicando un eslabón solo ascendente en cada registro para describir anidar, y un campo de
clase para guardar los registros en un orden particular en cada lista de mismo-nivel. Las
estructuras jerárquicas fueron usadas extensamente en los primeros sistemas de gestión de
datos de unidad central, como el Sistema de Dirección de Información (IMS) por la IBM, y ahora
describen la estructura de documentos XML. Esta estructura permite un 1:N en una relación
entre dos tipos de datos. Esta estructura es muy eficiente para describir muchas relaciones en
el verdadero real; recetas, índice, ordenamiento de párrafos/versos, alguno anidó y clasificó la
información. Sin embargo, la estructura jerárquica es ineficaz para ciertas operaciones de base
de datos cuando un camino lleno (a diferencia del eslabón ascendente y el campo de clase)
también no es incluido para cada registro.
Una limitación del modelo jerárquico es su inhabilidad de representar manera eficiente la
redundancia en datos. Los modelos de base de datos " el valor de atributo de entidad " como
Caboodle por Swink están basados en esta estructura.
En la relación Padre-hijo: El hijo sólo puede tener un padre pero un padre puede tener múltiples
hijos. Los padres e hijos son atados juntos por eslabones "indicadores" llamados. Un padre
tendrá una lista de indicadores de cada uno de sus hijos.

MODELO DE RED

El modelo de red (definido por la especificación CODASYL) organiza datos que usan dos
fundamental construcciones, registros llamados y conjuntos. Los registros contienen campos
(que puede ser organizado jerárquicamente, como en el lenguaje COBOL de lenguaje de
programación). Los conjuntos (para no ser confundido con conjuntos matemáticos) definen de
uno a varios relaciones entre registros: un propietario, muchos miembros. Un registro puede ser
un propietario en cualquier número de conjuntos, y un miembro en cualquier número de
conjuntos.
El modelo de red es una variación sobre el modelo jerárquico, al grado que es construido sobre
el concepto de múltiples ramas (estructuras de nivel inferior) emanando de uno o varios nodos
(estructuras de nivel alto), mientras el modelo se diferencia del modelo jerárquico en esto las
ramas pueden estar unidas a múltiples nodos. El modelo de red es capaz de representar la
redundancia en datos de una manera más eficiente que en el modelo jerárquico.
Las operaciones del modelo de red son de navegación en el estilo: un programa mantiene una
posición corriente, y navega de un registro al otro por siguiente las relaciones en las cuales el
registro participa. Los registros también pueden ser localizados por suministrando valores
claves.
Aunque esto no sea un rasgo esencial del modelo, las bases de datos de red generalmente
ponen en práctica las relaciones de juego mediante indicadores que directamente dirigen la
ubicación de un registro sobre el disco. Esto da el funcionamiento de recuperación excelente, a
cargo de operaciones como la carga de base de datos y la reorganización.
La mayor parte de bases de datos de objeto usan el concepto de navegación para proporcionar
la navegación rápida a través de las redes de objetos, generalmente usando identificadores de
objeto como indicadores "inteligentes" de objetos relacionados. Objectivity /DB, por ejemplo, los
instrumentos llamados 1:1, 1: muchos, muchos:1 y muchos: muchos, llamados relaciones que
pueden cruzar bases de datos. Muchas bases de datos de objeto también apoyan SQL,
combinando las fuerzas de ambos modelos.
El modelo de red (definido por la especificación CODASYL) organiza datos que usan dos
fundamental construcciones, registros llamados y conjuntos. Los registros contienen campos
(que puede ser organizado jerárquicamente, como en el lenguaje COBOL de lenguaje de
programación). Los conjuntos (para no ser confundido con conjuntos matemáticos) definen de
uno a varios relaciones entre registros: un propietario, muchos miembros. Un registro puede ser
un propietario en cualquier número de conjuntos, y un miembro en cualquier número de
conjuntos. El modelo de red es una variación sobre el modelo jerárquico, al grado que es
construido sobre el concepto de múltiples ramas (estructuras de nivel inferior) emanando de
uno o varios nodos (estructuras de nivel alto), mientras el modelo se diferencia del modelo
jerárquico en esto las ramas pueden estar unidas a múltiples nodos. El modelo de red es capaz
de representar la redundancia en datos de una manera más eficiente que en el modelo
jerárquico. Las operaciones del modelo de red son de navegación en el estilo: un programa
mantiene una posición corriente, y navega de un registro al otro por siguiente las relaciones en
las cuales el registro participa. Los registros también pueden ser localizados por suministrando
valores claves. Aunque esto no sea un rasgo esencial del modelo, las bases de datos de red
generalmente ponen en práctica las relaciones de juego mediante indicadores que
directamente. Dirigen la ubicación de un registro sobre el disco. Esto da el funcionamiento de
recuperación excelente, a cargo de operaciones como la carga de base de datos y la
reorganización. La mayor parte de bases de datos de objeto usan el concepto de navegación
para proporcionar la navegación rápida a través de las redes de objetos, generalmente usando
identificadores de objeto como indicadores "inteligentes" de objetos relacionados.
Objectivity/DB, por ejemplo, los instrumentos llamados 1:1, 1:muchos, muchos:1 y muchos:
muchos, llamados relaciones que pueden cruzar bases de datos. Muchas bases de datos de
objeto también apoyan SQL, combinando las fuerzas de ambos modelos.

MODELO RELACIONAL

El modelo relacional para la gestión de una base de datos es un modelo de datos basado en
la lógica de predicados y en la teoría de conjuntos. Es el modelo más utilizado en la actualidad
para modelar problemas reales y administrar datos dinámicamente. Tras ser postuladas sus
bases en 1970 por Edgar Frank Codd, de los laboratorios IBM en San José (California), no
tardó en consolidarse como un nuevo paradigma en los modelos de base de datos.
Su idea fundamental es el uso de «relaciones». Estas relaciones podrían considerarse en
forma lógica como conjuntos de datos llamados «tuplas». Pese a que ésta es la teoría de las
bases de datos relacionales creadas por Edgar Frank Codd, la mayoría de las veces se
conceptualiza de una manera más fácil de imaginar, esto es, pensando en cada relación como
si fuese una tabla que está compuesta por registros (cada fila de la tabla sería un registro
o tupla), y columnas (también llamadas campos).

En este modelo todos los datos son almacenados en relaciones, y como cada relación es un
conjunto de datos, el orden en el que estos se almacenen no tiene relevancia (a diferencia de
otros modelos como el jerárquico y el de red). Esto tiene la considerable ventaja de que es más
fácil de entender y de utilizar por un usuario no experto. La información puede ser recuperada o
almacenada por medio de consultas que ofrecen una amplia flexibilidad y poder para
administrar la información.

Este modelo considera la base de datos como una colección de relaciones. De manera simple,
una relación representa una tabla que no es más que un conjunto de filas, cada fila es un
conjunto de campos y cada campo representa un valor que interpretado describe el mundo
real. Cada fila también se puede denominar tupla o registro y a cada columna también se le
puede llamar campo o atributo.

Para manipular la información utilizamos un lenguaje relacional, actualmente se cuenta con dos
lenguajes formales el Álgebra relacional y el Cálculo relacional. El Álgebra relacional permite
describir la forma de realizar una consulta, en cambio, el Cálculo relacional sólo indica lo que
se desea devolver.

MODELO ENTIDAD-RELACION

Un diagrama o modelo entidad-relación (a veces denominado por su siglas, E-R "Entity


relationship", o, "DER" Diagrama de Entidad Relación) es una herramienta para el modelado de
datos de un sistema de información. Estos modelos expresan entidades relevantes para un
sistema de información así como sus interrelaciones y propiedades.

El Modelo Entidad-Relación.

Se elabora el diagrama (o diagramas) entidad-relación.


Se completa el modelo con listas de atributos y una descripción de otras restricciones que no
se pueden reflejar en el diagrama.
Dado lo rudimentario de esta técnica se necesita cierto entrenamiento y experiencia para lograr
buenos modelos de datos.
El modelado de datos no acaba con el uso de esta técnica. Son necesarias otras técnicas para
lograr un modelo directamente implementable en una base de datos. Brevemente:
Transformación de relaciones múltiples en binarias.
Normalización de una base de datos de relaciones (algunas relaciones pueden transformarse
en atributos y viceversa).
Conversión en tablas (en caso de utilizar una base de datos relacional).

El modelo de datos entidad-relación está basado en una percepción del mundo real que consta
de una colección de objetos básicos, llamados entidades, y de relaciones entre esos objetos.

Entidad
Representa una “cosa” u "objeto" del mundo real con existencia independiente, es decir, se
diferencia unívocamente de cualquier otro objeto o cosa, incluso siendo del mismo tipo, o una
misma entidad.
Algunos Ejemplos:
Una persona. (Se diferencia de cualquier otra persona, incluso siendo gemelos).
Un automóvil. (Aunque sean de la misma marca, el mismo modelo,..., tendrán atributos
diferentes, por ejemplo, el número de bastidor).
Una casa (Aunque sea exactamente igual a otra, aún se diferenciará en su dirección).
Una entidad puede ser un objeto con existencia física como: una persona, un animal, una casa,
etc. (entidad concreta), o un objeto con existencia conceptual como: un puesto de trabajo, una
asignatura de clases, un nombre,etc. (entidad abstracta).
Una entidad está descrita y se representa por sus características o atributos. Por ejemplo, la
entidad Persona puede llevar consigo las características: Nombre, Apellido, Género, Estatura,
Peso, Fecha de nacimiento, etc...

Atributos
Los atributos son las propiedades que describen a cada entidad en un conjunto de entidades.
Un conjunto de entidades dentro de una entidad, tiene valores específicos asignados para cada
uno de sus atributos, de esta forma, es posible su identificación unívoca.
Ejemplos:
A la colección de entidades Alumnos, con el siguiente conjunto de atributos en común, (id,
nombre, edad, semestre), pertenecen las entidades:
(1, Sofia, 18 años, 2)
(2, Josefa, 19 años, 5)
(3, Gabriela, 20 años, 2)
...
Cada una de las entidades pertenecientes a este conjunto se diferencia de las demás por el
valor de sus atributos. Nótese que dos o más entidades diferentes pueden tener los mismos
valores para algunos de sus atributos, pero nunca para todos.
En particular, los atributos identificativos son aquellos que permiten diferenciar a una instancia
de la entidad de otra distinta. Por ejemplo, el atributo identificativos que distingue a un alumno
de otro es su número de id.
Para cada atributo, existe un dominio del mismo, este hace referencia al tipo de datos que será
almacenado o a restricciones en los valores que el atributo puede tomar (Cadenas de
caracteres, números, solo dos letras, solo números mayores que cero, solo números
enteros...).
Cuando una entidad no tiene un valor para un atributo dado, este toma el valor nulo, bien sea
que no se conoce, que no existe o que no se sabe nada al respecto del mismo.

Relación
Describe cierta dependencia entre entidades o permite la asociación de las mismas.
Ejemplo:

Dadas dos entidades "Habitación 502" y "Mark", es posible relacionar que la


habitación 502 se encuentra ocupada por el huésped de nombre Mark.

Una relación tiene sentido al expresar las entidades que relaciona. En el ejemplo anterior, Un
Huésped (entidad), se aloja (relación) en una habitación (entidad).

MODELO OBJETO

En años recientes, el paradigma mediante objetos ha sido aplicado a la tecnología de base de


datos, creando un nuevo modelo de programa sabido (conocido) como bases de datos de
objeto. Estas bases de datos intentan traer el mundo de base de datos y el uso que programa
el mundo más cerca juntos, en particular por asegurando que la base de datos usa el mismo
sistema de tipo que el programa de uso. Esto apunta para evitar el elevado (a veces
mencionaba el desajuste de impedancia) de convertir la información entre su representación en
la base de datos (por ejemplo como filas en mesas) y su representación en el programa de uso
(típicamente como objetos). Al mismo tiempo, las bases de datos de objeto intentan introducir
las ideas claves de programa de objeto, como encapsulación y polimorfismo, en el mundo de
bases de datos.
Una variedad de estas formas ha sido aspirada almacenando objetos en una base de datos.
Algunos productos se han acercado al problema del uso que programa el final, por haciendo los
objetos manipulados según el programa persistente. Esto también típicamente requiere la
adición de una especie de lengua de pregunta, ya que lenguajes de programación
convencionales no tienen la capacidad de encontrar objetos basados en su contenido de la
información. Los otros han atacado el problema a partir del final de base de datos, por
definiendo un modelo de datos mediante objetos para la base de datos, y definiendo un
lenguaje de programación de base de datos que permite a capacidades de programa llenas así
como instalaciones de pregunta tradicionales.
Las bases de datos de objeto han sufrido debido a la carencia de estandarización: aunque las
normas fueran definidas por ODMG, nunca fueron puestas en práctica lo bastante bien para
asegurar la interoperabilidad entre productos. Sin embargo, las bases de datos de objeto han
sido usadas satisfactoriamente en muchos usos: Usualmente aplicaciones especializadas como
bases de datos de ingeniería, base de datos biológica molecular, más bien que proceso de
datos establecido comercial. Sin embargo, las ideas de base de datos de objeto fueron
recogidas por los vendedores emparentados y extensiones influidas hechas a estos productos
y de verdad a la lengua SQL

SISTEMAS GESTORES DE BASES DE DATOS

Un Sistema Gestor de base de datos (SGBD) es un conjunto de programas que permiten crear
y mantener una Base de datos, asegurando su integridad, confidencialidad y seguridad. Por
tanto debe permitir:
- Definir una base de datos: especificar tipos, estructuras y restricciones de datos..
- Construir la base de datos: guardar los datos en algún medio controlado por el mismo SGBD
- Manipular la base de datos: realizar consultas, actualizarla, generar informes.
Así se trata de un software de propósito general. Ejemplo de SGBD son Oracle y SQL Server
de Microsoft.
Algunas de las características deseables en un Sistema Gestor de base de datos SGBD son:
- Control de la redundancia: La redundancia de datos tiene varios efectos negativos (duplicar el
trabajo al actualizar, desperdicia espacio en disco, puede provocar inconsistencia de datos)
aunque a veces es deseable por cuestiones de rendimiento.
- Restricción de los accesos no autorizados: cada usuario ha de tener unos permisos de acceso
y autorización.
- Cumplimiento de las restricciones de integridad: el SGBD ha de ofrecer recursos para definir y
garantizar el cumplimiento de las restricciones de integridad.

COMO MONTAR EL DRIVER EN JAVA PARA MY-SQL


Lo primero que necesitamos para conectarnos con una base de datos es
un Driver (o Connector) con ella. Ese Driver es la clase que, de alguna forma, sabe cómo
hablar con la base de datos. Desgraciadamente (y hasta cierto punto es lógico), java no viene
con todos los Drivers de todas las posibles bases de datos del mercado. Debemos ir a Internet
y obtener el Driver, normalmente en la página de nuestra base de datos.
Para el caso de MySQL, podemos descargarlo
de http://dev.mysql.com/downloads/connector/j/5.0.html.

Nos bajamos elmysql-connector-java-5.0.5.zip, lo desempaquetamos en algún sitio y nos


quedamos con el mysql-connector-java-5.0.5-bin.jar que viene dentro. En ese jar está la
clase Driver que nos interesa.

Tendremos que poner ese jar accesible en nuestro proyecto. Dependiendo de qué utilicemos
para programar en java hay muchas opciones.

Guardarlo en la carpeta <DIRECTORIO_DE_JAVA>/jre/lib/ext. Si has hecho una instalación por


defecto en Windows, estará en C:\Archivos de Programa\Java\jdk1.5.0_05\jre\lib\ext. Esta
es la carpeta en la que java nos deja poner jar adicionales para que se encuentren por defecto.
Es buena idea ponerlo aquí si vamos a hacer muchos programas con base de datos. Si solo
vamos a hacer uno, es mejor no ponerlo aquí. Si decidimos usar esta carpeta, también
debemos tener la precaución de ir retirando jars de versiones antiguas cuando pongamos las
nuevas, o tendremos problemas.

Ponerlo en la variable de entorno CLASSPATH, siempre que nuestro IDE (eclipse, netbeans,
etc) haga caso de esa variable. Si trabajas con una ventana de ms-dos (símbolo del sistema),
puedes poner esto

C:\> set CLASSPATH=<PATH_DEL_JAR>\mysql-connector-java-5.0.5-bin.jar

• .Añadirlo en nuestro IDE. En el ejemplo de eclipse, damos con el botón derecho del
ratón sobre el proyecto, para sacar el menú y elegimos "properties"->"java build
path"->"Libraries"->"Add external JARs..." y seleccionamos nuestro jar.

Conectarnos con la base de datos

Una vez que java tiene el jar accesible y sabe dónde encontrarlo, ya podemos empezar con el
código. Lo primero es conectarse con la base de datos

El código puede ser como este:

import java.sql.Connection;
import java.sql.DriverManager;
...
try
{
Class.forName("com.mysql.jdbc.Driver");
Connection conexion =
DriverManager.getConnection("jdbc:mysql://localhost/agenda", "root",
"LA_PASSWORD");
...

En primer lugar hemos hecho los import adecuados para poder obtener la conexión.
Luego hay que asegurarse de que se inicializa el Driver y se registra. Para ello hay dos
opciones. Hacer un new de él o bien instanciarlo con Class.forName("nombre de clase"), que
es como hacer el new, pero de una forma rara.
La ventaja de hacerlo con Class.forName() es que sólo necesitaremos el Driver de una base de
datos si lo usamos. Me explico. Imagina que haces un programa que permite permite
conectarse con varias bases de datos distintas: MySQL, PostGres, Oracle, etc. En algún sitio
damos a elegir al usuario qué tipo de base de datos tiene.
Si hacemos new de los Driver, tendremos que hacer unos if para en función de la elegida,
hacer new de uno o de otro. El problema es que en nuestro código estarán los import y los new
de todos los Driver de todas las bases de datos necesaras, los vayamos a usar o no. El
programa no compilará y no correrá si no tiene todos los Driver accesibles.

/* Todos estos import son necesarios para que compilen los news
correspondientes */
import driver_de_mysql;
import driver_de_postgres;
import driver_de_oracle;
...
if (ha_elegido_mysql)
new driver_de_mysql();
if (ha_elegido_postgres)
new driver_de_postgres();
if (ha_elegido_oracle)
new driver_de_oracle();

Sin embargo, con Class.forName() no necesitamos el import. Haremos los mismos if de antes,
pero usaremos simplemente String distintos para llamar a Class.forName(). No necesitamos los
import y no necesitamos los jar con los Driver, salvo el jar con el Driver que realmente elija el
usuario. Es cosa suya tener instalado SU driver de SU base de datos.

/* No hacen falta imports */


...
if (ha_elegido_mysql)
Class.forName("driver_de_mysql");
if (ha_elegido_postgres)
Class.forName("driver_de_postgres");
if (ha_elegido_oracle)
Class.forName("driver_de_oracle");

Una vez que nos hemos asegurado que java tiene el Driver cargado, simplemente pediremos
conexión con la base de datos a la clase DriverManager.

Connection conexion =
DriverManager.getConnection("jdbc:mysql://localhost/agenda", "root",
"LA_PASSWORD");
DriverManager tiene muchos métodos getConnection() con parámetros variados. Todos son
variantes de lo mismo y la información que suministramos es la misma. Aquí hemos utilizado
uno con tres parámetros String, que vamos a explicar.

url: Es una cadena que nos permite localizar la base de datos. Para mysql, el formato es
"jdbc:mysql://ordenador_donde_corre_la_base_de_datos/nombre_base_datos". Donde se
pone el nombre o IP del ordenador en el que se encuentra nuestro servidor de base de datos y
el nombre de la base de datos. En nuestro ejemplo, tenemos el servidor de base de datos
corriendo en el mismo ordenador que el programa java, por lo que ponemos localhost. La base
de datos la he llamado agenda. El comando SQL para crear la base de datos agenda sería
mysql> CREATE DATABASE agenda;
user: Un usuario válido para la base de datos.
password: La clave del usuario.

Si todo va bien, tendremos nuestra conexión a la base de datos. Si va mal, saltará una
excepción. Por eso es importante (y obligatorio para que compile) meter todo esto en un try-
catch.
Esta forma de obtener una conexión está bien para apliaciones sencillas, en el que únicamente
se establece una conexión con la base de datos, no hay muchos hilos trabajando, etc. Si
nuestra aplicación es algo más compleja/seria, en el que varios hilos pueden trabjar
simultáneamente, en vez de obtner las conexiones directamente con
DriverManager.getConnection(),

JDBC

Java Database Connectivity, más conocida por sus siglas JDBC, es una API que permite la
ejecución de operaciones sobre bases de datos desde el lenguaje de programación Java,
independientemente del sistema operativo donde se ejecute o de la base de datos a la cual se
accede, utilizando el dialecto SQL del modelo de base de datos que se utilice.
El API JDBC se presenta como una colección de interfaces Java y métodos de gestión de
manejadores de conexión hacia cada modelo específico de base de datos. Un manejador de
conexiones hacia un modelo de base de datos en particular es un conjunto de clases que
implementan las interfaces Java y que utilizan los métodos de registro para declarar los tipos
de localizadores a base de datos (URL) que pueden manejar. Para utilizar una base de datos
particular, el usuario ejecuta su programa junto con la biblioteca de conexión apropiada al
modelo de su base de datos, y accede a ella estableciendo una conexión, para ello provee el
localizador a la base de datos y los parámetros de conexión específicos. A partir de allí puede
realizar con cualquier tipo de tareas con la base de datos a las que tenga permiso: consulta,
actualización, creación, modificación y borrado de tablas, ejecución de procedimientos
almacenados en la base de datos, etc.

Вам также может понравиться