BASES DE DATOS: Introducción
Una muy breve introducción sobre lo que es una base de datos. Es éste un concepto conocido, pues es un término que habitualmente usamos de forma coloquial.
Base de datos
Una base de datos es una colección o conjunto de datos
que vamos a almacenar en un dispositivo de almacenamiento permanente (generalmente HD) ,
que tiene una determinada estructura u organización, la cual nos va a permitir operar de una forma organizada y rápida con esos datos
|
Sería inimaginable buscar un libro en una biblioteca si no hubiera una organización u orden para localizarlo o a la hora de añadir un libro nuevo (en una sección, en una estantería concreta y no en cualquiera.
Igualmente si voy a tener libros pequeños, los pondré en estanterías pequeñas, si voy a almacenar libros grandes necesitaré tener estanterías grandes.
Siguiendo esta lógica, las bases de datos han de estar preparadas para almacenar el tipo de información que nos pueda venir, para ello habrá que hacer un diseño correcto de las tablas y atributos para poder almacenar toda la información de nuestro sistema.
Esto implica tener que realizar un análisis detallado del sistema, buscando de alguna forma todos los posibles casos que se pueden producir para tener la base de datos preparada para que esa situación se pueda almacenar en forma de datos dentro de mi sistema
El diseño de la base de datos es un factor fundamental para el éxito de la aplicación
|
El diseño de la base de datos se debería de hacer solo una vez y modificarlo pocas veces durante su vida
|
Sistema de información
Qué es un sistema
Conjuntos de elementos realcionados que pretenden un determinado objetivo
|
Qué es un sistema de información
Es la parte lógica o de información de un determinado sistema.
Nos interesa especialemente por que va a ser la parte que vamos a estudiar para automatizar o informatizar
|
Parte dinámica/estática
Dentro de un sistema que vayamos a automatizar, tendremos elementos dinámicos que corresponden a las acciones o programación y una parte estática que corresponden a los datos que queremos almacenar en nuestro sistema
|
Ciclo en el desarrollo de una base de datos
Hay tres niveles como podemos ver en la imagenive
Niveles en el desarrollo de una base de datos
1.-Nivel conceptual
La concepción del sistema tal como se puede percibir por las personas
Lo que realmente ocurre en el funcionamiento cotidiano
2.-Nivel Lógico
Identificar esa parte del sistema que se va a poder automatizar
Concretar la manera como lo vamos a hacer
Especificar ya elementos lógicos para ser automatizados
3.-Nivel Físico
Usando una herramienta o tecnología concreta
Transformar los elementos lógicos a código entendible por el computador
|
Nivel Conceptual
- Corresponde a obtener las especificaciones del cliente
- En este nivel debemos establecer comunicación con el cliente y técnicos.
- Cliente
Grupo de personas que saben mucho de su negocio, pero seguramente poco de tecnologías de desarrollo
- Técnico
Persona/s que tienen (deben tener) un alto conocimiento de desarrollo técnico, pero seguramente saben poco del negocio que han de automatizar
- Objetivo
Qué el grupo técnico tenga un conocimiento detallado del negocio y puedan desarrollar una aplicación que satisfaga
las necesidades del cliente
Modelado conceptual
Modelado
Lo entederemos como un lenguaje
que nos va a permitir describir datos .
|
- Serán los datos que queremos almacener de un determinado universo del discurso.
- Usaremos el Modelo Entidad/Relación
- también conocido como modelo Entidad interrelacion o modelo de chen}}
El diagrama entidad-interrelación (DEI)
Este diaglama es un modelado que permite representar la estática del modelo de datos entidad-interrelación mediante un lenguaje gráfico de definición de estructuras.
|
Elementos o lexemas de este lenguaje
- entidades
- atributos
- interrelaciónes entre entidades.
|
Modelo Entidad/Relación
- Es un modelo que nos va a permitir mostrar la parte estática del sistema
- Solo va a mostrar los elementos o entidades y las relaciones que ocurren ente ellos
Entidades
- Las entidades son esos elementos de los cuales queremos guardar información
Entidad
El conjunto de elementos u objetos concretos o abstractos de los que se quiere almacenar información dentro de este sistema
|
- Representación gráfica
- Su representación es un rectángulo
- El nombre se especifica dentro del rectángulo
- Se suelen poner en singular
- Una entidad va a representar un conjunto de elementos, por ejemplo la entidad Alumno representará varios alumnas
- Tipos de entidades
Entidades débiles
- Son entidades que dependen de otra para que existan o incluso para poderse identificar
- Se representan con un doble cuadrado
|
{{MRM_Definicion|Title=Tipos de debilidades|
- Debilidad en existencia
- Para que exista un elemento de la entidad tiene que existir el elemento de la entidad con el que está relacionado
|
Debilidad en existencia
|
|
- Supongamos el siguiente ejemplo
En una empresa que tiene empleados se quiere saber los familiares
de los empleados para por ejemplo tener acceso a las instalaciones
o acceder a determinadas promociones
Si un empleado dejara de serlo, claramente los familiares de ese empleado
ya no serían datos que a la empresa le interesara conocer
Aquí vemos la debilidad en existencia
|
- Debilidad en identificación
- Son entidades que dependen de otra para que existan o incluso para poderse identificar
- Se representan con un doble cuadrado
|
Debilidad en identificación
|
|
- Es una debilidad más fuerte
- En ella para poder identificar un elemento de una entidad, necesitamos identificar previamente el elemento de la entidad con el que está relacionado
- Supongamos un ejemplo
En un hotel tenemos plantas (primero, segunda, ...)
cada planta tiene unas características y más atributos que nos interesa guardar
Las plantas tienen habitaciones que se identifican por
un número (de la 1 hasta el número de habitaciones que haya.
Está claro que para saber de qué habitación hablamos en un momento dado,
no podemos decir la habitacion 10, habrá que decir la habitación 10,
de la planta 2 o la que sea
Aquí vemos la debilidad en identificación ya que para identificar un elemento
de la entidad habitación, previamente necesitamos conocer el elemento de la entidad
Planta con el que está relacionado.
Por supuesto que también es una debilidad en existencia,
ya que si desapareciera una planta, desaparecerían también las habitaciones.
|
- Jerarquía entre entidades
- Como ya hemos estudiado en la herencia dentro de la programación orientada a objetos, puede ocurrir que una entidad se pueda especializar.
- Es decir que una entidad pueda ser de diferentes tipos, y ademas, cada uno de esos subtipos tengan atributos o relaciones de forma individual (no compartidos).
- En este caso podremos establecer una jerarquía
Jerarquia
- Es una estructura de datos en la cual tenemos entidades que se especializan en subtimos
- Cada subtipo a de tener atributos y/o relaciones de forma individual (Si no fuera así sería suficiente con tener un atributo llamado tipo)
|
Jerarquía con atributos individuales
|
|
Una editorial realiza publicaciones. Estas publicaciones pueden
ser libros en cuyo caso necesitamos conocer el autor principal
o también revistas, en cuyo caso necesitamos la tirada (número de ejmplares
de esa publicación)
|
|
Jerarquía con relaciones individuales
|
|
En el ejemplo anterior además una publicaciones tiene subscriptores
|
|
- Concepto de agregación
Atributos
Atributos
- Son las características que queremos guardar de las entidades
- Van a permitir diferenciar una elemento de otro dentro de la entidad
- Se pueden representar de diferentes maneras, usaremos un cículo
- Se une a la entidad con una línea
|
- Tipos de atributos
Atributo Clave
- Hemos dicho que una entidad representa un conjunto de elementos
- Por definición un conjunto está formado por 0 o más elementos los cuales han de ser necesariamente diferenciables
- Aplicado a nuestro caso, quiere decir que hemos de poder diferenciar dos elementos cualesqueira de nuestro conjunto.
- Esto se consigue teniendo uno o más atributos que constituyan la clave, es decir que sus valores no se pueden repetir.
|
Representacion
|
|
|
|
Atributo Compuesto
- Es un atributo que a su vez está formado por más atributos
|
Representacion
|
|
Se representa ligando con una flecha al atributo compuesto sus componentes
|
|
Atributo Multivaluado
- Ocurre cuando un atributo puede tomar varios valores.
(: No confundir con el hecho de que pueda tomar un valor
entre una lista de valores posibles)
|
Representación
|
|
- Se representa con un doble círculo
Un alumno puede hablar varios idiomas
Un alumno estudiante puede tener varios estudios
Un alumno estudiante puede tener varios estudios pero solo nos interesa el de mayor nivel entre (ESO, BASH, CICLO, CERTIFICADO, GRADO)
|
|
{{MRM_Definicion|Title=Atributo Derivado
- Es aquel atributo cuyo valor no necesitamos almacenarlo, ya que lo podemos calcular a partir de los valores de otro/s atributos y/o valores del sistema.
|
Representación
|
|
- Se representa con líneas discontinuas en el círculo
De un alumno se quiere saber su fecha de nacimiento y su edad
La edad la podremos calcular a partir de la fecha de nacimiento
y de la fecha actual que siempre podremos obtener del sistema
|
- Atributos de la relación
Atributo de la relación
- Hay muchas ocasiones en las cuales las propiedades o características se establecen entre dos entidades que se relacionan
- Pero en realidad no pertenecen en particular a ninguna de ellas, sino que son características que toman valor cuando se establece la relación entre dos elementos relacionados
- En este caso diremos que el atributo es de la relación.
|
Atributos de la relación
|
|
Un programador trabaja en un proyecto con un determinado cargo
el programador puede desempeñar diferentes cargos:
(analista, programador, diseñador de software, maquetador)
Este atributo toma valor cuando un programador trabaja en un proyecto
Lo hace con undeterminado cargo.
Plantilla:Nota;: Los atributos pueden ser también de la relación
|
|
Interrelaciones o vínculos
Relaciones
- Establecen las cardinalidades entre los elementos que se relacionan de entidades
Archivo:Cardinalidades 1.png
- Sólo nos interesan los valores mínimos ( 0 o 1) y los máximos ( 1 o n).
- Lo que hay que hacer es establecer las preguntas de formas correctas.
Plantilla:MRM Ejemplos
|
Representación
|
|
|
Cardinalidades de la relación
- Cogiendo los máximos de las cardinalidades de las entidades, colocamos los máximos en las relaciones
- Esta pareja de números se llama la cardinalidad de la relación
- Los valores pueden ser (1:1), (M:N) o (1:N)
|
- Lo anteriormente expuesto corresponden a las cardinalidades de la entidad
- En el caso anterior diremos que la cardinalidad de Cliente es (1,1) y la de factura es (0,N)
- El hecho de ponerlos en los extremos opuestos favorece la lectura
Un cliente tiene 0 o Muchas facturas
Una Factura pertenece a 1 y solo 1 Cliente
|
- Pueden ser débil si relacionan una entidad fuerte con una débil
- Cardinalidad
- Cardinalidad de la entidad
- Cardinalidad de la relación
- Relaciones
Nivel Lógico
- A este nivel vamos a usar el modelo relacional
- Es importante tener claro que lo que queremos realizar a este nivel es aplicar una serie de reglas para transformar el modelo entidad/interrelación o modelo de Chen en un modelo relacional
Paso del modelo E/R a modelo Relacional
|
- Vamos a usar una serie de términos quizá nuevos, pero por todas conocidos
- Vemos la relación de ellos
|
- En este nivel hay que estudiar una serie de conceptos sencillos, que convienen dejar claros
Elementos del nivel lógico
- Dominio y atributo
- Relación y tupla
- Restricciones
|
Conceptos del nivel lógico: Elementos del modelo
Dominio
Un dominio es el conjuntos de valores
que puede tomar un determinado atributo (campo).
de un elemento concreto (tupla o fila) del objeto (relación o tabla).
- Podemos ver un dominio como un tipo de datos con restricciones.
características de los valores de un dominio
- homogéneos
- Son volares todos del mismo tipo
- atómicos
- Son indivisibles
- Si dividiéramos el valor, perdería su significado
|
Dice que el valor que ha de tomar cada atributo (campo)
dentro de una tupla (fila) ha de ser atómico y pertenecer al dominio
|
Atributo
Un atributo son cada una de las características
o propiedades de los elementos de información (tablas)
Se define como el papel que desempeña un determinado
dominio en una relación (tabla)
- Podemos ver un dominio como un tipo de datos con restricciones.
|
Tupla
- Es cada una de las filas que vamos a tener en la tabla
- Se define como (no hace falta aprenderlo)
Un conjunto de pares de la forma
T ={(A1,D1),(A2,D2),....,(An,Dn)}
donde
{A1,,A2,....,An} (n>0) es el conjunto de nombres de atributos del esquema necesariamente distintos.
{D1,,D2,....,Dn} son los dominios asociados a dichos atributos
que no tienen que ser necesariamente distintos.
|
Relación
- Una relación es la tabla que se va a formar
- Es el conjunto de tuplas que constituyen el contenido de la información del mundo real
- Una definición más formal
Una relación es un conjunto de tuplas del mismo esquema ,
y un esquema de relación es el esquema de las tuplas que lo
forman. Notación :
R (A1:D1, A2:D2, ....., An:Dn)
define una relación de esquema {(A1,D1),(A2,D2),....,(An,Dn)}.
A partir de esta definición, diremos que dos
relaciones R y S son compatibles si sus esquemas son idénticos.
|
Restricciones
Una restricción es una limitación que se va asociar
a los posibles valores que se pueden dar en un momento dado
- De dominio
- De clave
- De valor no nulo
- De integridad de entidades
- De integridad referencial
|
|
Dice que el valor que ha de tomar cada atributo (campo)
dentro de una tupla (fila) ha de ser atómico y pertenecer al dominio
|
Restricción de valores no nulos
- En un momento dado, el valor de un atributo puede ser no conocido o que no se aplique.
- Dado ese caso se han de permitir valores nulos además de los valores del dominio.
- Dos valores nulos nunca se consideran iguales. (Se consideran difrentes entre si).
|
- Una relación se define como un conjunto de tuplas.
- Por definición, todos los elementos de un conjunto son distintos;
- En consecuencia, todas las tuplas de una relación deben ser distintas.
- Esto implica que no puede haber dos tuplas que tengan los mismos valores para todos sus atributos.
Para cumplir esta restricción va a haber un conjunto de atributos (1 o más)
cuyos valores nunca se pueden repetir
para dadas dos tuplas cualesquiera de la relación
- Clave candidata
Cada conjunto de atributos que satisfacen esta restricción se llaman clave candidata
- Clave principal
Siempre hemos de elegir una de las claves candidatos como clave principal
- Claves alternativas
Serán el resto de claves
|
- Valor único
Los valores de la clave nunca se pueden repetir
Esto se aplica al conjunto de atributos que forman la clave
- Valor no nulo (También llamada restricción de integridad de entidades)
Los valores de las claves nunca pueden ser nulo.
Esto se aplica para cada atributo que forme parte de alguna clave candidata
|
|
- Restricción de Integridad Referencial
Conocimiento previo
- Para explicar este concepto hay que tener claros los siguientes conceptos:
- Propagación de clave
- Clave extranjera o foránea
- Integridad referencial
- Cuando creemos el modelo relacional solo vamos a tener relaciones (tablas) y atributos (campos)
- La forma de mantener la relación entre dos tablas o entidades va a ser propagando la clave
- Propagar la clave consiste en llevar la clave principal de una entidad a otra.
|
Clave extranjera o foránea
- El atributo propagado en la relación o tabla no es una caracterísca del objeto o relación.
- Se conoce como elemento externo o extragero
- Como hace referencia a una clave principal se conoce como clave extragera o foránea
|
- Integridad hace referencia a que algo sea bueno válido (integro)
- Referencia es que está señalando o haciendo alusión a otro elemento
La integridad referencial es que los valores de las claves extranjeras o foráneas
Han de ser valores que existan en la tabla donde el atributo referenciado es clave principal
o bien ser nulos si se permite que no haya referencia (el mínimo de las cardinalidades).
|
|
Paso del modelo Entidad/Interrelación al modelo Relacional
Modelo Relacional
- Es la representación gráfica de la futura base de datos
- En este modelo solo vamos a tener dos elementos
Relaciones o tablas
Atributos o campos
- Ademas vamos a incorporar una serie de las restricciones vistas anteriormente
- Lo que nos queda ahora es determinar qué hacemos con cada elementos del modelo entidad/interrelacion (entidades, atributos y interrelaciones) en el modelo relacional.
- Podemos volver a ver la imagen del principio del tema:
|
Entidades
Transformación de entidades no débiles
Cada entidad del modelo E-R genera una tabla.
|
Atributos
- Cada atributo pasa a ser un campo en el modelo relacional.
- Si el atributo es clave en la tabla será clave también
- Si no lo es lo especificaremos tal cual
|
Los atributos multivaluados generarán una nueva tabla o relación.
- El la tabla propagamos la clave principal
- de la entidad donde el atributo está multivaluado.
- Este atributo será clave extranjera
- La clave principal será el conjunto de los dos atributos
|
En principio los atributos derivados no se ponen
De ellos se debe de realizar un estudio y determinar qué hacer
¿Almaceno los atributos derivados?
- Almacenarlos implica dedicar espacio de almacenamiento
y ahorrar tiempo en calcular su valor
- No almacenarlo es lo complementario
|
|
- En este caso tenemos dos opciones
- Almacenar como campos de la tabla los componentes del atributo compuesto
- Crear una tabla donde propaguemos la clave principal que pasará a ser a la vez clave principal y foránea
Genero tabla por los atributos compuestos
- Analiza el tema de valores nulos
- Normalmetne son atributos semánticamente relacionados
¿Habrá muchas tuplas que no tengan valor en esos atributos
- Si es si, hay un problema de nulos, mejor generar una tabla
- Si es no, sin duda es mejor agregarlo en la tabla acutal
|
- El siguiente ejemplo muestra las dos opciones
|
Interrelaciones
- A continuación vamos a estudiar las relaciones
Interrelaciones o vínculos
- Estas pueden tener diferente cardinalidad (Luego analizaremos las ternarias):
- 1:N
- 1:1
- M:N
- Es importante recordar el concepto de propagar la clave
consiste en llevar la clave de una tabla (clave principal
a otra tabla donde se convierte en clave extranjera o foránea
queda establecida una restricción de integridad referencial
entre ambas tablas
|
- En este caso se produce la propagación de clave
- Siempre propagaremos de la entidad de cardinalidad N a la entidad de cardinalidad 1
- Pero si lo vemos en el sentido de la Interrelación el sentido es 1-N
- Si hubiera atributos en la interrelación irán la la tabla a la que se propaga
Realiza el siguiente ejercicio
Dado el siguiente esquema E/R,
obtén el modelo de tablas corresondiente
|
|
- En este caso se generamos una nueva relación o tabla
- La nueva tabla recibe propagada las claves de las entidades relacionadas
- Si la interrelacińo tuviera atributos, éstos formarían parte de la nueva relación o tabla
- Cada atributo propagado será una clave extrajera que referenciará a su tabla dónde es clave principal
- La clave de la nueva tabla será el conjunto de los dos atributos
- A veces hay que revisar si es suficiente o hay que añadir más información para la clave
Realiza el siguiente ejercicio
Dado el siguiente esquema E/R,
obtén el modelo de tablas corresondiente
|
|
- Este es un caso poco frecuente que presenta diferentes opciones de resolución
- Para determinar qué hacer debemos de observar los mínimos, en cuyo caso tenemos tres opciones
- Los dos extremos opcionales
- un extremo opcional y otro obligatorio
- Los dos extremos obligatorios
1:1 con opcionalidad en un extremo
- Es este caso propagamos la clave de la entidad con opcionalidad a la entidad obligada
- Además la clave extranjera debe tener una restricción de valor único
|
1:1 con opcionalidad en ambos extremos
- En este caso,para mantener la información, debemos realizar una doble propagación de claves
- En ambos casos, la clave propagada, deberá de tener la restricción de valor único
|
1:1 con obligatoriedad en ambos extremos
- En este caso conviene jutar las dos entidades en una única tabla o relación juntando los atributos
- La clave será la unión de las dos claves de cada entidad
|
|
Nivel Físico
|