Sei sulla pagina 1di 45

Capitulo 5

Diseo e Implementacin de Bases de datos Relacionales


Conversin del MER a MR Trabajando con SQL

Profesor: Msc. MIGUEL ANGEL NIO ZAMBRANO

Modelado de Bases de Datos Diseo e Implementacin de BD 5-1

Conversin del MER al MR

Profesor: Msc. MIGUEL ANGEL NIO ZAMBRANO

Modelado de Bases de Datos Diseo e Implementacin de BD 5-2

1 - Diseo Lgico Estndar


Etapas de Diseo:
Esquema lgico Estndar: A partir del esquema conceptual (EER) y teniendo en cuenta los requisitos de proceso y entorno, se elabora un esquema lgico estndar - ELS , que se apoya en un modelo lgico estndar - MLS (MR) el cual ser el mismo modelo de datos soportado por el SGBD que se vaya a utilizar, pero sin las restricciones ligadas a ningn producto comercial. Diseo lgico Especfico: Con el ELS y teniendo en cuenta el modelo lgico especfico MLE propio del SGBD (INGRES, SYBASE, DB2, ORACLE, INFORMIX, INTERBASE, etc.) se elabora un esquema lgico especifico ELE que ser descrito en el lenguaje de definicin de datos LDD del producto comercial que estemos utilizando.
5-3 Especializacin en Desarrollo de Soluciones Informticas

Introduccin al Diseo Lgico de BD En el diseo lgico se deben coordinar exigencias casi siempre encontradas, como son eliminar redundancias, conseguir la mxima simplicidad y evitar cargas suplementarias de programacin, obteniendo una estructura lgica adecuada que venga a establecer el debido equilibrio entre las exigencias de los usuarios y la eficiencia.

Modelado de Bases de Datos Diseo e Implementacin de BD 5-3

2 - Conversin del MER a MR


REGLAS DE TRANSFORMACION GENERICAS:
Todo tipo entidad se convierte en una relacin. Todo Tipo relacin N:M se convierte en una relacin. Para todo tipo de interrelacin 1:N se realiza lo que se denomina Propagacin de Claves (regla general), o bien se crea una nueva relacin. La perdida de semntica del la conversin se puede integrar con la construccin de restricciones del MR.
5-4 Especializacin en Desarrollo de Soluciones Informticas

Reglas de Transformacin de MER a MR Estas reglas, deben aplicarse con cuidado, ya que no todas las interrelaciones tienen su mejor solucin aplicndolas. En ocasiones es necesario establecer otro tipo de manejo para evitar ineficiencia en las tablas resultantes. Para las claves Ajenas se maneja lo siguiente: La clave se coloca en la relacin que tiene la cardinalidad de Interrelacin (M) y viaja de la relacin que tiene la cardinalidad de Interrelacin 1. Cuando es una cardinalidad de interrelacin 1:1 se elige cualquiera de las claves, aunque depende cual es la relacin ms importante en el modelo de datos.

Modelado de Bases de Datos Diseo e Implementacin de BD 5-4

3 - Reglas de Transformacin Especficas Dominios y Atributos

ME/R E_CIVIL

MR
DOMINIO E_CIVIL(S,C,V,D). En SQL2 es: CRETAE DOMAIN Estados_Civiles AS CHAR(1) CHECK (VALUE IN (S,C,V,D))

5-5

Especializacin en Desarrollo de Soluciones Informticas

TRANSFORMACION DE DOMINIOS: Si es de valores que pueden cambiar en el tiempo, se crea una entidad agregando un campo que se convierte en llave primaria de la misma (una secuencia). En caso contrario, se convierte en una condicin CHECK (Restriccin de Verificacin). ATRIBUTOS COMPUESTOS UNIVALUADO: Se convierten en campos adicionales a la relacin los componentes del atributo. ATRIBUTOS COMPUESTOS MULTIVALUADOS: Se crea una nueva relacin con los atributos correspondientes si es compuesto. Se le adiciona un campo que es la llave primaria de la relacin a la que pertenece.

Modelado de Bases de Datos Diseo e Implementacin de BD 5-5

3 - Reglas de Transformacin Especficas - Entidades


MR ME/R
Cd_prof Nombre DNI

PROFESOR

Direccin Telfono Materia

PROFESOR(Cd_prof, Nombre, DNI, Direccin, Telfono, Materia). En SQL2 es: CRETAE TABLE Profesor( Cd_Profesor Cdigos, Nombre Nombres NOT NULL, DNI DNIS NOT NULL, DIreccin Lugares, Telefono Nos_Telefonicos NOT NULL, Materia Materias NOT NULL, PRIMARY KEY (Cd_Profesor), UNIQUE (DNI))

5-6

Especializacin en Desarrollo de Soluciones Informticas

TRANSFORMACION DE ENTIDADES
Transformacin de entidades: Cada tipo entidad se convierte en un relacin. La relacin toma el nombre del tipo entidad que proviene y no se pierde semntica. Transformacin de atributos de entidades: Cada atributo de una entidad se transforma en una columna de la relacin a la que ha dado lugar la entidad. Se debe tener en cuenta los identificadores principales y los identificadores alternativos, stos se manejan as: Atributos identificadores (AIP): Se convierten en Llave primaria en el LLS se maneja con PRIMARY KEY. Atributos identificadores Alternativos (AIA): Se convierten el Llaves secundarias se maneja con UNIQUE. Atributos no identificadores: Son columnas los cuales pueden tomar valores nulos a no ser que se indique lo contrario NOT NULL. ENTIDADES FUERTES: Una entidad E con N atributos, se convierte en una relacin E con N campos (Columnas). ENTIDADES DEBILES: Se crea una relacin a la cual se le adicionan los campos que forman la llave primaria de la entidad de la cual pertenece.
Modelado de Bases de Datos Diseo e Implementacin de BD 5-6

3 - Reglas de Transformacin Especficas Interrelaciones (N:M)


ME/R
Cd_prof

PROFESOR
1:N N:M

MR
PROFESOR(Cd_prof).

Imparte
1:N Cd_Curso

CURSO(Cd_Curso). RELPROFCURSOIMP(Cd_Curso, Cd_prof).

CURSO

5-7

Especializacin en Desarrollo de Soluciones Informticas

TRANSFORMACION DE INTERRELACIONES N:M


Se transforma en una relacin cuya clave primaria ser los dos AIP de los tipo entidad que asocia. La semntica de las relaciones asociadas se debe almacenar adecuadamente. Las claves se convierten en claves ajenas la cual el LLS (SQL2) maneja con la clusula FOREING KEY. Adems hay que tener en cuenta las acciones a realizar en las modificaciones a los datos. (NO ACTION, SET NULL, SET DEFAULT, CASCADE) En SQL2 la conversin de interrelacin N:M sera: CREATE TABLE RELPROFCURSOIMP( Cd_prof Codigos_P, Cod_Curso Codigos_C, ..., PRIMARY KEY (Cd_prof,Cd_Curso), FOREING KEY (Cd_prof) REFERENCES Profesor ON DELETE CASCADE ON UPDATE CASCADE, FOREING KEY (Cd_Curso) REFERENCES Curso ON DELETE CASCADE ON UPDATE CASCADE) La cardinalidad mnima se puede manejar con la implementacin de restricciones como Ej. CREATE ASSERTION Profesor_Curso CHECK NOT EXIST (SELECT COUNT(*) FROM RELPROFCURSOIMP GROUP BY COD_CURSO HAVING COUNT(*)>=4)

Modelado de Bases de Datos Diseo e Implementacin de BD 5-7

3 - Reglas de Transformacin Especficas Interrelaciones (1:N)


EJEMPLO DE SOLUCION 1

ME/R
Cd_prof PROFESOR 1:N N:1 Pertenece 1:1 Cd_Dep DEPARTAMENTO

MR
PROFESOR(Cd_prof, ..., Cod_Dep).

DEPARTAMENTO(Cd_Dep, ...).

5-8

Especializacin en Desarrollo de Soluciones Informticas

TRANSFORMACION DE INTERRELACIONES 1:N


Existen dos soluciones: 1. Propagar los AIP de tipo de entidad que tiene la cardinalidad mxima 1 a la que tienen N, es decir en el sentido de la flecha, desapareciendo el nombre de la interrelacin. 2. Transformarlo en una relacin, como si se tratara de una interrelacin N:M. La clave primaria de la relacin creada es la clave de la tabla que le corresponde la cardinalidad N. En SQL2 la conversin de interrelacin 1:N sera parecido a los caso anteriores, dependiendo de la opcin de conversin tomada.

Modelado de Bases de Datos Diseo e Implementacin de BD 5-8

3 - Reglas de Transformacin Especficas Interrelaciones (1:N)


Cd_Tema

ME/R

TEMA

EJEMPLO DE SOLUCION 2

N:1 Consta

Solucin a: TEMA(Cd_Tema, ..., Cod_TemaSuperior). (Borrado: puesta a nulos;Modificacin: cascada) Solucin b:

MR

TEMA(Cd_Tema, ...). CONSTA(Cd_Tema, Cod_TemaSuperior...). (Borrado y Modificacin: cascada) Nulos no permitidos para Cod_TemaSuperior
Especializacin en Desarrollo de Soluciones Informticas

5-9

TRANSFORMACION DE INTERRELACIONES 1:N


Existen dos soluciones: 1. Propagar los AIP de tipo de entidad que tiene la cardinalidad mxima 1 a la que tienen N, es decir en el sentido de la flecha, desapareciendo el nombre de la interrelacin. 2. Transformarlo en una relacin, como si se tratara de una interrelacin N:M. La clave primaria de la relacin creada es la clave de la tabla que le corresponde la cardinalidad N. En SQL2 la conversin de interrelacin 1:N sera parecido a los caso anteriores, dependiendo de la opcin de conversin tomada.

Modelado de Bases de Datos Diseo e Implementacin de BD 5-9

3 - Reglas de Transformacin Especficas Interrelaciones (1:1)


ME/R
Cd_hombre HOMBRE 0:1

MR
HOMBRE(Cd_hombre, ...). MUJER(Cd_mujer, ...).

Cd_prof

ME/R
PROFESOR 0:1

Ej. 1
Matrimonio

1:1

MATRIMONIO(Cd_hombre, Cd_mujer). (UNIQUE, NOT NULL)

Ej. 2

1:1 Pertenece

0:1

PROFESOR(Cd_prof, ...).
Cd_Mujer MUJER

Cd_depto

DEPTO

DEPTO(Cd_depto, ..., Cd_prof).

5-10

Especializacin en Desarrollo de Soluciones Informticas

TRANSFORMACION DE INTERRELACIONES 1:1 Existen dos soluciones:


1. Propagar los AIP de cualquiera de los tipo entidad a su correspondiente en la relacin, desapareciendo el nombre de la interrelacin. 2. Transformarlo en una relacin, como si se tratara de una interrelacin N:M, dnde se trasladan los cdigos de las entidades que intervienen en la relacin. Los criterios de aplicacin de estos mtodos dependen de cardinalidades mnimas y recoger la mayor semntica posible, evitar los valores nulos o por cuestiones de eficiencia.

Modelado de Bases de Datos Diseo e Implementacin de BD 5-10

3 - Reglas de Transformacin Especficas Atributos de Interrelaciones


ME/R
Cd_prof

PROFESOR
1:N N:M Num_Horas

MR
PROFESOR(Cd_prof).

Imparte
1:N

CURSO(Cd_Curso). RELPROFCURSOIMP(Cd_Curso, Cd_prof, Num_Horas).

Cd_Curso

CURSO

5-11

Especializacin en Desarrollo de Soluciones Informticas

TRANSFORMACION DE ATRIBUTOS DE INTERRELACIONES


Si la interrelacin se transforma en una relacin, todos sus atributos pasan a ser columnas de la relacin. En caso que se utilice la propagacin de claves, sus atributos migran junto a la clave a la relacin que corresponda. Aunque es recomendable conformar una relacin para mantener la semntica.

Modelado de Bases de Datos Diseo e Implementacin de BD 5-11

3 - Reglas de Transformacin Especficas Restricciones


Ej1. CRETAE DOMAIN Nmeros_Naturales AS CHAR(1) CHECK (VALUE BETWEEN 0 AND 9 ) Ej2. CRETAE DOMAIN Colores AS VARCHAR(8) CHECK (VALUE IN (Amarillo,Azul,Rojo)) Otra posibilidad es utilizar la clusula CHECK: Ej. CREATE TABLE Curso( Cd_Curso Cursos, Nombre Nombres NOT NULL, Num_Horas Horas NOT NULL, Fecha_Inicio Fechas NOT NULL, Fecha_Fin Fechas NOT NULL PRIMARY KEY (Cd_Curso), CHECK(Fecha_Inicio < Fecha_Fin ));
5-12 Especializacin en Desarrollo de Soluciones Informticas

TRANSFORMACION DE RESTRICCIONES
Si la interrelacin se transforma en una relacin, todos sus atributos pasan a ser columnas de la relacin. En caso que se utilice la propagacin de claves, sus atributos migran junto a la clave a la relacin que corresponda. Aunque es recomendable conformar una relacin para mantener la semntica.

Modelado de Bases de Datos Diseo e Implementacin de BD 5-12

3 - Reglas de Transformacin Especficas Dependencias de Identificacin


Cod_Curso CURSO 1:N ID Pertenece N:1

EDICION(Cd_Edicin, Cd_Curso...). CURSO(Cd_Curso, ...).


1:1

Clave Ajena: ON DELETE CASCADE ON UPDATE CASCADE

Cod_Edicin identificador

EDICION

(Cd_Curso + Cod_Edicin)

5-13

Especializacin en Desarrollo de Soluciones Informticas

TRANSFORMACION DE DEPENDENCIAS DE IDENTIFICACION Se realiza a travs de Propagacin de claves con manejo de integridad referencial. En SQL92:
CREATE TABLE Curso( Cd_Curso Codigos_C, ..., PRIMARY KEY (Cd_Curso)); CREATE TABLE Edicin( Cd_Curso Codigos_C, Cd_Edicin Codigos_E, ..., PRIMARY KEY (Cd_Curso, Cd_Edicin), FOREING KEY (Cd_Edicin) REFERENCES Curso ON DELETE CASCADE ON UPDATE CASCADE);

Modelado de Bases de Datos Diseo e Implementacin de BD 5-13

3 - Reglas de Transformacin Especficas MER Extendido


AGREGACION: Se toma la llave primaria de las entidades compuestas y la llave primaria de la relacin de la entidades componentes y se agregan a una nueva relacin. GENERALIZACIN: Si es Solapada y Parcial: Se crea una nueva relacin para el supertipo y su llave primaria para a los subtipos. Si es total: Se crean relaciones de las entidades suptipo, donde cada una tiene los atributos del supertipo. No se crea una relacin para el supertipo. AGREGACION: Se toma la llave primaria de las entidades compuestas y la llave primaria de la relacin de la entidades componentes y se agregan a una nueva relacin. INTERRELACIONES RECURSIVAS: Se adiciona un nuevo campo con la llave primaria de la entidad que participa en la interrelacin. Se debe de cambiar el nombre del campo de acuerdo al rol correspondiente. INTERRELACIONES N-ARIAS: Se crea una nueva relacin con el nombre de la interrelacin con todas las llaves primarias de todas las entidades participantes y los atributos de la interrelacin.
5-14 Especializacin en Desarrollo de Soluciones Informticas

TRANSFORMACION MER EXTENDIDO Las dems restricciones del MER Extendido, como la Inclusin y la Exclusin se maneja con restricciones a nivel de Aserciones o Disparadores que controlen la semntica colocada.

Modelado de Bases de Datos Diseo e Implementacin de BD 5-14

Trabajando con SQL

Profesor: Msc. MIGUEL ANGEL NIO ZAMBRANO

Modelado de Bases de Datos Diseo e Implementacin de BD 5-15

Definicin
Es un lenguaje de BD, el cual permite definir, manipular y obtener datos de manera sencilla a travs de consultas etructuradas fciles de utilizar. El Objetivo principal de SQL es la realizacin de consultas y clculos con los datos de una o varias tablas. Esta compuesto por un conjunto reducido de clausulas, pero muy potentes. Es un estndar extendido en muchos SGBD.
5-16 Especializacin en Desarrollo de Soluciones Informticas

Modelado de Bases de Datos Diseo e Implementacin de BD 5-16

Caractersticas Generales
Posibilidad de recuperar conjuntos de datos con diversas operaciones. Lenguaje declarativo Necesidad de Optimizar las consultas. Fcil de aprender y utilizar.
5-17 Especializacin en Desarrollo de Soluciones Informticas

Caractersticas de SQL

El SQL es un lenguaje de acceso a bases de datos que explota la flexibilidad y potencia de los sistemas relacionales permitiendo gran variedad de operaciones sobre los mismos. Es un lenguaje declarativo de "alto nivel" o "de no procedimiento. permitiendo una alta productividad en codificacin y la orientacin a objetos. El orden de ejecucin interno de una sentencia puede afectar gravemente a la eficiencia del SGBD, por lo que se hace necesario que ste lleve a cabo una optimizacin antes de la ejecucin de la misma.

Modelado de Bases de Datos Diseo e Implementacin de BD 5-17

Historia
Ao 1986 1989 1992 1999 Nombre SQL-86 o SQL1 SQL-89 SQL-92 o SQL2 SQL-1999 o SQL3 SQL-2003 Comentarios Primera publicacin hecha por ANSI. Confirmada por ISO en 1987. Revisin menor. Revisin mayor Se agregaron expresiones regulares, consultas recursivas (para relaciones jerrquicas), triggers y algunas caractersticas orientadas a objetos. Introduce algunas caractersticas de XML, cambios en las funciones, estandarizacin del objeto sequence y de las columnas auto numricas. ISO/IEC 9075-14:2006 Define las maneras en las cuales el SQL se puede utilizar conjuntamente con XML. Especializacin en Desarrollo de Soluciones Informticas

2003

2006

SQL-2006
5-18

Definicin de SQL El Lenguaje de consulta estructurado (SQL en ingls Structured Query Language) es un lenguaje declarativo de acceso a bases de datos relacionales que permite especificar diversos tipos de operaciones sobre las mismas. Una de sus caractersticas es el manejo del lgebra y el clculo relacional permitiendo lanzar consultas con el fin de recuperar -de una forma sencilla- informacin de inters de una base de datos, as como tambin hacer cambios sobre la misma. Es un lenguaje de cuarta generacin (4GL). Orgenes y Evolucin Los orgenes del SQL estn ligados a los de las bases de datos relacionales. En 1970 E. F. Codd propone el modelo relacional y asociado a este un sublenguaje de acceso a los datos basado en el clculo de predicados. Basndose en estas ideas, los laboratorios de IBM definen el lenguaje SEQUEL (Structured English QUEry Language) que ms tarde sera ampliamente implementado por el SGBD (Sistemas Gestores de Bases de Datos) experimental System R, desarrollado en 1977 tambin por IBM. Sin embargo, fue Oracle quien lo introdujo por primera vez en 1979 en un programa comercial. El SEQUEL terminara siendo el predecesor de SQL, siendo ste una versin evolucionada del primero. El SQL pasa a ser el lenguaje por excelencia de los diversos SGBD relacionales surgidos en los aos siguientes y es por fin estandarizado en 1986 por el ANSI, dando lugar a la primera versin estndar de este lenguaje, el "SQL-86" o "SQL1". Al ao siguiente este estndar es tambin adoptado por la ISO. Sin embargo este primer estndar no cubre todas las necesidades de los desarrolladores e incluye funcionalidades de definicin de almacenamiento que se consideraron suprimir. As que en 1992 se lanza un nuevo estndar ampliado y revisado del SQL llamado "SQL-92" o "SQL2". En la actualidad el SQL es el estndar de facto de la inmensa mayora de los SGBD comerciales. Y, aunque la diversidad de aadidos particulares que incluyen las distintas implementaciones comerciales del lenguaje es amplia, el soporte al estndar SQL-92 es general y muy amplio. El ANSI SQL sufri varias revisiones y agregados a lo largo del tiempo (ver tabla de la diapositiva) * Tomado de:Wikipedia (http://es.wikipedia.org/wiki/Celda_activa).

Modelado de Bases de Datos Diseo e Implementacin de BD 5-18

Comandos SQL
DLL

DML

Clusulas

5-19

Especializacin en Desarrollo de Soluciones Informticas

Comandos SQL Existen dos tipos de comandos SQL: Los DLL que permiten crear y definir nuevas bases de datos, campos e ndices. Los DML que permiten generar consultas para ordenar, filtrar y extraer datos de la base de datos. Clusulas Las clusulas son condiciones de modificacin utilizadas para definir los datos que desea seleccionar o manipular.

Modelado de Bases de Datos Diseo e Implementacin de BD 5-19

Comandos SQL
Operadores lgicos

Operadores de Informacin

5-20

Especializacin en Desarrollo de Soluciones Informticas

Comandos SQL Estos operadores se utilizan en las clusulas SQL, retornando la operacin establecida.

Modelado de Bases de Datos Diseo e Implementacin de BD 5-20

Comandos SQL
Funciones de Agregado

Predicados

5-21

Especializacin en Desarrollo de Soluciones Informticas

Comandos SQL Funciones de agregado Las funciones de agregado se usan dentro de una clusula SELECT en grupos de registros para devolver un nico valor que se aplica a un grupo de registros. Consultas con Predicados El predicado se incluye entre la clusula y el primer nombre del campo a recuperar.

Modelado de Bases de Datos Diseo e Implementacin de BD 5-21

Creacin de consultas simples


Proyeccin (SELECT). Pertenencia (FROM) Seleccin (WHERE) Comparacin de cadenas (LIKE) Comparacin de fechas y horas (DATE 1948-05-14, TIME 15:00:02.5) Ordenacin de la salida (ORDER BY <lista_de_atributos>).
5-22 Especializacin en Desarrollo de Soluciones Informticas

Consultas Simples (seleccionar de donde). Esta es la forma en que se presentan las consultas de SQL, nos permite tomar el producto de varias relaciones (la clusula FROM), aplicar una condicin a las tuplas del resultado (la clusula WHERE) y producir componentes deseados (clusula SELECT).

Modelado de Bases de Datos Diseo e Implementacin de BD 5-22

Creacin de consultas simples - Ejemplos


Consultas Bsicas SELECT Nombre, Telefono FROM Clientes; Devolver Literales SELECT Empleados.Nombre, 'Tarifa semanal: ', Empleados.TarifaHora * 40 FROM Empleados WHERE Empleados.Cargo = 'Electricista; Ordenar los Registros SELECT CodigoPostal, Nombre, Telefono FROM Clientes ORDER BY Nombre; SELECT CodigoPostal, Nombre, Telefono FROM Clientes ORDER BY CodigoPostal, Nombre; SELECT CodigoPostal, Nombre, Telefono FROM Clientes ORDER BY CodigoPostal DESC , Nombre ASC;
5-23 Especializacin en Desarrollo de Soluciones Informticas

Devolver Literales En determinadas ocasiones nos puede interesar incluir una columna con un texto fijo en una consulta de seleccin, por ejemplo, supongamos que tenemos una tabla de empleados y deseamos recuperar las tarifas semanales de los electricistas. Ordenar Registros Adicionalmente se puede especificar el orden en que se desean recuperar los registros de las tablas mediante la clasula ORDER BY Lista de Campos. En donde Lista de campos representa los campos a ordenar.

Modelado de Bases de Datos Diseo e Implementacin de BD 5-23

Creacin de consultas simples - Ejemplos


SELECT ALL FROM Empleados; SELECT * FROM Empleados; SELECT TOP 25 Nombre, Apellido FROM Estudiantes ORDER BY Nota DESC; SELECT DISTINCT Apellido FROM Empleados; SELECT DISTINCTROW Apellido FROM Empleados;
5-24 Especializacin en Desarrollo de Soluciones Informticas

ALL Si no se incluye ninguno de los predicados se asume ALL. El Motor de base de datos selecciona todos los registros que cumplen las condiciones de la instruccin SQL. No se conveniente abusar de este predicado ya que obligamos al motor de la base de datos a analizar la estructura de la tabla para averiguar los campos que contiene, es mucho ms rpido indicar el listado de campos deseados. TOP Devuelve un cierto nmero de registros que entran entre al principio o al final de un rango especificado por una clusula ORDER BY. Si no se incluye la clusula ORDER BY, la consulta devolver un conjunto arbitrario de 25 registros de la tabla Estudiantes. El predicado TOP no elige entre valores iguales. En el ejemplo anterior, si la nota media nmero 25 y la 26 son iguales, la consulta devolver 26 registros. Se puede utilizar la palabra reservada PERCENT para devolver un cierto porcentaje de registros que caen al principio o al final de un rango especificado por la clusula ORDER BY. Supongamos que en lugar de los 25 primeros estudiantes deseamos el 10 por ciento del curso. (ver ejemplo) DISTINCT Omite los registros que contienen datos duplicados en los campos seleccionados. Para que los valores de cada campo listado en la instruccin SELECT se incluyan en la consulta deben ser nicos. Por ejemplo, varios empleados listados en la tabla Empleados pueden tener el mismo apellido. Si dos registros contienen Lpez en el campo Apellido, la siguiente instruccin SQL devuelve un nico registro. DISTINCTROW Este predicado no es compatible con ANSI. Devuelve los registros diferentes de una tabla; a diferencia del predicado anterior que slo se fijaba en el contenido de los campos seleccionados, ste lo hace en el contenido del registro completo independientemente de los campo indicados en la clusula SELECT. Si la tabla empleados contiene dos registros: Antonio Lpez y Marta Lpez, el ejemplo del predicado DISTINCT devuleve un nico registro con el valor Lpez en el campo Apellido ya que busca no duplicados en dicho campo. Este ltimo ejemplo devuelve dos registros con el valor Lpez en el apellido ya que se buscan no duplicados en el registro completo.

Modelado de Bases de Datos Diseo e Implementacin de BD 5-24

Creacin de consultas simples - Ejemplos


SELECT DISTINCTROW Apellido AS Empleado FROM Empleados; SELECT Apellido AS "Empleado" FROM Empleados; SELECT Apellido AS Empleado FROM Empleados AS Trabajadores; SELECT Trabajadores.Apellido AS Empleado FROM Empleados Trabajadores; SELECT Apellido FROM Servidor1.BaseDatos1.dbo.Empleados
5-25 Especializacin en Desarrollo de Soluciones Informticas

Alias En determinadas circunstancias es necesario asignar un nombre a alguna columna determinada de un conjunto devuelto, otras veces por simple capricho o por otras circunstancias. Para resolver todas ellas tenemos la palabra reservada AS que se encarga de asignar el nombre que deseamos a la columna deseada. Tomado como referencia el ejemplo anterior podemos hacer que la columna devuelta por la consulta, en lugar de llamarse apellido (igual que el campo devuelto) se llame Empleado. AS no es una palabra reservada de ANSI, existen diferentes sistemas de asignar los alias en funcin del motor de bases de datos. En ORACLE para asignar un alias a un campo hay que hacerlo con comillas dobles. Tambin podemos asignar alias a las tablas dentro de la consulta de seleccin, en esta caso hay que tener en cuenta que en todas las referencias que deseemos hacer a dicha tabla se ha de utilizar el alias en lugar del nombre. Esta tcnica ser de gran utilidad ms adelante cuando se estudien las vinculaciones entre tablas. Para asignar alias a las tablas en ORACLE y SQL-SERVER los alias se asignan escribiendo el nombre de la tabla, dejando un espacio en blanco y escribiendo el Alias (se asignan dentro de la clusula FROM). Esta nomenclatura [Tabla].[Campo] se debe utilizar cuando se est recuperando un campo cuyo nombre se repite en varias de las tablas que se utilizan en la sentencia. No obstante cuando en la sentencia se emplean varias tablas es aconsejable utilizar esta nomenclatura para evitar el trabajo que supone al motor de datos averiguar en que tabla est cada uno de los campos indicados en la clusula SELECT. en otros sistemas como SQL-SERVER u ORACLE, la cosa es ms complicada la tener que existir relaciones de confianza entre los servidores o al ser necesaria la vinculacin entre las bases de datos.

Modelado de Bases de Datos Diseo e Implementacin de BD 5-25

Creacin de consultas simples - Ejemplos


SELECT * FROM Empleados WHERE Edad > 25 AND Edad < 50; SELECT * FROM Empleados WHERE (Edad > 25 AND Edad < 50) OR Sueldo = 100; SELECT * FROM Empleados WHERE NOT Estado = 'Soltero'; SELECT * FROM Empleados WHERE (Sueldo > 100 AND Sueldo < 500) OR (Provincia = 'Madrid' AND Estado = 'Casado');

5-26

Especializacin en Desarrollo de Soluciones Informticas

Operadores Lgicos En la siguiente tabla se presenta como se manejan los operadores lgico:

Modelado de Bases de Datos Diseo e Implementacin de BD 5-26

Creacin de consultas simples - Ejemplos


SELECT * FROM Pedidos WHERE CodPostal Between 28000 And 28999; expresin Like modelo.

5-27

Especializacin en Desarrollo de Soluciones Informticas

Uso del Operador LIKE

Modelado de Bases de Datos Diseo e Implementacin de BD 5-27

Consultas de mas de una relacin.


Productos y vnculos en SQL (SELECT ... FROM ... WHERE Campo1 = Campo2 ...) Eliminacin de las ambigedades en los atributos (TABLA.CAMPO) Variables Tuplas (FROM R AS R). Unin, Interseccin y Diferencia de las consultas (Compatibilidad de unin. UNION, INTERSECT, EXCEPT)
5-28 Especializacin en Desarrollo de Soluciones Informticas

Consultas de ms de una Relacin

Modelado de Bases de Datos Diseo e Implementacin de BD 5-28

Consultas de mas de una relacin - Ejemplos


SELECT Nombre_Categora, NombreProducto FROM Categorias INNER JOIN Productos ON Categorias.IDCategoria = Productos.IDCategoria; SELECT Facturas.*, Albaranes.* FROM Facturas INNER JOIN Albaranes ON Facturas.IdAlbaran = Albaranes.IdAlbaran WHERE Facturas.IdCliente = 325;
5-29 Especializacin en Desarrollo de Soluciones Informticas

Tomar Apuntes

Modelado de Bases de Datos Diseo e Implementacin de BD 5-29

SubConsultas
Subconsultas que producen valores escalares. (SELECT ... FROM ... WHERE Campo <operador> (SELECT ... FROM... WHERE...); Condiciones en que intervienen las relaciones. (Sea R una relacin y sea s un valor escalar entonces: EXIST R, s IN R, s > ALL, s > ANY, NOT). Condiciones en las que intervienen las tuplas. (Sea R una relacin y sea t una tupla entonces: (t1,t2,...) IN R, (t1,t2,...) > ALL, (t1,t2,...) > ANY, NOT). Subconsultas correlacionadas. (SELECT ... FROM R as RS WHERE T.campo <operador> (SELECT FROM T WHERE T.Campo2 <operador> RS.Campo2);.
5-30 Especializacin en Desarrollo de Soluciones Informticas

Subconsultas Una subconsulta es una instruccin SELECT anidada dentro de una instruccin SELECT, SELECT...INTO, INSERT...INTO, DELETE, o UPDATE o dentro de otra subconsulta. Puede utilizar tres formas de sintaxis para crear una subconsulta: comparacin [ANY | ALL | SOME] (instruccin sql) expresin [NOT] IN (instruccin sql) [NOT] EXISTS (instruccin sql) En donde: comparacin Es una expresin y un operador de comparacin que compara la expresin con el resultado de la subconsulta. expresin Es una expresin por la que se busca el conjunto resultante de la subconsulta. instruccin sql Es una instruccin SELECT, que sigue el mismo formato y reglas que cualquier otra instruccin SELECT. Debe ir entre parntesis. Se puede utilizar una subconsulta en lugar de una expresin en la lista de campos de una instruccin SELECT o en una clusula WHERE o HAVING. En una subconsulta, se utiliza una instruccin SELECT para proporcionar un conjunto de uno o ms valores especificados para evaluar en la expresin de la clusula WHERE o HAVING. Se puede utilizar el predicado ANY o SOME, los cuales son sinnimos, para recuperar registros de la consulta principal, que satisfagan la comparacin con cualquier otro registro recuperado en la subconsulta. El ejemplo siguiente devuelve todos los productos cuyo precio unitario es mayor que el de cualquier producto vendido con un descuento igual o mayor al 25 por ciento:

Modelado de Bases de Datos Diseo e Implementacin de BD 5-30

Subconsultas - Ejemplos
SELECT * FROM Productos WHERE PrecioUnidad > ANY (SELECT PrecioUnidad FROM DetallePedido WHERE Descuento >= 0 .25); SELECT * FROM Productos WHERE IDProducto IN (SELECT IDProducto FROM DetallePedido WHERE Descuento >= 0.25); SELECT Clientes.Compaa, Clientes.Telfono FROM Clientes WHERE EXISTS (SELECT FROM Pedidos WHERE Pedidos.IdPedido = Clientes.IdCliente)
5-31 Especializacin en Desarrollo de Soluciones Informticas

Ejemplos de Subconsultas Se puede utilizar el predicado ANY o SOME, los cuales son sinnimos, para recuperar registros de la consulta principal, que satisfagan la comparacin con cualquier otro registro recuperado en la subconsulta. El ejemplo siguiente devuelve todos los productos cuyo precio unitario es mayor que el de cualquier producto vendido con un descuento igual o mayor al 25 por ciento. El predicado ALL se utiliza para recuperar nicamente aquellos registros de la consulta principal que satisfacen la comparacin con todos los registros recuperados en la subconsulta. Si se cambia ANY por ALL en el ejemplo anterior, la consulta devolver nicamente aquellos productos cuyo precio unitario sea mayor que el de todos los productos vendidos con un descuento igual o mayor al 25 por ciento. Esto es mucho ms restrictivo. El predicado IN se emplea para recuperar nicamente aquellos registros de la consulta principal para los que algunos registros de la subconsulta contienen un valor igual. El ejemplo siguiente devuelve todos los productos vendidos con un descuento igual o mayor al 25 por ciento: Inversamente se puede utilizar NOT IN para recuperar nicamente aquellos registros de la consulta principal para los que no hay ningn registro de la subconsulta que contenga un valor igual. El predicado EXISTS (con la palabra reservada NOT opcional) se utiliza en comparaciones de verdad/falso para determinar si la subconsulta devuelve algn registro. Supongamos que deseamos recuperar todos aquellos clientes que hayan realizado al menos un pedido:

Modelado de Bases de Datos Diseo e Implementacin de BD 5-31

Otros Operadores
Manejo de Duplicados. (DISCTINCT, UNION ALL, INTERSECT ALL, EXCEPT ALL). Funciones de Agregacin (SUM, AVG, MIN, MAX, COUNT [DISCTINCT], GROUP BY, HAVING)
5-32 Especializacin en Desarrollo de Soluciones Informticas

Modelado de Bases de Datos Diseo e Implementacin de BD 5-32

Otros Operadores - Ejemplos


SELECT Id_Familia, Sum(Stock) FROM Productos GROUP BY Id_Familia; SELECT Id_Familia Sum(Stock) FROM Productos GROUP BY Id_Familia HAVING Sum(Stock) > 100 AND NombreProducto Like BOS*; SELECT Avg(Gastos) AS Promedio FROM Pedidos WHERE Gastos > 100; SELECT Count(*) AS Total FROM Pedidos; SELECT Count(DISTINCT Localidad) AS Total FROM Pedidos;
5-33 Especializacin en Desarrollo de Soluciones Informticas

Modelado de Bases de Datos Diseo e Implementacin de BD 5-33

Otros Operadores - Ejemplos


SELECT Min(Gastos) AS ElMin FROM Pedidos WHERE Pais = 'Espaa'; SELECT Max(Gastos) AS ElMax FROM Pedidos WHERE Pais = 'Espaa'; SELECT Sum(PrecioUnidad * Cantidad) AS Total FROM DetallePedido;
5-34 Especializacin en Desarrollo de Soluciones Informticas

Tomar Notas

Modelado de Bases de Datos Diseo e Implementacin de BD 5-34

Modificacin de la Base de Datos.


Insercin (INSERT INTO R (A1,A2, ..) VALUES (v1,v2, ..)) Eliminacin (DELETE FROM R WHERE <condicin>) Actualizaciones (UPDATE R SET <campo = v1, campo=valor2, ....> WHERE <condicin>)
5-35 Especializacin en Desarrollo de Soluciones Informticas

Modelado de Bases de Datos Diseo e Implementacin de BD 5-35

Definicin de un Esquema Relacional en SQL


Tipos de Datos. (CHAR(n), VARCHAR(n), BIT(n), BIT VARING(n), FLOAT o REAL, DOUBLE PRECISION, DECIMAL(n,d), DATE, TIME) Declaraciones Simples de Tablas. (CREATE TABLE R (Campo1 TIPO, Campo2 TIPO, ...);. Eliminacin de Tablas. (DROP R;). Modificacin de los esquemas relacinales. (ALTER TABLE R [ADD/DROP] Campo TIPO). Valores por omisin (predeterminados) (Campo TIPO DEFAULT valor). Dominios. (CREATE DOMAIN <nombre> AS <descripcin del tipo> [DEFAUL/CHECK]), (ALTER DOMAIN D SET DEFAULT valor), (DROP DOMAIN D;). ndices. (CREATE INDEX I ON R(Campo1[,Campo2, ...] );), (DROP INDEX I).
5-36 Especializacin en Desarrollo de Soluciones Informticas

Modelado de Bases de Datos Diseo e Implementacin de BD 5-36

Definicin de Vistas
Declaracin de Vistas. (CREATE VIEW V AS <Definicin de la vista>). Cambio de Nombre (renombramiento) de los atributos. (CREATE VIEW V (Nuevo1,Nuevo2, ...) AS <Definicin de la vista>). Modificacin de las Vistas (Slo en las vistas actualizables), (DROP VIEW V;).
5-37 Especializacin en Desarrollo de Soluciones Informticas

Modelado de Bases de Datos Diseo e Implementacin de BD 5-37

Manejo de Nulos (NULL)


Hay dos reglas importantes a tener en cuenta: Cuando operamos sobre un valor NULL y cualquier otro, entre ellos otro NULL usando un operador aritmtico como * o +, el resultado ser NULL. Cuando operamos sobre un valor NULL y cualquier otro, entre ellos otro NULL usando un operador de comparacin = o >, el resultado es UNKNOWN, el cual es otro valor de verdad como TRUE o FALSE. X TRUE UNKNOWN UNKNOWN UNKNOWN FALSE
5-38

Y UNKNOWN TRUE UNKNOWN FALSE UNKNOWN

X AND Y UNKNOWN UNKNOWN UNKNOWN FALSE FALSE

X OR Y TRUE TRUE UNKNOWN UNKNOWN UNKNOWN

NOT X FALSE UNKNOWN UNKNOWN UNKNOWN TRUE

Especializacin en Desarrollo de Soluciones Informticas

Operaciones sobre valores nulos


NULL esta especialmente diseado para representar un valor desconocido o inexistente. Las reuniones externas son otra fuente de valores NULL.

Modelado de Bases de Datos Diseo e Implementacin de BD 5-38

Reuniones de Informacin
Expresiones de reunin del lenguaje SQL2. (R CROOS JOIN T, R JOIN T ON <exppresin similar al WHERE>) Reuniones Naturales. (R NATURAL JOIN T) Reuniones Externas. (LEFT OUTER JOIN, RIGHT OUTER JOIN, FULL OUTER JOIN)
5-39 Especializacin en Desarrollo de Soluciones Informticas

Modelado de Bases de Datos Diseo e Implementacin de BD 5-39

Restricciones y Disparadores
Llaves en SQL. (PRIMARY KEY). Si es una sola llave se puede definir en la misma lnea de definicin del campo Ej. Nombre CHAR(30) PRIMARY KEY, . Si son uno o mas atributos la llave se puede definir a nivel de la tabla. Ej. PRIMARY KEY (titulo, ao). Otra forma es con la palabra UNIQUE. A diferencia de PRIMARY KEY pueden existir en una tabla varios atributos nicos. Otra variante del uso de UNIQUE sera. Ej. CREATE UNIQUE INDEX YearIndex ON Movie(year). Integridad Referencial y Llaves Exteriores. (una forma es usar REFERENCES R(atributo), otra es anexar a la lista de atributos de la definicin de la tabla FOREING KEY <atributos> REFERENCES R(atributos).).
5-40 Especializacin en Desarrollo de Soluciones Informticas

Modelado de Bases de Datos Diseo e Implementacin de BD 5-40

Restricciones y Disparadores
Mantenimiento de la Integridad Referencial. (Poltica por omisin: SQL rechaza toda actualizacin que viole la restriccin de integridad referencial. Poltica en Cascada: Se manejan las eliminaciones o actualizaciones en las relaciones referenciadas. Poltica de Asignar valor nulo: Coloca nulos a las relaciones referenciadas). Estas se manejan en las definiciones de las llaves externas con (ON DELETE, ON UPDATE, SET NULL o CASCADE). Restricciones de los valores de atributos. (Se pueden hacer de dos formas: Una restriccin del atributo en la definicin de su esquema relacional o una restriccin de dominio, que se declara despus del dominio del atributo en cuestin.). Restricciones no nulas. (NOT NULL). Restricciones CHECK basadas en atributos. (CHECK(igual a una condicin WHERE). Restriccin de Dominios. (CREATE DOMAIN D TIPO CHECK(VALUE IN (V1,V2))):
5-41 Especializacin en Desarrollo de Soluciones Informticas

Modelado de Bases de Datos Diseo e Implementacin de BD 5-41

Restricciones y Disparadores
Restricciones Globales. (Son restricciones ms complejas que se refieren a las relaciones entre varios atributos o incluso a relaciones diversas).
Restricciones CHECK Basadas en Tuplas. (Se crea como otro atributo de la relacin: Ej. CHECK( gender = F OR name NOT LIKE Ms.%). Aserciones. (CREATE ASSERTION <nombre> CHECK(<condicin>).

Ej. CREATE ASSERTION PresidentesRicos CHECK (NOT EXISTS (SELECT * FROM Estudio, MovieExec WHERE presC# = cer# AND netWorth < 10000000 ) ); Garantiza que los presidentes del estudio sean ricos.
5-42 Especializacin en Desarrollo de Soluciones Informticas

Modelado de Bases de Datos Diseo e Implementacin de BD 5-42

Restricciones y Disparadores
Modificacin de las restricciones. Asignacin de Nombres. (CONSTRAIN NombreEsLlave PRIMARY KEY) Alteracin de las Restricciones. (Ej. ALTER TABLE R [DROP/ADD] CONSTRAIN NombreEsLlave ..) Alteracin de restricciones de dominios. (ALTER DOMAIN D [DROP/ADD] CONSTRAIN ..). Alteracin de Aserciones. (DROP ASSERCTION A)
5-43 Especializacin en Desarrollo de Soluciones Informticas

Modelado de Bases de Datos Diseo e Implementacin de BD 5-43

Preguntas de Repaso
Cules son los elementos que se deben tener en cuenta para convertir del MER al MR? Para que sirve el lenguaje SQL? Realice un mapa mental en el cual clasifique las principales sentencias SQL.
5-44 Especializacin en Desarrollo de Soluciones Informticas

Material De profundizacin Lectura Obligatoria Realice la lectura descrita a continuacin, para complementar lo visto en las diapositivas: 1. Web de Bases de Datos: http://www.programacion.com/tutorial/sql. Lecturas Recomendadas Resumen C:\Users\manzamb\Desktop\Bases EDSI\03-Material Bibliografico\Resumenes y Lecturas\06-Revisin de SQL.pdf

Modelado de Bases de Datos Diseo e Implementacin de BD 5-44

Taller: Modelado Relacional


Realizar el Taller No. 5 - Diseo de Bases de Datos con MR. Trabajar con la Herramienta WinRDBI para trabajar con el Algebra Relacional.

5-45

Especializacin en Desarrollo de Soluciones Informticas

Modelado de Bases de Datos Diseo e Implementacin de BD 5-45