

























































Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Prepara tus exámenes
Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Prepara tus exámenes con los documentos que comparten otros estudiantes como tú en Docsity
Encuentra los documentos específicos para los exámenes de tu universidad
Estudia con lecciones y exámenes resueltos basados en los programas académicos de las mejores universidades
Responde a preguntas de exámenes reales y pon a prueba tu preparación
Consigue puntos base para descargar
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Comunidad
Pide ayuda a la comunidad y resuelve tus dudas de estudio
Ebooks gratuitos
Descarga nuestras guías gratuitas sobre técnicas de estudio, métodos para controlar la ansiedad y consejos para la tesis preparadas por los tutores de Docsity
Asignatura: Bases de datos, Profesor: , Carrera: Ingeniería en Tecnologías de la Información, Universidad: UNED
Tipo: Apuntes
1 / 65
Esta página no es visible en la vista previa
¡No te pierdas las partes importantes!


























































: 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
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
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.
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.
r
Muestra el atributo
de la relación^ que satisfagan determinado predicado
A^ r^
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
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
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
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
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
= 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
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
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.
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).
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:
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
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
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
” 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
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
t A [^ ] t^ r Î^ $^ Î "^ Î
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
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
, 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^ s^
s^ r
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
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^ 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?
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
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
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 )
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
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
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}
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)
M^ profesorprofesor_teléfono (ID, número_teléfono)
hora_final
A^
a , a , ..., a^ b , b , ..., b
AB secciónsecc_ID, semestre
año,
sección^
sección^ asignatura_idsección(asignatura_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
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
conjunto de
relaciones R^
conjunto de entidades E
conjuntos de relaciones
tributo de
identificación
,^ y 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^
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
matricula
estudianteIDnombretot_créd secciónsecc_IDsemestreaño sección_reg
estudianteIDnombretot_créd secciónsecc_IDsemestreaño
registro...estudiante_reg...... A B CR
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
,^ 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
Símbolos usados en la notación E-R
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
*^
1
1
1
*^
*^
E1 relación varios a variosrelación uno a unorelación varios a uno participación en R: total (E1) y parcial (E2)
conjunto de entidades débiles
ES^ generalización^ generalización total
conjunto de entidades Econ atributos simples A1atributos compuestos A2atributos multivalorados A3atributos derivados A4y claves primarias A
RE1 rol1 rol
rol1^ rol
Rrol1 rol2E1 E2 R A1 rol1 rol2E1 E relación binaria atributos de relaciónR E^
0 ... *^ 0 ... 1
restricciones de cardinalidadR E
E2 E3 relaciones n- arias
generalización solapadageneralización disjunta
solapamiento disjunción