Está en la página 1de 84

3.

CAPITULO III MODELO Y LENGUAJES RELACIONALES FORMALES 3.1 Modelo Relacional


Propuesto por E. F. Codd, en 1970. A relational model for large shared data banks Communications of the ACM. Vol 13, N 6, pp. 377 387. Junio 1970. Tiene slidos fundamentos tericos. Est basado en una estructura de datos simple y uniforme, la relacin.

Ejemplo de una relacin (figura 3.1).

Fig. 3.1 Tabla o relacin EMP

PDF created with pdfFactory Pro trial version www.pdffactory.com

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.

Dominio: Conjunto de valores. Ejemplo: Cardinales (azul, blanco, verde)

Dado ciertos dominios D1, D2, ..., Dk

/ D1 x D2 x ...x Dk es el producto cartesiano

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.

PDF created with pdfFactory Pro trial version www.pdffactory.com

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

automvil (patente: string, marca: string, ao: cardinal)

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.

Fruta (nombre, color) es el esquema de la relacin.

nombre manzana pera naranja

color rojo amarillo anaranjado


Conjunto de tuplas

Al usar nombre de atributos, el orden deja de ser importante => diferencias respecto al modelo matemtico de R D1 x D2 x ... x Dk

PDF created with pdfFactory Pro trial version www.pdffactory.com

3. Ejemplo: color rojo amarillo anaranjado nombre manzana pera naranja

(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)

Pesos . 1,75 211,37 Dominio del dinero

PRODUCTO costo

PERSONAL sueldo

1,75 0,33 17,50

147,50 103,00 211,37

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.

PDF created with pdfFactory Pro trial version www.pdffactory.com

3. Terminologa Relacin: Atributo: Tupla: Grado: Cardinalidad: Tabla. Columna. Fila. Nmero de columnas en la tabla. Nmero de filas de la tabla.

Formal Relacin Tupla Atributo

Informal Tabla Fila Columna

Grado de una relacin (Degree),

Aridad.

Nmero de atributos (nmero de columnas de la tabla).

Cardinalidad de una relacin (Cardinality). Nmero de tuplas (nmero de filas de la tabla).

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.

PDF created with pdfFactory Pro trial version www.pdffactory.com

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.

3.1.2 Restricciones en el Modelo 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.

PDF created with pdfFactory Pro trial version www.pdffactory.com

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:

PDF created with pdfFactory Pro trial version www.pdffactory.com

3. i. Igual al valor de PK en alguna tupla de R1.

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.

PDF created with pdfFactory Pro trial version www.pdffactory.com

3.

Fig. 3.3 Tablas EMP y DEPT

PDF created with pdfFactory Pro trial version www.pdffactory.com

3. 10

Cada valor en la columna DNAME debe ser nico.

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.

Cada valor en la columna SAL debe ser menor que 10,000

Fig. 3.4 Ejemplo de restricciones de integridad

PDF created with pdfFactory Pro trial version www.pdffactory.com

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.

PDF created with pdfFactory Pro trial version www.pdffactory.com

3. 12

Fig. 3.5 Formato para describir una tabla

PDF created with pdfFactory Pro trial version www.pdffactory.com

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

PDF created with pdfFactory Pro trial version www.pdffactory.com

3. 14 Reglas para mantener la integridad referencial

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).

PDF created with pdfFactory Pro trial version www.pdffactory.com

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

El borrado debiera restringirse slo para los departamentos sin empleados.

NULLIFY

La clave fornea debiera quedar en nulo (vlida slo para los FKs que permitan valores nulos) cuando se elimina la PK referenciada.

DEFAULT

La clave fornea queda con un valor definido previamente.

Fig. 3.7 Restriccin de eliminacin utilizando las tablas EMPLOYEE y DEPARTMENT

PDF created with pdfFactory Pro trial version www.pdffactory.com

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).

Fig. 3.8 Restriccin de actualizacin utilizando las tablas EMPLOYEE y DEPARTMENT.

PDF created with pdfFactory Pro trial version www.pdffactory.com

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

actualizadas para reflejar el nuevo valor PK.

RESTRICTED

La

actualizacin

debiera

restringirse

slo

para

los

departamentos sin empleados.

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.

PDF created with pdfFactory Pro trial version www.pdffactory.com

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,

PDF created with pdfFactory Pro trial version www.pdffactory.com

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,

PRIMARY KEY (DNUMBER, DLOCATION), FOREIGN KEY (DNUMBER) REFERENCES DEPARTMENT(DNUMBER) );

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.

PDF created with pdfFactory Pro trial version www.pdffactory.com

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,

Fig. 3.9b Esquema de COMPANY con manejo de la integridad referencial

PDF created with pdfFactory Pro trial version www.pdffactory.com

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.

PDF created with pdfFactory Pro trial version www.pdffactory.com

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,

PDF created with pdfFactory Pro trial version www.pdffactory.com

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.

PDF created with pdfFactory Pro trial version www.pdffactory.com

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.

PDF created with pdfFactory Pro trial version www.pdffactory.com

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.

PDF created with pdfFactory Pro trial version www.pdffactory.com

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.

PDF created with pdfFactory Pro trial version www.pdffactory.com

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.

Fig. 3.10 Modelo E- R para la base de datos COMPANY

PDF created with pdfFactory Pro trial version www.pdffactory.com

3. 28

Fig 3.11 Esquema de la base de datos COMPANY

PDF created with pdfFactory Pro trial version www.pdffactory.com

3. 29

Fig. 3.12 Instancia de la base de datos COMPANY

PDF created with pdfFactory Pro trial version www.pdffactory.com

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.

PDF created with pdfFactory Pro trial version www.pdffactory.com

3. 31

Fig. 3.13 Especializacin definida por atributo, para el atributo JobType de la tabla EMPLOYEE.

EMPLOYEE SSN Fname Minit Lname BirthDate Address JobType

SECRETARY SSN TypingSpeed

TECHNICIAN SSN Tgrade

ENGINEER SSN EngType

(a) Transformacin utilizando opcin 8.a

PDF created with pdfFactory Pro trial version www.pdffactory.com

3. 32 SECRETARY SSN TypingSpeed Fname Minit LName BirthDate Address

TECHNICIAN SSN TGrade FName Minit LName BirthDate Address

ENGINEER SSN EngType FName Minit LName BirthDate Address

(b) Transformacin utilizando opcin 8.b

EMPLOYEE SSN EngType Fname TGrade Minit LName BirthDate Address JobType TypingSpeed

(c) Transformacin utilizando opcin 8.c

EMPLOYEE SSN TGrade Fname EngType Minit LName BirthDate STGrade Address TypeSpeed

STypeSpeed SEngType

(d) Transformacin utilizando opcin 8.d y suponiendo subclases solapadas.

Fig. 3.14 Transformacin al modelo relacional de la especializacin de EMPLOYEE.

PDF created with pdfFactory Pro trial version www.pdffactory.com

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.

Fig. 3.15 Especializacin con subclases no disjuntas (solapadas).

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).

PDF created with pdfFactory Pro trial version www.pdffactory.com

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

NoOfAxie s CAR TRUCK Tonnage

CAR VehicleId LicensePlateNo Price MaxSpeed NoOfPassengers

TRUCK VehicleId LicensePlateNo Price NoOfAxies Tonnage

Fig. 3.18 Modelo relacional para la especializacin de VEHICLE

PDF created with pdfFactory Pro trial version www.pdffactory.com

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.

Fig. 3.19 Especializacin con la subclase compartida ENGINEERING_MANAGER

PDF created with pdfFactory Pro trial version www.pdffactory.com

3. 36 SALARIED_EMPLOYEE SSN Fname Minit LName BirthDate Address Salary

HOURLY_EMPLOYEE SSN Fname Minit LName BirthDate Address ValorHora

MANAGER SSN Fname Minit LName BirthDate Address

ENGINEERING_MANAGER SSN

SECRETARY SSN TypingSpeed

TECHNICIAN SSN Tgrade

ENGINEER SSN EngType

Fig. 3.20 Transformacin al modelo relacional de la subclase compartida ENGINEERING_MANAGER.

PDF created with pdfFactory Pro trial version www.pdffactory.com

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.

Fig. 3.16 Especializacin para la base de datos UNIVERSITY

Fig. 3.21 Especializacin para la base de datos COMPANY

PDF created with pdfFactory Pro trial version www.pdffactory.com

3. 38 PERSON SSN Name BirthDate Sex Address

EMPLOYEE SSN Salary Employee Position Type Rank Percent RAFlag TAFlag Time Project Course

ALUMNUS SSN

ALUMNUS_DEGREES SSN Year Degree Major

STUDENT SSN MajorDept GradFlag UndergradFlag DegreeProgram Class StudAssistFlag

Fig. 3.22 Modelo relacional para la base de datos UNIVERSITY.

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.

PDF created with pdfFactory Pro trial version www.pdffactory.com

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.

Fig. 3.23 Dos categoras: OWNER y REGISTERED_VEHICLE.

PDF created with pdfFactory Pro trial version www.pdffactory.com

3. 40 PERSON SSN DriverLicenseNo Name Address OwnerId

BANK BName BAddress OwnerId

COMPANY Cname CAddress OwnerId

OWNER OwnerId

REGISTERED_VEHICLE VehicleId LicensePlateNumber

CAR VehicledId CStyle CMake CModel CYear

TRUCK VehicledId TMake TModel Tonnage TYear

OWNS OwnerId VehicledId PurchaseDate LienOrRegular

Fig. 3.24 Modelo relacional para las categoras OWNER y REGISTERED_VEHICLE.

PDF created with pdfFactory Pro trial version www.pdffactory.com

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

PDF created with pdfFactory Pro trial version www.pdffactory.com

3. 42

MAQUINARIA COD_MAQ

EMPLEADO RUT

PROYECTO NPROY

TRABAJA RUT NPROY

UTILIZA COD_MAQ RUT NPROY CANTIDAD

Fig. 3.26 Modelo Relacional de la agregacin TRABAJO

PDF created with pdfFactory Pro trial version www.pdffactory.com

3. 43

3.2 Lenguajes relacionales formales


Se tienen dos clases de lenguajes de manipulacin de datos (DMLs) relacionales de propsito especial: 1. Algebra relacional: Notacin algebraica basada en operadores entre relaciones. Procedural!. 2. Clculo relacional. Notacin lgica basada en expresiones o frmulas lgicas que las tuplas deben satisfacer. No procedural!, Descriptivo!.

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)

PDF created with pdfFactory Pro trial version www.pdffactory.com

3. 44 a) Unin de R y S (R U S) tR v tS Aplicable si R y S tienen la misma aridad

unin R UNION S b) Diferencia de R y S (R S) t R t S Aplicable si R y S tienen la misma aridad.

diferencia R MENOS S

diferencia S MENOS R

c) Producto cartesiano de R y S ( R x S) Aridad es (K1 + K2), si aridad de R es K1 y aridad de S es K2.

PDF created with pdfFactory Pro trial version www.pdffactory.com

3. 45

R r11.............r1p m tuplas

S s11.............s1q

. . .
rm1............rmp

. . .
sn1............snq

n tuplas

RXS r11.............r1p n tuplas s11.............s1q

. . .
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

PDF created with pdfFactory Pro trial version www.pdffactory.com

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)

Sueldo 120.000 200.000 180.000

Nombre Prez Fuentes Lpez

PDF created with pdfFactory Pro trial version www.pdffactory.com

3. 47

Depto (S)

Depto Ventas Finanzas Produccin

En la operacin de Proyeccin, puede ser necesaria la eliminacin de duplicados e) Seleccin

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)

Tuplas de S en que el valor de la primera componente es mayor que el de la segunda componente.

Se pueden usar nombres de atributos en lugar de nmeros, por ejemplo,

B = 200 c > 1000 (R)

PDF created with pdfFactory Pro trial version www.pdffactory.com

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 (R)

Nombre Prez

Edad 25

Sueldo 120.000

PDF created with pdfFactory Pro trial version www.pdffactory.com

3. 49

iii)

Edad > 30 (R)

Nombre Fuentes Lpez

Edad 36 45

Sueldo 200.000 180.000

iv)

Edad > 30 Sueldo < 200.000 (R)


Nombre Lpez Edad 45 Sueldo 180.000

No es posible hacer unin ni diferencia con R y S porque tienen distinta aridad.

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

PDF created with pdfFactory Pro trial version www.pdffactory.com

3. 50 a) Interseccin de R y S (R S) tR tS Es el conjunto de tuplas en R y en S R S R (R S)

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

PDF created with pdfFactory Pro trial version www.pdffactory.com

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.

Qu personas han tomado todos los cursos? R/S Mariana

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)

Ejemplo 7: Usando las relaciones del ejemplo 5

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

PDF created with pdfFactory Pro trial version www.pdffactory.com

3. 52 (1,2(R) x S) - R b c c d

1,2 ((1,2(R) x S) R) 1,2(R) - 1,2((1,2(R) x S) R)

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)

PDF created with pdfFactory Pro trial version www.pdffactory.com

3. 53 ii. Equijoin Si =, la operacin se denomina Equijoin.

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

R.Nombre Prez Fuentes Lpez

Edad 25 36 45

Sueldo 120.000 200.000 180.000

S.Nombre Prez Fuentes Lpez

Depto Ventas Produccin Finanzas

PDF created with pdfFactory Pro trial version www.pdffactory.com

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

PDF created with pdfFactory Pro trial version www.pdffactory.com

3. 55 iii. Join Natural

El join natural, escrito R

S, es aplicable solamente cuando las relaciones R y

S tienen atributos con el mismo nombre. El clculo de R i. S procede de la siguiente forma:

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

R.A1 = S.A1 .....R.Ak = S.Ak (R x S)

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

R.B = S.B R.C = S.C (R x S)

PDF created with pdfFactory Pro trial version www.pdffactory.com

3. 56 iv. Semijoin ( R ) S R (R S)

Permite obtener las tuplas de R que participan en el join de R con S R R S=R S 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

Tambin se puede calcular como:

RS

B b a

C c d

RS (S)

A a d c

B b b a

C c c d

PDF created with pdfFactory Pro trial version www.pdffactory.com

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.

PDF created with pdfFactory Pro trial version www.pdffactory.com

3. 58 Ejemplo 14: Dadas las siguientes tablas:

Alumno (Rut, Nombre_Al) Asignatura (Rut, Nombre_Asig)

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.

Nombre_Al, Nombre_Asig (Alumno

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

1. Dado el modelo relacional para la empresa COMPANY (figuras 3.27 y 3.28);

PDF created with pdfFactory Pro trial version www.pdffactory.com

3. 59

Fig 3.27 Esquema de la base de datos COMPANY.

PDF created with pdfFactory Pro trial version www.pdffactory.com

3. 60

Fig. 3.28 Instancia de la base de datos COMPANY.

PDF created with pdfFactory Pro trial version www.pdffactory.com

3. 61 a) Recuperar el nombre y la direccin de los empleados que trabajan para el departamento Research.

Fname,
Minit, Lname, Address

( ( Dname = RESEARCH DEPARTMENT)

EMPLOYEE)

DNO = DNUMBER

Fname, [Dname = RESEARCH(DEPARTMENT


Minit, Lname, Address

EMPLOYEE)]

DNO = DNUMBER

b) Encontrar el nombre de los empleados que trabajan en algn proyecto controlados por el departamento nmero 5.

Fname, ((DNUM = 5PROJECT)


Minit, LName

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.

Pnumber, (( PLOCATION = `STAFFORD PROJECT)


Dnum, Fname, Minit, Lname, Bdate, Address

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

PDF created with pdfFactory Pro trial version www.pdffactory.com

3. 62 2. Se tiene el siguiente esquema:

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.

Apellido, [ (Crditos > 12 Curso


Categora, Sala, Hora

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).

PDF created with pdfFactory Pro trial version www.pdffactory.com

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.

Estas variantes se denominan: Clculo relacional de tuplas. Clculo relacional de dominios.

Basado en una rama de la lgica matemtica llamada el clculo de predicados.

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.

PDF created with pdfFactory Pro trial version www.pdffactory.com

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:

{t | EMPLOYEE(t) and t.SALARY > 50.000}

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

WHERE T.SALARY > 50.000;

PDF created with pdfFactory Pro trial version www.pdffactory.com

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.

PDF created with pdfFactory Pro trial version www.pdffactory.com

3. 66 Una expresin general para el clculo relacional de tuplas es la siguiente:

{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.

PDF created with pdfFactory Pro trial version www.pdffactory.com

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:

1. Cada tomo es una frmula.

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.

PDF created with pdfFactory Pro trial version www.pdffactory.com

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.

PDF created with pdfFactory Pro trial version www.pdffactory.com

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)))

PDF created with pdfFactory Pro trial version www.pdffactory.com

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.

PDF created with pdfFactory Pro trial version www.pdffactory.com

3. 71

Fig. 3.29 Esquema de la base de datos COMPANY.

PDF created with pdfFactory Pro trial version www.pdffactory.com

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) ) }

3. Para cada empleado, recuperar su nombre y el nombre de su jefe inmediato.

{e.FNAME, e.LNAME, s.FNAME, s.LNAME | EMPLOYEE(e) AND EMPLOYEE(s) AND e.SUPERSSN = s.SSN}

PDF created with pdfFactory Pro trial version www.pdffactory.com

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) ) ) }

PDF created with pdfFactory Pro trial version www.pdffactory.com

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) ) }

PDF created with pdfFactory Pro trial version www.pdffactory.com

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.

PDF created with pdfFactory Pro trial version www.pdffactory.com

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.

PDF created with pdfFactory Pro trial version www.pdffactory.com

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.

PDF created with pdfFactory Pro trial version www.pdffactory.com

3. 78 Se usarn las letras minsculas l, m, n, ...., x, y, z, para las variables de dominio.

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

PDF created with pdfFactory Pro trial version www.pdffactory.com

3. 79 3.2.2.2.2 Ejercicios Dada la base de datos COMPANY (figura 3.30), escribir en CRD las siguientes consultas:

Fig. 3.30 Esquema de la base de datos COMPANY.

PDF created with pdfFactory Pro trial version www.pdffactory.com

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.

PDF created with pdfFactory Pro trial version www.pdffactory.com

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 ) ) }

3.2.3 Consideraciones fundamentales.

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.

PDF created with pdfFactory Pro trial version www.pdffactory.com

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.

3.3 Lenguajes Relacionales Comerciales


Los lenguajes de base de datos asociados a sistemas relacionales comerciales, estn basados en algunos de los lenguajes matemticos estudiados anteriormente: lgebra relacional. clculo relacional de dominios. clculo relacional de tuplas.

Ejemplo de lenguaje basado en el lgebra relacional:

Lenguaje ISBL (Information System Base Language)

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

PDF created with pdfFactory Pro trial version www.pdffactory.com

3. 83 Ejemplo de lenguaje basado en el clculo relacional de tuplas:

Lenguaje QUEL (Query Language)

q q

Desarrollado en la University of California, Berkeley, EE.UU. Lenguaje asociado al SABD INGRES (The Interactive Graphics and Retrieval System)

Stonebraker M.,

Wong E., Kreps P., Held G.D.

The design and implementation of Ingres ACM Transactions on Database Systems Vol. 1, N 3, Sept.1976 pp. 189 222

Ejemplo de lenguaje basado en el clculo relacional de dominios:

Lenguaje QBE (Query By Example)

QBE = Consulta por medio de ejemplos


q

Desarrollado en IBM Yorktown Heights Research Laboratory, New York, EE.UU.

q q

Zloof, M.M. [1977] Query by Example : A data Base Language IBM Systems Journal, Vol. 16, N 4, pp 324 343 (1977)

PDF created with pdfFactory Pro trial version www.pdffactory.com

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).

Varios DBMS se llaman directamente SQL.

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.

PDF created with pdfFactory Pro trial version www.pdffactory.com

También podría gustarte