sábado, 11 de abril de 2020



Modelos de Datos


Una de las características fundamentales de los sistemas de bases de datos es que proporcionan cierto nivel de abstracción de datos, al ocultar las características sobre el almacenamiento físico que la mayoría de usuarios no necesita conocer. Los modelos de datos son el instrumento principal para ofrecer dicha abstracción a través de su jerarquía de niveles.  Los modelos de datos contienen también un conjunto de operaciones básicas para la realización de consultas (lecturas) y
actualizaciones de datos. Además, los modelos de datos más modernos incluyen mecanismos para especificar acciones compensatorias o adicionales que se deben llevar a cabo ante las acciones habituales que se realizan sobre la base de datos.

➤Tipos de modelos de datos:
Los modelos conceptuales utilizan conceptos como entidades, atributos relaciones. Una entidad representa un objeto o concepto del mundo real como, por ejemplo, un cliente de una empresa o una de sus facturas. Un atributo representa alguna propiedad de interés de una entidad como, por ejemplo,el nombre o el domicilio del cliente. Una relación describe una interacción entre dos o más entidades,por ejemplo, la relación que hay entre un cliente y las facturas que se le han realizado.
Cada SGBD soporta un modelo lógico, siendo los más comunes el relacional, el de red y el jerárquico. Estos modelos representan los datos valiéndose de estructuras de registros, por lo que también se denominan modelos orientados a registros.

El modelo relacional representa la segunda generación de los SGBD. En él, todos los datos están estructurados a nivel lógico como tablas formadas por filas y columnas, aunque a nivel físico pueden tener una estructura completamente distinta. Un punto fuerte del modelo relacional es la sencillez de
su estructura lógica. Pero detrás de esa simple estructura hay un fundamento teórico importante del que carecen los SGBD de la primera generación, lo que constituye otro punto a su favor.



Estructura de datos relacional

La estructura de datos del modelo relacional es la relación. En este apartado se presenta esta estructura de datos, sus propiedades, los tipos de relaciones y qué es una clave de una relación. Para facilitar la comprensión de las definiciones formales de todos estos conceptos, se dan antes unas definiciones informales que permiten asimilar dichos conceptos con otros que resulten familiares.

Relaciones

Una relación es una tabla con columnas y filas. Un SGBD sólo necesita que el usuario pueda percibir la base de datos como un conjunto de tablas. Esta percepción sólo se aplica a la estructura lógica de la base de datos, no se aplica a la estructura física de la base de datos, que se puede implementar con
distintas estructuras de almacenamiento. 
➽Un atributo es el nombre de una columna de una relación. En el modelo relacional, las relaciones se utilizan para almacenar información sobre los objetos que se representan en la base de datos. Una relación se representa gráficamente como una tabla bidimensional en la que las filas corresponden a registros individuales y las columnas corresponden a los campos o atributos de esos registros. Los atributos pueden aparecer en la relación en cualquier orden.
➧Un dominio es el conjunto de valores legales de uno o varios atributos. Los dominios constituyen una poderosa característica del modelo relacional. Cada atributo de una base de datos relacional se define sobre un dominio, pudiendo haber varios atributos definidos sobre el mismo dominio.


Los SGBD relacionales no ofrecen un soporte completo de los dominios ya que su implementación es extremadamente compleja. Una tupla es una fila de una relación. Los elementos de una relación son las tuplas o filas de la tabla. En la relación CLIENTES, cada tupla tiene cinco valores, uno para cada atributo. Las tuplas de una relación no siguen ningún orden.
El grado de una relación es el número de atributos que contiene. La relación CLIENTES es de grado cinco porque tiene cinco atributos. Esto quiere decir que cada fila de la tabla es una tupla con cinco valores. El grado de una relación no cambia con frecuencia. La cardinalidad de una relación es el número de tuplas que contiene. Ya que en las relaciones se van insertando y borrando tuplas a menudo, la cardinalidad de las mismas varía constantemente. Una base de datos relacional es un conjunto de relaciones normalizadas. Una relación está normalizada si en la intersección de cada fila con cada columna hay un solo valor.








Propiedades de las Relaciones

* Cada relación tiene un nombre, y éste es distinto del nombre de todas las demás.
* Los dominios sobre los que se definen los atributos son escalares, por lo que los valores de los             atributos son atómicos. De este modo, en cada tupla, cada atributo toma un solo valor. Se dice que       las relaciones están normalizadas.
* No hay dos atributos que se llamen igual.
* El orden de los atributos no importa: los atributos no están ordenados.
* Cada tupla es distinta de las demás: no hay tuplas duplicadas.
* El orden de las tuplas no importa: las tuplas no están ordenadas.


Tipos de relaciones

Relaciones base: Son relaciones reales que tienen nombre, y forman parte directa de la base de datos almacenada. Se dice que las relaciones base son relaciones autónomas.
Vistas:También denominadas relaciones virtuales, son relaciones con nombre y derivadas (no autónomas). Que son derivadas significa que se obtienen a partir de otras relaciones; se representan mediante su definición en términos de esas otras relaciones.
Las vistas no poseen datos almacenados propios, los datos que contienen corresponden a datos almacenados en relaciones base.

Claves
 La forma de identificarlas es mediante los valores de sus atributos. Se denomina superclave a un atributo o conjunto de atributos que identifican de modo único las tuplas de una relación. Se denomina clave candidata a una superclave en la que ninguno de sus subconjuntos es una superclave de la relación. El atributo o conjunto de atributos K de la relación R es una clave candidata para R si, y sólo si, satisface las siguientes propiedades:

➣Unicidad: nunca hay dos tuplas en la relación R con el mismo valor de K.
➢Irreducibilidad (minimalidad): ningún subconjunto de K tiene la propiedad de unicidad, es decir, no se pueden eliminar componentes de K sin destruir la unicidad.

Cuando una clave candidata está formada por más de un atributo, se dice que es una clave compuesta. Una relación puede tener varias claves candidatas.

Se denomina clave primaria de una relación a aquella clave candidata que se escoge para identificar sus tuplas de modo único. Ya que una relación no tiene tuplas duplicadas, siempre hay una clave candidata y, por lo tanto, la relación siempre tiene clave primaria. En el peor caso, la clave primaria estará formada por todos los atributos de la relación, pero normalmente habrá un
pequeño subconjunto de los atributos que haga esta función.  Las claves candidatas que no son escogidas como clave primaria son denominadas claves alternativas.

Esquema de una base de datos relacional

Una base de datos relacional es un conjunto de relaciones. Para representar el esquema de una base de datos relacional se debe dar el nombre de sus relaciones, los atributos de éstas, los dominios sobre los que se definen estos atributos, las claves primarias y las claves ajenas.
El esquema de la base de datos de la empresa con la que trabajaremos en este libro es el siguiente:
CLIENTES(codcli, nombre, dirección, codpostal, codpue)
VENDEDORES(codven, nombre, dirección, codpostal, codpue, codjefe)
PUEBLOS(codpue, nombre, codpro)
PROVINCIAS(codpro, nombre)
ARTÍCULOS(codart, descrip, precio, stock, stock_min, dto)
FACTURAS(codfac, fecha, codcli, codven, iva, dto)
LÍNEAS_FAC(codfac, línea, cant, codart, precio, dto)

En el esquema anterior, los nombres de las relaciones aparecen seguidos de los nombres de los atributos encerrados entre paréntesis. Las claves primarias son los atributos subrayados. Las claves ajenas se representan mediante los siguientes diagramas referenciales:

CLIENTES codpue −→ PUEBLOS : Población del cliente.
VENDEDORES codpue −→ PUEBLOS : Población del vendedor.
VENDEDORES codjefe −→ VENDEDORES : Jefe del vendedor.
PUEBLOS codpro −→ PROVINCIAS : Provincia en la que se encuentra la población.
FACTURAS codcli −→ CLIENTES : Cliente al que pertenece la factura.
FACTURAS codven −→ VENDEDORES : Vendedor que ha realizado la venta.
LÍNEAS_FAC codfac −→ FACTURAS : Factura en la que se encuentra la línea.
LÍNEAS_FAC codart −→ ARTÍCULOS : Artículo que se compra en la línea de factura.



Reglas de integridad


Una vez definida la estructura de datos del modelo relacional, pasamos a estudiar las reglas de integridad que los datos almacenados en dicha estructura deben cumplir para garantizar que son correctos.
Al definir cada atributo sobre un dominio se impone una restricción sobre el conjunto de valores permitidos para cada atributo. A este tipo de restricciones se les denomina restricciones de dominios. Hay además dos reglas de integridad muy importantes que son restricciones que se deben cumplir en todas las bases de datos relacionales y en todos sus estados (las reglas se deben cumplir todo el tiempo). Estas reglas son la regla de integridad de entidades y la regla de
integridad referencial. Antes de definirlas, es preciso conocer el concepto de nulo.


Nulos

Cuando en una tupla un atributo es desconocido, se dice que es nulo. Un nulo no representa el valor cero ni la cadena vacía ya que éstos son valores que tienen significado. El nulo implica ausencia de información, bien porque al insertar la tupla se desconocía el valor del atributo, o bien porque para dicha tupla el atributo no tiene sentido.
Ya que los nulos no son valores, deben tratarse de modo diferente, lo que causa problemas de implementación. De hecho, no todos los SGBD relacionales soportan los nulos.



Regla de integridad de entidades


La primera regla de integridad se aplica a las claves primarias de llaciones base: ninguno de los atributos que componen la clave primaria puede ser nulo.
Por definición, una clave primaria es una clave irreducible que se utiliza para identificar de modo único las tuplas. Que es irreducible significa que ningún subconjunto de la clave primaria sirve para identificar las tuplas de modo único. Si se permitiera que parte de la clave primaria fuera nula, se estaría diciendo que no todos sus atributos son necesarios para distinguir las tuplas, con lo que se estaría contradiciendo la irreducibilidad. Nótese que esta regla sólo se aplica a las relaciones base y a las claves primarias, no a las claves alternativas.


Regla de integridad referencial

La segunda regla de integridad se aplica a las claves ajenas: si en una relación hay alguna clave ajena, sus valores deben coincidir con valores de la clave primaria a la que hace referencia, o bien, deben ser completamente nulo , se enmarca en términos de estados de la base de datos: indica lo que es un estado ilegal, pero no dice cómo puede evitarse. Por lo tanto, una vez establecida la regla, hay que plantearse qué hacer si estando en un estado legal, llega una petición para realizar una operación que conduce a un estado ilegal. Existen dos opciones: rechazar o aceptar la operación y realizar operaciones adicionales compensatorias que conduzcan aun estado legal.
Para hacer respetar la integridad referencial se debe contestar, para cada clave ajena, a las tres preguntas que se plantean a continuación y que determinarán su comportamiento:

Regla de los nulos: «¿Tiene sentido que la clave ajena acepte nulos?»
Regla de borrado: «¿Qué ocurre si se intenta borrar la tupla referenciada por la clave ajena?»
• Restringir: no se permite borrar la tupla referenciada.
• Propagar: se borra la tupla referenciada y se propaga el borrado a las tuplas que la referencian mediante la clave ajena.
• Anular: se borra la tupla referenciada y las tuplas que la referenciaban ponen a nulo la clave ajena (sólo si acepta nulos).
• Valor por defecto: se borra la tupla referenciada y las tuplas que la
referenciaban ponen en la clave ajena el valor por defecto establecido
para la misma.
Regla de modificación: «¿Qué ocurre si se intenta modificar el valor de la clave primaria de la tupla referenciada por la clave ajena?»
• Restringir: no se permite modificar el valor de la clave primaria de la tupla referenciada.
• Propagar: se modifica el valor de la clave primaria de la tupla referenciada y se propaga la modificación a las tuplas que la referencian, mediante la clave ajena.
• Anular: se modifica la tupla referenciada y las tuplas que la referenciaban ponen a nulo la clave ajena (sólo si acepta nulos).
• Valor por defecto: se modifica la tupla referenciada y las tuplasque la referenciaban ponen en la clave ajena el valor por defecto establecido para la misma.

Reglas de negocio

Además de las dos reglas de integridad anteriores, es posible que sea necesario imponer ciertas restricciones específicas sobre los datos que forman parte de la estrategia de funcionamiento de la empresa. A estas reglas se las denomina reglas de negocio.
Por ejemplo, si en cada oficina de una determinada empresa sólo puede haber hasta veinte empleados, el SGBD debe dar la posibilidad al usuario de definir una regla al respecto y debe hacerla respetar. En este caso, no debería permitir dar de alta a un empleado en una oficina que ya tiene los veinte permitidos. No todos los SGBD relacionales permiten definir este tipo

de restricciones y hacerlas respetar.