Material para El Foro Dia Martes
Material para El Foro Dia Martes
Material para El Foro Dia Martes
Modelo relacional
3.1 Introducción
En el capítulo anterior se mencionaron 3 tipos de modelado: conceptual,
lógico y físico.
Relación Películas
3.3.2 Atributos
Los atributos son las columnas de un relación y describen características
particulares de ella.
3.3.3 Esquemas
3.3.4 Tuplas
Cada uno de los renglones en una relación conteniendo valores para cada
uno de los atributos.
3.3.5 Dominios
Las tablas siguientes muestran las reglas que se deben seguir para poder
crear dicho esquema.
Debil
LLP_A atribs_A
B1
LLP_B1 atribs_B1
B2
Ejemplo:
Para el ejemplo de la figura tendríamos el esquema:
escuela
id url nombre
departamento
id nombre extension
estudiante
id nombre carrera
profesor_curso
modelo e-r
de generalización a tablas
dos posibilidades:
1.
o crear una tabla para el conjunto de entidades A de
mayor nivel
columnas (A) = atributos(A)
2.
1)
LLP_A atribs_A
B1
atribs_B1 LLP_A
B2
atribs_B2 LLP_A
B3
atribs_B3 LLP_A
donde:
2)
B1
1) Cada tabla que provenga de una entidad contiene por si misma una
llave
2) Para las tablas resultado de una relación se toman las llaves primarias
de ambas entidades y éstas conforman la nueva llave primaria, excepto
en un caso como el que sigue:
Podemos observar que existe una relación m-m entre "actor" y
"serie", demostrando que un actor puede actuar en muchas
series y que muchas series tendrán a los mismos actores.
actor_serie
Las restricciones se van a definir acompañadas por un nombre, lo que permitirá activarlas o
desactivarlas según sea el caso; o también mezcladas en la definiciones de las columnas de la tabla.
A continuación vamos a describir cada una de las restricciones mencionadas.
NOT NULL
Establece la obligatoriedad de que esta columna tenga un valor no nulo. Se debe especificar junto a
la columna a la que afecta. Los valores nulos no ocupan espacio, y son distintos a 0 y al espacio en
blanco. Hay que tener cuidado con los valores nulos en las operaciones, ya que 1 * NULL es igual
a NULL.
UNIQUE
Evita valores repetidos en una columna, admitiendo valores nulos. Oracle crea un índice
automáticamente cuando se habilita esta restricción y lo borra al deshabilitarse.
DEFAULT
CHECK
Comprueba que se cumpla una condición determinada al rellenar esa columna. Esta condición sólo
debe estar construida con columnas de esta misma tabla.
PRIMARY KEY
Establece el conjunto de columnas que forman la clave primaria de esa tabla. Se comporta como
única y obligatoria sin necesidad de explicitarlo. Sólo puede existir una clave primaria por tabla.
Puede ser referenciada como clave ajena por otras tablas. Crea un índice automáticamente cuando
se habilita o se crea esta restricción. En Oracle, los índices son construidos sobre árboles B +.
FOREIGN KEY
Establece que el contenido de esta columna será uno de los valores contenidos en una columna de
otra tabla maestra. Esta columna marcada como clave ajena puede ser NULL. No hay límite en el
número de claves ajenas. La clave ajena puede ser otra columna de la misma tabla. Se puede forzar
que cuando una fila de la tabla maestra sea borrada, todas las filas de la tabla detalle cuya clave
ajena coincida con la clave borrada se borren también. Esto se consigue añadiendo la coletilla ON
DELETE CASCADE en la definición de la clave ajena.
Estas restricciones son las que marcan la diferencia entre una tabla y una
relación, ya que una tabla presenta las filas y las columnas en un orden, del cual
carecen las relaciones. Por otro lado, una tabla podría contener filas repetidas.
De todos modos, es muy común utilizar el término tabla para referirse a una
relación.
Integridad de entidad
La integridad de entidad define una fila como entidad única para una tabla
determinada. La integridad de entidad exige la integridad de las columnas de los
identificadores o la clave principal de una tabla, mediante índices y restricciones
UNIQUE, o restricciones PRIMARY KEY.
Ejemplos:
Una empresa dedicada a la venta de bebidas, podríamos identificar las bebidas de un modo
general, a un modo más individual: Todas las bebidas en un sólo grupo. Todas las bebidas de la
misma marca en un grupo. Agrupar las bebidas en función de si son alcohólicas o no. Cada
bebida de modo individual. Un hecho sobre una determinada bebida, como puede ser el sabor
de un refresco.
Integridad de dominio
La integridad de dominio viene dada por la validez de las entradas para una
columna determinada. Puede exigir la integridad de dominio para restringir el tipo
mediante tipos de datos, el formato mediante reglas y restricciones CHECK, o el
intervalo de valores posibles mediante restricciones FOREIGN KEY, restricciones
CHECK, definiciones DEFAULT, definiciones NOT NULL y reglas.
Ejemplos:
Integridad referencial
La integridad referencial protege las relaciones definidas entre las tablas cuando se
crean o se eliminan filas. En SQL Server la integridad referencial se basa en las
relaciones entre claves externas y claves principales o entre claves externas y claves
exclusivas, mediante restricciones FOREIGN KEY y CHECK. La integridad
referencial garantiza que los valores de clave sean coherentes en las distintas
tablas. Para conseguir esa coherencia, es preciso que no haya referencias a valores
inexistentes y que, si cambia el valor de una clave, todas las referencias a ella se
cambien en consecuencia en toda la base de datos.
Cuando se exige la integridad referencial, SQL Server impide a los usuarios:
Agregar o cambiar filas en una tabla relacionada si no hay ninguna fila
asociada en la tabla principal.
Cambiar valores en una tabla principal que crea filas huérfanas en una tabla
relacionada.
Eliminar filas de una tabla principal cuando hay filas relacionadas
coincidentes.
Ejemplos:
Supongamos una base de datos con las entidades Persona y Factura. Toda factura
corresponde a una persona y solamente una. Implica que en todo momento dichos
datos sean correctos, sin repeticiones innecesarias, datos perdidos y relaciones mal
resueltas.
Supongamos que una persona se identifica por su atributo DNI (Documento Nacional
de Identidad). También tendrá otros atributos como el nombre y la dirección. La
entidad Factura debe tener un atributo DNI_cliente que identifique a quién pertenece
la factura.
Por sentido común es evidente que todo valor de DNI_cliente debe corresponder con
algún valor existente del atributo DNI de la entidad Persona. Esta es la idea intuitiva
de la integridad referencial.
Ejemplos:
Supongamos que en la conocida relación EMPLEADOS (DNI, nombre, apellido,
edademp) se ha declarado que dominio (DNI) es el dominio definido por el usuario
númerosDNI y que dominio (edademp) es el dominio definido por el usuario edad.
Supongamos que númerosDNI corresponde a los enteros positivos y que edad
corresponde a los enteros que están entre 16 y 65. En este caso, será incorrecto,por
ejemplo, consultar los empleados que tienen el valor de DNI igual al valor
de edademp. El motivo es que, aunque tanto los valores de DNI como los de edademp
sean enteros, sus dominios son diferentes; por ello, según el significado que el usuario
les da, no tiene sentido compararlos.
La regla de integridad de dominio está relacionada, como su nombre indica, con la noción
de dominio. Esta regla establece dos condiciones.
Esta condición implica que todos los valores no nulos que contiene la base de datos para
un determinado atributo deben ser del dominio declarado para dicho atributo.
Ejemplo
Si en la relación EMPLEADOS(DNI, nombre, apellido, edademp) hemos declarado que
dominio(DNI) es el dominio predefinido de los enteros, ecordad que los conceptos
entonces no podremos insertar, por ejemplo, ningún
de dominio
empleado que tenga por DNI el valor “Luis”, que no es un predefinido y dominio
entero. definido por el usuario se han
explicado
Recordemos que los dominios pueden ser de dos tipos:
en el subapartado 2.2 de esta
predefinidos o definidos por el usuario. Observad que los unidad
dominios definidos por el usuario resultan muy útiles,
didáctica.
porque nos permiten determinar de forma más
específica cuáles serán los valores admitidos por los atributos.
Ejemplo
De este modo, el hecho de que los operadores que se pueden aplicar sobre los valores
dependan del dominio de estos valores permite detectar errores que se podrían cometer
cuando se consulta o se actualiza la base de datos. Los dominios definidos por el usuario
son muy útiles, porque nos permitirán determinar de forma más específica cuáles serán
los operadores que se podrán aplicar sobre los valores.
Ejemplo
Veamos otro ejemplo con dominios definidos por el usuario. Supongamos que en la
conocida relación EMPLEADOS(DNI, nombre, apellido, edademp) se ha declarado que
dominio(DNI) es el dominio definido por el usuario númerosDNI y que dominio(edademp)
es el dominio definido por el usuario edad. Supongamos que númerosDNI corresponde a
los enteros positivos y que edad corresponde a los enteros que están entre 16 y 65. En
este caso, será incorrecto,por ejemplo, consultar los empleados que tienen el valor
de DNI igual al valor de edademp. El motivo es que, aunque tanto los valores
de DNI como los de edademp sean enteros, sus dominios son diferentes; por ello, según
el significado que el usuario les da, no tiene sentido compararlos.
Sin embargo, los actuales SGBD relacionales no dan apoyo a la segunda condición de la
regla de integridad de dominio para dominios definidos por el usuario. Si se quisiera
hacer, sería necesario que el diseñador tuviese alguna forma de especificar, para cada
operador que se desease utilizar, para qué combinaciones de dominios definidos por el
usuario tiene sentido que se aplique.