Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Cap 3 BD
Cap 3 BD
3. Principales ventajas del modelo relacional: Simplicidad. Base matemtica (teora de conjuntos). Soporte de lenguajes declarativos. Facilidad de combinacin de operaciones. 3.1.1 Conceptos, Terminologa, Propiedades Relacin: Subconjunto del producto cartesiano de uno o ms dominios.
de los dominios Di i = 1, k y corresponde al conjunto de todas las k-tuplas (V1, V2, ...., Vk ) tal que: V1 D1 V2 D2 Vk Dk
En base de datos se supone que las relaciones son finitas (pueden ser vacas). Ejemplo: D1 = {manzana, naranja, pera} D2 = {rojo, amarillo, anaranjado} D1 x D2 = {(manzana, rojo), (manzana, amarillo), (manzana, anaranjado), (naranja, rojo), (naranja, amarillo), (naranja, anaranjado), (pera, rojo), (pera, amarillo), (pera, anaranjado)} R1 = {(manzana, rojo), (pera, amarillo), (naranja, anaranjado)} D1 x D2 (manzana, rojo) R1, se denomina tupla.
3.
Una relacin puede ser visualizada como una tabla, en la cual cada fila representa una tupla y en cada columna hay una componente. Los nombres de las columnas se denominan atributos. El conjunto de atributos de una relacin es el Esquema de la Relacin. El esquema de una relacin R, con atributos A1, A2,...., Ak se denota como: R (A1, A2,...., Ak) Ejemplo:
dominios
Nombre de la relacin
atributos
Ejemplo: Considerando el ejemplo de las frutas y colores. Se puede definir la relacin Frutas, con atributos nombre y color.
Al usar nombre de atributos, el orden deja de ser importante => diferencias respecto al modelo matemtico de R D1 x D2 x ... x Dk
(rojo, manzana) (manzana, rojo) No hay cambio en la semntica de los datos (el rearreglo de las columnas no tiene efecto en el significado de las tuplas).
Concepto de dominio Los conceptos atributo y dominio son distintos. Todos los valores que aparecen en un tipo especfico de campo o columna, son valores de algn atributo. Estos valores pertenecen al dominio de todos los valores posibles del atributo. (Ver ejemplo en la figura 3.2)
PRODUCTO costo
PERSONAL sueldo
Fig. 3.2 El atributo costo de la tabla PRODUCTO toma sus valores del dominio del Dinero. El atributo sueldo PERSONAL tambin toma sus valores del dominio del Dinero.
3. Terminologa Relacin: Atributo: Tupla: Grado: Cardinalidad: Tabla. Columna. Fila. Nmero de columnas en la tabla. Nmero de filas de la tabla.
Aridad.
Propiedades de una relacin a) En un sistema relacional, la tabla puede contener slo un tipo de registro (tupla). Cada tupla tiene un nmero fijo de atributos, todos ellos con un nombre explcito. La base de datos generalmente contendr muchas tablas, de forma que las diferentes clases de tuplas se encontrarn en tablas diferentes; una tabla por cada tipo de tupla. b) Dentro de la tabla, cada atributo es distinto y el valor asociado a cada instancia del atributo debe ser simple (es decir, es un nico valor). c) Cada tupla de una relacin es nica, no hay tuplas duplicadas. d) El orden de las tuplas dentro de la tabla no est determinado. Las tuplas pueden venir en cualquier orden; no hay una secuencia determinada previamente. e) Para cada atributo definido, existe un conjunto de valores que forman el dominio.
3.
f) Se pueden crear nuevas tablas, relacionando valores de atributos procedentes de tablas ya existentes; la formacin de nuevas tablas, a partir de las existentes es la esencia del proceso relacional.
Dominio: Representa el conjunto de los valores posibles que pueden aparecer en un atributo (columna).
Claves (Keys): Superclave: Una superclave es un atributo o un conjunto de atributos que identifica a una nica fila dentro de una tabla. No exige la caracterstica de ser mnima.
Clave candidato: Es un atributo o conjunto mnimo de atributos que identifica a una nica fila dentro de la tabla.
Clave primaria (Primary Key): Es una clave candidato que es escogida por el diseador de la base de datos para identificar a las filas dentro de una tabla. Definicin informal: La clave primaria de una tabla es un atributo o una combinacin de atributos de la tabla que puede ser usado como un identificador nico para los registros de la tabla. Definicin formal: La clave primaria de una tabla T es un conjunto de atributos K1, K2,...., Kn de T ( n > 0) que tiene las siguientes dos propiedades independientes del tiempo: a) Unicidad (Uniqueness). En cualquier tiempo, no pueden existir dos registros distintos de T que tengan el mismo valor para K1, el mismo valor para K2,...., y el mismo valor para Kn. b) Minimalidad (Minimality). Ninguno de los K1, K2,....,Kn puede ser descartado de K sin destruir la propiedad de unicidad.
3.
Clave fornea (Foreign Key): Es un atributo o combinacin de atributos de una tabla, que es la clave primaria de otra tabla. Ejemplo: Base de datos PARTS SUPPLIERS. S (S#, SNAME, STATUS, CITY) P (P#, PNAME, COLOR, WEIGHT, CITY) SP (S#, P#, QTY) Consideremos el atributo S# de la relacin SP. Es claro que un valor dado para ese atributo, por ejemplo, el nmero de proveedor S1, debe ser permitido solamente si el mismo valor aparece como un valor de la clave primaria S# en la relacin S (de otra manera, la base de datos no puede ser considerada que se encuentra en un estado de integridad).
Reglas de integridad Son restricciones que se aplican a todas las instancias de la base de datos. Estas reglas son generales, en el sentido que cualquier base de datos relacional las debe satisfacer. Sin embargo, cualquier base de datos especfica puede contemplar un conjunto de reglas adicionales especficas que se apliquen a una base de datos particular. (Por ejemplo, QTY [1..9999]). Todas las inserciones, actualizaciones y eliminaciones a bases de datos relacionales estn restringidas por las siguientes dos reglas: a) Integridad de entidades (Entity integrity): Una clave primaria no puede ser nula. Es decir, el valor asociado a una clave primaria de una relacin base no puede ser nulo o tener un componente nulo.
b) Integridad referencial (Referential integrity): La clave fornea puede ser nula o tener un valor que se refiere a un valor vlido, que se encuentra presente como una clave primaria en alguna otra tabla (una fila en una tabla que se refiere a otra tabla, debe referenciar a una fila existente en esa tabla). Es decir, si una relacin base R2 incluye una clave extranjera FK correspondiente a la clave primaria PK de alguna relacin base R1, entonces cada valor de FK en R2 debe ser:
ii. Ser completamente nula (es decir, cada valor asociado a los atributos que participan en el valor de FK deben ser nulos). La informacin en una tabla puede estar relacionada con la informacin de otra tabla.
Ejemplo: Cada empleado en la tabla EMP tiene un nmero de departamento (DEPTNO) que hace referencia al nmero de departamento en una tabla llamada DEPT. Smith trabaja en el departamento 20, y el departamento 20 es el departamento Research en Dallas. (figura 3.3). En la figura 3.4 se muestra otro ejemplo de reglas de integridad, donde se puede notar adems que ciertas columnas de la tabla tienen reglas especficas que restringen los datos contenidos en ellas.
3.
3. 10
Cada valor en la columna DEPTNO debe corresponder a un valor en la columna DEPTNO de la tabla DEPT. Cada fila debera tener un valor para la columna ENAME.
Cada fila debera tener un valor para la columna EMPNO, y el valor debe ser nico.
3. 11 Justificacin para las reglas de integridad Para integridad de entidades a) Las relaciones bases corresponden a entidades en el mundo real. Por ejemplo, la relacin S corresponde a un conjunto de proveedores en el mundo real. b) Por definicin, las entidades en el mundo real son distinguibles, es decir, ellas tienen una identificacin nica de alguna clase. c) Las claves primarias efectan la funcin de identificacin de las entidades en el modelo relacional. d) Por lo tanto, un valor nulo asociado a una clave primaria implicara una contradiccin, en trminos que se tendran algunas entidades que no tienen identidad (es decir, no existen). Por lo anterior, el nombre integridad de entidad. Para la integridad referencial Es claro que una clave extranjera dada debe tener su correspondiente valor de clave primaria en alguna tupla de la relacin referenciada, si el valor de la clave extranjera es no nulo. Algunas veces, sin embargo, es necesario permitir que la clave extranjera acepte valores nulos. Supongamos, por ejemplo, que en una cierta empresa, es vlido que algn empleado no est asociado a algn departamento. Para tal empleado, el atributo nmero_ departamento (que corresponde a la clave extranjera) podra ser nulo, en la tupla que representa al empleado, en la base de datos.
La figura 3.5 propone un formato para describir una relacin, donde se pueden identificar los distintos tipos de claves y algunas restricciones sobre las columnas de la tabla. La figura 3.6 muestra un ejemplo, con la descripcin de la tabla EMPLOYEE.
3. 12
3. 13
Los tipos de claves vlidos son PK para la columna Primary Key y FK para la columna Foreign Key. Usar sufijos para distinguir entre mltiples columnas FK en una sola tabla, por ejemplo FK1 y FK2. Etiquetar mltiples columnas claves con el mismo sufijo. Usar NN para una columna que debe ser definida NOT NULL. Usar U para una columna cuyo valor debe ser nico. Si mltiples columnas deben ser nicas en una combinacin, rotularlas con un sufijo, por ejemplo U1. Rotular una PK formada por una nica columna como NN, U. Rotular una PK formada por mltiples columnas como NN, U1 o posiblemente como NN, U1, U.
Fig. 3.6 Descripcin de la tabla EMPLOYEE
Para mantener la integridad referencial se deben especificar las acciones a llevar a cabo, cuando una fila referenciada es eliminada (On Delete) o es actualizada (On Update). Las Opciones a considerar en la eliminacin o actualizacin son: CASCADES RESTRICTED NULLIFIES DEFAULTS
Los ejemplos siguientes mostrarn el significado de las distintas opciones. Se debe recordar que una insercin o una modificacin de una FK se permite, slo si una PK asociada existe.
Especificacin de integridad referencial en el caso de On Delete Se especifica una restriccin de eliminacin para definir que debera suceder si se elimina una fila que contiene una clave primaria referenciada. Opciones: CASCADE, RESTRICTED o NULLIFY (slo si se permiten valores nulos) y DEFAULT. Ejemplo: Considerar las tablas EMPLOYEE y DEPARTMENT de la figura 3.7. Qu debiera pasar si se elimina un DEPT_NO de la tabla DEPARTMENT, para el cual se encuentran asociados empleados? La respuesta depende de la opcin escogida. (figura 3.7).
3. 15
Opcin CASCADE
Explicacin de la restriccin La eliminacin debera ser en cascada donde se produzca coincidencia con los empleados. Las filas de la tabla EMPLOYEE que coinciden tambin debieran ser borradas.
RESTRICTED
NULLIFY
La clave fornea debiera quedar en nulo (vlida slo para los FKs que permitan valores nulos) cuando se elimina la PK referenciada.
DEFAULT
3. 16 Especificacin de integridad referencial en el caso de On Update Se especifica una restriccin de actualizacin para definir que debiera pasar cuando se actualiza una clave primaria referenciada. (La regla de actualizacin tiene significado slo si la PK es actualizable). Opciones: CASCADE, RESTRICTED o NULLIFY (slo si se permiten valores nulos) Ejemplo: Qu debiera pasar si un DEPT_NO para el cual trabajan empleados, es cambiado por otro DEPT_NO? (figura 3.8).
3. 17 Opcin CASCADE Explicacin la de restriccin La actualizacin debera ser en cascada donde se produzca coincidencia con los empleados. Las filas de la tabla EMPLOYEE que coinciden tambin debieran ser
RESTRICTED
La
actualizacin
debiera
restringirse
slo
para
los
NULLIFY
La clave fornea debiera ser nula (vlida slo para las FKs que permitan valores nulos) cuando se actualiza la PK referenciada.
Fig. 3.8 Continuacin. Restriccin de actualizacin utilizando las tablas EMPLOYEE y DEPARTMENT.
3. 18 Restricciones declarativas para restringir valores de columnas en SQL (ORACLE V.7.0) TIPO NOT NULL UNIQUE CHECK PRIMARY KEY FOREIGN KEY DEFINICION No se permiten columnas con valores nulos Requiere que valores de la columna sean nicos Requiere que valores de la columna satisfagan una expresin lgica Requiere que valores de la columna sean nicos y not null Requiere que valores de la columna tengan un valor igual a uno definido unique o primary key en una tabla relacionada
En la figura 3.9, se muestra un ejemplo en SQL, de la creacin de tablas con sus correspondientes restricciones de integridad. La figura 3.9a define el esquema para la base de datos llamada COMPANY, y la figura 3.9b contiene una definicin alternativa del esquema, en que se efecta el manejo de la integridad referencial.
CREATE TABLE EMPLOYEE ( FNAME MINIT LNAME SSN BDATE ADDRESS SEX SALARY SUPERSSN DNO PRIMARY KEY (SSN), FOREIGN KEY (SUPERSSN) REFERENCES EMPLOYEE(SSN), FOREIGN KEY (DNO) REFERENCES DEPARTMENT(DNUMBER) ); Fig. 3.9a Definicin del esquema para COMPANY VARCHAR(15) CHAR, VARCHAR(15) CHAR(9) DATE, VARCHAR(30), CHAR, DECIMAL(10,2), CHAR(9), INT NOT NULL, NOT NULL, NOT NULL, NOT NULL,
3. 19 CREATE TABLE DEPARTMENT ( DNAME DNUMBER MGRSSN MGRSTARTDATE VARCHAR(15) INT CHAR(9) DATE, NOT NULL, NOT NULL, NOT NULL,
PRIMARY KEY (DNUMBER), UNIQUE (DNAME), FOREIGN KEY (MGRSSN) REFERENCES EMPLOYEE(SSN) );
CREATE TABLE DEPT_LOCATIONS ( DNUMBER DLOCATION INT VARCHAR(15) NOT NULL, NOT NULL,
CREATE TABLE PROJECT ( PNAME PNUMBER PLOCATION DNUM VARCHAR(15) INT VARCHAR(15) INT NOT NULL, NOT NULL, NOT NULL,
PRIMARY KEY (PNUMBER), UNIQUE (PNAME), FOREIGN KEY (DNUM) REFERENCES DEPARTMENT(DNUMBER) );
CREATE TABLE WORKS_ON ( ESSN PNO HOURS CHAR(9) INT DECIMAL(3,1) NOT NULL, NOT NULL, NOT NULL,
PRIMARY KEY (ESSN, PNO), FOREIGN KEY (ESSN) REFERENCES EMPLOYEE(SSN), FOREIGN KEY (PNO) REFERENCES PROJECT (PNUMBER) ); Fig. 3.9a Continuacin. Definicin del esquema para COMPANY.
3. 20 CREATE TABLE DEPENDENT ( ESSN DEPENDENT_NAME SEX BDATE RELATIONSHIP CHAR(9) VARCHAR(15) CHAR, DATE, VARCHAR(8), NOT NULL, NOT NULL,
PRIMARY KEY (ESSN, DEPENDENT_NAME), FOREIGN KEY (ESSN) REFERENCES EMPLOYEE(SSN) ); Fig. 3.9a Continuacin. Definicin del esquema para COMPANY.
CREATE TABLE EMPLOYEE ( ..., DNO CONSTRAINT EMPPK PRIMARY KEY (SSN), CONSTRAINT EMPSUPERFK FOREIGN KEY (SUPERSSN) REFERENCES EMPLOYEE(SSN) ON DELETE SET NULL ON UPDATE CASCADE, CONSTRAINT EMPDEPTFK FOREIGN KEY (DNO) REFERENCES DEPARTMENT(DNUMBER) ON DELETE SET DEFAULT ON UPDATE CASCADE ); INT NOT NULL DEFAULT 1,
3. 21 CREATE TABLE DEPARTMENT (... MGRSSN CHAR(9) NOT NULL DEFAULT 8886655555
CONSTRAINT DEPTPK PRIMARY KEY (DNUMBER), CONSTRAINT DEPTSK UNIQUE (DNAME), CONSTRAINT DEPTMGRFK FOREIGN KEY (MGRSSN) REFERENCES EMPLOYEE(SSN) ON DELETE SET DEFAULT ON UPDATE CASCADE );
CREATE TABLE DEPT_LOCATIONS (.... PRIMARY KEY (DNUMBER, LOCATION), FOREIGN KEY (DNUMBER) REFERENCES DEPARTMENT(DNUMBER) ON DELETE CASCADE ON UPDATE CASCADE); Fig. 3.9b Continuacin. Esquema de COMPANY con manejo de la integridad referencial Fig. 3.9 Definicin de datos con SQL.
3. 22 Reglas para determinar si un DBMS es relacional (Codd, 1985) E. F. Codd, el creador del modelo de datos relacional, public un artculo en dos partes en la revista Computerworld (14 de Octubre y 21 de Octubre de 1985), en que lista 12 reglas para determinar si un DBMS es relacional. Estas reglas proveen un patrn til para la evaluacin de sistemas relacionales. Codd tambin menciona, que de acuerdo con estas reglas, an no hay disponible un sistema totalmente relacional. En particular, las reglas 6, 9, 10, 11 y 12 son difciles de satisfacer.
Regla 1: La regla de la informacin Toda la informacin en una base de datos relacional es representada explcitamente a nivel lgico en exactamente una manera a travs de valores en las tablas. Regla 2: Regla de garanta de acceso Todos y cada uno de los valores atmicos (datos) en una base de datos relacional es garantizado para ser lgicamente accesible por una combinacin de nombres de la tabla, valor de la clave primaria y nombre de la columna. Regla 3: Tratamiento sistemtico de valores nulos Los valores nulos (no se refiere a caracteres vacos, string vacos, valores con cero o cualquier otro nmero) son soportados en un DBMS completamente relacional, para representar informacin faltante de una forma sistemtica, independencia de tipo de datos. Regla 4: Catlogo dinmico en lnea basado en el modelo relacional La descripcin de la base de datos es representada en un nivel lgico, de la misma manera que los datos comunes; as, los usuarios autorizados pueden aplicar el mismo lenguaje relacional para consultar esta descripcin, tal como lo hacen con los datos regulares. Regla 5: Regla para un sublenguaje de datos Un sistema relacional puede soportar varios lenguajes y modelos de uso terminal (por ejemplo, el modo llenar-los-blancos). Sin embargo, debe existir al menos un lenguaje con sentencias que sean expresables, por alguna sintaxis bien definida, como strings de caracteres y cuya habilidad para soportar todos los siguientes tems sea comprensivo: definicin de datos, definicin de vista,
3. 23 manipulacin de datos (interactivo y por programas), restricciones de integridad y lmites de transacciones (begin, commit y rollback). Regla 6: Regla de actualizacin de vistas Todas las vistas que son tericamente actualizables, son tambin actualizables por el sistema. Regla 7: Insercin, actualizacin y eliminacin de alto nivel La capacidad de manejo de una relacin base o derivada como un nico operando, se aplica no slo para la recuperacin de los datos, sino tambin para la insercin, actualizacin y eliminacin de los datos. Regla 8: Independencia fsica de los datos Los programas de aplicacin y actividades terminales permanecen lgicamente intactos, cuando se hace cualquier cambio, ya sea en la representacin del almacenamiento o mtodo de acceso. Regla 9: Independencia lgica de los datos Se pueden alterar las tablas bases sin alterar los programas de aplicacin o las actividades terminales. Regla 10: Independencia de integridad Restricciones de integridad especficas para una base de datos relacional particular, deben ser definibles en el sublenguaje de datos relacional y
almacenables en el catlogo, no en los programas de aplicacin. Debe soportar, como mnimo, estas dos restricciones de integridad: 1. Integridad de entidades: No se permiten que componentes de una clave primaria tengan valores nulos. 2. Integridad referencial: Para cada valor distinto y no nulo de la clave fornea en una base de datos relacional, debe coincidir con un valor de una clave primaria en el mismo dominio. Regla 11: Independencia de la distribucin Un DBMS relacional tiene independencia de la distribucin. Esto implica que los usuarios no tienen que estar en conocimiento que una base de datos est distribuida.
3. 24 Regla 12: Regla de no subversin Si un sistema relacional tiene un lenguaje de bajo nivel (con capacidad de manejo de un nico registro a la vez), ese lenguaje de bajo nivel no puede ser usado para pasar a llevar o no tomar en cuenta las reglas de integridad o las restricciones expresadas en el lenguaje relacional de alto nivel (con capacidad de manejo de mltiples registros a la vez).
Existe una regla agregada a estas 12 reglas conocida, como la Regla Cero: Para cualquier sistema que asegure ser un sistema administrador de bases de datos relacional, ese sistema debe ser capaz de administrar los datos completamente, a travs de sus capacidades relacionales. Tomando en cuenta las reglas anteriormente descritas, hoy en da existe pocos DBMS completamente relacional.
3. 25 3.1.3 Diseo de bases de datos relacionales, utilizando una transformacin del MER. El modelo relacional, representa las entidades y los relacionamientos, de la misma forma, a travs de las relaciones. Existen herramientas CASE (Computer Aided Software Engineering) para realizar esta transformacin.
Transformacin del modelo Entidad Relacionamiento al Modelo Relacional 1. Para cada entidad regular E en el esquema E R, se debe crear una relacin R, que incluya todos los atributos simples de E. Incluir slo los atributos simples que constituyan un atributo compuesto. Escoger alguno de los atributos claves de E, como la clave primaria de R.
2. Para cada entidad dbil W en el esquema E R, que tiene un dueo E, crear una relacin R; incluir todos los atributos simples (o los componentes simples de un atributo compuesto) de W como atributos de R. Adems, incluir como clave fornea de R, los atributos que componen la clave primaria de E. La clave primaria de R es la combinacin de la clave primaria de su dueo y de la clave parcial de la entidad dbil W.
3. Por cada relacionamiento binario 1:1, R, en el esquema E R, identificar las relaciones S y T, que corresponden a las entidades que participan en R. Escoger una de las relaciones, por ejemplo S, e incluir como clave fornea en S, la clave primaria de T. Se deben incluir todos los atributos simples (o los componentes simples de un atributo compuesto) del relacionamiento 1:1 R, como atributos de la relacin S. 4. Para cada relacionamiento binario 1:N regular (no dbil), R, identificar la relacin S, que representa el lado N del relacionamiento. Incluir como clave fornea en S, la clave primaria de la relacin T, que representa la otra entidad que participa en el relacionamiento R. El lado N del relacionamiento corresponde a aquella entidad que participa con cardinalidad 1 en el relacionamiento; la otra entidad tiene asociada la cardinalidad N. Incluir todos los atributos simples (o los componentes simples de un atributo compuesto) del relacionamiento 1:N, como atributos de la relacin S.
3. 26 5. Por cada relacionamiento binario M:N, R, en el esquema E R, se debe crear una nueva relacin S, para representar a R. Se deben incluir como claves forneas en S, las claves primarias de las relaciones que representan a las entidades que participan en el relacionamiento. La combinacin de estas claves primarias, formar la clave primaria de la relacin S. Incluir todos los atributos simples (o los componentes simples de un atributo compuesto) del relacionamiento N:M, como atributos de la relacin S.
6. Para cada atributo multivaluado A, se debe crear una nueva relacin R, que incluya un atributo correspondiente a A, ms la clave primaria K (como una clave fornea en R) de la relacin que representa a la entidad o relacionamiento, que tiene a A como un atributo. La clave primaria de R, es la combinacin de A y K. Si el atributo multivaluado es compuesto, se incluyen sus componentes simples.
7. Para cada relacionamiento n-ario R, con n mayor que 2, se debe crear una nueva relacin S, para representar R. Se deben incluir como claves forneas en S, las claves primarias de las relaciones que representan a las entidades que participan en el relacionamiento. La combinacin de estas claves primarias, ser usualmente la clave primaria de la relacin S. Incluir todos los atributos simples (o los componentes simples de un atributo compuesto) del relacionamiento N:M, como atributos de la relacin S.
3. 27 Ejemplo: La figura 3.10 corresponde al D E R de la base de datos COMPANY. Usando las transformaciones anteriores se obtiene las relaciones mostradas en la figura 3.11. La figura 3.12 muestra algunas tuplas de las relaciones.
3. 28
3. 29
3. 30 8. Relacionamiento Superclase / Subclase y Especializacin (Generalizacin) Convertir cada especializacin con m subclases {S1, S2,....., Sm} y superclase C, donde los atributos de C son {k, a1, a2,..., an} y k es la clave primaria en esquemas relacionales, utilizando una de las cuatro siguientes opciones:
8. a Crear una relacin L para C, con los atributos Attrs(L) = {k, a1, a2,...., an} y PK (L) = k. Crear una relacin Li para cada subclase Si, 1 <= i <= m, con los atributos Attrs(Li) = {k} U {atributos de Si} y PK(Li) = k.
8. b Crear una relacin Li para cada subclase Si, 1 <= i <= m, con los atributos Attrs(Li) = {atributos de Si} U {k, a1, a2,..., an} y PK(Li) = k.
8. c Crear una nica relacin L con los atributos Attrs(L) = {k, a1,a2,..., an} U {atributos de S1} U {atributos de S2} U...{atributos de Sm} U {t} y PK(L) = k. Esta opcin es para una especializacin cuyas subclases son disjuntas, y t es un atributo que indica a la subclase a la cual pertenece, si la hay. Esta opcin puede generar una gran cantidad de valores null.
8. d Crear una nica relacin L, con los atributos Attrs(L) = {k, a1, a2,..., an} U {atributos de S1} U {atributos de S2} u...{atributos de Sm} U {t1,t2,t3,...,tm} y PK(L) = k. Esta opcin es para especializacin cuyas subclases son solapadas, y cada ti, 1 <= i <= m, es un atributo booleano que indica si una tupla pertenece a la subclase.
Ejemplo: La figura 3.13 muestra una especializacin. La figura 3.14 su correspondiente modelo relacional: En a) se usa la opcin 8.a; en b) la 8.b; en c) la opcin 8.c y en d) la opcin 8.d.
3. 31
Fig. 3.13 Especializacin definida por atributo, para el atributo JobType de la tabla EMPLOYEE.
EMPLOYEE SSN EngType Fname TGrade Minit LName BirthDate Address JobType TypingSpeed
EMPLOYEE SSN TGrade Fname EngType Minit LName BirthDate STGrade Address TypeSpeed
STypeSpeed SEngType
3. 33 Ejemplo: La figura 3.15 muestra una especializacin con subclases solapadas. Su correspondiente modelo relacional, utilizando 8.d, se muestra en la figura 3.16.
PART PartNo Description MFlag Drawing Manufacturate Batch No Date No PFlag Supplier List Name Price
Fig. 3.16 Transformacin al modelo relacional de una especializacin con subclases solapadas. Se agregan dos campos de tipo booleano (Mflag y Pflag).
3. 34 Ejemplo: La figura 3.17 muestra la especializacin de VEHICLE en CAR y TRUCK. Su correspondiente transformacin al modelo relacional, utilizando la opcin 8.b, se encuentra en la figura 3.18. Fig. 3.17 Especializacin de VEHICLE como una especializacin total disjunta.
Vehicle_Id
Price
LicensePlate
VEHICLE
NoOfPassenger MaxSpeed
3. 35 9. Subclases compartidas Se pueden aplicar cualquiera de las opciones discutidas en el paso 8, aunque usualmente la opcin 8a es utilizada.
Ejemplo 1: La figura 3.19 muestra una subclase compartida. Su correspondiente modelo relacional, utilizando la opcin 8.a y 8 b, se muestra en la figura 3.20.
ENGINEERING_MANAGER SSN
3. 37 Ejemplo 2: La figura 3.21 es el correspondiente D E R para la base de datos UNIVERSITY. Su correspondiente modelo relacional est en la figura 3.22, en la que se transforma la especializacin usando mltiples opciones.
EMPLOYEE SSN Salary Employee Position Type Rank Percent RAFlag TAFlag Time Project Course
ALUMNUS SSN
10. Categoras En el caso de una categora en que las superclases tienen diferentes claves, se acostumbra a especificar un nuevo atributo clave, denominado surrogate key (clave substituta), cuando se crea una relacin que corresponde a la categora. Para una categora en que las superclases tienen la misma clave, no se necesita una surrogate key.
3. 39 Ejemplo: La figura 3.23 muestra el D E R con dos categoras: OWNER y REGISTERED_VEHICLE. Su correspondiente modelo relacional, se encuentra en la figura 3.24.
OWNER OwnerId
3. 41 11. Agregacin En el caso de una agregacin, la transformacin al modelo relacional implica crear las tablas de todas las entidades y relaciones, segn corresponda. Para el relacionamiento que involucra a la agregacin, se crea una relacin que contiene la llave primaria de cada una de las entidades simples (entidades no involucradas en la agregacin, pero si asociadas con el relacionamiento en cuestin), la llave primaria del relacionamiento implicado en la agregacin y los correspondientes atributos descriptivos del relacionamiento, si existieran. La llave primaria de esta relacin es la concatenacin de las llaves primarias includas. Nota: Este es un caso de los varios posibles y corresponde al ejemplo de la figura 3.25. podran tomarse otras decisiones de transformacion. Ejemplo: La figura 3.25 muestra un diagrama de entidad relacionamiento con la agregacin trabajo. Su correspondiente modelo relacional se muestra en la figura 3.26.
TRABAJO
(0,N)
EMPLEADO
RUT
TRABAJA (1,N)
PROYECTO
NPROY
(0,N)
UTILIZA
cantidad
(0,N)
MAQUINARIA
Fig. 3.25 D-E-R mostrando la agregacin TRABAJO
COD_MAQ
3. 42
MAQUINARIA COD_MAQ
EMPLEADO RUT
PROYECTO NPROY
3. 43
Las operaciones sobre los datos corresponden a operaciones sobre las relaciones. Ambos lenguajes son equivalentes en poder expresivo: Es posible transformar una expresin del lgebra en una expresin del clculo y viceversa. 3.2.1 Algebra relacional Es un lenguaje procedural, porque cuando se escribe una expresin en lgebra relacional, se proporciona una secuencia de operaciones que genera la respuesta a la consulta. Dispone de un conjunto de operadores de alto nivel, que operan sobre relaciones. Cada uno de estos operadores, toma una o dos relaciones como entrada, y produce una nueva relacin como salida (propiedad de clausura).
3.2.1.1 Operaciones fundamentales a) UNION b) DIFERENCIA c) PRODUCTO CARTESIANO d) PROYECCION e) SELECCIN RUS RS R*S (R) (R)
diferencia R MENOS S
diferencia S MENOS R
3. 45
R r11.............r1p m tuplas
S s11.............s1q
. . .
rm1............rmp
. . .
sn1............snq
n tuplas
. . .
r11............r1p
. . .
sn1............snq
r21.............r2p n tuplas
s11.............s1q
. . .
r21............r2p
. . .
sn1............snq
m bloques de n tuplas
. . .
rm1.............rmp n tuplas
. . .
s11.............s1q
. . .
rm1............rmp
. . .
sn1............snq
Producto Cartesiano R X S
3. 46 d) Proyeccin i1i2...im (R) Conjunto de m-tuplas a1, a2,...., am tales que b1, b 2, ..., bk R para el cual aj = bij
Proyeccin Ejemplo 1: R (A, B, C, D) 3,1(R) contiene las tuplas con dos componentes, correspondientes a los valores de los atributos C y A 3,1(R) C,A (R)
Ejemplo 2: R Nombre Prez Fuentes Lpez Edad 25 36 45 Sueldo 120.000 200.000 180.000 Nombre Prez Lpez Fuentes S Depto Ventas Finanzas Produccin
3,1 (R)
3. 47
Depto (S)
F (R)
Operandos que son constantes o un nmero de componentes Frmula Operadores de comparacin <, >, =, , etc. Operadores lgicos (and), (or), (not). Valor de atributo i $i
Seleccin Ejemplo 3:
$1 = manzana (R)
(manzana, roja)
$1 > $2 (S)
3. 48 Ejemplo 4: Dadas las relaciones R y S: i. ii. iii. Calcular R x S. Obtener la informacin asociada a Prez. Obtener la informacin de todos los empleados cuyas edades sobrepasan los 30 aos. iv. Obtener la informacin de todos los empleados cuyas edades sobrepasan los 30 aos y tienen un salario menor que $200.000. R Nombre Prez Fuentes Lpez Edad 25 36 45 Sueldo 120.000 200.000 180.000 Nombre Prez Lpez Fuentes S Depto Ventas Finanzas Produccin
i)
RxS Sueldo 120.000 120.000 120.000 200.000 200.000 200.000 180.000 180.000 180.000 S.Nombre Prez Lpez Fuentes Prez Lpez Fuentes Prez Lpez Fuentes Depto Ventas Finanzas Produccin Ventas Finanzas Produccin Ventas Finanzas Produccin
R.Nombre R.Edad Prez Prez Prez Fuentes Fuentes Fuentes Lpez Lpez Lpez 25 25 25 36 36 36 45 45 45
ii)
Nombre Prez
Edad 25
Sueldo 120.000
3. 49
iii)
Edad 36 45
iv)
3.2.1.2 Operaciones adicionales Existen algunas operaciones de inters que pueden ser expresadas en trminos de las cinco operaciones mencionadas anteriormente. a) INTERSECCION b) CUOCIENTE c) JOIN: i. JOIN R i j R i=j iii. JOIN NATURAL R S S S RS R S
ii. EQUIJOIN
iv. SEMIJOIN
v. OUTER JOIN
interseccin R INTERSECCION S b) Cuociente entre R y S RS Sean R y S relaciones de aridad r y s respectivamente, donde r > s y S R S es el conjunto de las (r s) tuplas t, tal que para todas las s tuplas u en S, la tupla tu est en R. Se utiliza esta operacin, para implementar el cuantificador universal. Ejemplo 5: Relacin R S a e b d (xxcd xxef en R)
Relacin R a b c d a b e f b c e f e d c d e d e f a b d e
Relacin S c d e f
3. 51 Ejemplo 6: R: Nombre Juan Alvaro Mariana Mariana Alvaro Mariana Curso B. Datos I. Artif. Com. Datos B. Datos Com. Datos I. Artif. S: Curso B. Datos Com. Datos I. Artif.
El cuociente se puede expresar en trminos de los operadores bsicos: R S = 1,2,...,r-s (R) - 1,2,...,r-s ((1,2,....,r-s(R) x S) R)
1,2(R)
a b e
b c d
1,2(R) x S
a b a b b c b c e d e d
c d e f
c d e f
c d e f
3. 52 (1,2(R) x S) - R b c c d
b c
a b e d
c) Join i. join de R y S sobre las columnas i y j Se denota R S ij donde es un operador de comparacin aritmtico < = > etc. Es equivalente a:
$i $ (r + j) (R x S)
r es la aridad de R La i-sima columna de R est en relacin con la j-sima columna de S.
Join (Combinacin)
Ejemplo 8: R Nombre Prez Fuentes Lpez Edad 25 36 45 Sueldo 120.000 200.000 180.000 Nombre Prez Lpez Fuentes S Depto Ventas Finanzas Produccin
S $1 = $4 (R x S) 1=1
Edad 25 36 45
3. 54 Ejemplo 9: A 1 4 7 B 2 5 8 R C 3 6 9 S D 3 6 E 1 2
R S B<D
A 1 1 4 Ejemplo 10: R: A 1 4 7 8 B 2 5 5 4
B 2 2 5
C 3 3 6
D 3 6 6
E 1 2 2
C 3 6 3 6
S:
D a b
B 2 5
R 2=2 A 1 4 7 R.B 2 5 5 C 3 6 6
S D a b b S.B 2 5 5
Calcular R x S.
ii. Para cada atributo A, en R y en S, se seleccionan las tuplas R x S cuyos valores coinciden en las columnas R.A y S.A. iii. Para cada atributo A, se elimina la columna S.A. Luego, si A1, A2,...., Ak son todos los nombres de atributos usados tanto en R y en S R S = i1, i2,..., im
donde: i1, i2,...., im es la lista de todos los componentes de R x S, en orden, excepto los componentes S.A1,...., S.Ak
Ejemplo 11: R A a d b c B b b b a C c c f d B b b a S C c c d D d e b A a a d d c R B b b b b a S C c c c c d D d e d e b
S = A, R.B, R.C, D
3. 56 iv. Semijoin ( R ) S R (R S)
R S (S)
R
Ejemplo 12: R S = R (R S)
R A a d b c B b b b a C c c f d B b b a c c d
S C D d e b
R A a d c B b b a
S C c c d
RS
B b a
C c d
RS (S)
A a d c
B b b a
C c c d
3. 57 Al usar joins naturales y semijoins, deben escribirse los atributos de la relacin en forma explcita (R(A1, A2, ..., An )) Ejemplo 13: R: A b b a B c c d C d e b
X b b a
Y c c d
Z d e b
Z b b a
V c c d
W d e b
R(X, Y, Z) X a a Y d d
R(Z, V, W)
Z b b
V c c
W d e
v. Outer join R R S S
En las operaciones de JOIN, aquellas tuplas de una relacin que no tienen una tupla asociada en la otra relacin, son eliminadas del resultado. El OUTER JOIN se utiliza cuando se desea que todas las tuplas de la relacin aparezcan en el resultado, ya sea que tengan o no tengan una tupla asociada en la otra relacin.
Se desea obtener el nombre del alumno, seguido del nombre de la asignatura. Si existe un alumno, que no tiene asignaturas asociadas, igual se debe desplegar su nombre, seguido de un valor nulo para el atributo nombre de la asignatura.
Asignatura)
Propiedad de Clausura:
Los operadores del lgebra relacional tienen la Propiedad De Clausura: Toda operacin sobre una o ms relaciones tiene como resultado una relacin. Esta propiedad se utiliza en lenguajes de consulta para componer una consulta compleja a partir de los resultados de consultas ms simples.
3.2.1.3 Ejercicios
3. 59
3. 60
3. 61 a) Recuperar el nombre y la direccin de los empleados que trabajan para el departamento Research.
Fname,
Minit, Lname, Address
EMPLOYEE)
DNO = DNUMBER
EMPLOYEE)]
DNO = DNUMBER
b) Encontrar el nombre de los empleados que trabajan en algn proyecto controlados por el departamento nmero 5.
WORKS_ON)
EMPLOYEE
PNUMBER = PNO
ESSN = SSN
c) Para cada proyecto localizado en STAFFORD, indicar el nmero del proyecto, el nmero del departamento que lo controla y el nombre, fecha de nacimiento y direccin del jefe del departamento que controla el proyecto.
DEPARTMENT )
DNUMBER = DNUM
EMPLOYEE
SSN = MRGSSN
d) Para cada empleado, indicar el nombre del empleado y el nombre de su jefe inmediato. Considerar que aquellos empleados que no tienen un jefe, tambin deben aparecer en el resultado de la consulta. Se debe crear un Alias para la tabla EMPLOYEE. Crear una copia (EMPLOYEE1) EMPLOYEE1)
EMPLOYEE.LNAME, (EMPLOYEE
EMPLOYEE1.LNAME
EMPLOYEE1.SSN = EMPLOYEE.SUPERSSN
Profesor (Rut, Nombre, Apellido, Direccin, Categora) Curso (Sigla, Descripcin, Crditos, Vacantes) Dicta (Rut, Sigla, Semestre, Sala, Hora)
Se desea obtener el Apellido y Categora de los profesores que dictan cursos de ms de 12 crditos en el 2 semestre. Adems, se desea saber a que hora y en que sala son dictados dichos cursos.
Semestre = 2 Dicta)
Profesor ]
Consideraciones finales:
Hay varias otras maneras de obtener el resultado (haciendo proyecciones intermedias, o haciendo todos los selects al final, por ejemplo). El orden en que se hagan las operaciones no afectar al resultado, pero s la rapidez con que ste se obtiene, a menos que el sistema de base de datos tenga un optimizador de consultas (Por ejemplo: cundo conviene hacer los selects?)
Para la operacin de proyeccin, los sistemas relacionales deben preocuparse de eliminar las posibles tuplas duplicadas que resultan de una proyeccin. Algunos sistemas permiten mantener los duplicados si as se indica explcitamente (por ejemplo, para contar o sumar valores de una columna).
3. 63 3.2.2 Clculo Relacional El clculo relacional es un lenguaje formal, basado en una rama de la lgica matemtica llamada clculo de predicados. Existen dos formas bien conocidas, en las cuales el clculo de predicados puede ser adaptado a un lenguaje para bases de datos relacionales. La primera es llamada clculo relacional de tuplas (CRT) y la segunda, clculo relacional de dominios (CRD). Ambos son adaptaciones del clculo de predicados de primer orden. En el clculo relacional de tuplas, los rangos de variables son las tuplas; por otra parte, en el clculo relacional de dominio, los rangos de las variables son los dominios de los valores de los atributos.
En resumen:
El clculo relacional es un lenguaje no procedural (declarativo o descriptivo), en que se da una descripcin formal de la informacin deseada, sin especificar cmo obtenerla. Existen dos formas de clculo relacional: Una en que las variables representan tuplas. Otra, en que las variables representan valores de dominios.
3.2.2.1 Clculo relacional de tuplas (CRT) 3.2.2.1.1 Especificacin formal del CRT El clculo relacional de tuplas est basado en un nmero especfico de variables de tuplas. Cada variable de tupla, usualmente est en el rango de una relacin de la base de datos particular; esto significa que la variable debe tomar como su valor, cualquier tupla individual de esa relacin.
3. 64 Una consulta simple del clculo relacional de tuplas tiene la forma: {t | COND(t)} donde: t es una variable de tupla COND(t) es una expresin condicional que involucra a t. El resultado de tal consulta es el conjunto de todas las tuplas t que satisfacen a COND(t).
Ejemplo:
Para encontrar todos los empleados cuyo salario est sobre $50.000, podemos escribir la siguiente expresin en clculo relacional de tuplas:
La condicin EMPLOYEE(t) especifica que el rango de la relacin de la variable de tupla t es EMPLOYEE. Se recuperar cada tupla t de EMPLOYEE, que satisface la condicin t.SALARY > 50.000. Notar que t.SALARY referencia al atributo SALARY de la variable de tupla t.
Esta notacin se asemeja a como los nombres de atributos son calificados con nombres de relacin o alias, en SQL. En otras notaciones, t.SALARY es lo mismo que escribir t[SALARY].
La consulta anterior recupera los valores de todos los atributos, para cada tupla t de EMPLOYEE seleccionada. Para recuperar slo algn atributo, por ejemplo el nombre y el apellido, se escribe: {t.FNAME, t.LNAME | EMPLOYEE(t) and t.SALARY > 50.000}
Esto es equivalente a la siguiente consulta en SQL: SELECT T.FNAME, T.LNAME FROM EMPLOYEE T
3. 65 Informalmente, se necesita especificar la siguiente informacin en una expresin de clculo de tuplas: 1. Para cada variable de tupla t, la relacin R correspondiente al rango de t. Este valor es especificado por una condicin de la forma R(t). 2. Una condicin para seleccionar combinaciones particulares de tuplas. Dado que el rango de las variables de tuplas son sus respectivas relaciones de rango, la condicin se evala por cada combinacin posible de las tuplas, para identificar las combinaciones seleccionadas en que la condicin se evala a TRUE. 3. El conjunto de atributos a recuperar llamados, los atributos de respuesta. Los valores de estos atributos son recuperados para cada combinacin de tuplas seleccionadas.
Observar la correspondencia de los tems precedentes para una consulta simple en SQL: el tem 1 corresponde a los nombres de las relaciones de la clusula FROM; el tem 2 corresponde a la condicin de la clusula WHERE; y el tem 3 corresponde a la lista de atributos de la clusula SELECT.
Ejemplo: Recuperar la fecha de nacimiento y la direccin del empleado (o empleados) cuyo nombre sea John B. Smith.
{t.BDATE, t.ADDRESS | EMPLOYEE(t) and t.FNAME = John and t.MINIT = B and t.LNAME = Smith}
En el clculo relacional de tuplas, primero especificamos los atributos de respuesta t.BDATE y t.ADDRESS para cada tupla t seleccionada. Luego, especificamos la condicin para seleccionar una tupla siguiendo a la barra (|), que en este caso corresponde a tuplas de la relacin EMPLOYEE, en la cual los valores de los atributos FNAME, MINIT y LNAME son John, B y Smith respectivamente.
{t1.A1, t1.A2,....,tn.An | COND(t1, t2, ...,tn,tn+1, tn+2,....,tn+m )} donde: t1, t2, ...,tn,tn+1, tn+2,....,tn+m son variables de tuplas Cada Ai es un atributo en alguna de las relaciones asociadas a los rangos de los ti. COND es la condicin o frmula del clculo relacional de tuplas. Una frmula est hecha de tomos del clculo de predicados, que pueden ser uno de los siguientes:
1.
Un tomo de la forma R(ti), donde: R es el nombre de la relacin ti una variable de tupla. Este tomo identifica el rango de la variable de tupla ti como la relacin cuyo nombre es R.
2.
Un tomo de la forma ti.A op tj.B, donde: op es un operador de comparacin en el conjunto {=, , <, , >, } ti y tj son variables de tuplas A es un atributo en la relacin asociada al rango de ti B es un atributo en la relacin asociada al rango de tj.
3.
Un tomo de la forma ti.A op c c op tj.B, donde: op es un operador de comparacin en el conjunto {=, , <, , >, } ti y tj son variables de tuplas A es un atributo de la relacin asociada al rango de ti B es un atributo de la relacin asociada al rango de tj c es un valor constante.
3. 67 Cada uno de los tomos precedentes se evala, ya sea a TRUE o FALSE para una combinacin especfica de tuplas; esto es llamado el valor de verdad del tomo. En general, una variable de tupla tiene el rango de todas las tuplas posibles en el universo. Para tomos del tipo 1, si a la variable de tupla se le asigna una tupla que es miembro de la relacin especfica R, el tomo es TRUE; de otra manera es FALSE. En tomos del tipos 2 y 3, si a las variables de tupla se le asignan tuplas cuyos valores de los atributos especificados satisfacen la condicin, entonces el tomo es TRUE.
Una frmula (condicin) est hecha de uno o ms tomos conectados va operadores lgicos and, or, y, not y se define recursivamente como sigue:
2. Si F1 y F2 son frmulas, entonces lo son: (F1 and F2), (F1 or F2) not (F1) y not (F2). Los valores de verdad de estas cuatro frmulas son derivados de sus frmulas componentes F1 y F2, como sigue: a. b. c. d. (F1 and F2) es TRUE si ambas F1 y F2 son TRUE; de otra manera es FALSE. (F1 or F2) es FALSE si ambas F1 y F2 son FALSE; de otra manera es TRUE. not (F1) es TRUE si F1 es FALSE; es FALSE si F1 es TRUE. not (F2) es TRUE si F2 es FALSE; es FALSE si F2 es TRUE.
Adems, dos smbolos especiales llamados cuantificadores pueden aparecer en frmulas; son el cuantificador universal () y el cuantificador existencial ().
Los valores de verdad para frmulas con cuantificadores se describen ms adelante; primero, sin embargo, se necesita definir el concepto de variables de tuplas libre y ligada en la frmula. Informalmente, una variable de tupla t est ligada si est cuantificada, o sea, que aparece en una clusula ( t) ( t); de otro modo, es libre.
3. 68 Formalmente, definimos una variable de tupla en una frmula como libre ligada, de acuerdo con las siguientes reglas: Una ocurrencia de una variable de tupla en una frmula F que es un tomo, est libre en F. Una ocurrencia de una variable de tupla t est libre ligada en una frmula del tipo: (F1 and F2), (F1 or F2), not (F1) y not (F2), dependiendo de si est libre o ligada en F1 F2. Notar que en una frmula de la forma F = (F1 and F2) F = (F1 or F2), una variable de tupla puede estar libre en F1 y ligada en F2, o viceversa. En este caso, una ocurrencia de la variable de tupla una est ligada y la otra libre en F. Todas las ocurrencias libres de una variable de tupla t en F son ligadas en una frmula F de la forma F = (t)(F) F = (t)(F). La variable de tupla est ligada al cuantificador especificado en F. Por ejemplo, considerar las siguientes dos frmulas: F1 : d.NAME = Research F2 : (t)(d.DNUMBER = t.DNO) La variable tupla d est libre tanto en F1 como en F2 y t est ligada al cuantificador universal en F2. Ahora podemos dar las reglas 3 y 4, para continuar la definicin de una frmula como habamos empezado anteriormente.
3. Si F es una frmula, tambin lo es (t)(F), donde t es una variable de tupla. La frmula (t)(F) es TRUE si la frmula F se evala TRUE para alguna (al menos una) tupla asignada a ocurrencias libres de t en F; de otro modo (t)(F) es FALSE.
4. Si F es una frmula, tambin lo es (t)(F), donde t es una variable de tupla. La frmula (t)(F) es TRUE si la frmula F se evala TRUE para cada tupla (en el universo) asignada a ocurrencias libres de t en F; de otro modo (t)(F) es FALSE.
3. 69 El cuantificador () es llamado un cuantificador existencial, porque una frmula (t)(F) es TRUE si existe alguna tupla t tal que F sea TRUE. Para el cuantificador universal, (t)(F) es TRUE si cada tupla posible que pueda ser asignada a ocurrencias libres de t en F es sustituida por t, y F es TRUE para cada sustitucin. Es llamado el cuantificador universal porque cada tupla en el universo de tuplas debe hacer que T sea TRUE.
Transformacin de los cuantificadores universal y existencial (x) (P(x)) ( x) (not (P(x))) (x) (P(x)) not (x) (not(P(x))) (x) (P(x)) and Q(x)) ( x) (not (P(x)) or not (Q(x))) (x) (P(x) or Q(x)) (x) (not (P(x)) and not (Q(x))) (x) (P(x)) or Q(x)) not (x) (not (P(x)) and not Q(x))) (x) (P(x)) and Q(x)) not (x) (not P(x)) or not (Q(x)))
3. 70 Resumiendo:
1. Variables de tupla {t | COND(t)} {t | EMPLOYEE(t) AND t.SALARY > 50.000} {t.FNAME, t.LNAME | EMPLOYEE(t) AND t.SALARY > 50.000}
2. Especificacin formal {t1.A1, t2.A2, ....,tn.An | COND (t1,t2,...,tn,tn+1,tn2,...,tn+m)}, donde: COND, es una condicin o frmula Una frmula compuesta de tomos: a) R(ti) b) ti.A op tj.B c) ti.A op C C op tj.B Una frmula (o condicin) se construye con tomos conectados por: AND, OR, NOT Tambin, pueden usarse: , Si F es una frmula, tambin lo es: t(F) t(F) t(F(t)) t(F(t))
3.2.2.1.2 Ejercicios Dado el esquema de la base de datos COMPANY (figura 3.29), escribir las correspondientes expresiones en CRT para resolver las consultas que se indican.
3. 71
3. 72
1. Recuperar el nombre y la direccin de los empleados que trabajan para el departamento RESEARCH.
{t.FNAME, t.LNAME, t.ADDRESS | EMPLOYEE(t) AND ( d (DEPARTMENT(d) AND d.DNAME = RESEARCH AND d.DNUMBER = t.DNO) ) }
2. Para cada proyecto localizado en STAFFORD, indicar el nmero del proyecto, el nmero del departamento que lo controla, el nombre, fecha de nacimiento y direccin del jefe del departamento que controla al proyecto.
{p.PNUMBER, p.DNUM, m.LNAME, m.BDATE, m.ADDRESS | PROJECT(p) AND EMPLOYEE(m) AND p.LOCATION = `STAFFORD AND (d (DEPARTMENT(d) AND p.DNUM = d.DNUMBER AND d.MGRSSN = m.SSN) ) }
{e.FNAME, e.LNAME, s.FNAME, s.LNAME | EMPLOYEE(e) AND EMPLOYEE(s) AND e.SUPERSSN = s.SSN}
3. 73
4. Encontrar el nombre de los empleados que trabajan en algn proyecto controlado por el departamento nmero 5.
{e.LNAME, e.FNAME | EMPLOYEE(e) AND ( (x)( w) (PROJECT(x) AND WORKS_ON(w) AND x.DNUM = 5 AND w.ESSN = e.SSN AND x.PNUMBER = w.PNO) ) }
5. Listar los nmeros de proyectos que tienen a un empleado con nombre SMITH, ya sea como un integrante del proyecto o como jefe del departamento que controla el proyecto.
{p.PNUMBER | PROJECT(p) AND ( ( (e)( w) (EMPLOYEE(e) AND WORKS_ON(w) AND w.PNO = p.PNUMBER AND e.LNAME = SMITH AND e.SSN = w.ESSN) ) OR ( (m)( d) (EMPLOYEE(m) AND DEPARTMENT(d) AND p.DNUM = d.DNUMBER AND d.MGRSSN = m.SSN AND m.LNAME = `SMITH) ) ) }
3. 74
6. Encontrar los nombres de los empleados que trabajan en todos los proyectos controlados por el departamento nmero 5.
{ e.LNAME, e.FNAME | EMPLOYEE(e) AND (x) (PROJECT(x) AND x.DNUM = 5 AND w (WORKS_ON(w) AND w.ESSN = e.SSN AND x.PNUMBER = w.PNO) ) ) }
7. Encontrar los nombres de los empleados que no tienen dependientes. Se us la siguiente transformacin: (x)(P(x) or Q(x) ) ( x) (not (P(x) ) and not Q(x) ) )
{e.FNAME, e.LNAME | EMPLOYEE(e) AND (d) (not DEPENDENT(d) or not (e.SSN = d. ESSN) ) }
{e.FNAME, e.LNAME | EMPLOYEE(e) AND (NOT (d) (DEPENDENT(d) AND e.SSN = d.ESSN) ) }
3. 75 8. Listar los nombres de los jefes que tienen al menos un dependiente {e.FNAME, e.LNAME | EMPLOYEE(e) AND (d p (DEPARTMENT(d) AND DEPENDENT(p) AND e.SSN = d.MGRSSN AND p.ESSN = e.SSN ) ) }
Expresiones Seguras Siempre que se usa el cuantificador universal, el cuantificador existencial o la negacin de predicados en una expresin del clculo, debemos asegurarnos que el resultado de la expresin tenga sentido. Una expresin segura en clculo relacional es aquella que garantiza un nmero finito de tuplas como resultado; de otro modo, la expresin se llama insegura. Por ejemplo, la siguiente expresin: {t | NOT (EMPLOYEE(t) ) } es insegura, porque entrega todas las tuplas que no estn en EMPLOYEE, las cuales son un nmero infinito. No es conveniente permitir este tipo de expresiones. Se puede definir, de mejor forma, el trmino expresin segura, introduciendo el concepto de dominio de una tupla en una expresin de clculo relacional. Dominio es el conjunto de todos los valores que, o aparecen como valores constantes en la expresin, o existen en cualquier tupla de las relaciones referenciadas en la expresin. Es decir: P: frmula Dom(P): Conjunto de todos los valores a los que se refiere con P.
3. 76 Para el ejemplo 4, el dominio de la expresin debera incluir todos los valores que aparecen en EMPLOYEE, PROJECT y WORKS_ON (junto con el valor 5 que aparece en la consulta misma). Una expresin se dice segura, si todos los valores en su resultado se encuentran en el dominio de la expresin. Todos los ejemplos considerados, corresponden a expresiones seguras.
3.2.2.2 Clculo relacional de dominios (CRD) 3.2.2.2.1 Especificacin formal del CRD El clculo relacional de dominios, o simplemente, clculo de dominios, es el otro tipo de lenguaje formal basado en el clculo de predicados, para bases de datos relacionales. Existe un lenguaje de consulta comercial, QBE, que est relacionado al clculo de dominios, aunque QBE fue desarrollado con anterioridad a la especificacin formal del clculo de dominios. El clculo de dominios difiere del clculo de tuplas en el tipo de variables usadas en las frmulas. En el clculo de tuplas, las variables son tuplas; en el clculo de dominio, las variables toman sus valores desde el dominio de los atributos. Para formar una relacin de grado n correspondiente al resultado de una consulta, debemos tener n de estas variables de dominios, una para cada atributo. Una expresin de clculo de dominios es de la forma: {x1, x2, ...,x n | COND(x1, x 2, ...,xn,xn+1,x n+2,....,xn+m )} dnde: x1, x2, ...,x n,xn+1,xn+2,....,x n+m son variables de dominio que toman valores desde el dominio (de los atributos) COND es una condicin o frmula del clculo relacional de dominios.
3. 77 Una frmula est hecha de tomos. Los tomos de una frmula son levemente diferentes de los del clculo relacional de tuplas y pueden ser uno de los siguientes:
1. Un tomo de la forma R (x1, x2, ...,xj), donde: R es el nombre de la relacin de grado j. Cada xi, 1 i j, es una variable de dominio. Este tomo expresa que una lista de valores de < x1, x2, ...,xj> debe ser una tupla en la relacin cuyo nombre es R, donde xi es el valor del isimo valor de atributo de la tupla.
De forma de hacer una expresin de clculo de dominio ms concisa, se escoge borrar las comas la lista de variables, por lo que escribimos: { x1 x2 ...xn | R(x1 x2 x3) and...} en vez de: { x1, x2, ...,xn | R(x1, x2, x3) and....}
2. Un tomo de la forma xi op xj, donde op es un operador de comparacin en el conjunto {=, , <, , <, } y xi y x j son variables de dominio. 3. Un tomo de la forma xi op c c op xj, donde op es un operador de comparacin en el conjunto {=, , <, , <, } y xi y x j son variables de dominio y c es un valor constante.
Al igual que en el clculo de tuplas, los tomos se evalan ya sea a TRUE FALSE para un conjunto especfico de valores, llamado el valor de verdad de los tomos. En el caso 1, si a las variables de dominio se le asignan valores correspondientes a una tupla en la relacin especificada R, entonces el tomo es TRUE. En el caso 2 y 3, si las variables de dominio tienen asignados valores que satisfacen la condicin, entonces el tomo es TRUE. De manera similar al clculo relacional de tuplas, las frmulas estn hechas de tomos, variables y cuantificadores, por lo tanto no repetiremos las especificaciones para las frmulas.
En resumen:
{x1, x2, ......, x n | COND (x1, x2, ......, xn, xn1, xn+2,....., xn+m)} Atomos (Elementos de las frmulas):
1. R(x1, x2,......, xj) Lista de valores < x1, x 2,......, x j> {x1x2...... xn | R(x1 x2 x3) and...} {x1, x2,......, x n | R(x1 x2 x 3) and...} 2. xi op xj 3. xi op c c op xj
3. 79 3.2.2.2.2 Ejercicios Dada la base de datos COMPANY (figura 3.30), escribir en CRD las siguientes consultas:
3. 80 1. Recuperar la fecha de nacimiento y la direccin de los empleados cuyo nombre sea John B. Smith. {u v | (q) (r) (s) ( EMPLOYEE(q r s t u v w x y z) and q = John and r = B and s = Smith) } Necesitamos diez variables para la relacin EMPLOYEE, una para cada atributo. De las diez variables q, r, s,....,z slo q, r y s estn ligadas por el cuantificador universal, el resto son libres. Primero especificamos los atributos pedidos, BDATE, y ADDRESS, por las variables de dominio u, para BDATE y v, para ADDRESS, luego especificamos la condicin para seleccionar una tupla seguida de la barra (|), que es la secuencia de valores asignados a las variables q r s t u v w x y z de una tupla de la relacin EMPLOYEE y que los valores para q (FNAME), r (MINIT) y s(LNAME) son John,B,Smith, respectivamente. Notar que slo se cuantifican existencialmente las variables participan en la condicin. Una notacin alternativa para escribir esta consulta es asignar las constantes John, B y Smith directamente como se muestra a continuacin, donde todas las variables son libres:
{u v | EMPLOYEE(John,B,Smith,t, u, v, w, x, y, z)}
2. Recuperar el nombre y la direccin de todos los empleados que trabajan para el departamento Research. {q s v | (z) (EMPLOYEE(q r s t u v w x y z) and (l) (m) (DEPARTMENT(l m n o) and l = research and m = z) ) }
Una condicin que relaciona dos variables de dominio con rango sobre los atributos desde dos relaciones, tal como m = z en la consulta anterior, es una condicin del join. Se muestra que una condicin que relaciona una variable de dominio a una constante, tal como 1 = `Research, es una condicin de seleccin.
3. 81 3. Para cada proyecto localizado en Stanfford, indicar el nmero del proyecto, el nmero del departamento que lo controla y el nombre, fecha de nacimiento y direccin del jefe del departamento. {i k s u v | (j) (PROJECT (h i j k) and (t) (EMPLOYEE(q r s t u v w x y z) and (m) (n) (DEPARTMENT(l m n o) and k = m and n = t and j = STANFFORD) ) ) }
4. Encontrar los nombre de los empleados que no tienen dependientes {q s | (e) (EMPLOYEE (q r s t u v w x y z) and (not (l) (DEPENDENT(l m n o p) and t = l ) ) }
En un aspecto importante, el lgebra relacional y el clculo relacional son idnticos. Se ha demostrado que cualquier recuperacin de informacin que puede ser especificada en el lgebra relacional, tambin lo puede ser en el clculo relacional, y viceversa. Es decir, el poder expresivo de los dos lenguajes es idntico.
Esto ha conducido a la definicin del concepto de lenguaje relacionalmente completo. Un lenguaje de consulta relacional L se llama relacionalmente completo, si se puede expresar en L cualquier consulta que se puede expresar en el clculo relacional.
La completitud relacional se ha convertido en una importante referencia, para comparar el poder expresivo de los lenguajes de consulta de alto nivel.
3. 82 La mayora de los lenguajes de consulta relacionales, son relacionalmente completos, pero tienen ms poder expresivo que el lgebra relacional o el clculo relacional, debido a la incorporacin de operaciones adicionales como funciones, agrupamientos, ordenamientos, etc. Como ejemplo, se pueden mencionar las siguientes capacidades: Comandos de insercin, eliminacin y modificacin, que no son parte del lgebra clculo relacional. Capacidad aritmtica. Ejemplo: A < B + 3 Comandos de asignacin e impresin. Funciones de agregacin. Operaciones tales como promedio, suma, menor o mayor, pueden ser aplicadas a una columna de una relacin, para obtener un determinado valor.
q q
Desarrollado en IBM United Kingdom Scientific Center, Inglaterra. Todd. S. [1976] The Peterlee Relational Test Vehicle A System Overview IBM Systems Journal 15:4, December 1976
q q
Desarrollado en la University of California, Berkeley, EE.UU. Lenguaje asociado al SABD INGRES (The Interactive Graphics and Retrieval System)
Stonebraker M.,
The design and implementation of Ingres ACM Transactions on Database Systems Vol. 1, N 3, Sept.1976 pp. 189 222
q q
Zloof, M.M. [1977] Query by Example : A data Base Language IBM Systems Journal, Vol. 16, N 4, pp 324 343 (1977)
3. 84 Ejemplo de lenguaje basado en una combinacin del lgebra relacional y construcciones del clculo relacional:
Lenguaje SQL (Structured Query Language) SQL, se introdujo como lenguaje de consulta del Sistema R (System R), construdo en el IBM Research Laboratory, San Jos California. Originalmente se llam SEQUEL (Structured English Query Language).
IBM ha desarrollado una familia de productos basados en la tecnologa del Sistema R; entre los que se cuentan: SQL /DS (SQL / Data System) DB2 (Database 2) QMF (Query Management Facility) Actualmente es el lenguaje de consulta ms difundido (estndar de facto).
Astrahan M.M. y otros (1976) System R: A Relational Approach to Data Base Management ACM Transactions on Database System Vol. 1, N 2, Junio 1976, pp 97 137.
Chamberlin D.D. y otros (1976) SEQUEL 2: A Unified Approach to Data Definition, Manipulation, and Control. IBM
Journal of Research and Development Vol. 20, N 6, Noviembre 1976, pp. 560 574.