Bases de Datos Relacionales

Preview:

Citation preview

Bases de Datos Relacionales

Universidad Autonóma de TlaxcalaDr. Alberto Portilla Flores

Modelo relacional

Notas by Dr. José Luis Zechinelli Martini

3

Introducción El almacenamiento y la manipulación de

datos ha sido una aplicación de importancia mayor desde los primeros días de las computadoras

Las aplicaciones que requieren de almacenar y recuperar datos, continúan evolucionando Presumiblemente, las tecnologías de Gestión de

Datos continuarán siendo el objeto de esfuerzos de desarrollo e innovación

4

CaracterísticasBasado en la teoría de relaciones:

Álgebra relacional, Calculo de predicados SQL.

Modelo de datos simple y formal.

Alto grado de independencia física.

Lenguaje declarativo (SQL) de manipulación de datos.

5

Conceptos (1)Un dominio es un conjunto de valores atómicos

caracterizados por un nombre:

enteros, nombres, edades, ciudades, colores_primarios, etc.

Puede ser definido en intención o en extensión:

enteros = lN+.

enteros = {0, 1, 2, 3, …, ∞ }.

6

Ejemplo colores_primarios =

{rojo, verde, azul}.

nombres = {cadenas de 20 caracteres} ó {juan, pedro, pablo}.

enteros = N+ {0,1,2,3, . . ., ∞} {numeros <= 10} {1,4,6,7}

Notas Por cada dominio es necesario precisar su nombre y el tipo de datos. Desde el punto de vista de la implementación se tienen dominios

predefinidos. (Enteros, booleanos, etc.)

7

Conceptos (2)

Una relación n-aria es un subconjunto de un producto cartesiano de n dominios.

Sean {D1, D2, ... , Dn} un conjunto de dominios y R una relación, R D1 D2 ... Dn.

Cada elemento (v1, v2, ... , vn) R es una tupla y n

es el grado de R.

8

Relación n-aria (1/2)

Intención de una relación (esquema de relación):

Dominios: D1, D2, ..., Dn.

Constituyentes: A1, A2, ..., An donde dom(Ai) = Di con i = 1, 2, ...,

n.

Nombre de relación: R

regla o predicado que indica si una tupla (v1, v2, ..., vn) pertenece o no

al producto cartesiano de dominios que definen la relación.

Extensión de una relación:

{ (v1, v2, ..., vn) D1x D2 x ... Dn ½ R(v1, v2, ..., vn) = verdadero }.

9

Relación n-aria (2/2) Un esquema de relación de grado n se denota por R(A1, A2, ..., An).

Un constituyente dentro de una relación indica el rol de un dominio en una relación.

Una asignación de un D de valores a cada atributo o constituyente:

Di = dom( Ai ).

Ai : Di.

Una tupla en R se denota por (v1, v2, ..., vn) donde vi es el valor

correspondiente al constituyente A.

Un predicado de pertenencia de tuplas a la relación:

R(v1, v2, ... , vn) = verdadero.

10

EjemploD1 = Nombre

D2 = Ciudad

D3 = Ciudad

Nombre = {juan, pedro, pablo}

Ciudad = {puebla, cholula, mexico}

Calcule D=NombrexCiudadxCiudad

La tupla (n,v1,v2) E R tiene el significado:La persona de nombre n nació en la ciudad v1 y

vive en la ciudad v2.

11

Relación n-aria: Resumen Intención: esquema de relación R(A1, A2, ..., An) que es

invariante en el tiempo.

Extensión: representa los datos presentes a un instante dado en la BD estado de la BD.

Un valor de atributo es atómico (eventualmente nulo).

La n-tupla es una secuencia ordenada de valores de atributos.

Una relación es un conjunto de n-tuplas donde no existe noción de orden.

12

Ejemplo

R( ESCUELA, DIA, HORA, SALON, PROFESOR )

Intención: El PROFESOR p da clases en la ESCUELA e el DIA d, a la HORA

h, en la SALON s.

El dominio del constituyente HORA está definido por el conjunto de enteros comprendido entre 7 y 20.

Un profesor a una hora dada en el mismo día sólo puede estar en un salón.

Los atributos DIA, HORA y PROFESOR no pueden ser nulos.

13

Esquema de relación (2)Se define como una pareja R = < X, S > donde

X = { A1, A2, ..., An } un conjunto de constituyentes y S representa parte de la semántica de la relación.

S es un conjunto de restricciones de integridad.

14

Restricciones de integridad

Una restricción de integridad es una propiedad que no varía en el tiempo.

Son un medio para asegurar que los cambios que se hacen en la base de datos por usuarios autorizados no resultan en una perdida de la coherencia de los datos.

15

Tipos de restricciones Restricciones de dominio: forma más elemental de

restricción de integridad permiten probar valores insertados en la base.

Valores nulos: la inserción de tuplas incompletas puede introducir valores nulos en la base. Para ciertos atributos los valores nulos son inapropiados.

Llaves: por definición las tuplas de una relación son distintas entre si. El sistema debe asegurar esta unicidad.

16

Tipos de restricciones

Estructurales: describe la manera en que los atributos se relacionan entre si.

Restricciones referenciales: describen la manera en que se relacionan las tablas. Aseguran que un valor que aparece en una relación para un conjunto de atributos aparece para un cierto conjunto de atributos en otra relación.

17

Restricción referencial (ejemplo)

CURSO NOMBRE

IS-341IS-417

PedroJuan

CURSO MATERIA

IS-341IS-417

BDSD

ESTUDIANTE HORARIO

18

Super-llave de una relación

Existe un subconjunto de atributos de una relación que permite diferenciar a las tuplas entre si. Esto quiere decir que dos tuplas no tienen la misma combinación de valores para esos atributos.

Todo conjunto de atributos que verifica esta propiedad es una super-llave del esquema.

Existes al menos una super-llave ...

19

Llave de una relación

Una llave es un conjunto de atributos mínimo que permite identificar de manera única a una tupla.

La llave es una super-llave tal que si le quitamos un atributo entonces ya no es super-llave.

Ejemplo:

R( ID, NOMBRE, APELLIDOS, FECHA )

20

Llave extranjera: dependencias inter-relaciones

Sean R1 y R2 dos relaciones:

Una llave extranjera impone que el valor de un grupo de atributos de R1 aparece como valor de llave en R2 (dependencias inter-relaciones).

VIAJE( NUM_VIAJE, DESTINACION, SALIDA, LLEGADA, PRECIO )

CLIENTE( NUM_CLIENTE, NOMBRE, APELLIDOS, DIRECION )

RESERVACION( NUM_RESERVACION,

NUM_VIAJE, FECHA_R, NUM_CLIENTE, OFERTA )

21

Restricciones de integridad referencial

Expresada entre dos relaciones

Consiste en verificar que la información utilizada en una tupla para designar otra es válida, en particular si la tupla designada existe.

Orden de creación o destrucción de las relaciones (tablas).

22

Esquema relacional de bases de datos

Conjunto de esquemas de relación:

S = ( R1, R2, ..., Rn )

S conjunto de restricciones de integridad:

(S, S)

( R1, R2, ..., Rn ) realización de un esquema relacional.

23

CURSO NOMBRE CIUDAD FECHAN DEPORTE

IS-341IS-341IS-341IS-580

PedroMaríaJuliaJuan

CholulaPueblaPueblaCholula

11/10/8004/04/8015/03/8120/07/79

FootballNataciónEsgrimaFootball

CURSO DIAS HORA MATERIA PROFESOR SALON LIBRO

IS-341IS-580

MJ LMV

13:00-13:5005:00-05:50

BDSBD

José LuisJosé Luis

21022245

NavatheNavathe

ESTUDIANTE

HORARIO

NOMBRE MATERIA CALIFICACION

PedroMaríaJulia

BDBDBD

8.0 10.0 9.0

RESULTADO

24

Ejemplo

Dado tres esquemas de relación:

ESTUDIANTE = <{ CURSO, NOMBRE, CIUDAD, FECHAN, DEPORTE }, S1>

a) “El estudiante de NOMBRE n toma el CURSO c, habita en la CIUDAD ci, tiene por FECHA de nacimiento f y práctica el DEPORTE d”.

b) CIUDAD no puede ser NULO.

c) La llave primaria de la relación ESTUDIANTE es (NOMBRE).

S1 = { a, b, c }

25

Ejemplo

HORARIO = <{ CURSO, DIAS, HORA, MATERIA,

PROFESOR, SALON, LIBRO }, S2>

d) “El PROFESOR p enseña la MATERIA s con el LIBRO l en el CURSO c los DIAS d a la HORA h en el SALON s”.

e) “El número de horas de clase para cada curso es inferior a 30”.

f) “Un profesor a una hora determinada sólo puede estar en un salón e impartiendo un solo curso”.

2S = { d, e, f }

26

Ejemplo

RESULTADO = <{ NOMBRE, MATERIA,

CALIFICACION }, 3S >

g) “El estudiante de NOMBRE n obtuvo la CALIFICACION c en la MATERIA m”.

h) La llave primaria de la relación RESULTADO es (NOMBRE, MATERIA).

3S = { g, h }

27

Ejemplo

Esquema relacional: (S, S)

i) “El CURSO de la relación ESTUDIANTE debe existir como valor en la relación HORARIO”.

j) “La MATERIA de la relación RESULTADO debe existir como valor en la relación HORARIO”.

k) “Los NOMBREs de la relación RESULTADO están contenidos en el conjunto de nombres de la relación ESTUDIANTE”.

( S = {ESTUDIANTE, HORARIO, RESULTADO}, S = { i, j, k } )

28

Ejercicio

a) Supongamos que se quiere agregar la siguiente tupla a la relación HORARIO:

(IS-417, LMV, 08:00-08:50, Pablo, 7110, Mullender )

¿Es está una relación del esquema HORARIO?

b) ¿Es posible agregar en ESTUDIANTE la siguiente tupla?

(IS-580, Alicia, México, 08/12/78, Esgrima )

Alberto Portilla Flores
Agregar otrom ejemplo.

29

Modelo dedatos

(modelo lógico)

Representación de datos

(esquema)

Lenguaje de manipulación

(necesidades del usuario)

Alberto Portilla Flores
Aqui se debera realizar la primera evaluacion.Se presenta la siguiente parte del curso.

Álgebra relacional

Notas by Dr. José Luis Zechinelli Martini

¿Cómo manipular las relaciones?

Álgebra relacional: colección de operadores que permiten: La selección de tuplas en una relación; La combinación de tuplas de relaciones diferentes.

Principio: La aplicación de uno o más operadores sobre una

relación da siempre como resultado una relación (cerradura).

La información a recuperar se expresa bajo la forma de una relación obtenida por aplicación sucesiva de operadores binarios o únarios cuyos operandos son las relaciones de la BD.

Agencia de viajes: RUTA DEL SOL

NOMBRE DIRECCIONJuanRosarioPedroAmaliaCelia

Cain MurrayCain MurrayIgnacio BernalJosé GaosColey Taylor

DESTINACION SALIDA PRECIOAcapulcoVeracruz

01/06/0415/08/04

2000.001000.00

CLIENTE VIAJE

NUMERO NOMBRE DESTINACION001002003004

JuanJuanCeliaAmalia

VeracruzAcapulcoAcapulcoAcapulco

RESERVACION

NOMBRE TIPOFIESTA INNCAMINO REALMIRADOR

453

HOTEL

NOMBRE TIPOCITADINESHOME LUXFIESTA INN

354

APARTAMENTOS

Alberto Portilla Flores
Motivacion de los operadores

Clientes de ruta del sol que viven en el colegio Cain Murray:

NOMBRE DIRECCIONJuanRosario

Cain MurrayCain Murray

NOMBRE DIRECCIONJuanRosarioPedroAmaliaCelia

Cain MurrayCain MurrayIgnacio BernalJosé GaosColey Taylor

CLIENTE R

Selección

Nombre de los clientes que tienen una reservación:

NOMBREJuanCeliaAmalia

NUMERO NOMBRE DESTINACION001002003

JuanCeliaAmalia

VeracruzAcapulcoAcapulco

RESERVACION R

Proyección

Hoteles ofrecidos por ruta del sol en sus viajes

DESTINACION SALIDA PRECIOAcapulcoVeracruz

01/06/0315/08/03

2000.001000.00

VIAJE

NOMBRE TIPOFIESTA INNCAMINO REALMIRADOR

453

HOTEL

Producto cartesiano

NOMBRE TIPO DESTINACION SALIDA PRECIO

FIESTA INNFIESTA INNCAMINO REALCAMINO REALMIRADORMIRADOR

445533

AcapulcoVeracruzAcapulcoVeracruzAcapulcoVeracruz

01/06/0315/08/0301/06/0315/08/0301/06/0315/08/03

2000.001000.002000.001000.002000.001000.00

R

Alojamiento con el que trabaja ruta del sol en sus destinos:

NOMBRE TIPOFIESTA INNCAMINO REALMIRADOR

453

HOTEL

NOMBRE TIPOCITADINESHOME LUXFIESTA INN

354

APARTAMENTOS

Unión

NOMBRE TIPOFIESTA INNCAMINO REALMIRADORCITADINESHOME LUX

45335

R

Diferencia

NOMBRE TIPOFIESTA INNCAMINO REALMIRADOR

453

NOMBRE TIPOCITADINESHOME LUXFIESTA INN

354

Cadenas que trabajan con ruta del sol y que sólo ofrecen hoteles:

NOMBRE TIPOCAMINO REALMIRADOR

53

HOTEL APARTAMENTOS

R

Notación (1)Sean R(X), S(Y), T(Z) tres relaciones con:

X = {X1, X2, ..., Xn}

Y = {Y1, Y2, ..., Yp}

Z = {Z1, Z2, ..., Zq}

Las tuplas son expresadas r є R, s є S, t є T.

Notación (2)

f es una expresión de selección tal que:

Xi θ constante con θ Î { =, >, <, =, <=, >= } es una expresión de selección.

Xi θ Xj son expresiones de selección.

Si f1 y f2 son expresiones de selección, entonces f1 ^ f2, f1 v f2, ¬ f1 son expresiones de selección.

Operaciones de baseOperación Notación Resultado

Selección R : fσ f (R)

{ r(X) r Î R ^ f(r) = verdadero }

Proyección R : (A)π A (R)

{ r(A) r Î R }A Í X

Producto cartesiano

R × S { t = (r, s) r Î R ^ s Î S }Z = X È Y

Unión R È S { t t Î R v t Î S }( n = p ^ dom(Xi) = dom(Yi) )

Diferencia R – S { t t Î R ^ t Ï S }( n = p ^ dom(Xi) = dom(Yi) )

Ejemplos (1)Selección:

CLIENTE : DIRECCION = “Cain Murray”σ DIRECCION = “Cain Murray” (CLIENTE)

Proyección:RESERVACION : (NOMBRE )π NOMBRE (RESERVACION)

π NOMBRE (σ DIRECCION = “Cain Murray” (CLIENTE))

Ejemplos (2)

Producto cartesiano: π NOMBRE, DESTINACION (HOTEL × VIAJE)

σ PRECIO < 1500 (π NOMBRE, DESTINACION (HOTEL × VIAJE))

Unión: HOTEL È APARTAMENTOS

Diferencia: HOTEL – APARTAMENTOS (HOTEL È APARTAMENTOS) –

(σ ¬ TIPO = 3 (HOTEL È APARTAMENTOS))

SQL

Notas by Dr. Luciano García-Bañuelos

44© L. García-Bañuelos

Estructura básica de una consulta

SELECT [DISTINCT]

FROM

WHERE

A ( (R1R2...Rn))

Lista-de-relaciones

Predicado-de-selección

Lista-de-atributos

45© L. García-Bañuelos

Algunos comentarios La parte SELECT indica la lista de atributos a proyectar en el

resultado La clausula opcional DISTINCT elimina tuplas duplicadas en

el resultadoEste es el comportamiento normal en teoría de conjuntos

El caracter * puede substituir a la lista de atributos, e indica que todos serán proyectados

La parte FROM especifica una lista de relaciones sobre las cuales se calculará un producto cartesiano

La parte WHERE especifica la condición de selección Nótese que esta parte es opcional

46© L. García-Bañuelos

Nuestra primera consulta¿Cuál es el nombre de los empleados que ganan más

de 34000?

NE NOMBRE PUESTO SAL

1 J. Pérez Gerente 40000

2 M. López Analista 34000

3 A. Lira Analista 34000

4 J. Mirón Consultor 40000

5 B. Cortina Ingeniero 34000

6 L. Cosio Programador 24000

7 R. Barco Programador 24000

8 J. Aspe Gerente 40000

NOMBRE(sal>34000(EMP))EMP NOMBRE

select NOMBRE

sal>34000 EMP

from EMPwhere sal>34000

NOMBRE

J. Pérez

J. Mirón

J. Aspe

47© L. García-Bañuelos

Álgebra relacional y SQL

(R)

A(R)

R S

select *from Rwhere

select Afrom R

select *from R, S

48© L. García-Bañuelos

Ejemplos (1/3)

NE NOMBRE PUESTO SAL

1 J. Pérez Gerente 40000

8 J. Aspe Gerente 40000

EMPNP NOMBRE PRESUPUESTO NG

1 Textil IS 2000000 1

2 e-Portal 2500000 1

PROY

EMP EMP.NE=PROY.NG PROYselect *from EMP, PROYwhere EMP.NE = PROY.NG

NE NOMBRE PUESTO SAL NP NOMBRE PRESUPUESTO NG

1 J. Pérez Gerente 40000 1 Textil IS 2000000 1

1 J. Pérez Gerente 40000 2 e-Portal 2500000 1

49© L. García-Bañuelos

Ejemplos (2/3)

NE NOMBRE PUESTO SAL

1 J. Pérez Gerente 40000

8 J. Aspe Gerente 40000

EMPNP NOMBRE PRESUPUESTO NG

1 Textil IS 2000000 1

2 e-Portal 2500000 1

PROY

select E.NOMBREfrom EMP E, PROY Pwhere E.NE = P.NG

NOMBRE

J. Pérez

J. Pérez

select DISTINCT EMP.NOMBREfrom EMP, PROYwhere EMP.NE = PROY.NG

NOMBRE

J. Pérez

Podemos asignar

nombres cortos a cada relación

50© L. García-Bañuelos

Ejemplos (3/3)SQL provee un operador especial para buscar

cadenas con expresiones regulares

NE NOMBRE PUESTO SAL

1 J. Pérez Gerente 40000

2 M. López Analista 34000

3 A. Lira Analista 34000

4 J. Mirón Consultor 40000

5 B. Cortina Ingeniero 34000

6 L. Cosio Programador 24000

7 R. Barco Programador 24000

8 J. Aspe Gerente 40000

EMP

NOMBRE

J. Pérez

M. López

select NOMBREfrom EMPwhere NOMBRE like ‘%ez’

51© L. García-Bañuelos

UniónBusquemos los nombres de los gerentes de

los proyectos

NE NOMBRE PUESTO SAL

1 J. Pérez Gerente 40000

4 J. Mirón Consultor 40000

8 J. Aspe Gerente 40000

NE NOMBRE PUESTO SAL

2 M. López Analista 34000

3 A. Lira Analista 34000

4 J. Mirón Consultor 40000

5 B. Cortina Ingeniero 34000

EMP1EMP2

NP NOMBRE PRESUPUESTO NG

1 Textil IS 2000000 1

2 e-Portal 2500000 3

PROY

52© L. García-Bañuelos

Versión en SQLLa siguiente consulta es una respuesta

válida:

select EMP1.NOMBREfrom EMP1, PROYwhere EMP1.NE = PROY.NG

UNION

select EMP2.NOMBREfrom EMP2, PROYwhere EMP2.NE = PROY.NG

53© L. García-Bañuelos

Intersección Busquemos ahora los nombres de los empleados que

aparecen en ambas relaciones

NE NOMBRE PUESTO SAL

1 J. Pérez Gerente 40000

4 J. Mirón Consultor 40000

8 J. Aspe Gerente 40000

NE NOMBRE PUESTO SAL

2 M. López Analista 34000

3 A. Lira Analista 34000

4 J. Mirón Consultor 40000

5 B. Cortina Ingeniero 34000

EMP1 EMP2

select NOMBREfrom EMP1INTERSECTselect NOMBREfrom EMP2

54© L. García-Bañuelos

Diferencia Busquemos ahora los nombres de los empleados que

están en EMP1 pero no en EMP2

NE NOMBRE PUESTO SAL

1 J. Pérez Gerente 40000

4 J. Mirón Consultor 40000

8 J. Aspe Gerente 40000

NE NOMBRE PUESTO SAL

2 M. López Analista 34000

3 A. Lira Analista 34000

4 J. Mirón Consultor 40000

5 B. Cortina Ingeniero 34000

EMP1 EMP2

select NOMBREfrom EMP1EXCEPTselect NOMBREfrom EMP2

EXCEPT es el nombre para la diferencia. Algunos SGBDs usan MINUS

55© L. García-Bañuelos

Consultas anidadas (operador IN)

¿Qué hace la siguiente consulta?

select *from EMP1where NE in (select EMP2.NE

from EMP2)

NE NOMBRE PUESTO SAL

2 M. López Analista 34000

3 A. Lira Analista 34000

4 J. Mirón Consultor 40000

5 B. Cortina Ingeniero 34000

EMP2

NE NOMBRE PUESTO SAL

1 J. Pérez Gerente 40000

4 J. Mirón Consultor 40000

8 J. Aspe Gerente 40000

EMP1NE NOMBRE PUESTO SAL

4 J. Mirón Consultor 40000

¡Calcula la intersección de las dos relaciones!

56© L. García-Bañuelos

Operador IN (2/3) También nos sirve para calcular la semireunión

En la consulta anidada, buscamos en PROY el conjunto de valores de NG (número de empleado del gerente de proyecto) y posteriormente seleccionamos todas las tuplas de EMP que tengan un NE en el resultado

select *from EMPwhere NE in (select NG

from PROY)

57© L. García-Bañuelos

Operador IN (3/3)Con el mismo principio, calculemos la

diferencia

select *from EMP1where NE NOT IN (select EMP2.NE

from EMP2)

58© L. García-Bañuelos

Otros operadoresEXISTS

Regresa un valor verdadero si una subconsulta resulta en una relación no nula

Operadores de comparación con conjuntosPermiten comparar (cf. =, <, >, <=, >=, <>) un

valor con las tuplas en el resultado de una consulta:

ANY Verdadero si alguno de elloscumplen la comparación

ALL Verdadero si todos cumplen la comparación

59© L. García-Bañuelos

Consultas correlacionadas En los ejemplos anteriores, la subconsulta es

independiente de la externa

Sin embargo, es posible hacer referencia a resultados en la consulta externa

select *from EMPwhere EXISTS (select *

from PROYwhere PROY.NG = EMP.NE)

Esta consulta calcula:

EMP PROY.NG = EMP.NE PROY

60© L. García-Bañuelos

Operadores de agregaciónSe trata de operaciones aritméticas que se

aplican sobre los resultados en una columna COUNT ([DISTINCT] A)

Número de valores (distintos) en la columna A

SUM ([DISTINCT] A)Suma de todos los valores (distintos) en la columna A

AVG ([DISTINCT] A)Promedio de los valores (distintos) en la columna A

MAX(A)Valor máximo de la columna A

MIN(A)Valor mínimo de la columna A

61© L. García-Bañuelos

Ejemplos¿Cuantos empleados están registrados en la

relación EMP?

NE NOMBRE PUESTO SAL

1 J. Pérez Gerente 40000

2 M. López Analista 34000

3 A. Lira Analista 34000

4 J. Mirón Consultor 40000

5 B. Cortina Ingeniero 34000

6 L. Cosio Programador 24000

7 R. Barco Programador 24000

8 J. Aspe Gerente 40000

EMP

select COUNT(NOMBRE)from EMP

select COUNT(*)from EMP

62© L. García-Bañuelos

Ejemplos¿Cuales son los nombres de los empleados

con mayor salario?

select NOMBREfrom EMPwhere salario >= ALL (select salario

from EMP)

select NOMBREfrom EMPwhere salario = (select MAX(salario)

from EMP)

¡Una segunda alternativa usando operaciones de agregación!

63© L. García-Bañuelos

Fórmulas GROUP BY y HAVING

Permiten agrupar subconjuntos de tuplas, y aplicar operadores de agregación

SELECT [DISTINCT] Lista-de-atributos

FROM Lista-de-relaciones

WHERE Predicado-de-selección

GROUP BY Lista-de-grupos

HAVING Calificación-sobre-el-grupo

64© L. García-Bañuelos

Ejemplos (1/2)¿Cuantos empleados hay en los diferentes

puestos?

NE NOMBRE PUESTO SAL

1 J. Pérez Gerente 40000

2 M. López Analista 34000

3 A. Lira Analista 34000

4 J. Mirón Consultor 40000

5 B. Cortina Ingeniero 34000

6 L. Cosio Programador 24000

7 R. Barco Programador 24000

8 J. Aspe Gerente 40000

EMP select PUESTO, COUNT(*)from EMPgroup by PUESTO

PUESTO COUNT(*)

Gerente 2

Analista 2

Consultor 1

Ingeniero 1

Programador 2

65© L. García-Bañuelos

Ejemplos (2/2)¿Cuantos empleados hay en los diferentes

puestos, con salario mayor a 30000?

NE NOMBRE PUESTO SAL

1 J. Pérez Gerente 40000

2 M. López Analista 34000

3 A. Lira Analista 34000

4 J. Mirón Consultor 40000

5 B. Cortina Ingeniero 34000

6 L. Cosio Programador 24000

7 R. Barco Programador 24000

8 J. Aspe Gerente 40000

EMP select PUESTO, COUNT(*)from EMPgroup by PUESTOhaving SAL > 30000

PUESTO COUNT(*)

Gerente 2

Analista 2

Consultor 1

Ingeniero 1

Concepción de bases de datos

Notas by Dr. José Luis Zechinelli Martini

Objetivos del modelado

Permitir una mejor comprensión: Sistemas reales demasiado complejos. Abstracción de los aspectos cruciales del problema. Omisión de detalles.

Permitir una concepción progresiva: Abstracción y refinamiento sucesivos. Posibilidad de implementar rápidamente. Organización en módulos o vistas. Generación de las estructuras de datos y de sus tratamientos.

Facilitar la visualización del sistema: Diagramas con notaciones simples y precisas. Comprensión visual y no solamente intelectual.

Pasos de la concepción

Cinco etapas:

Percepción del mundo real.

Elaboración del esquema conceptual.

Concepción del esquema lógico.

Afinación del esquema lógico.

Elaboración del esquema físico.

1.- Percepción del mundo real

Esta etapa consiste en:

Estudiar los problemas de los usuarios y comprender sus necesidades.

Realizar entrevistas.

Analizar la información y los procesos propios de una aplicación.

Estudiar los casos parciales (en caso de tener problemas al entender el problema completo).

Resultado: esquemas externos.

Se requiere utilizar procesos de tipo negocios, reingeniería y de modelado de problemas (ingeniería de software, economía, psicología).

2.- Elaboración del esquema conceptual

Integración de los esquemas externos de la etapa precedente en un esquema conceptual: global,

no redundante,

Coherente.

Ida y regreso con la etapa anterior.

Resultado: un esquema conceptual (ER, UML).

3.- Concepción del esquema lógico

Transformación del esquema conceptual en estructuras de datos soportados por el SGBD elegido: Relaciones (sistemas relacionales). Relaciones + tipos (sistemas objeto relacional). Clases y asociaciones (sistemas orientado a objetos).

Resultado: un esquema lógico (etapa automatizable).

4.- Refinamiento del esquema lógico

El esquema lógico es un buen esquema: Sin olvidos.

Ni redundancia de información.

Resultado: un esquema lógico en buena forma.

5.- Elaboración del esquema físico

Obtener un buen desempeño:

Transacciones (identificar los patrones de acceso y de modificaciones frecuentes).

Indexación.

Reagrupar, dividir, replicar.