Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad


Apuntes de Bases de Datos, Apuntes de Informática

Asignatura: Bases de datos, Profesor: , Carrera: Ingeniería en Tecnologías de la Información, Universidad: UNED

Tipo: Apuntes

2015/2016

Subido el 23/06/2016

eulerbombero
eulerbombero 🇪🇸

2 documentos

1 / 65

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
SQL básico
SQL
Definición básica de los esquemas
char(n)
varchar(n)
smallint
numeric(p,d)
real double precision
float(n)
: cadena de caracteres de longitud fija n.
: cadena de caracteres de longitud variable con una longitud máxima de n.
int: entero.
: entero pequeño
: número de coma fija, formado por p dígitos (más el signo), de los cuales d
corresponden a la parte decimal.
, : números de coma flotante y números de coma flotante de doble
precisión.
: número de coma flotante cuya precisión es al menos de n dígitos.
create table
(A D ,
AD,
AD,
restricción-integridad1
restricción-integridad2);
r
11
22
nn
- : determina que los atributos forman la
de la relación.
- : indica que los valores de los atributos
de cualquier tupla de la relación se deben corresponder con los valores de
los atributos de la clave primaria de otras tuplas de la relación (clave externa).
- : no se permite el valor nulo para ese atributo.
A,A,…A
j1 j2 jm
A,
A,A
k1
k2 km
s
primary key ( )
foreing key (A , A , A ) references
not null
A,A,…A
s
j1 j2 jm
k1 k2 km
clave primaria
Las relaciones se definen mediante este comando,
Donde:
es el nombre de la relación.
es el nombre de los atributos del esquema de la relación.
es el dominio del atributo Ai, es decir indica el tipo.
:
r
A
D
restricciones-integridad
i
i
i
insert into
values ( );
r
v,v,…v
12 n Introduce los datos de los atributos de la relación .rv,v,…v
12 n
delete from ;
drop table ;
alter table add ;
alter table drop
r
r
rAD
rA
Elimina todas las tuplas de la relación .
Elimina la relación de la base de datos (tuplas y esquema).
Añade el atributo de tipo a la relación existente .
Elimina el atributo de la relación existente .
r
r
AD r
Ar
Consultas
select
from ;
select distinct
from ;
A
r
A
r
Consultas sobre una relación única
select all A
from ;
select
from
where ;
r
A
r
P
Muestra el atributo de la relación . La cláusula pude contener
expresiones aritméticas que incluyan operadores +, -,*y/conconstantes o
atributos en las tuplas.
Arselect
Muestra el atributo de la relación , eliminando los nombres duplicados.Ar
Muestra el atributo de la relación , indicando explícitamente que los
duplicados no se eliminen.
Ar
Muestra el atributo de la relación que satisfagan determinado predicado .Ar P
Consultas sobre varias relaciones
select , , …,
from , , …,
where ;
AA A
rr r
P
12 n
12 m Ps´´´
(,... )A1 An P 1 2 m
(( ))rr r
»
select
from
where
: indica los atributos deseados en el resultado de la consulta.
: indica la lista de relaciones a las que hay que acceder para evaluar la consulta. Es el
producto cartesiano de las relaciones consideradas.
: es un predicado que incluye los atributos de la relación de la cláusula .
Restringe las combinaciones del de la cláusula a aquellas que
tienen sentido para la respuesta deseada. Si se omite esta cláusula el predicado es
verdadero
P from
from
P
producto cartesiano
álgebra relacional
Unión natural: opera con dos relaciones y genera como resultado una relación en la que
los pares de tuplas con los mismos valores en los atributos que aparecen en los esquemas
de ambas relaciones.
: indica los atributos deseados en el resultado de la consulta.
: Ei puede ser una sola relación o una expresión con uniones naturales: ,
, , por ejemplo.
: es un predicado que se evalúa después de realizar las uniones naturales.
r r natural join
r r natural join r
12
34 m
select
from
where
select
from
where ;
A,A,,A
E,E,,E
P
12 n
12 m
join usingPara evitar el peligro de una igualdad errónea entre los atributos esta cláusula
permite indicar exactamente que columnas se deberían igualar.
Operaciones básicas adicionales
like
nombre_anterior nombre_nuevoas Renombrado. Puede aparecer tanto en la cláusula
select como en la cláusula from.
Para comparar cadenas de caracteres se emplea la cláusula . Los patrones se
escriben utilizando caracteres especiales:
(%) coincide con cualquier subcadena de caracteres.
( _ ) coincide con cualquier cadena de caracteres.
En el caso que un patrón pueda contener uno de esos caracteres especiales se
especifica por medio de un carácter de escape que se define mediante la clave con la
palabra clave . (por ejemplo, like ´ab\%cd%´ escape `\` coincide con todas las
cadenas que empiecen por “ab%cd”
like
escape
r.* Este símbolo se emplea en la cláusula select para indicar
todos los atributos de la
relación r
select
from
where
order by asc <desc>;
A
r
P
A
Orden de presentación de las tuplas: la cláusula coloca los
elementos en orden ascendente. Se puede especificar para
orden ascendente o para orden descendente.
order by
desc
asc
between
not between
Predicados para simplificar la cláusula indican que un valor
sea menor o igual que algún valor, y mayor o igual que otro. Su negación sería
.
where: between
not between
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c
pf2d
pf2e
pf2f
pf30
pf31
pf32
pf33
pf34
pf35
pf36
pf37
pf38
pf39
pf3a
pf3b
pf3c
pf3d
pf3e
pf3f
pf40
pf41

Vista previa parcial del texto

¡Descarga Apuntes de Bases de Datos y más Apuntes en PDF de Informática solo en Docsity!

SQLSQL básicochar(n): cadena de caracteres de longitud fija n.varchar(n): cadena de caracteres de longitud variable con una longitud máxima de n.int: entero.smallint: entero pequeñonumeric(p,d): número de coma fija, formado por p dígitos (más el signo), de los cuales dcorresponden a la parte decimal.real^ double precision,^ float(n)Definición básica de los esquemas

: números de coma flotante y números de coma flotante de doble precisión.: número de coma flotante cuya precisión es al menos de n dígitos.

create table^ r (A^ D ,^1 1 A^ D ,^2 2 …A^ D ,n^ n restricción-integridad1restricción-integridad2);- : determina que los atributos

forman la de la relación.-

: indica que los valores de los atributos de cualquier tupla de la relación se deben corresponder con los valores delos atributos de la clave primaria de otras tuplas de la relación

(clave externa).

-^ : no se permite el valor nulo para ese atributo.

A , A , … Aj1^ j2^ jm

A ,

A^ , … A

k

k2^ km

s

primary key (^

foreing key (A , A^

, … A^ ) references A , A , … A not null

s j1^ j2^ jm clave primaria k1 k2^ km Las relaciones se definen mediante este comando,Donde:es el nombre de la relación.es el nombre de los atributos del esquema de la relación.es el dominio del atributo Ai, es decir indica el tipo.

r Ai Di restricciones-integridad

i insert intovalues (^ r Introduce los datos); v , v , … v 1 2 n^

de los atributos de la relación

. r v , v , … v^1 2 n delete from^ ; drop table^ ; alter table^ add^

r r r A D alter table drop r A Elimina todas las tuplas de la relación

Elimina la relación

de la base de datos (tuplas y esquema). Añade el atributo^

de tipo^ a la relación existente

Elimina el atributo

de la relación existente

r^. r A D^

r A^

r

Consultas Consultas sobre una relación únicaselect^ A from^ ; r select distinct A from^ ; r

select all Afrom^ ;^ r select A from r where^ ; P

Muestra^ el^ atributo

de^ la^ relación

.^ La^ cláusula^

pude^ contener

expresiones aritméticas que incluyan operadores +, -, * y / con constantes oatributos en las tuplas.

A^

r^ select Muestra el atributo

de la relación^ , eliminando los nombres duplicados. A^ r

Muestra el atributo

de la relación

, indicando explícitamente que los

duplicados no se eliminen.

A^

r

Muestra el atributo

de la relación^ que satisfagan determinado predicado

A^ r^

P

Consultas sobre varias relacionesselect^

,^ , …, A A^ A 1 2 n from , , …, r r^ r P^ 1 2 m^ where ; P

s^ ´^ ´^ ´ ( (^ ^ )) r^ r^ r ( , ... ) A1 An P^1 2 m » select^ : indica los atributos deseados en el resultado de la consulta. from : indica la lista de relaciones a las que hay que acceder para evaluar la consulta. Es elproducto cartesiano de las relaciones consideradas. where : es un predicado

que incluye los atributos de la relación de la cláusula

Restringe las combinaciones del

de la cláusula^

a aquellas que

tienen sentido para la respuesta deseada. Si se omite esta cláusula el predicado

es

verdadero

P^

fromfromP producto cartesiano

álgebra relacional

Unión natural: opera con dos relaciones y genera como resultado una relación en la quelos pares de tuplas con los mismos valores en los atributos que aparecen en los esquemasde ambas relaciones.: indica los atributos deseados en el resultado de la consulta.: Ei puede ser una sola relación o una expresión con uniones naturales:

,^ , …^

por ejemplo.: es un predicado que se evalúa después de realizar las uniones naturales.

r^ r natural join

r^ r^ natural join r

1 2

3 4

m selectfromwhere

select^ A , A , …, A^1 2 n from E , E , …, E^1 2 m where^ ; P

Para evitar el peligro de una igualdad errónea entre los atributos esta cláusula join using … permite indicar exactamente que columnas se deberían igualar.Operaciones básicas adicionales nombre_anterior like

nombre_nuevo as^

Renombrado. Puede aparecer tanto en la cláusulaselect como en la cláusula from. Para comparar cadenas de caracteres se emplea la cláusula

. Los patrones se

escriben utilizando caracteres especiales:(%) coincide con cualquier subcadena de caracteres.( _ ) coincide con cualquier cadena de caracteres.En el caso que un patrón pueda contener uno de esos caracteres especiales seespecifica por medio de un carácter de escape que se define mediante la clave con lapalabra clave^

. (por ejemplo, like ´ab%cd%´ escape \ coincide con todas las cadenas que empiecen por “ab%cd”

like escape r .*^ Este símbolo se emplea en la cláusula select para indicar “”

todos los atributos de la

relación r select^ A from r where P order by^ asc ; A

Orden de presentación de las tuplas: la cláusula

coloca los elementos en orden ascendente. Se puede especificar

para

orden ascendente o

para orden descendente.

order bydesc asc Predicados para simplificar la cláusula betweennot between

indican que un valor sea menor o igual que algún valor, y mayor o igual que otro. Su negación sería.

where: between not between

Operaciones sobre conjuntos c^ c^ union^1 2 c^ c union all^1 2 c^ c intersect^1 2 c^ c intersect all^1 2 c^ c except^1 2 c^ c except all^1

Realiza la unión de dos consultas eliminando los valores duplicadosautomáticamente, si se desean mantener se añade la cláusula

. all

Realiza^ la^ intersección

de^ dos^ consultas

eliminando^ los

valores

duplicados automáticamente, si se desean mantener se añade la cláusula. all Realiza la diferencia da como salida todas las tuplas de su primera entradaque no existen en la segunda. En el caso de mantener los duplicados con lacláusula^ , es igual al número de copias duplicadas en

menos el

número de copias duplicadas en

c c

1 2 all

Valores nulosunknown and: and or not

= and^ =and^ = : or =or = or^ =: not = Si el predicado de la cláusula

se evalúa a false o a unknown para una de las true^ unknown tuplas, dicha tupla no se añade al resultado.

unknown false^ unknown

false unknown^ unknown

unknown true^ unknown^

true false^ unknown^

unknown unknown^ unknown

unknown unknown^ unknown

where

Se utiliza en un predicado para comprobar si el valor es null. is nullis not nullEl predicado is not null es cierto si el valor al que se aplica no vale null.Funciones de agregaciónLa entrada Media: avg Mínimo: min Máximo: max Total: sum Recuento: count

y^ debe ser una colección de números, el resto puede operartambién con^ colecciones^ de^

tipos^ de^ datos^ no^

numéricos,^ como^ cadenas

de

caracteres.Si se desea eliminar los duplicados se usa la palabra clave

. Da el número de tuplas de una relación

. r sum^ avg

distinct select count()from*^ ; r El atributo o atributos indicados en la cláusula group by

se usan para formar grupos. Las tulas con el mismo valor en todos los atributos en esta cláusula se sitúan en un grupo.

group by Aplica los predicados de la cláusula having

después de haber hecho los agrupamientos, por lo que se pueden utilizar las funciones de agregación

having El significado de una consulta que tenga cláusulas de agregación, group byhaving

o^

se

define de acuerdo a la siguiente secuencia de operaciones:l. Como en el caso de las consultas sin agregación, la cláusula

se evalúa en primer

lugar para obtener una relación.2. Si existe una cláusula

, el predicado de la cláusula where se aplica al resultado de la relación de la cláusula

.

3. Las tuplas que satisfagan el predicado

se sitúan en grupos de acuerdo con la cláusula^ , si existe. Si la cláusula

no existe, todo el conjunto de tuplas que satisfagan el predicado

se trata como si fuese un único grupo.

4. Se aplica la cláusula

, si existe, a cada uno de los grupos; los grupos que no satisfagan el predicado de la cláusula

se eliminan.

5. La cláusula^

utiliza el resto de grupos para generar tuplas con el resultado de la consulta aplicando las funciones de agregación para obtener unaúnica tupla resultado para cada grupo.

group by^ havingfrom wherefromwheregroup by group bywherehavinghavingselect

Subconsultas anidadasinnot in {^ ,^ ,^ , , =,^ } some^ <^ £ > ³^ <> {^ } all <^ £ > ³^ <> ,^ ,^ , , =, existsnot existsuniquelateralwith Modificación de la Base de Datos

La conectiva^ comprueba la pertenencia a un conjunto, donde elconjunto es la colección de valores resultado de una cláusula

. La in conectiva comprueba la no pertenencia a un conjunto.

select not in menor/menor o igual/menor/menor o igual/ igual/ distinto “que almenos una”.es idéntico a^ mientras que

NO es lo mismo que = some^.

in^ <>some

not

in^ inferior/inferior o igual/superior/superior o igual/ igual/ distinto “alde todos”.es lo mismo que

mientras que

NO es lo mismo que

<> all^

not in^

= all^

in

Sirve para comprobar si las subconsultas tienen alguna tupla en suresultado, así pues,

devuelve el valor

si su argumento subconsulta no resulta vacía.El constructor^

se puede comprobar la inexistencia de tuplas en el resultado de las subconsultas.

exists^

true not exists El constructor unique devuelve el valor true si la subconsulta que se lepasa como argumento no contiene tuplas duplicadas.Una subconsulta en la cláusula^

se puede utilizar como prefijo la palabra^ clave^

para^ acceder^ a^ los

atributos^ de^ las

tablas

precedentes o a subconsultas en la cláusula

from^. lateral

from La cláusula^ proporciona una forma de definir vistas temporales^ with cuya definición solo está disponible para la consulta en la que aparecela cláusula. En SQL se permite escribir subconsultas en cualquier punto en el que una expresión devuelveun valor; estas subconsultas se llaman

subconsultas escalares delete from rLa declaraciónwhere P;delete from r;insert into rvalues (v1, v2, … vn);update rset actualizaciónwhere P; casewhen pred1 then resultado1when pred2 then resultado2…when predn then resultadonelse resultado0end

busca primero todas las tuplas

en^ para las que

es cierto y a continuación las borra de r. La cláusula

se puede omitir, en cuyo caso se borran todas las tuplas de

delete^

t^ r^

P t wherer Introduce los datos

de los atributos de la relación

v , v , … vn^

r 1 2 En determinadas situaciones puede ser deseable modificar un valordentro de una tupla sin cambiar todos los valores de la misma. Para estetipo de situaciones se puede utilizar la instrucción

. Al igual que ocurre con^

y^ , se pueden elegir las tuplas que se van a actualizar mediante una consulta.

update insert^ delete^ El constructor case se puede utilizar para llevar a cabo lasdos instrucciones de actualización anteriores en una únicainstrucción update, evitando el

problema del^ orden de actualización.

Tipos de datos y esquemas SQL

Restricciones sobre una sola relaciónEl comando^

puede incluir instrucciones para restricciones de integridad. Además de la restricción de clave primaria, existen otras como:

,^

y

create table****.

not null^

check

<^ >

unique

predicado Restricción^ not null El valor nulo (^ ) es miembro de todos los dominios y de manera predeterminada es unvalor legal para todos los atributos. Para ciertos atributos los valores nulos pueden resultarpoco adecuados. La especificación

prohíbe la inserción de valores nulos para un null atributo (si se inserte un valor nulo se genera un error). SQL prohíbe los valores nulos en la.

not null clave primaria Restricción

unique (^

unique

A , A , …, Aj1^ j2^ jm En la restricción de integridad

, la especificación^

indica que los

atributos^

forman una^

. Se permite que los atributos de la clave candidata tengan valores

(salvo que se hayan declarado de manera explícita como ).

unique clave candidatanull

not

A , A , …, Aj1^ j2^ null jm La cláusulacheck ( check^ ) P La cláusula^

especifica el predicado

que deben satisfacer todas las tuplas de la relación. La cláusula

permite restringir los valores de los atributos y los dominios. El predicado de la cláusula

puede ser un predicado arbitrario que puede incluir una subconsulta (actualmente ninguna de las bases de datos ampliamente utilizadas permite queel predicado contenga una subconsulta).

P

checkcheck Integridad referencialEn ocasiones es preciso garantizar que el valor que aparece en una relación para un conjuntodado de atributos aparezca también para un conjunto determinado de atributos en otrarelación. Esta condición se denomina Violación de la restricción de integridad durante una transacción

. Las claves externas pueden

especificarse como parte de la instrucción

mediante la cláusula

. Las

exigencias de este tipo se denominan restricciones de integridad referencial, o dependenciasde subconjuntos. De manera predeterminada las

hacen referencia a los atributos de la^

a de la tabla referenciada. SQL también soporta una versión de la cláusula^

en la que se puede especificar de manera explícita una lista de atributos de la relación a la que se hace referencia (la lista de atributos especificada debe declararsecomo^

de la relación a la que hace referencia, usando la restricción o la restricción^

). Cuando se viola una restricción de integridad referencial es rechaza la acción que ha causado esa violación. Sin embargo, la cláusula

puede

especificar que si una acción de borrado o de actualización de la relación a la que hacereferencia viola la restricción, entonces, en lugar de rechazar la acción, el sistema lleva a cabolos pasos necesarios para modificar la tupla de la relación que hace la referencia para que serestaure la restricción. Si hay una cadena de dependencias de

que afecta a

varias relaciones, el borrado o la actualización de un extremo de la cadena puede propagarsepor toda ella. Los valores nulos complican la semántica de las restricciones de integridadreferencial. Se permite que los atributos de las claves externas sean valores nulos, siempreque no hayan sido declarados previamente como

. Si todas las columnas de una son no nulas en una tupla dada, se utiliza para esa tupla la definición habitual de lasrestricciones de clave externa. Si alguna de las columnas de la clave externa vale

, la tupla

se define de manera automática para que satisfaga la restricción. Puede que esta definiciónno sea siempre la opción correcta, por lo que SQL ofrece también constructores que permitenmodificar el comportamiento cuando hay valores nulos.Las transacciones pueden constar de varios pasos, por lo que las restricciones de integridad

integridad referencialcreate table^

foreign key claves externas clave primarireferencesclave candidata^

primary

key^

unique

foreign keyclave externa not null^

clave

externa

pueden violarse temporalmente tras uno de estos pasos, pero puede que uno posteriorsubsane la violación. Para tratar estas situaciones SQL permite que se añada la cláusula null a la especificación de la restricción (la restricción se comprueba al final dela transacción y no en los pasos intermedios). Para las restricciones declaradas comodiferibles, la ejecución de la instrucción

hace que se

difiera la comprobación de las restricciones especificadas hasta el final de esa transacción. Apesar de ello, el comportamiento predeterminado es comprobar las restricciones de manerainmediata (muchas implementaciones no soportan la comprobación diferida).SQL soporta construcciones adicionales para especificar las restricciones de integridad(estas construcciones no las soportan la mayoría de los sistemas de bases de datos). Elpredicado de la cláusula

puede ser un predicado arbitrario, que puede incluir una subconsulta. Las condiciones

complejas pueden ser útiles cuando se desea asegurar la integridad de los datos, pero puede ser costoso comprobarlo. Un

es un predicado que

expresa una condición que la base de datos debe satisfacer siempre. Las restricciones dedominio y las de integridad referencial son formas especiales de asertos. En SQL losadoptan la forma:

. Cuando se crea un

initially deferred aserto, el sistema comprueba su validez (si el aserto es válido, solo se permiten lasmodificaciones de la base de datos que no hagan que se viole el aserto). Esta comprobaciónpuede producir una sobrecarga si el aserto es complejo (los asertos deben utilizarse conmucha cautela). En la actualidad, ninguno de los sistemas de bases de datos soporta lassubconsultas en el predicado de la cláusula check, ni las construcciones assertion. Sinembargo, se puede implementar una funcionalidad equivalente usando disparadores, sidispone de ellos el sistema de bases de datos.

checkcheck

aserto

asertos set constraints^

deferred

Condiciones de comprobación complejas y asertos

create assertion <

> check < listarestricciones^ > nombre aserto^

predicado

Tipos fecha y hora en SQL

time

timestamp(^ ) cast^ as extract(

from^ ) timezone_hour^ timezone_minute

current_date current_time localtime

current_timestamp (

)^

localtimestamp ( ) Valores predeterminados

(p)

p e t^ campo

d con huso horario^

fecha y hora

SQL soporta tipos de datos relacionados con fecha y hora: locales sin huso horario

(fecha, aaaa-mm-dd),

(hora, hh:mm:ss),

permite especificar el número de cifras decimales para los segundos y^

permite almacenar la información del huso horario, y (combinación de date y time, se puede usar

, para especificar el número de cifras decimales para los segundos, y

para almacenar la información del huso horario). Se pueden usar expresiones de la forma

para convertir una cadena de caracteres^ al tipo

, donde^ es de^

,^ o^

. Para extraer campos

concretos de un valor

de^ o de^

se puede utilizar^

, donde

campo puede ser^

o^. La información de hora sobre el huso horario puede obtenerse mediante

y

. SQL también

define varias funciones útiles para obtener la fecha y la hora actuales. Así,devuelve la fecha actual,

devuelve la hora actual (con su huso horario) ydevuelve la hora local actual (sin huso horario). Las

(fecha y

hora) se obtienen con

y

. SQL permite realizar operaciones de comparación sobre los tipos de datos que se han mencionado y operaciones aritméticas. SQL también proporciona un tipode datos denominado

y permite realizar cálculos basados en fechas, horas e intervalos.SQL permite especificar un valor predeterminado (

) para un atributo. Cuando se e^ inserta una tupla en la relación si no se proporciona un valor para dicho atributo su valor pordefecto será el especificado. t^ t d

date^

time

with timezone^

timestamp with timezonetipo date^ time^

timestamp date^ timeyear, month, day, hour, minute

second marcas de tiempo interval

default

Creación de índices

create index

on Tipos de datos para objetos grandes

clob(^

)^ blob(

) Tipos definidos por los usuarios

create type^

as^ final

Extensiones a la creación de tablas

create table^

like create tabla^

as (^ ) with data atributo^ relación Esquemas, catálogos y entornos

atributo^ cantidad de memoria

atributo^ cantidad de

memoria

nombre de tipo^ tipo de datos nueva tabla^ tabla nueva tabla^ consulta Un^ sobre un atributo de una relación es una estructura de datos que permite al sistemade bases de datos encontrar de forma eficiente (sin leer la relación completa) las tuplas deuna relación a partir de los valores de dicho atributo. También se puede crear un

de

una lista de atributos. SQL no define formalmente ninguna sintaxis para la creación deíndices, pero muchas bases de datos soportan la creación de índices utilizando. SQL ofrece tipos de datos para objetos de gran tamaño. Para caracteres se utiliza

y para

datos binarios^

. Su sintaxis es:^

y

. En estos casos, las consultas SQL permiten recuperar localizadores de los objetos ya partir de ellos manipular el objeto desde el lenguaje anfitrión.SQL soporta dos formas de tipos de datos definidos por los usuarios:y

(permite la creación de tipos de datos complejos, que pueden anidar^

y^ ). La cláusula

se

utiliza para definir tipos de datos nuevos:

. SQL

también ofrece las cláusulas

y^

para eliminar o modificar los tipos de datos creados. Antes de la incorporación a SQL de los tipos de datos definidos por losusuarios, SQL utilizaba el concepto de

. El^

puede utilizarse como

, sin embargo existen diferencias significativas entre ellos.SQL proporciona la extensión^

para la creación de tablas que tienen el mismo esquema que una ya existente:

. La sentencia anterior crea

una nueva tabla que tiene el mismo esquema que tabla. Cuando se escribe una consultacompleja, a menudo suele ser útil guardar el resultado de la consulta como una nueva tabla(la tabla suele ser temporal). Para crear esta nueva tabla se necesitan dos sentencias, unapara crear la tabla (columnas) y otra para insertar el resultado de la consulta. Otra opción esutilizar la cláusula

, que permite crear una tabla que contenga el resultado de una consulta:^

. De forma predeterminada, los

nombres y los tipos de datos de las columnas se infieren del resultado de la consulta. Si seomite la cláusula^

, la tabla se crea pero no se rellena con datos (sin embargo, muchas implantaciones rellenan la tabla con datos de forma predeterminada incluso aunquese omita la cláusula

Los sistemas de bases de datos ofrecen una jerarquía de tres niveles para los nombres de lasrelaciones. El nivel superior de la jerarquía consta de

, cada uno de los cuales puede contener esquemas (las relaciones y las vistas, están contenidos en esquemas). Para realizarcualquier^ acción

sobre^ una^ base

de^ datos^ los^ usuarios

deben^ conectarse

a^ ella

proporcionando un

y^. Cada usuario tiene un

y un

predeterminados. Para identificar de manera única cada relación hay que utilizarun nombre con tres partes (^

y^ ), se pueden omitir algunas de estas partes debido a que se conoce la conexión. Para crear y eliminar esquemas se utilizan lassentencias^

y^. La creación y la eliminación de catálogos dependen de cada implementación y no forman parte de la norma de SQL.Se pueden asignar a los usuarios varios tipos de autorización para diferentes partes de labase de datos. Las autorizaciones sobre datos incluyen:

índice

índice clob

blob

alias de tipos (distinct

types)^ tipos de datos estructuradosestructuras de registro, arrays

multiconjuntos^

create type drop type^ alter typedominio

tipo de dominio tipo de datos

create table likewith datawith datawith data

catálogos nombre de usuario

contraseña^

catálogo

esquema

catálogo, esquema

relació create schema^ drop schema

n lectura de datos, inserción de datos

actualización de datosprivilegio

administrador de la base de datos

select (leer tuplas), insert (insertar tuplas), update (actualizar tuplas)

delete (eliminar tuplas)

all privilegesgrant public

publicusuario^ rol revoke roles funciones^ procedimientos

execute función^ procedimiento funciones^ procedimientos

sql

security invoker^

funciones^ procedimientosesquema de la base de datos

como crear^ borrar

relaciones, añadir

eliminar atributos

añadir^ eliminar índicesreferences

claves externas

borrado de datos y^ usuario^ rol

. Cada uno de estos tipos de autorización se

denomina^

, que se pueden establecer para relaciones y vistas. Cuando un usuario envía una consulta o una actualización SQL comprueba si el usuario está autorizado. Si laconsulta o actualización no está autorizada se rechaza. También existen autorizacionessobre los esquemas de la base de datos. Un usuario que disponga de alguna forma deautorización puede autorizar a otros usuarios o revocar autorizaciones. El último elementode autoridad es el

(puede autorizar nuevos usuarios,

reestructurar la base de datos y mucho más).La norma de SQL incluye los privilegios

y^

. El privilegio^

se utiliza para

conceder todos los privilegios. El usuario que crea una relación nueva recibe todos losprivilegios sobre esa relación. El lenguaje de definición de datos de SQL incluye comandospara conceder y revocar privilegios. La instrucción

se utiliza para conceder privilegios:

. El nombre de

usuario^ se utiliza para hacer referencia a todos los usuarios actuales y futuros delsistema. Los privilegios concedidos a

se garantizan a todos los usuarios actuales y futuros. De manera predeterminada, el

o^ al que se le concede un privilegio no está autorizado a concedérselo a otro

. SQL permite que la concesión de privilegios especifique que el destinatario puede concedérselos a otro usuario. Se pueden concederprivilegios sobre una relación completa o sobre determinados atributos, pero no sobretuplas concretas. La sentencia

permite revocar una autorización:

. La revocación

de privilegios resulta más compleja si el usuario al que se le revocan los privilegios se los haconcedido a otros usuarios.Las autorizaciones se conceden a los

de la misma forma que a los usuarios individuales. A cada usuario de la base de datos se le concede un conjunto de roles (que puede estar vacío).El uso de roles tiene la ventaja de requerir que los usuarios se conecten a la base de datos consu^ propio^ identificador.

También^ se^ pueden

conceder^ roles^

a^ otros^ roles.^ Todas

las

autorizaciones o privilegios que se concedan a un usuario se pueden conceder a un rol. Losroles se conceden a los usuarios igual que las autorizaciones. Los roles se pueden crear lasiguiente forma:^

. Los privilegios de un usuario o un rol constan de: todos los privilegios concedidos directamente al usuario o al rol, y todos los privilegios que seconcedan a los roles que se hayan concedido al usuario o al rol.El usuario que crea una vista no recibe todos los privilegios sobre ella, sino aquellosprivilegios que ya tiene. No se puede crear una vista en la que no se pueda conceder ningunaautorización. SQL soporta la creación de

y^

. El privilegio^

se

puede conceder a una

o a un^

, permitiendo a los usuarios ejecutarlos. Las^ y^

tienen todos los privilegios de su creador. La cláusula, permite ejecutar las^ y

con los privilegios del usuario en lugar de los privilegios de su creador (esto permite crear bibliotecas de funcionescon los mismos privilegios que quien las invoca).SQL especifica un mecanismo de autorización para el

: solo el

propietario del esquema puede realizar modificaciones en el mismo,

o y^

y^ o^

. SQL incluye un

privilegio de referenciar (

), que permite que un usuario declare cuando crea relaciones. El privilegio se concede sobre atributos concretos.

o Concesión y revocación de privilegiosgrant^

on^

to

revoke

on^

from lista de privilegios Roles create roleAutorización sobre vistasAutorizaciones sobre esquemas nombre de relación o de vista

lista de usuarios o de roles

lista de

privilegios^ nombre de la relación o nombre de la vista

lista de usuarios o de roles nombre rol

Autorización

ODBCLa norma^ SQL incorporado

define una API que pueden utilizar las aplicaciones para abrir conexiones con una base de datos, enviar consultas y actualizacionesy obtener resultados. Cada sistema de bases de datos compatible con ODBC proporciona unabiblioteca que se debe enlazar con el programa cliente. Cuando el programa cliente realizauna llamada a la API de ODBC, el código de la biblioteca se comunica con el servidor parallevar a cabo la acción solicitada y obtener los resultados. ODBC define funciones para unagran variedad de tareas (encontrar relaciones, nombres y tipos de atributos). La normaODBC define^

, que especifican subconjuntos de la funcionalidad definida por la norma. La norma de SQL define una interfaz delque es parecida a la interfaz de ODBC.La norma SQL define la incorporación de SQL en lenguajes de programación. El lenguaje enel que se incorporan las consultas SQL se denomina

y las estructuras de

SQL que se admiten en el

constituyen^

. Los programas

escritos en el lenguaje anfitrión pueden usar la sintaxis de

para actualizar y

tener acceso a los datos. Un programa con

debe ser procesado, antes de su

compilación,^ para

sustituir^ el^ SQL

incorporado^ con

declaraciones^ y

llamadas^ a

ODBC (open database connectivity)niveles de conformidad procedimientos del lenguaje anfitrión. El programa resultado se compila en el compiladordel lenguaje anfitrión. Esta es la principal diferencia entre SQL incorporado y JDBC u ODBC.Antes de ejecutar ninguna sentencia de SQL el programa debe conectarse con la base dedatos.

nivel de llamadas

call level

interface

lenguaje anfitrión lenguaje anfitrión

SQL incorporadoSQL incorporadoSQL incorporado

: CLI) Funciones y procedimientosSe pueden escribir funciones y procedimientos para almacenarlos en la base de datos ydespués invocarlos desde sentencias de SQL. Las funciones y los procedimientos permitenalmacenar la lógica de negocio en la base de datos y ejecutarla con sentencias de SQL. Sepueden definir^ utilizando

un^

de^ SQL^ o

. SQL permite la definición de funciones, procedimientos y métodos. La norma SQL soporta

que pueden devolver tablas como resultado. Las funciones^ evaluadas

sobre^ tablas^ pueden

considerarse^

que

generalizan el concepto de vista, permitiendo la introducción de parámetros. SQL tambiénpermite el uso de procedimientos. Las palabras clave

y^ indican, respectivamente,

parámetros que se espera que tengan valores asignados y parámetros cuyos valores seestablecen en el procedimiento para devolver en ellos los resultados. Se pueden invocar losprocedimientos mediante la sentencia

desde otro procedimiento de SQL o desde SQL incorporado. Los procedimientos y las funciones pueden invocarse desde SQL dinámico.SQL permite que haya más de un procedimiento o función con el mismo nombre bajodeterminadas condiciones.SQL soporta varias construcciones que le proporcionan casi toda la potencia de los lenguajesde programación de propósito general (PSM, es el nombre de la parte de la norma SQL quetrata de estas construcciones). Las variables se declaran utilizando la sentencia

y las

asignaciones se realizan mediante la sentencia

. Las sentencias compuestas son de la forma^

(una sentencia compuesta de la forma

asegura que

todas las sentencias se ejecutan como una única transacción). También se soportan lassentencias^

y^ , instrucciones condicionales

y la sentencia

. El

lenguaje procedimental de SQL también soporta la señalización de las

componente^ procedimental

un^ lenguaje

de

programación externo

funciones de tabla

vistas^ parametrizadasin out call

declare set begin… end^

begin atomic… end while, repeat^ for

if-then-else^

casecondiciones de

Declaración e invocación de funciones y procedimientos de SQLConstrucciones del lenguaje para procedimientos y funciones

excepción^ declaración de manejadoresextensiones procedimentales

lenguaje imperativoarenero disparador disparadores

disparadores

eventos disparadores

disparadores^

insert^ update disparadores

disparadordisparadoresdisparadoresdisparadores disparadores^

disparadores

y la^

que pueden tratar la excepción.

Las^

de SQL pueden no ser soportadas por algunas bases de datos, lo que obliga a tener que aprender un nuevo lenguaje para cada producto. Unaalternativa es definir los procedimientos en un

que se pueda llamar

desde consultas de SQL y definir disparadores. SQL permite definir funciones en lenguajesde programación más eficientes que las definidas en SQL (esto es útil cuando se pretendeeficiencia más que seguridad). Si la preocupación es la seguridad, el código se puede ejecutarcomo parte de un proceso diferente, comunicarle el valor de los parámetros y recuperar losresultados mediante la comunicación entre procesos (la sobrecarga de tiempo que supone lacomunicación entre procesos puede ser bastante elevada). Otra opción, que permitenalgunos leguajes, es ejecutar el código en un

(permite que el código tenga acceso a su propia área de memoria, pero se evita que ese código lea o actualice la memoria del procesode ejecución de la consulta, o tenga acceso a los archivos del sistema de archivos).Un disparador es una sentencia que el sistema ejecuta de manera automática como efectosecundario de la modificación de la base de datos. Para poderlo diseñar se deben cumplir dosrequisitos: especificar las condiciones en las que se va a ejecutar y especificar las accionesque se van a realizar. Una vez introducido un

en la base de datos, el sistema de bases de datos asume la responsabilidad de ejecutarlo cada vez que se produzca el eventoespecificado y se satisfaga la condición correspondiente.Los^

se pueden utilizar para implementar restricciones de integridad que no se pueden especificar utilizando SQL. También son útiles para alertar a los usuarios o parainiciar de manera automática ciertas tareas cuando se cumplen determinadas condiciones.En relación con la implementación de

en SQL, la mayoría de las bases de datos utilizan^ versiones

no^ estándar,^ pero

los^ conceptos^

son^ aplicables^ a

todas^ las

implementaciones. Los sistemas de bases de datos soportan diversos

Los^

se pueden activar antes del evento (

, delete o^

) en lugar de

después del evento. Los

que se ejecutan antes del evento pueden servir como restricciones adicionales que pueden impedir acciones no válidas. En lugar de dejar que laacción no válida proceda y genere un error, el

podría tomar acciones para corregir el problema de forma que las acciones fuesen válidas. Los sistemas de bases de datosbasados en SQL utilizan ampliamente los

Existen muchas aplicaciones para los

, pero algunas se manejan mejor con otras técnicas, por lo que es preferible evitarlos si existen alternativas. Los sistemas de basesde datos soportan diversas operaciones que pueden evitar los

. Otro problema

con los^

es la ejecución no pretendida de la acción disparada. Los

Rutinas en otros lenguajes Disparadores Necesidad de los disparadoresLos disparadores en SQL Cuándo no deben emplearse los disparadoresse deben escribir con cuidado, ya que un error detectado en tiempo de ejecución provoca elfallo de la instrucción. Además, la acción de un disparador puede activar otro disparador, loque puede dar lugar a una cadena infinita de disparos.

Consultas recursivasSea una relación que contiene información sobre “ Características de agregación avanzadas

” y los^

para cada

^ ”. El^

de dicha relación es otra relación que contiene todos los pares (^ ) tal que

es un^

directo o indirecto de

. Existen numerosas

aplicaciones que requieren el cálculo de

o^.

Se pueden escribir consultas utilizando la

. SQL permite la creación de tablas temporales^ utilizando

el^ comando^

estas^ tablas^ solo

están

disponibles dentro de la transacción que ejecuta la consulta, y se eliminan cuando latransacción termina. El uso de la cláusula

en una función garantiza que esta trabaje incluso en el caso (anormal) de que haya un ciclo de prerrequisitos (si

es un prerrequisito

de^ ,^ es un prerrequisito de

y^ es un prerrequisito de

No es práctico especificar el

empleando la iteración. Un enfoque alternativo es, utilizar^

. La norma de SQL soporta una forma limitada de recursión, que emplea la cláusula

, en la que las vistas se expresan en términos de sí mismas. Se pueden utilizar

para expresar de manera

concisa el^

. Todas las vistas recursivas deben definirse como la: una que no es recursiva y una consulta recursiva que utiliza la vista recursiva. La instancia resultante de la vista se denomina

de la definición (el término^ hace referencia al hecho de que ya no se producen más modificaciones). La vista, por tanto, se define para que contenga exactamente las tuplas de lainstancia del^

. Una restricción para la

en una^

es

que debe ser^

. Las^

no deben emplear constructores que puedan hacer que la consulta no sea

:^

sobre la vista recursiva,

sobre una subconsulta que utiliza la

y diferencia de conjuntos (

cuyo lado derecho utilice la

. El significado de las

se puede

definir mediante el

mientras la consulta recursiva sea (si la^

no es^ , el significado de la consulta resulta difícil de definir). SQL exige que las consultas sean monótonas. SQL también permite la creación devistas permanentes definidas de manera recursiva mediante el uso de

Existen tareas difíciles de implementar eficientemente con las características de agregaciónbásicas. En esta sección se estudian las características que se añadieron a SQL para manejarestas tareas.Dos tipos de consultas habituales son:

.^ Estas consultas son difíciles de

expresar (e ineficientes)

mediante las construcciones de SQL vistas hasta ahora. Para tratar el caso de varias tuplasque son iguales por el atributo o atributos de ordenación, las funciones

y

permiten dar la misma posición a todas las tuplas que son iguales (la segunda no crea huecosen el orden). Se pueden utilizar varias expresiones

para obtener la y la^

. Las funciones de clasificación se pueden utilizar para encontrar lasy las^ . Algunos sistemas de bases de datos permiten especificar directamente que solo se desean los

, o añadir una cláusula

al final de una sentencia de SQL para especificar que solo se generen las. Otras funciones son:

. Si existen

valores nulos, la definición de una clasificación se puede complicar, por lo que SQL permite

algo^ prerrequisitos algo^ cierre transitivoalgo, pre^

pre^ prerrequisito

algo cierres transitivos

jerarquíasiteración create^ temporary

table;excepta

b b^

e^ e^

a cierre transitivodefiniciones recursivas de las vistaswith recursiveconsultas recursivascierre transitivo

unión de dos

subconsultas^

consulta base

punto fijo

recursiva de la vista

fijo punto fijo^

consulta recursiva

vista recursiva monótona^ consultas recursivas

monótona^ agregación

not

exists^

vista recursiva^

except

vista recursiva^

vistas recursivas procedimiento recursivo

monótona

consulta recursiva

monótona encontrar la posición que ocupa un valor dentro de un conjunto grande de datos y encontrar el percentil en el que se encuentra un determinadovalor en^ un^ multiconjunto

rank^ denserank rank^

clasificación global

clasificación parcialprimeras n tuplas^

últimas n tuplas

primeros n resultados limit n^

primeras n

tuplas^

percent_rank, cume_dist, row_number y ntile(n)

create recursive view

Cierre transitivo mediante iteraciónRecursión en SQL Clasificación

especificar dónde se deberían ubicar los nulos utilizando

o^

Las^

calculan una función agregada sobre un intervalo de tuplas. Es útil, por ejemplo, para calcular un agregado sobre un intervalo fijo de tiempo; el intervalo detiempo se denomina una

. Las ventanas se pueden solapar, en cuyo caso una tupla puede contribuir a más de una

es un sistema interactivo que permite a los analistas ver diferentes resúmenes de

. Al solicitar los analistas

nuevos resúmenes se debe obtener una respuesta en línea en poco tiempo. OLAP se incluyeen productos como

y^

y en herramientas independientes. Para grandes cantidades de datos OLAP necesita que éstos se encuentren en una base de datos y requieresoporte para un preprocesado eficiente de los datos y para el procesamiento de consultas enlínea. En una relación utilizada para el análisis de datos se pueden identificar(miden algún valor) y

(algunos o todos los atributos restantes de la relación), estos últimos definen las dimensiones sobre las que observar losy los^

de los atributos de medida. Los datos que se pueden modelar comoy^

se denominan^

Para analizar los^

se puede requerir de una

). En general,^

es una tabla derivada de una relación en la que los valores de un atributo forman la cabecera de las filas y los valores de otro atributo forman lacabecera de las columnas y las celdas de la tabla se identifican como los correspondientes alos valores de dichos atributos (datos de medida). Este sería un caso de, que se puede generalizar a

(como

o

). Las son diferentes de las

, ya que el número de columnas

de las^

depende de los datos. Algunas implementaciones de SQL, como

y^

, soportan la cláusula

que

permite la creación de tablas cruzadas. SQL soporta las generalizaciones mediante laconstrucción^

para realizar las operaciones

y^. Las construcciones

y

en la cláusula^

permiten que se puedan realizar múltiples consultas en una única consulta devolviendo el resultado como una única relación.

nulls first^ nulls last

consultas de ventana

ventanaventana OLAP (sistema de procesamiento analítico en línea)

datos multidimensionales SQL Server^ Oracle

atributos de medida atributos de dimensión

atributos de

medida^ resúmenesatributos de dimensión

atributos de medida

datos multidimensionales datos multidimensionales

tabla-cruzada^ tabla

dinámica^

una tabla cruzada

tabla cruzada

bidimensional^

n-dimensiones^

cubos n-dimensionales

cubos de datostablas cruzadas

tablas relacionales tablas cruzadas

SQL Server^ Oracle

pívot

group by^

cube^ rollup^

cube

rollup^

group by^

group by

Ventanas OLAP Procesamiento analítico en línea Tablas cruzadas y tablas relacionalesOLAP en SQL

CALCULO RELACIONAL DE TUPLASEs un lenguaje de consulta no procedimental. Describe la información deseada sin dar unprocedimiento específico para obtenerla.Las consultas se expresan en el cálculo relacional de tuplas como:“El conjunto de todas las tuplas

tales que el predicado

es cierto para ” Notación:

valor de la tupla^

para el atributola tupla pertenece a la relación Existe una tupla^ de la relación

tal que el predicado

( ) es cierto: Para todas las tuplas

de la relación^ el predicado t^ P^^ ( ) es verdadero:

t t^ A t r t^ r^

Q t t^ r^

{^ }^ t | P(t) (Q( )) t^ r^ t Q t (Q( )) t^ r^ t

Consultas

t A [^ ] t^ r Î^ $^ Î "^ Î

Definición formalUna expresión del cálculo relacional de tuplas es de la forma:es una variable de tupla.es una fórmula construida a partir de átomos y operadores.En una fórmula pueden aparecer varias variables de tuplas.Una variable de tupla

es una^

si no está cuantificada por un

o por un

Una variable de tupla

cuantificada por un

o por un^ es una

Una^ se compone de

, que tienen las siguientes formas: , donde^ es una variable de tupla y

es una relación. , donde^ y^ son^

,^ es un^ sobre el que

está definida,

es un^ sobre el que

está definida y^

es un^

(^ ).^ e

deben tener dominios cuyos miembros puedan compararse mediante

?^ t? P???????????

t t s

r

∃^ ∀.

{^ /^ ( )} ∃^ ∀,

[ ]^ [^ ]

t^ P t s^ r s x^ u y^

s^ u^

x y^

x

∈^ Q y

Q^

< £ = > ³Q

variable libre

variable ligada

fórmula^

átomosvariables de tuplas

atributo^

s

atributo^

u^

operador de comparaci

n

s x^ s^

x c s r s s^ r^ s [ ]^ c

(P ( ) ) y^ (P ( )) Q^ Equivalencias

Q

∃^ ∀∈^

, donde^ es una^

,^ es un^ sobre el que

está definida, •^

es

un^

, y^ es una^

en el dominio del atributo x. Las^ se construyen a partir de átomos usando las siguientes reglas:Un átomo es una fórmula.Si^ es una fórmula, entonces también lo son ¬

y (^ ) Si^ y^ son fórmulas, entonces también lo son

y Si^ ( ) es una fórmula que contiene una variable de tupla libre

y^ una relación, entonces

También son formulases equivalente a ¬ ( ¬ (

)^ ¬(^ ))

(^ ( )) es equivalente a ¬

(¬^ ( ))

P^ P^ es equivalente a ¬(P )

P

P^

P^ P

P^ P^

P^ P^ P^ P^ P^

P

P^ s^

s^ r

P^ P^

P^ P

t^ r P^ t^

t^ r^ P^ t 1

1 1 1 2

1 2 1 2 1

2

1 1 2

1 2 1

∨^ ∧ 1

∧^

∀^ ∈^

∃^ ∈ ∨

,^ ®

variables de tupla^^1

atributo^

s

operador de comparaci

n^ constante fórmulas

CALCULO RELACIONAL DE DOMINIOSUsa variables de dominio que toman valores del dominio de un atributo. Una expresión en elcálculo relacional de dominios es de la forma:Donde:representan variables de dominioes una fórmula compuesta por átomosUn^ en el cálculo relacional de dominios tiene una de las formas siguientes:

donde^ es una relación en n atributos y

son o^

. ,^

(^ ). Se

exige que^ engan

. (^

) y .

Las^ se construyen a partir de

usando las reglas siguientes: Un átomo es una fórmula.Si^ es una fórmula, entonces también lo son ¬

y (^ ) Si^ y^ son fórmulas, entonces también lo son

y Si^ ( ) es una fórmula em

donde^ es una variable libre, entonces ?^ x , x ,... , x? P?????? También son formulas.Cuando el cálculo relacional de dominios se restringe a expresiones seguras es equivalente enpotencia expresiva al cálculo relacional de tuplas restringido a expresiones seguras. Dado quese observó anteriormente que el cálculo relacional de tuplas restringido es equivalente alálgebra relacional, los tres lenguajes siguientes son equivalentes: El álgebra relacional básica(sin las operaciones extendidas), el cálculo relacional de tuplas (restringido a expresionesseguras) y el cálculo relacional de dominios (restringido a expresiones seguras).

r^

x , x ,... , x

P^

P^ P

P^ P^

P^ P^ P^ P^ P^

P

P^ x^

x,^ x 1 2 n

1 2 n

1

1 1 1 2

1 2 1 2 1

2

?^ donde^ e^ son^^1

es un e^ t^ dominios que puedan compararse por medio dedonde^ es una^

,^ es un es una constante en el dominio del atributo correspondiente?

∨^ ∧ ,^ ®

{<^ ,^ , ... ,^ > | P(

,^ , ... ,^ )}

<^ >

x^ x^ x^ x^ x^ (^ ( ) ) y^ (P ( ))

x

x , x ,... , x^ r x x

x^ P^ x^ x^

x 1 2 n^1

2 n 1 2 n

1

Definición formal Potencia expresiva de los lenguajes

∈ Q

Q^

y^ x^ y x^ y c^ x^

c

∃^ ∀∈^ ∈

^1 átomo fórmulas^

átomos

variables de

dominio^ constantes de dominio

variables de dominio

operador de comparaci n variable de dominio

Q operador de comparaci n

Q

Q

Las^ expresiones^

del^ cálculo^ relacional

de^ tuplas^ pueden

generar^ relaciones

infinitas.

Supóngase que se escribe la expresión:Hay infinitas tuplas que no están en profesor. Para ayudar a definir las restricciones delcálculo relacional de tuplas se introduce el concepto de

de una formula relacional de

tuplas, P. De manera intuitiva, el dominio de

, denotado por^

, es el conjunto de todos

los valores a los que P hace r

implícita.

Por ejemplo, el dominio de

es el conjunto que contiene a

80.000 y el conjunto de todos los valores que aparecen en cualquier atributo de cualquiertupla de la relación profesor. Además,

es el conjunto de todos los valores

que aparecen en profesor, dado que la relación profesor se menciona en la expresión.Se dice que una expresión

es segura si todos los valores que aparecen en el resultado son valores de^

{t| ¬ (t^ profesor)}^ P^ dom(P) eferencia, ya sea de forma explıcita o t profesor^ t[sueldo] > 80000 ∈ ∧ dom(¬(t^ profesor)) ∈ ∈ {t| P(t)} dominio dom(P )

Diseño de bases de datos (I)Diseño de una base de datosFases de diseño

Alto nivel deabstracción cercanoal sistema realModelo lógico deorigen relacional u otropropio de la base de datosseleccionadaBajo nivel deabstracción propio dela implementaciónfísica del modelo DiseñoconceptualSeconvierteen DiseñológicoSecompilaen Diseñofísico

Existe primero una

en los que se estudian^ las^ necesidades

de^ datos^ de^ los posibles usuarios de la bases de datos. Eldiseñador de la base de datos interactúa conlos^ expertos^ y^ usuarios

del^ dominio^ para efectuar^ esta^ tarea.

A^ continuación

el diseñador^ elije^

un^

y aplicando los conceptos del modelo elegidotraduce^ estos^ requisitos

en^ un^ esquema conceptual de la base de datos, estede la base de datos proporcionauna visión detallada de la empresa. Se sueleemplear el modelo

indicando las^

que representan la base de datos, sus

, las entre ellas y las^

que les afectan. El diseñador comprueba que el esquema se

d fase inicial modelo^ de^ datos

iseño conceptual

Entidad-Relación (E-R)entidadesatributos^ relacionesrestricciones

adapta a los requisitos y no existen conflictos, elimina las características redundantes. El

completamente desarrollado indica lasen donde los usuarios describen los tipos de operaciones que se llevaran a cabo sobre los datos (^

, etc.)

El paso del^

a la implementación de la base de datos se divide en lay la fase de. El diseñador traduce el al^

de la base de datos a utilizar, este modelo suele ser el^

. En la fase de diseño físico se especifican las de la base datos (

y las ). El^

es fácil de modificarse, en cambio el

suele ser más

complicado por lo tanto es importante el diseño de esta fase.

e modelofase de

l^

característicos

esquema conceptualfísicas

specificaciones de requisitos

funcionalesactualización de datos, búsqueda, recuperación de datos concretos

abstracto de datosdiseño lógico^ diseño físico

esquema conceptual de

alto nivel^ modelo de datos de la implementaciónmodelo relaciona

organización de archivos

estructuras de almacenamiento interno^ modelo físico

modelo lógico

Alternativas de diseñoAl diseñar el esquema de una base de datos hayq ue asegurarse que se evitan dos peligrosimportantes::^ un Modelo Entidad-Relación (E-R)

mal^ diseño^ puede

repetir^ información,

esto^ puede^ generar

una

Redundancia inconsistencia si dicha información se actualiza sin tener la precaución de actualizar todaslas copias de la misma.: un mal diseño puede hacer que determinados aspectos de la empresa ncompletitud I resulten difíciles o imposibles de modelar.El^ emplea tres conceptos básicos: los

, los

y^. También se le asocia una representación en forma de diagrama, los. : es un objeto del mundo real que es distinguible de todos

. Por ejemplo una

persona especifica, una empresa, una asignatura, etc. Pueden ser

(personas,

librosetc.) o^

(asignaturas, reservas de vuelo, etc).: es un conjunto de

del mismo tipo que comparten las mismas propiedades, o atributos. Por ejemplo el conjunto de todos los profesores de unauniversidad o estudiantes. Este concepto es abstracto, sin eludir a ningún conjunto deentidades individuales. El término

se refiere a la

colección real de entidades que pertenecen al conjunto de entidades en cuestión. Por ejemplo

los demás

modelo E-R^

conjuntos de entidades

conjuntos de

relaciones^ atributosdiagramas E-R

concretas

abstractas

entidadesextensión de un conjunto de entidades

Conjuntos de entidadesEntidadConjunto de entidades

el conjunto de los profesores reales de la universidad forma la

de entidades

profesor.: son las propiedades descriptivas que posee cada miembro de un conjunto deentidades. Por ejemplo los posibles atributos del conjunto de entidades

, puede ser

su I^

o y^. Su designación representa que la base de datos almacena información parecida relativa a cada

del^

Cada entidad tiene un

para cada uno de sus atributos.: Es una asociación es una asociación entre varias entidades. Por ejemplo la relaciónasocia a un profesor concreto con un estudiante concreto.: es una relación matemática entre n

2 entidades, cada una de ellas

tomadas de los conjuntos de entidades. Si

son^

, entonces un es un subconjunto de: donde^ es una

Por ejemplo consideremos dos

:^

y^ , cada uno con dos y^. Se define el

para denotar la asociación entre los y los^ , tal como muestra la siguiente figura:La asociación de conjunto de entidades se conoce como participación, es decir, los conjuntosde entidades

profesor

D, nombre, nombre_departament

sueldo tutor

profesor^ estudiante ID^ nombreprofesores^ estudiantes

(^ )^

en el conjunto de relaciones

. Un

de un esquema E-R representa una asociación entre las entidades citadas en laempresa real, que se está modelando.: es la función que desempeña una entidad en una relación, dado que los conjuntos deque participan en una

son distintos, los

están implícitos y no se

suelen especificar. Si los conjuntos de entidades de una relación no son distintos, es decir queel mismo conjunto de entidades participa en más de un conjunto de relaciones mas de unavez, con diferentes

, entonces se denomina

. En este

caso son necesarios los nombres explícitos para los

con el fin de especificar la manera en que cada entidad participa en cada ejemplar de la relación.

La figura muestra un conjunto de relaciones

con el atributo descriptivo fecha, que representa la echa en que un profesor se convirtió en un tutor de un alumno. Los conjuntos derelaciones que implican a dos conjuntos de entidades se denominan

(o de grado

E , E , … E dos). En general, la mayoría delos conjuntos de relaciones en un sistema de bases de datosson binarios.

tutor 1 2 n

extensión entidad conjunto de entidades

valor

E E ... E^ conjuntos de entidades conjunto de relaciones R

relaciónentidades^

atributos (^1) conjunto de relaciones tutor 2 n participan

R^ ejemplar de la

relaciónentidades^

relación^

roles roles^

conjunto de relaciones recursivoroles

binarios

Atributos RelaciónConjunto de relaciones

{(^ ) |^

,^ , …,^

e , e , … e^ e^ E

e^ E^ e^ En ∈ ∈^ ∈ 1 2 n 1 1 2 2 n

Conjunto de relaciones^ (^ )^ e , e , … e^1 2 n Rol Atributos descriptivos

profesor^

estudiante profesor^

estudiantefecha

profesorIDnombresueldo

tutor

estudianteIDnombretot_créd

Correspondencia de cardinalidades

profesorIDnombresueldo

tutor

estudianteIDnombretot_créd

profesorIDnombresueldo

tutor

Una estudianteIDnombretot_créd a^ una ,^ indica^

que^ un profesor puede ser tutor, comomucho, de un estudiante y unestudiante tener, como mucho,un tutor.

Una a varios , indica que unprofesor^ puede^ ser

tutor^ de varios^ estudiantes,

pero^ un estudiante tener, como mucho,un tutor.

Varios a uno , indica que unprofesor puede ser tutor, comomucho, de un estudiante, peroun^ estudiante^ tener

varios tutores. profesorIDnombresueldo

tutor

estudianteIDnombretot_créd

Varios a varios , indica que unprofesor^ puede^ ser

tutor^ de v a r i o s^ e s t u d i a n t e s

y^ u n e s t u d i a n t e^ t e n e r

v a r i o s tutores.Límites de cardinalidad

profesorIDnombresueldo

tutor

_estudianteIDnombretot_créd 1...10... Los_*^ diagramas^ E-R

también^ proporcionan

una^ forma^ de^ indicar

restricciones^ más

complejas sobre el número de veces que una entidad participa en una relación de un conjuntode relaciones. Una linea puede tener asociada una cardinalidad mínima y máxima, de laforma^ , donde

es el mínimo y^ el máximo de cardinalidad. El valor mínimo 1 indica que l ... h^ todas las entidades tienen al menos una relación con el conjunto de relaciones. Un valormáximo de 1 indica que la entidad participa, como mucho, en una relación, mientras un valormáximo de * indica que no existe límite.Por ejemplo en el esquema siguiente: l^ h De^ a^

hay una relación^

, luego todos los estudiantes deben tener al menos un^. De^

a^ es^

, luego un profesor puede ser

de 0 o más

estudiantes. Es decir, la relación tutor es

de^

a^ y, por tanto la

participación de^

a^ es una^

, lo que implica que un

tiene que tener un

. Por lo tanto el diagrama se podría alternativamente dibujar de la tutor^ estudiante siguiente manera:

1 ... 1tutor profesor^ estudiante^ *0 ... **

tutor una a varios^ profesor

estudiante estudiante^ tutor

relación total

estudiante

tutor profesorIDnombresueldo

tutor

estudianteIDnombretot_créd

RolesLos^ se indican en diagramas E-R etiquetando las líneas que conectan rombos con^ roles rectángulos. Las etiquetas de papeles son opcionales y se utilizan para aclarar la semánticade la relación.

prerreq asignaturaasignatura_IDnombre_asigcréditos Conjunto de relaciones no binarias

profesorIDnombresueldo

proy_direc

estudianteIDnombretot_créd proyecto......... En este diagrama se muestra una relación terciaria entre

,^

y^ ,

relacionadas por las relaciones

profesor^ estudiante

proyecto proyec_director^

En el caso de conjuntos de relaciones no binarias se pueden especificar algunos tipos de relaciones varios a uno. Supongase que unpuede tener a lo sumo, un

como^

, en este caso se

puede especificar mediante una flecha que apunte a

en la linea desde

estudiante^ Como máximo, para evitar ambigüedades como máximo se permite una flecha desde cadaconjunto de relaciones, ya que los diagramas E-R con dos o más flechas salientes de cadaconjunto de relaciones no binarias se pueden interpretar de varias formas.

profesor^ director de proyectoprofesor

proy-direc

Conjunto de entidades débilesSe denomina^

a los conjuntos de entidades que no tienen suficientes atributos para formar una

.^

Los conjuntos de entidades de

entidades que tienen una

se denominan

Para que un conjunto de entidades débiles tenga sentido debe estar asociado con otroconjunto de entidades, denominado

o^.

Cada entidad débil debe asociarse con una entidad identificadora; es decir, se dice que unconjunto^ de^ entidades

débiles^

del^ conjunto^ de^

entidades

identificadoras. Se dice que el conjunto de entidades identificadoras es

del

conjunto de entidades débiles al que identifica. La relación que asocia el conjunto deentidades débiles con el conjunto de entidades identificadoras se denomina. El^

(o clave parcial) de un

es el conjunto de

atributos que lo distinguen entre todas las entidades de un conjunto de entidades débiles. Lade un

se forma con la^

del

del que depende la existencia del conjunto de entidades débiles, más el discriminador de dicho conjunto de entidades débiles.En los diagramas E-R, un conjunto de entidades débiles se dibuja con un rectangulo, como unconjunto de entidades fuerte, pero con dos diferencias: El

de una entidad

débil se subraya con una linea discontinua, y el conjunto de

con

conjunto de entidades débiles un.

clave primariaclave primaria conjuntos de entidades fuertesconjunto de entidades identificadoras

propietarias depende^ existencialmente

propietariorelación

identificadoradiscriminador^

conjunto de entidades débil clave primaria^

conjunto de entidades débiles

clave primaria

conjunto de entidades fuertes

discriminadorrelaciones identificadoras

rombo dobleasignaturaasignatura_IDnombre_asigcréditos

secc_asignatura

secciónseccion_IDsemestreaño

franja_horaria_idfranja_horaria_ID{ díahora_iniciohora_fin}

Reducción a esquemas relacionales

estudianteIDnombretot_créd franja_horaria_idfranja_horaria_ID{ díahora_iniciohora_fin} tutor secciónsecc_IDsemestreaño asignaturaasignatura_IDnombre_asigcréditos

departamentonombre_deptedificiopresupuesto aulaedificionúmero_aulacapacidad enseña^

matricula secc_franja_horaria secc_aula

nota

asignatura_dept prerreqprerreq_idasignatura_id

estructura_dept profesor_deptprofesorIDnombresueldo secc_asignatura Diagrama E-R para una universidad Las bases de datos que se ajustan a un

se pueden representar

mediante^

. Para cada^

y para cada

de la base de datos hay un solo

a la que se asigna

el nombre del conjunto de entidades o del conjunto de relaciones correspondiente.Se^ un conjunto de

con los atributos descriptivos

. Esta entidad

se representa mediante un esquema denominado

con^ atributos distintos, y la clave E primaria es la misma.

esquema de bases de datos E-RE^ n conjuntos de esquemas de relación

conjunto de entidades conjunto de relaciones

esquema de relación entidades fuertes^

a , a , ..., a^1 2 n

Representación de los conjuntos de entidades fuertes con atributos simplesRepresentación^ de

los^ conjuntos^ de

entidades^ fuertes

con^ atributos

complejosSupongase^ que^

tenemos^ los^ siguientes

atributos^ compuestos (^

[^

]

[ ]) multivalorados (^

) y derivados (^

) para el

conjunto de relaciones de profesor. En este caso losse tratan como los simples es decir incluyendolos en el esquema derelación. Para los^

es necesario crear nuevos esquemas de relación^ para^ ellos.

Para^ los^

no^ se^ representan nombre, primer_apellido y segundo_apellido

y

nombre_profesor(calle_nombre, calle-número), ciudad, provincia, códigodirección^ callepostalnúmero_teléfono

edad()atributos compuestos multivaloradosatributos

derivados

explícitamente en el modelo de datos relacional, sin embargo, se representan comoen otros modelos de datos, como el objetivo-relacional.Así el esquema relacional para el conjunto de entidaes profesor queda:En donde no se ha incluido el

, ni el derivado. Para en , se crea un esquema de relación

con un atributo^

que corresponde a

y

a los atributos correspondientes a la

del conjunto de^

o de

del que^ es atributo. En

el^

es número_teléfono

y la clave primaria es ID, luego se crea el siguiente esquema de relación:En el caso que el conjunto de entidades constara solo de dos atributos, un atributo dey un único

, el esquema de relación para el conjunto de entidades debería contener solamente un atributo, el atributo de la clave primaria B. Sepuede eliminar esta relación manteniendo el esquema de relación con el atributo B y elatributo A que corresponda con M.Ya que no pueden haber dos convocatorias en el mismo día de la semana, empiecen a lamisma hora y que terminen a horas distintas se ha eliminado el atributo

de la

del esquema^

Sea^ un conjunto de

con los atributos^

. Sea^ el del que^ depende. La

de

consiste en los atributos

. El conjunto de entidades

se representa mediante el esquema de relación denominado con un atributo por cada miembro del conjunto:

{^ }^ {^

Para los esquemas derivados de conjuntos de entidades débiles la combinación de ladel^

sirve de clave primaria para el esquema. Además se crea una^

para la relación^ , que especifica que los atributos hacen referencia a la clave primaria de la relación

. Considerese el conjunto de entidadesdébiles^ , este conjunto tiene poratributos^

y^ que constituyen su^

. La del^ conjunto^ de^

entidades

, del que depende^

, es^

, por lo tanto: profesor(^ , nombre, primer_apellido, segundo-apellido, calle_nombre, calle_número, ,piso, ciudad, provincia, código_postal, fecha_de_nacimiento, sueldo)

R^ A

M

M^ profesorprofesor_teléfono (ID, número_teléfono)

hora_final

A^

B

A^

B

A^

A

a , a , ..., a^ b , b , ..., b

AB secciónsecc_ID, semestre

año,

sección^

sección^ asignatura_idsección(asignatura_id,

,^

,^ )

ID

È 1 2 m 1 2 n secc_id semestre año

métodos atributo multivalorado

atributo

multivalorado M

clave primaria^

entidades

relaciones^

atributo multivalorado B^ atributo multivalorado M clave primaria^

franja_horariaentidades débiles^

a , a , ..., a^

conjunto de

entidades fuertes^

clave primaria^

b , b , ...,

b

clave

primaria^ conjunto de entidades débilesrestricción de clave externa

b ,

b , ..., b

discriminador^

clave primaria

clave

primaria

1 2 m

1 2

n

1

Representación de los conjuntos de entidades débiles^2 n

estudiante(^ , nombre, tot_creditos)ID estudianteID^ Þ nombretot_créd

franja_horaria(^

,^ ,^ , hora_final) franja_horaria_id dia hora_inicio Þ

Uso de conjuntos de entidades en lugar de conjuntos de relacionesConjuntos de relaciones binarias y

n-arias No siempre está claro si es mejor expresar un objeto mediante un conjunto de entidades omediante un conjunto de relaciones. Consideremos el caso del conjunto de relacionesmatrícula para modelar la situación en la que un estudiante se matricula de una sección deuna asignatura:Una alternativa es pensar que existe un registro de los registros-asignatura de cada curso enque^ se^ matricula

un^ estudiante.^

Esta^ entidad^ la^

denominamos^

que^ estará

relacionada con exactamente un estudiante y una sección, luego hemos sustituido losconjuntos de entidades

y^

, por tres y^ , y dos^

y^ :

Siempre es posible sustituir un conjunto de relaciones no binarias (

, para n > 2) por un

determinado número de conjuntos de relaciones binarias distintas. Por ejemplo en un(n=3)

y los^

, se sustituye el por un^

y se crean tres^

relacionando^ y^

,^ , relacionando

y^ , y^ , relacionando

y^. Se crea un a especial para^ , se añade cualquier atributo de

a^. Por cada relación (

) en^ , hay que crear una entidad nueva

en el conjunto de entidades

, añadir (^ ) a

añadir (^ ) a^ y añadir (

) a^. Este proceso se puede generalizar al conjunto de todas las relaciones

, de forma que se

puede, conceptualmente, restringir el modelo E-R a que solo incluya relaciones binarias.pero esta restricción no siempre es deseable, ya que es posible que sea necesario crear unatributo de identificación para el conjunto de entidades represente el conjunto de relaciones.Este atributo, junto con el conjunto de relaciones, complica el diseño. Además un conjunto derelaciones^

muestra más claramente que varias entidades participan en una sola relación.Puede que no haya forma de traducir las restricciones a la relación terciaria en restriccionesa las relaciones binarias. Por ejemplo considerese una restricción que dice que

registro^ es del tipo sección^ estudiante

sección,

estudiante^ registro

sección_reg^ estudiante_reg n-aria R

R

E^ A^

E^ B^

E^ C

E^

R^ E^

a , b ,

c^ R^

e^

E^ e , a

e , b^

e , c

n-arias

n-arias

A i i R

i^

i^

i

i^ i^

i^ i

i conjuntos de entidades conjuntos de relaciones sistema ternario^

conjuntos de entidades A

B^ C^

conjunto de

relaciones R^

conjunto de entidades E

conjuntos de relaciones

tributo de

identificación

,^ y R^

R

R

R^

B^ C R

A

B^

C

varios a uno de^

y^ ; es decir, cada par de entidades de

y de^ se asocia, a lo sumo, con una

entidad de^. Esta restricción no se puede expresar mediante restricciones de cardinalidadsobre los conjuntos

La^

de una relación puede afectar a la ubicación de sus atributos de las relaciones, por lo tanto, los atributos de los conjuntos de relaciones

o

pueden estar asociados con uno de los conjuntos de entidades participantes, en lugar que enel conjunto de relaciones. La decisión de diseño sobre su ubicación de los atributosdescriptivos en estos casos, como atributo de relación o de la entidad, debe reflejar lascaracterísticas de la empresa que se modela. Así por ejemplo,

es un conjunto de

relaciones uno a varios tal que cada profesor puede tutelar a varios estudiantes, pero cadaestudiante tiene como tutor un solo profesor.El atributo^

que describe cuando un estudiante pasó a ser tutelado por un profesor, puede asignarse tanto a la entidad

como a la entidad

(ver figura), ya que

su asignación en una u otra tiene el mismo significado.Los atributos de un conjunto de relaciones

solo se pueden recolocar en el conjunto de entidades de la parte de “varios” de la relación. Para el conjunto de entidades, los atributos de relación se pueden colocar en cualquiera de las entidadesparticipantes.En este apartado se estudian alguna

, tales como la

, la^

,^

y^. Para facilitar el contenido se usará un esquema de bases de datos en el que las distintas personas de la universidad se modelarán a traves del conjuntode entidades^

, con atributos^

y^. A, B^ C^

A^ B

C

tutor

fecha,

profesor^

estudiante personas^ R^ R^ R ,^ y A^ B^ C ID, nombre^ dirección Ubicación de los atributos de las relaciones^ razón de cardinalidad

uno a uno^ uno a varios uno a varios uno a uno

características extendidas del modelo E-R especialización^

generalización^ conjuntos de entidades de nivel superior e inferior herencia de atributos

agregación

Características del modelo E-R extendido

matricula

estudianteIDnombretot_créd secciónsecc_IDsemestreaño sección_reg

estudianteIDnombretot_créd secciónsecc_IDsemestreaño

registro...estudiante_reg...... A B CR

AA R^ RA R R^ B CRB ECB C

profesor^

fechaestudiante profesor^

fechaestudiante (^) personaIDIDnombrenombredireccióndirección

EspecializaciónLos conjuntos de entidades pueden incluir subgrupos de entidades que se diferencian dealguna forma de las demás entidades del conjunto. Por ejemplo el conjunto de entidadespuede clasificarse como empleado y estudiante. Cada uno de estos tipos de personase describe mediante un conjunto de atributos que incluye todos los atributos del conjunto deentidades^ Generalización

más otros atributos adicionales, como

para empleados o

para estudiantes entre otros. El proceso de crear subgrupos dentro de un conjunto deentidades se conoce por el nombre de

. La especialización puede refinarse más, así por ejemplo, los empleados de la universidad se pueden clasificar a la vez eny^ , con sus correspondientes nuevos atributos.La forma en que se dibuja la especialización en un

depende de si una entidad puede pertenecer a varios conjuntos de entidades especializados o si debe pertenecer, comomucho a un conjunto de entidades especializadas. Se llama

al caso

en que se permiten varios conjuntos y

cuando se pertenece a uno

como^ mucho.^ Para

la^

se^ usan^

y^ para^ la

se usa una^

y^ como especialización de persona son

y^ como especialización de empleado son

El refinamiento a partir de un conjunto de entidades inicial en sucesivos niveles desubgrupos de entidades representa un proceso de diseño

en el que

las distinciones de hacen explicitas. El proceso de diseño también se puede proceder deforma^

, en el que varios conjuntos de entidades se sintetizan en un conjunto de entidades de nivel superior basado en características comunes.La^

es una relación de contención que existe entre el conjunto de entidades dey uno o varios conjuntos de entidades de

Por ejemplo

es un conjunto de entidades de nivel superior y

y^

de nivel inferior, en este

caso, los atributos que son conceptualmente iguales tienen nombres diferentes en los dosconjuntos de entidades de nivel inferior.Los conjuntos de entidades de

e^

también se pueden denominar con los

términos^

y^. El conjunto de entidades

es una superclase de las

subclases^

y^. A efectos prácticos la

es una inversión simple de la

. Se

aplicarán ambos procesos combinados en el transcurso del diseño del esquema E-R de unaempresa. En términos del propio diagrama E-R no se distingue entre especialización ygeneralización.^ Los

niveles^ nuevos^

de^ representación

de^ las^ entidades

se^ distinguen

personapersona (especialización) o sintetizan (generalización). cuando ele squema de diseño llaga a expresarcompletamente la aplicación de la base de datos y los requisitos del usuario de la base dedatos. Las diferenciuas entre los dos enfoques se pueden caracterizar mediante su punto departida y su objetivo global.

sueldo^

tot_crédprofesor

secretaria estudiante^ empleadoprofesor^ secretaria nivel superior^

nivel inferior.^

empleado profesor^ secretariapersona estudiante^ empleado

especializacióndiagrama E-R

especialización solapada especialización disjuntaespecialización^ solapada^

flechas^ separadas

especialización disjunta

sola flecha

descendente (top-down) ascendente (bottom-up)generalización

nivel superior^ inferior superclase^ subclasegeneralización

solapadasdisjuntas especialización

Herencia de los atributosSe dice que los atributos de los conjuntos de entidades de nivel superior sonRestricciones a las generalizaciones

por

los conjuntos de entidades de nivel inferior. Por ejemplo

y^

heredan los

atributos^ de^

(^

).^ Así,^

) y^ (^

). La herencia de los atributos de aplica en todos los niveles de los conjuntos de entidades de nivel inferior, así

En el diseño de una base de datos se necesitan una serie de restricciones sobre unageneralización concreta.Un tipo de restrición que implican la determinación de las entidades, que pueden formarparte de un conjunto de entidades de nivel inferior dado, esa pertenencia puede ser una de lassiguientes:

: En los conjuntos de entidades de nivel inferior definidos por la condición, la permanencia se evalúa en función del cumplimiento de una condición opredicado explicito por la entidad. Por ejemplo, el conjunto de entidades de nivel superiortiene un atributo

, solo las entidades que satisfagan la condición= “ ” pueden pertenecer al conjunto de entidades de nivel inferior. Dado que las entidades de nivel inferior se evalúan por un atributo en ocasiones este tipo de generalización se denomina

: Los conjuntos de entidades de nivel inferior definidos por el usuario no están restringidos por la condición de permanencia; más bien, el usuario de la base dedatos asigna las entidaes a un conjunto de entidades dado.Un segundo tipo de restricciones tiene relación con la pertenencia de las entidades a más deun conjunto de entidades de nivel inferior de la generalización. Los conjuntos de entidadesde nivel ingerior pueden ser de una de los tipos siguientes:: La^

exige que cada entidad no

pertenezca a más de un conjunto de entidades de nivel inferior de generalización.: En las^

la misma entidad puede pertenecer a más de un conjunto de entidades de nivel inferior de la generalización.Una^ ultima^ restricción

es^ la^

sobre^ la^ generalización

o

especialización, especifica se una entidad o conjunto de entidades de nivel superior debepertenecer,^ al^ menos

a^ uno^ de^ los^ conjuntos

de^ entidades^ de

nivel^ inferior^ de

la

generalización o especialización. Esta restricción puedes er de uno de los tipos siguientes:

estudiante^ empleado persona^

estudiante^ ,^ nombre,

dirección,

tot_créd^ empleado

profesor

estudiante^

tipo_estudiante tipo_estudiante^

graduado estudiante_graduado

heredadosID

Definida por la condición

definida por atributo Definida por usuarioDisjuntos^ restricción sobre la condición de disjunciónSolapados^

generalidades solapadasrestricción

de^ completitud IDID

ID

,^ nombre,^ dirección, nombre, dirección, salario

, nombre,

dirección, salario, rango

participa^

persona_dept^

departamento estudiante, empleado, profesor

secretaria ), tiene los atributos de empleado más rango que es propio de profesor.Los conjuntos de entidades de nivel inferior heredan también la participación en losconjuntos de relaciones en las que participa la entidad de nivel superior. Por ejemplo, si elconjunto de entidades persona

en una relación

con

Entonces, los conjuntos de entidades

y^ , que son

subclases de los conjunto de entidades persona participan en esa relación.Por lo tanto:Un conjunto de entidades de nivel superior con los atributos y relaciones que se aplican atodos sus conjuntos de entidades de nivel inferior.Conjuntos de entidades de nivel inferior con características distintivas que solo se aplicanen un conjunto dado de entidades de nivel inferior.La figura de al lado representa una

de conjuntos de entidades. En este diagrama las entidades poseen^

, si el conjunto de entidades tiene

la

estructura resultante se denomina

??

jerarquíaherencia única

herencia múltiple retículo

personaIDIDnombrenombredireccióndirecciónestudiantetot_creditos empleadosueldo secretariaprofesorhoras_semana rango

relación creada a partir del conjunto de entidades de nivel superior. En el ejemplo, el atributode^ haría referencia a la clave primaria de

y similar para

2.- Es posible una representación alternativa si la generalización es disjunta y compleja, esdecir, si no hay ninguna entidad miembro de dos conjuntos de entidades de nivel inferiordirectamente por debajo de un conjunto de entidades de nivel superior, y si todas lasentidades del conjunto de entidades de nivel superior también pertenecen a uno de losconjuntos de entidades de nivel inferior. En este caso no se crea un esquema pare el conjuntode entidades de nivel superior. En vez de esto se crea para cada conjunto de entidades de nivelinferior un esquema que incluye un atributo por cada atributo de ese conjunto de entidadesmás un atributo por

atributo del conjunto de entidades de nivel superior. En el ejemplo sería: ID es el atributo de clave primaria del conjunto de entidades de nivel superior

como

calve primaria. El inconveniente del método es la definición de a restricciones de claveexterna. El^ diseño^ de^ esquemas para

los^ diagramas E-R

que^ incluyen^ agragación es

sencillo.

Considerase el diagrama d ela figura, el conjunto de relaciones

entre la agragación

de^ y el conjunto de entidades

incluye un atributo para cada atributo de las claves primarias del conjunto de entidades

y del conjunto de relaciones

. También incluye un atributo para los atributos descriptivos, si los hay, delconjunto de relaciones^ . Entonces, se transforman los conjuntos de relaciones y de ID^ empleado^ entidades de la entidad agragada siguiendo las reglas que se han definido anteriormente.Las reglas que se han visto anteriormente referidas a la creación de restricciones de claveprimaria y externa para el conjunto de relaciones, se puede aplicar también a lso conjuntosde relaciones que incluyen agragación, tratando la agregación como cualquier otra entidad.La clave primaria de la agragación es la clave primaria del conjunto de relaciones que ladefine. No hace falta ninguna relación más para que represente la agregación; en vez de eso,se usa la relación creada a partir de la relación definidora.

persona^

estudiante

cada

persona eval_para

proy_direc^

evaluaciónevaluación proy_direc

eval_para empleado(^ , nombre, dirección, sueldo)IDestudiante(^ ,nombre, dirección, tot_créd)ID Representación de la agregación

profesorproy_direc

estudiante proyecto eval_para evaluación

E R R R E nombre-rol^ ER

E R R R l ... hR

conjunto de entidadesconjunto de relacionesconjunto de relacionesidentificador de unconjunto de entidadesdébilesparticipación total delconjunto de entidadesen la relaciónindicador de rol

relación varios a variosrelación varios a unorelación uno a unolimites de cardinalidad

E1E1ES: generalizacióno especializaciónE3E2E2 E3 E1E1generalización disjuntaE2 E3E2 E3 E1E1generalización totaltotal ...(disjunta)E2 E3E2 E

E atributos: simple (A1),A1compuestos (A2)A2y multivalorado (A3),A2.1derivado (A4)A2.2{A3}A4() Eclave primariaA1 atributo discriminadorEen un conjunto deA1entidades débiles

Símbolos usados en la notación E-R

Notaciones alternativas para el modelado de datosNotaciones E-R alternativasEn la figura siguiente se muestran algunas

de las notaciones de diagrama E-R alternativas que se usan habitualmente.

Lenguaje de modelado unificado UML^ objetos

conjunto^ de

relaciones^

asociaciones La figura siguiente muestra varios constructores de diagramas E-R y sus constructoresequivalentes de diagramas de clases de UML. UML modela objetos, mientras que E-R modelaentidades. Los^

son como entidades y tienen atributos, pero tambien proporcionan un conjunto de funciones (métodos) que se pueden invocar para calcular valores con base en lsoatributos de los objetos o para actualizarlos. UML no admite atributos compuestos nimultivalorados^ y^

los^ atrivutos^ derivados

son^ métodos^ sin

atributos.^ El se conoce en UML como

E^

E

RE

E

R R

E^

E

*^

1

RE

E

R

E^

E

1

1

RE

E

R

E^

E

*^

*^

RE

E1 relación varios a variosrelación uno a unorelación varios a uno participación en R: total (E1) y parcial (E2)

A2.1^ A2.2 A2 E

A^

A3 A

conjunto de entidades débiles

ES^ generalización^ generalización total

ES

conjunto de entidades Econ atributos simples A1atributos compuestos A2atributos multivalorados A3atributos derivados A4y claves primarias A

Notación diagrama ER

Equivalente en UML

entidad con atributosE(simples, compuestosA1multivaloradosy derivados)M1() A1 RE1 E

clase con atributosEy métodos (atributos con- A1prefijos: + = público- = privado, # = protegido)+M1()

RE1 rol1 rol

E

rol1^ rol

Rrol1 rol2E1 E2 R A1 rol1 rol2E1 E relación binaria atributos de relaciónR E^

E

0 ... *^ 0 ... 1

0 ... 1^ R0 ... *E1 E

restricciones de cardinalidadR E

E2 E3 relaciones n- arias

E2 RE1E

E1E1 E3E2 E3E2 E1E1 E3E2 E3E

E1E1 E3E2 E3E2 E1E1 E3E2 E3E

generalización solapadageneralización disjunta

solapamiento disjunción