Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Proceso:
Salidas:
Reporte de pagos.
Estados de cuenta.
Plizas contables (interfase automtica)
Consultas de saldos en pantalla de una terminal.
3.
Lograr
ventajas competitivas a travs de su implantacin y uso.
Esta etapa consta de tres fases: diseo conceptual, diseo lgico y diseo
fsico de la base de datos. La primera fase consiste en la produccin de un
esquema conceptual, que es independiente de todas las consideraciones
fsicas. Este modelo se refina despus en un esquema lgico eliminando las
construcciones que no se pueden representar en el modelo de base de datos
escogido (relacional, orientado a objetos, etc.). En la tercera fase, el esquema
lgico se traduce en un esquema fsico para el SGBD escogido. La fase de
diseo fsico considera las estructuras de almacenamiento y los mtodos de
acceso necesarios para proporcionar un acceso eficiente a la base de datos
en memoria secundaria.
Los objetivos del diseo de la base de datos son:
ficheros, en los que el usuario tiene que trabajar con un conjunto fijo de
consultas, o bien, dispone de un gran nmero de programas de
aplicacin costosos de gestionar.
Hay dos tipos de lenguajes de manejo de datos: los procedurales y los
no procedurales. Estos dos tipos se distinguen por el modo en que
acceden a los datos. Los lenguajes procedurales manipulan la base de
datos registro a registro, mientras que los no procedurales operan
sobre conjuntos de registros. En los lenguajes procedurales se
especifica qu operaciones se deben realizar para obtener los datos
resultado, mientras que en los lenguajes no procedurales se especifica
qu datos deben obtenerse sin decir cmo hacerlo. El lenguaje no
procedural ms utilizado es el SQL (Structured Query Language) que,
de hecho, es un estndar y es el lenguaje de los SGBD relacionales.
Abstraccin de la informacin.
Una base de datos es en esencia una coleccin de archivos relacionados
entre s, de la cual los usuarios pueden extraer informacin sin considerar las
fronteras de los archivos.
Un objetivo importante de un sistema de base de datos es proporcionar a
los usuarios una visin abstracta de los datos, es decir, el sistema esconde
ciertos detalles de cmo se almacenan y mantienen los datos. Sin embargo
para que el sistema sea manejable, los datos se deben extraer
eficientemente.
Existen diferentes niveles de abstraccin para simplificar la interaccin de
los usuarios con el sistema; Interno, conceptual y externo, especficamente el
de almacenamiento fsico, el del usuario y el del programador.
Nivel fsico.
Es la representacin del nivel ms bajo de abstraccin, en ste se describe
en detalle la forma en como de almacenan los datos en los dispositivos de
Por ltimo, los atributos pueden ser derivados. Un atributo derivado es aquel
que representa un valor que se puede obtener a partir del valor de uno o
varios atributos, que no necesariamente deben pertenecer a la misma
entidad o relacin.
Identificador
Un identificador de una entidad es un atributo o conjunto de atributos que
determina de modo nico cada ocurrencia de esa entidad. Un identificador de
una entidad debe cumplir dos condiciones:
1. No pueden existir dos ocurrencias de la entidad con el mismo valor del
identificador.
2. Si se omite cualquier atributo del identificador, la condicin anterior
deja de cumplirse.
Toda entidad tiene al menos un identificador y puede tener varios
identificadores alternativos. Las relaciones no tienen identificadores.
Jerarqua de generalizacin
Una entidad E es una generalizacin de un grupo de entidades E , E , ... E ,
si cada ocurrencia de cada una de esas entidades es tambin una ocurrencia
de E. Todas las propiedades de la entidad genrica E son heredadas por las
subentidades.
Cada jerarqua es total o parcial, y exclusiva o superpuesta. Una jerarqua es
total si cada ocurrencia de la entidad genrica corresponde al menos con una
ocurrencia de alguna subentidad. Es parcial si existe alguna ocurrencia de la
entidad genrica que no corresponde con ninguna ocurrencia de ninguna
subentidad. Una jerarqua es exclusiva si cada ocurrencia de la entidad
genrica corresponde, como mucho, con una ocurrencia de una sola de las
subentidades. Es superpuesta si existe alguna ocurrencia de la entidad
genrica que corresponde a ocurrencias de dos o ms subentidades
diferentes.
Un subconjunto es un caso particular de generalizacin con una sola entidad
como subentidad. Un subconjunto siempre es una jerarqua parcial y
exclusiva.
2.1.1
Entidad.
96310418
Nombre
Esp
,
,
LI
, COMD741101YHR
, Daniel Coln Morales
, 3000
Relacin.
Limitantes de mapeo.
Existen 4 tipos de relaciones que pueden establecerse entre entidades,
las cuales establecen con cuantas entidades de tipo B se pueden relacionar
una entidad de tipo A:
Tipos de relaciones:
Relacin uno a uno.
Se presenta cuando existe una relacin como su nombre lo indica uno a
uno, denominado tambin relacin de matrimonio. Una entidad del tipo A
solo se puede relacionar con una entidad del tipo B, y viceversa;
Por ejemplo: la relacin asignacin de automvil que contiene a las
entidades EMPLEADO, AUTO, es una relacin 1 a 1, ya que asocia a un
empleado con un nico automvil por lo tanto ningn empleado posee ms
A:
Representa
una
entidad
de
cualquier
tipo
diferente
a
una
entidad
B.
R: en el diagrama representa a la relacin que existe entre las entidades.
El extremo de la flecha que se encuentra punteada indica el uno de la
relacin, en este caso, una entidad A ligada a una entidad B.
Relacin uno a muchos.
Significa que una entidad del tipo A puede relacionarse con cualquier
cantidad de entidades del tipo B, y una entidad del tipo B solo puede estar
relacionada con una entidad del tipo A.
Su representacin grfica es la siguiente:
Muchas a muchas.
Establece que cualquier cantidad de entidades del tipo A pueden estar
relacionados con cualquier cantidad de entidades del tipo B.
Ejemplo : En una eleccin para un cargo pblico, los candidatos al puesto pueden ser
independientes o estar apoyados por uno o varios partidos polticos, por su parte los partidos
polticos pueden apoyar a solo un candidato o abstenerse y no apoyar a ninguno. La cardinalidad
mxima en este caso es de Uno a Muchos (1:M) y la mnima es de Cero a Cero (0:0) ya que un
candidato podra no ser apoyado por ningn partido y un partido podra no apoyar a ningn
candidato.
Diagrama Entidad-Relacin
Denominado por sus siglas como: E-R; Este modelo representa a la
realidad a travs de un esquema grfico empleando los terminologa de
entidades, que son objetos que existen y son los elementos principales que
se identifican en el problema a resolver con el diagramado y se distinguen de
otros por sus caractersticas particulares denominadas atributos, el enlace
que que rige la unin de las entidades esta representada por la relacin del
modelo.
Recordemos que un rectngulo nos representa a las entidades; una elipse
a los atributos de las entidades, y una etiqueta dentro de un rombo nos
indica la relacin que existe entre las entidades, destacando con lneas las
uniones de estas y que la llave primaria de una entidad es aquel atributo que
se encuentra subrayado.
A continuacin mostraremos algunos ejemplos
considerando las cardinalidades que existen entre ellos:
de
modelos
E-R,
Indicamos con este ejemplo que existe una relacin de pertenencia de uno
a uno, ya que existe una tarjeta de circulacin registrada por cada automvil.
Relacin
muchos
muchos.
Nombr
Salari
Puesto
RFC
e
o
Tefilo Vendedo 2000
r
Cesar
Auxiliar
1200
ventas
TEAT701210XY
Z
COV741120AB
C
Tabla artculo
Clave
Descripci
Costo
n
A100
Abanico
C260
Colcha
matrimoni 1200
al
460
Tabla Venta
RFC
Clav
e
TEAT701210XY
C260
Z
COV741120AB
A100
C
Ntese que en la tabla de relacin - Venta -, contiene como atributos a las
llaves primarias de las entidades que intervienen en dicha relacin, en caso
de que exista un atributo en las relaciones, este atributo es anexado como
una fila ms de la tabla;
Por ejemplo si anexamos el atributo fecha a la relacin venta, la tabla que
se originaria sera la siguiente:
RFC
Clav
Fecha
e
TEAT701210XY
C260 10/12/96
Z
COV741120AB
A100 11/12/96
C
DIAGRAMAS DE ENTIDAD - RELACIN
*
Conjunto
de
entidades
o
relacin
con
*
Conjunto
entidades
con
* Cada elemento debe etiquetarse con su nombre.
sus
atributos
relaciones
Notas:
a) Las entidades dbiles se sealan como rectngulos de doble pared
b) Los papeles se indican etiquetando las lneas que conectan a los
rectngulos con los rombos.
Ejercicios:
EJERCICIOS
Academia de clases
Crear un diseo entidad relacin que permita controlar el sistema de
informacin de una academia de cursos siguiendo estas premisas:
Ejercicio 2. Geografa
Crear un diseo entidad relacin que permita almacenar datos geogrficos
referidos a Espaa:
Ejercicio 3. Almacn v1
Se trata de crear una base de datos sobre un almacn de piezas de modo
que:
Cada pieza se identifica con dos letras (tipo, por ejemplo TU=tuerca) y
un nmero (modelo, por ejemplo 6)
Almacenamos un atributo que permite saber la descripcin de cada
tipo de pieza. Es decir el tipo TU tendr la descripcin tuerca.
Necesitamos conocer el precio al que vendemos cada pieza.
Adems hay piezas que se componen de otras piezas, por ejemplo una
puerta se compone de una hoja de madera, una bisagra y un picaporte.
Incluso una pieza puede estar compuesta de otras piezas que ha su vez
pueden estar compuestas por otras y as sucesivamente
Tenemos una serie de almacenes de los que guardamos su nmero,
descripcin, direccin y el nombre de cada estantera de almacn.
Cada estantera se identifica por tres letras.
Necesitaremos saber la cantidad de piezas que tenemos en cada
almacn y saber en qu estanteras estn las piezas buscadas
RFC del cliente, nombre del cliente, domicilio, clave del articulo, descripcin,
costo unitario, numero de factura, fecha, cantidad de artculos vendidos (de
cada
uno).
http://www.itlp.edu.mx/publica/tutoriales/basedat2/index.htm
Especificacin de requisitos funcionales.- Vamos a definir las
operaciones que se harn sobre la base de datos (operaciones permitidas
sobre la base de datos)
Especificacin de requisitos funcionales.- Primero se procede a
realizar el diseo lgico, que consiste en adaptar el diseo conceptual al
sistema de gestin de la base de datos, y a continuacin se realiza el diseo
fsico, que consiste en dar todas las caractersticas de almacenamiento de la
base de datos.
http://html.rincondelvago.com/bases-de-datos_18.html
USO DE CONJUNTOS
RELACIONES
DE
ENTIDADES
DE
CONJUNTOS
DE
vistas, cada una de las cuales describe un aspecto especfico del producto o
sistema en construccin.
El modelado sirve no solamente para los grandes sistemas, aun en
aplicaciones de pequeo tamao se obtienen beneficios de modelado, sin
embargo es un hecho que entre ms grande y ms complejo es el sistema,
ms importante es el papel de que juega el modelado por una simple razn:
"El hombre hace modelos de sistemas complejos porque no puede
entenderlos en su totalidad".
UML es una tcnica para la especificacin sistemas en todas sus fases. Naci
en 1994 cubriendo los aspectos principales de todos los mtodos de diseo
antecesores y, precisamente, los padres de UML son Grady Booch, autor del
mtodo Booch; James Rumbaugh, autor del mtodo OMT e Ivar Jacobson,
autor de los mtodos OOSE y Objectory. La versin 1.0 de UML fue liberada
en Enero de 1997 y ha sido utilizado con xito en sistemas construidos para
toda clase de industrias alrededor del mundo: hospitales, bancos,
comunicaciones, aeronutica, finanzas, etc.
Los principales beneficios de UML son:
generales o reglas que indican cmo utilizar los elementos. Las reglas son
sintcticas, semnticas y pragmticas (figura 1).
figura 1
Vistas: Las vistas muestran diferentes aspectos del sistema modelado. Una
vista no es una grfica, pero s una abstraccin que consiste en un nmero
de diagramas y todos esos diagramas juntos muestran una "fotografa"
completa del sistema. Las vistas tambin ligan el lenguaje de modelado a los
mtodos o procesos elegidos para el desarrollo. Las diferentes vistas que
UML tiene son:
Estructura de datos.
Integridad de datos.
Manejo de datos.
http://www3.uji.es/~mmarques/f47/apun/node45.html
Relaciones
Definiciones informales
El modelo relacional se basa en el concepto matemtico de relacin, que
grficamente se representa mediante una tabla. Codd, que era un experto
matemtico, utiliz una terminologa perteneciente a las matemticas, en
concreto de la teora de conjuntos y de la lgica de predicados.
Una relacin es una tabla con columnas y filas. Un SGBD slo necesita que el
usuario pueda percibir la base de datos como un conjunto de tablas. Esta
percepcin slo se aplica a la estructura lgica de la base de datos (en el
nivel externo y conceptual de la arquitectura de tres niveles ANSI-SPARC). No
se aplica a la estructura fsica de la base de datos, que se puede
implementar con distintas estructuras de almacenamiento.
Un atributo es el nombre de una columna de una relacin. En el modelo
relacional, las relaciones se utilizan para almacenar informacin sobre los
objetos que se representan en la base de datos. Una relacin se representa
grficamente como una tabla bidimensional en la que las filas corresponden
a registros individuales y las columnas corresponden a los campos o atributos
de esos registros. Los atributos pueden aparecer en la relacin en cualquier
orden.
Calle
Area
Poblaci
Telfono
n
O5
Enmedio, 8
201 964
340
201
O7
Moyano,
s/n
215 964
670
215
O3
San Miguel,
1
964
250
520 964
255
520
O4
Trafalgar,
23
Castell 964
n
440
284 964
420
284
O2
Cedre, 26
964
810
525 964
811
252
Villarreal
Grao
Villarreal
Fax
PLANTILLA
Enu
m
Nombr Apellid
Telfon
Direccin
Puesto
e
o
o
964
Magallane
284
s, 15
560
Director
Fecha_n Salari
DNI
ac
o
12/10/62 30000
Onu
m
39432212
O5
E
Castelln
EG37 Pedro
Cubed Bayarri,
o
11
964
535
690
Supervis
24/3/57
or
18000
38766623
O3
X
Administ. 9/5/70
12000
24391223
O3
L
Villarreal
EG14 Luis
964
Collado Borriol, 35 522
230
Villarreal
EA9
Rita
Renau
964
Casalduch
257
, 32
550
Supervis
19/5/60
or
18000
39233190
O7
F
19/12/50 24000
25644309
O3
X
Castelln
EG5
Julio
Prats
964
Melilla, 23 524
590
Director
Villarreal
EL41 Carlos Baeza
Herrero,
51
964
247
250
Supervis
29/2/67
or
18000
39552133
O5
T
Castelln
Un dominio es el conjunto de valores legales de uno o varios atributos. Los
dominios constituyen una poderosa caracterstica del modelo relacional.
Cada atributo de una base de datos relacional se define sobre un dominio,
pudiendo haber varios atributos definidos sobre el mismo dominio. La
siguiente tabla muestra los dominios de los atributos de la relacin OFICINA.
Ntese que en esta relacin hay dos atributos que estn definidos sobre el
mismo dominio, Telfono y Fax.
Atributo
Nombre
Dominio
Onum
NUM_OFICINA
del
Descripcin
Definicin
3
caracteres;
rango
O99
O1-
25
caracteres
Calle
NOM_CALLE
Area
NOM_AREA
Poblaci
Nombres
NOM_POBLACION
n
Espaa
de
las
poblaciones
de 15
caracteres
Telfono NUM_TEL_FAX
9 caracteres
Fax
9 caracteres
NUM_TEL_FAX
consta
y todos los
con
, donde
par
se tiene que
es la cardinalidad de la relacin
. En cada
Los valores de los atributos son atmicos: en cada tupla, cada atributo
toma un solo valor. Se dice que las relaciones estn normalizadas.
No hay dos atributos que se llamen igual.
El orden de los atributos no importa: los atributos no estn ordenados.
Cada tupla es distinta de las dems: no hay tuplas duplicadas.
El orden de las tuplas no importa: las tuplas no estn ordenadas.
http://www3.uji.es/~mmarques/f47/apun/node48.html
Tipos de relaciones
En un SGBD relacional pueden existir varios tipos de relaciones, aunque no
todos manejan todos los tipos.
http://www3.uji.es/~mmarques/f47/apun/node49.html
Claves
Ya que en una relacin no hay tuplas repetidas, stas se pueden distinguir
unas de otras, es decir, se pueden identificar de modo nico. La forma de
identificarlas es mediante los valores de sus atributos.
PLANTILLA
INMUEBLE
INQUILINO
(Qnum,
Nombre,
Tipo_pref,
Apellido,
Direccin,
Telfono,
Alquiler_max)
PROPIETARI
(Pnum, Nombre, Apellido, Direccin, Telfono)
O
VISITA
(Qnum, Inum, Fecha, Comentario)
En el esquema, los nombres de las relaciones aparecen seguidos de los
nombres de los atributos encerrados entre parntesis. Las claves primarias
son los atributos subrayados. Las claves ajenas se representan mediante los
siguientes diagramas referenciales.
PLANTILL
Oficina a la que pertenece el
OFICINA
:
A
empleado.
INMUEBLE
PROPIETARI
: Propietario del inmueble.
O
INMUEBLE
PLANTILLA
Empleado
inmueble.
INMUEBLE
OFICINA
VISITA
INQUILINO
Inquilino que
inmueble.
encargado
ha
visitado
del
el
VISITA
INMUEBLE : Inmueble que ha sido visitado.
A continuacin se muestra un estado (instancia) de la base de datos cuyo
esquema se acaba de definir.
OFICINA
Onu
m
Calle
Area
Poblaci
Telfono
n
O5
Enmedio, 8
201 964
340
201
O7
Moyano,
s/n
215 964
670
215
O3
San Miguel,
1
964
250
520 964
255
520
O4
Trafalgar,
23
Castell 964
n
440
284 964
420
284
O2
Cedre, 26
964
810
525 964
811
252
Villarreal
Grao
Villarreal
Fax
PLANTILLA
Enu
Onu
o
964
Magallane
284
s, 15
560
ac
Director
12/10/62 30000
m
39432212
O5
E
Castelln
EG37 Pedro
964
535
690
Cubed Bayarri,
o
11
Supervis
24/3/57
or
18000
38766623
O3
X
Administ. 9/5/70
12000
24391223
O3
L
Supervis
19/5/60
or
18000
39233190
O7
F
19/12/50 24000
25644309
O3
X
Villarreal
EG14 Luis
964
Collado Borriol, 35 522
230
Villarreal
EA9
Rita
Renau
964
Casalduch
257
, 32
550
Castelln
EG5
Julio
Prats
964
Melilla, 23 524
590
Director
Villarreal
EL41 Carlos Baeza
964
247
250
Herrero,
51
Supervis
29/2/67
or
18000
Castelln
INMUEBLE
Inum Calle
Area
Poblaci
Ha Alquile
Tipo
Pnum
n
b
r
Centro
Castell Cas
6
n
a
600
P46
Ronda
Sur
Castell
Piso 4
n
350
P87
IG4
Grao
Castell
Piso 3
n
300
P40
Cas
3
a
325
P93
Sorell, 5
IG36 Alicante,1
Segorbe
39552133
O5
T
IG21
San Francisco,
10
IG16
Capuchinos,
19
Vinaroz
Piso 5
550
P87
Rafalafen Castell
Piso 4
a
n
400
P93
PROPIETARIO
Pnu
m
Nombr Apellid
Direccin
e
o
Telfono
P46
Ampar
Felip
o
964
680
230
P87
Manuel Obiol
964
760
450
P40
Alberto Estrada
Av. del
Castelln
52, 964
740
200
P93
Yoland
Robles Pursima 4, Segorbe
a
964
430
710
Puerto
INQUILINO
Qnu
m
Nombr Apellid
Direccin
e
o
Q76
Juan
Felip
Q56
Ana
Grange San
Rafael
l
Almazora
Q74
Elena
Abaso
Navarra
Castelln
Q62
Alicia
Mori
Barcel
Castelln
VISITA
Qnu
m
Inu
m
Q56
IA14 24/11/99
Q76
IG4
Q56
IG4
26/11/99
Q62
IA14 14/11/99
Fecha
Comentario
muy
pequeo
no
saln
tiene
Telfono
Tipo Alquiler
47, 964
540
282
45, 964
110
551
76, 964
560
205 Cas
700
a
964
580
229
Piso 375
Piso 300
Piso 550
Q56
IG36 28/10/99
http://www3.uji.es/~mmarques/f47/apun/node51.html
lgebra relacional
El lgebra relacional es un conjunto de operaciones que describen paso a
paso como computar una respuesta sobre las relaciones, tal y como stas
son definidas en el modelo relacional. Denominada de tipo procedimental, a
diferencia del Clculo relacional que es de tipo declarativo.
Describe el aspecto de la manipulacin de datos. Estas operaciones se usan como
una representacin intermedia de una consulta a una base de datos y, debido a sus propiedades
algebraicas, sirven para obtener una versin ms optimizada y eficiente de dicha consulta.
Tuplas
Una tupla se define como una funcin finita que asocia unvocamente los
nombres de los atributos de una relacin con los valores de una instanciacin
de la misma. En trminos simplistas, es una fila de una tabla relacional.
Unin compatible
Una unin es compatible entre dos relaciones R, S, si ellas poseen el mismo
grado y el dominio del iesimo elemento de la relacin R es el mismo que el
iesimo elemento de la relacin S.
Grado (Aridad)
Nmero de atributos.
Las operaciones
Bsicas
Cada operador del lgebra acepta una o dos relaciones y retorna una
relacin como resultado. y son operadores unarios, el resto de los
operadores son binarios. Las operaciones bsicas del lgebra relacional son:
Seleccin ()
Ejemplo:
donde
Ejemplo:
Muestra una nueva relacin, cuyo esquema contiene cada una de las tuplas
de la relacin Alumnos junto con las tuplas de la relacin Maestros,
mostrando primero los atributos de la relacin Alumnos seguidos por las
tuplas de la relacin Maestros.
Unin ()
La operacin
) (Natural Join)
Ejemplos
Suponga las relaciones o tablas:
(PARTIDOS).
Alumno
I
NOMBR
D E
0 Pedro
1
1 Juan
1
2 Diego
1
3 Rosita
1
4 Manuel
1
CIUDAD
Santiago
EDA
D
14
Buenos
Aires
Lima
18
Concepci
n
Lima
15
12
17
Apoderado
ID NOMBR FONO ID_ALUMN
E
O
05 Vctor
65464 21
4
4
45 Jos
45465 11
7
4
35 Mara
99745 31
4
5
44 Paz
74742 01
4
3
Curso
COD NOMBRE
FECHA_INICI
O
0114 Sicologa
13-01
2
0214 Biologa
15-02
5
0354 Matemtic 01-03
7
as
0457 Msica
05-04
8
0547 Fsica
20-04
8
Inscrito
I
ID_A COD
D L
1 01
0547
8
2 01
0214
5
DURACIO
N
15
VALO
R
3.000
12
2.500
30
4.000
10
1.500
15
3.200
11
21
41
0354
7
0214
5
0354
7
NOMBRE
(alumno)
CIUDAD
EDA
D
14
ID
(apoderad
o)
054
NOMBRE
(apoderado
)
Vctor
Pedro
Santiago
01
Pedro
Santiago
14
457
Jos
01
Pedro
Santiago
14
354
Mara
01
Pedro
Santiago
14
444
Paz
11
Juan
18
054
Vctor
11
Juan
18
457
Jos
11
Juan
18
354
Mara
11
Juan
18
444
Paz
21
Diego
Buenos
Aires
Buenos
Aires
Buenos
Aires
Buenos
Aires
Lima
12
054
Vctor
21
Diego
Lima
12
457
Jos
21
Diego
Lima
12
354
Mara
21
Diego
Lima
12
444
Paz
31
Rosita
15
054
Vctor
31
Rosita
15
457
Jos
31
Rosita
Concepci
n
Concepci
n
Concepci
n
15
354
Mara
FONO
ID_ALUM
NO
65464
4
45465
4
99745
5
74742
3
65464
4
45465
4
99745
5
74742
3
65464
4
45465
4
99745
5
74742
3
65464
4
45465
4
99745
5
21
11
31
01
21
11
31
01
21
11
31
01
21
11
31
31
Rosita
15
444
Paz
Manuel
Concepci
n
Lima
41
17
054
Vctor
41
Manuel
Lima
17
457
Jos
41
Manuel
Lima
17
354
Mara
41
Manuel
Lima
17
444
Paz
74742
3
65464
4
45465
4
99745
5
74742
3
01
FONO
ID_ALUMN
O
74742
3
45465
4
65464
4
99745
5
01
21
11
31
01
Juan
21
Diego
31
Rosita
CIUDAD
EDA
D
Santiago
14
Apoderados
ID
NOMBRE
(apoderado (apoderado)
)
444
Paz
Buenos
Aires
Lima
18
457
Jos
12
054
Vctor
Concepci
n
15
354
Mara
11
21
31
Ahora, aqu debemos mostrar solo el nombre del alumno y el nombre del
apoderado, esto lo hacemos con un Proyect o Proyeccin, donde la tabla
final sera:
NOMBRE
(alumno)
Pedro
Juan
Diego
Rosita
NOMBRE
(apoderado)
Paz
Jos
Vctor
Mara
Apoderados
Se lee: Proyecta los nombre de alumnos y nombre de apoderados de los
alumnos cuyo ID sea el mismo que el ID_ALUMNO de los apoderados.
Mostrar el nombre de los alumnos inscritos y el nombre de los
cursos que tomaron
Comenzaremos con una combinacin entre los inscritos y los cursos para
obtener el nombre de los cursos:
COD
(cursos)
05478
02145
03547
4
5
02145
03547
21
41
02145
03547
NOMBRE
Fsica
Biologa
Matemtic
as
Biologa
Matemtic
as
FECHA_INICI
O
20-04
15-02
01-03
DURACIO
N
15
12
30
VALO
R
3.200
2.500
4.000
15-02
01-03
12
30
2.500
4.000
Alumnos
Inscritos
Cursos
Alumnos
COD
(inscrito
s)
COD
(curso
s)
NOMBRE
(curso)
FECHA_INICI
O
DURACIO
N
VALO
R
ID
(alumn
o)
01
05478
05478
Fsica
20-04
15
3.200
01
NOMBR
E
(alumn
o)
Pedro
01
02145
02145
Biologa
15-02
12
2.500
01
Pedro
11
03547
03547
01-03
30
4.000
11
Juan
4
5
21
41
02145
03547
02145
03547
Matemtic
as
Biologa
Matemtic
15-02
01-03
12
30
2.500
4.000
21
41
Diego
Manuel
CIUDA
D
ED
D
Santia
go
Santia
go
Bueno
s Aires
Lima
Lima
14
14
18
12
17
as
NOMBRE
(curso)
Fsica
Biologa
Matemticas
Biologa
Matemticas
Alumnos
Curso
Inscrito
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.
Comandos DLL
Coman
Descripcin
do
CREATE Utilizado para crear nuevas tablas, campos e ndices
DROP Empleado para eliminar tablas e ndices
Utilizado para modificar las tablas agregando campos o
ALTER
cambiando la definicin de los campos.
Comandos DML
Coman
Descripcin
do
Utilizado para consultar registros de la base de datos que
SELECT
satisfagan un criterio determinado
Utilizado para cargar lotes de datos en la base de datos en
INSERT
una nica operacin.
UPDAT Utilizado para modificar los valores de los campos y
E
registros especificados
Utilizado para eliminar registros de una tabla de una base
DELETE
de datos
1.3 Clusulas
Las clusulas son condiciones de modificacin utilizadas para definir los
datos que desea seleccionar o manipular.
Coman
Descripcin
do
Utilizada para especificar la tabla de la cual se van a
FROM
seleccionar los registros
Utilizada para especificar las condiciones que deben reunir
WHERE
los registros que se van a seleccionar
GROUP Utilizada para separar los registros seleccionados en grupos
BY
especficos
Utilizada para expresar la condicin que debe satisfacer
HAVING
cada grupo
ORDER Utilizada para ordenar los registros seleccionados de
BY
acuerdo con un orden especfico
Uso
Menor que
Mayor que
Distinto de
Menor Igual que
Mayor Igual que
Utilizado para especificar un intervalo de valores.
Utilizado en la comparacin de un modelo
Utilizado para especificar registros de una base de datos
MAX
MIN
http://www.maestrosdelweb.com/editorial/tutsql1/
4.2 Estructura bsica (SELECT, WHERE).
La estructura bsica de una expresin en SQL contiene 3 partes, Select, From
y Where.
La clusula Select se usa para listar los atributos que se desean en el
resultado de una consulta.
From, Lista las relaciones que se van a examinar en la evaluacin de la
expresin.
Where, es la definicin de las condiciones a las que puede estar sujeta una
consulta.
La consulta tpica de SQL tiene la siguiente forma:
Select A1,A2,A3...An
From r1,r2,r3...rm
Where
Condicin(es)
Donde:
A1,A2,A3...An:
Nombre
campo
del Descripcin
NumC
NombreC
DescC
Creditos
Costo
Depto
Num
C
NombreC
DescC
A01
Liderazgo
Para
pblico
General
10
S01
Introduccin
artificial
C01
Construccin de torres
la
100.0 Admn.
0
90.00 Sistemas.
0.00
Ciencias
B01
80.00 Bioqumica
E01
10
100.0 Electromecnic
0
a.
S02
Tecnologa OLAP
C02
10
100.0 Ciencias
0
B02
10
0.00
E02
Los
sistemas
potencia
10
100.0 Electromecnic
0
a
S03
Estructura de datos
Para ISC y 8
LI
0.00
Diseo bioclimtico
Para
10
Arquitectur
a
0.00
Para ISC y 8
LI
elctricos
de Para IE
A01
100.0 Sistemas
0
Bioqumica
Sistemas
Arquitectura
C03
Matemticas discretas
General
0.00
Ciencias
S04
Circuitos digitales
Para ISC
10
0.00
Sistemas
S05
Arquitectura de Computadoras
Para ISC
10
50.00 Sistemas
I01
Para ISC y 10
LI
Ejemplos de consultas:
OBTENCIN DE UNA TABLA ENTERA
150.0 Informtica
0
SELECT
FROM
WHERE Costo=0.00
*
CURSO
Num
C
NombreC
DescC
C01
Construccin de torres
Para IC y 8
Arquitectur
a
B02
Metabolismo
camarn
S03
Estructura de datos
Diseo bioclimtico
de
lpidos
A01
C03
Matemticas discretas
en
Ciencias
0.00
Bioqumica
Para ISC y 8
LI
0.00
Sistemas
Para
10
Arquitectur
a
0.00
General
0.00
el Para IB
10
Arquitectura
Ciencias
SELECT
FROM
WHERE Depto = 'Ciencias';
*
CURSO
Resultado de la consulta.
Num NombreC
C
DescC
Credit
os
Cost
o
Depto
Ciencias
C01
0.00
C02
Tecnologa
concreto y
Estructuras
10
100.0 Ciencias
0
10
0.00
S04
de
Circuitos digitales
del Para IC
las
Para ISC
Sistemas
SELECT
FROM CURSO;
NumC,
NombreC,
Resultado de la consulta:
NumC
NombreC
Depto
A01
Liderazgo
Admn.
S01
Sistemas.
C01
Construccin de torres
Ciencias
B01
E01
S02
Tecnologa OLAP
C02
Tecnologa del
Estructuras
B02
Bioqumica
E02
Electromecnica
S03
Estructura de datos
Sistemas
Sistemas
concreto
de
las Ciencias
Diseo bioclimtico
A01
Arquitectura
Depto
C03
Matemticas discretas
Ciencias
S04
Circuitos digitales
Sistemas
S05
Arquitectura de Computadoras
Sistemas
I01
Informtica
Seleccionar los valores NumC, Depto y Costo para todos los cursos que
tengan un Costo inferior a $100
SELECT
NumC,
FROM
WHERE Costo < 100.00
Depto,
Costo
CURSO
DISTINCT
DISTINCT, es una palabra reservada que elimina las filas que duplicadas en
el resultado de una consulta.
SELECT
FROM CURSO;
DISTINCT
Depto
Resultado de la consulta
Depto
Administraci
n
Sistemas
Ciencias
Bioqumica
electromecni
ca
Arquitectura
Informtica
La palabra DISTINCT va estrictamente despus de la palabra SELECT.
De no haberse utilizado la palabra DISTINCT, el resultado hubiera
mostrado todas las tuplas del atributo Depto que se encontraran, es decir, se
hubiera visualizado la columna de Depto completamente.
EMPLEO DE LOS CONECTORES BOOLEANOS (AND, OR, NOT)
Para emplear las condiciones mltiples dentro de la sentencia WHERE,
utilizamos los conectores lgicos.
El conector AND.
Este conector pide al sistema que seleccione una sola columna
nicamente si ambas condiciones se cumplen.
SELECT
FROM
WHERE Depto=Sistemas AND Costo=0.00;
*
CURSO
SELECT
FROM
WHERE Depto = Arquitectura OR Depto= Bioqumica;
*
CURSO
SELECT
NombreC,
FROM
WHERE NOT (Depto=Sistemas);
Depto
CURSO
C1
C2
C3
CA
CB
AAA
10
35
BBB
45
10
CCC
55
65
DDD
20
20
EEE
20
90
FFF
90
90
GGG
15
75
HHH
90
90
35
C1
C2
C3
CA
CB
AAA
10
10
DDD
20
20
EEE
20
20
FFF
90
90
FFF
90
90
FFF
90
90
HHH
90
90
HHH
90
90
HHH
90
90
ejemplificar
lo
anterior
consideremos
el
ejemplo
ALUMNO cursa
- MATERIA, que tienen los siguientes atributos:
NControl
NControl
Clave
NombreA
Clave
NombreM
Especialidad Calif
Creditos
Direccin
Representando en tablas a los atributos quedaran de la siguiente forma:
Tabla alumno:
Tabla cursa:
NContr
Clave Calif
ol
Tabla materia:
Clav Nombre Credito
e
M
s
WHERE
SELECT
FROM
creditos=8
and
NombreA
Materia
clave
in(SELECT
clave
FROM
cursa
WHERE NControl=97310211;
SELECT
FROM
WHERE Calif=100;
DISTINC(NControl)
Cursa
SELECT
FROM
WHERE especialidad=ISC;
NControl
IN
(SELECT
FROM
WHERE NombreA= J.M. Cadena );
Max(Calif)
Cursa
NControl
Alumno
SELECT
FROM
WHERE
(*)
Alumno
SELECT
FROM
WHERE
Count
Avg
NCotrol
IN
(SELECT
FROM
WHERE NombreA=Salvador Chvez);
(Calif)
Cursa
NControl
Alumno
SELECT
FROM
WHERE
Sum
NControl
IN
(SELECT
FROM
WHERE NombreA=Daniel Coln);
(Calif)
Cursa
NControl
Alumno
Hasta aqu hemos visto el manejo sencillo de realizar consultas con SQL,
hay que destacar que en la realizacin de consultas anidadas se tiene que
poner cuidando a la prioridad de los operadores, teniendo cuidado tambin al
momento de agrupar los parntesis que involucran las condiciones con los
operadores.
SELECT
FROM
WHERE
La clusula SELECT se usa para listar los atributos que se desean en el
resultado
de
una
consulta.
La clusula FROM lista las relaciones que se van a examinar en la evaluacin
de
la
expresin
La clusula WHERE costa de un predicado que implica atributos de las
relaciones
que
aparecen
en
la
clusula
FROM.
Una
consulta
bsica
en
SQL
tiene
la
forma:
SELECT
A1,A2,...,An
FROM
r1,r2,...,rn
WHERE
P
Donde
Ai
=
atributo
(
Campo
de
la
tabla
)
ri
=
relacin
(
Tabla
)
P = predicado ( condicin )
Ejemplo 2.1 : Seleccionar todos los nombres de las personas que tengan el
apellido
MARQUESI
de
la
tabla
persona
SELECT
nombre
FROM
persona
WHERE apellido = " MARQUESI"
ANSWER
NOMBRE
MARTIN
PABLO
elegir esta ultima opcin salvo que sea necesario pues desperdiciamos
mucho tiempo en obtenerlo
Alias
Es posible renombrar los atributos y las relaciones, a veces por conveniencia
y otras veces por ser necesario, para esto usamos la clausula AS como en el
siguiente ejemplo.
Ejemplo
SELECT
P.nombre
FROM
WHERE apellido = "MARQUESI"
AS
persona
[PRIMER
ANSWER
PRIMER NOMBRE
MARTIN
PABLO
2.2
NOMBRE]
P
Nombre,
Telefono
FROM
Clientes
ORDER
BY
FROM
Clientes
ORDER
BY
ALL
FROM
Empleados;
TOP:
Devuelve un cierto nmero de registros que entran entre al principio o al final
de un rango especificado por una clusula ORDER BY. Supongamos que
queremos recuperar los nombres de los 25 primeros estudiantes del curso
1994:
SELECT
TOP
25
ORDER BY Nota DESC;
Nombre,
Apellido
FROM
Estudiantes
Nombre,
Apellido
FROM
Estudiantes
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:
SELECT DISTINCT Apellido FROM Empleados;
Con otras palabras el predicado DISTINCT devuelve aquellos registros cuyos
campos indicados en la clusula SELECT posean un contenido diferente. El
resultado de una consulta que utiliza DISTINCT no es actualizable y no
refleja los cambios subsiguientes realizados por otros usuarios.
DISTINCTROW:
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.
SELECT DISTINCTROW Apellido FROM Empleados;
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.
2.4 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. En este caso
procederamos de la siguiente forma:
SELECT DISTINCTROW Apellido AS Empleado FROM Empleados;
2.5 Recuperar Informacin de una base de Datos Externa
AS
Empleado
FROM
Empleados
Operador
AND
AND
AND
AND
OR
OR
OR
OR
XOR
XOR
XOR
XOR
Eqv
Eqv
Eqv
Eqv
Imp
Imp
Imp
Imp
Imp
Imp
Imp
Imp
Imp
<expresin2>
Falso
Verdad
Verdad
Falso
Falso
Verdad
Verdad
Falso
Verdad
Falso
Verdad
Falso
Verdad
Falso
Verdad
Falso
Verdad
Falso
Null
Verdad
Falso
Null
Verdad
Falso
Null
Resultado
Falso
Verdad
Falso
Falso
Verdad
Verdad
Verdad
Falso
Falso
Verdad
Verdad
Falso
Verdad
Falso
Falso
Verdad
Verdad
Falso
Null
Verdad
Verdad
Verdad
Verdad
Null
Null
SELECT * FROM Empleados WHERE (Sueldo > 100 AND Sueldo < 500) OR
(Provincia = 'Madrid' AND Estado = 'Casado');
3.2 Intervalos de Valores
Para indicar que deseamos recuperar los registros segn el intervalo de
valores de un campo emplearemos el operador Between cuya sintaxis es:
(campo [Not] Between valor1 And valor2 (la condicin Not es
opcional)
En este caso la consulta devolvera los registros que contengan en "campo"
un valor incluido en el intervalo valor1, valor2 (ambos inclusive). Si
anteponemos la condicin Not devolver aquellos valores no incluidos en el
intervalo.
SELECT * FROM Pedidos WHERE CodPostal Between 28000 And 28999;
(Devuelve los pedidos realizados en la provincia de Madrid)
SELECT IIf(CodPostal Between 28000 And 28999, 'Provincial', 'Nacional')
FROM
Editores;
(Devuelve el valor 'Provincial' si el cdigo postal se encuentra en el intervalo,
'Nacional' en caso contrario)
3.3 El Operador Like
Se utiliza para comparar una expresin de cadena con un modelo en una
expresin SQL. Su sintaxis es:
expresin Like modelo
En donde expresin es una cadena modelo o campo contra el que se
compara expresin. Se puede utilizar el operador Like para encontrar valores
en los campos que coincidan con el modelo especificado. Por modelo puede
especificar un valor completo (Ana Mara), o se pueden utilizar caracteres
comodn como los reconocidos por el sistema operativo para encontrar un
rango de valores (Like An*).
El operador Like se puede utilizar en una expresin para comparar un valor
de un campo con una expresin de cadena. Por ejemplo, si introduce Like C*
en una consulta SQL, la consulta devuelve todos los valores de campo que
comiencen por la letra C. En una consulta con parmetros, puede hacer que
el usuario escriba el modelo que se va a utilizar.
El ejemplo siguiente devuelve los datos que comienzan con la letra P seguido
de cualquier letra entre A y F y de tres dgitos:
Like 'P[A-F]###'
Este ejemplo devuelve los campos cuyo contenido empiece con una letra de
la A a la D seguidas de cualquier cadena.
Like '[A-D]*'
En la tabla siguiente se muestra cmo utilizar el operador Like para
comprobar expresiones con diferentes modelos.
Tipo de coincidencia Modelo Planteado Coincide
No Coincide
Varios caracteres
'a*a'
'aa', 'aBa', 'aBBBa' 'aBC'
Carcter especial
'a[*]a'
'a*a'
'aaa'
Varios caracteres
'ab*'
'abcdefg', 'abc'
'cab', 'aab'
Un solo carcter
'a?a'
'aaa', 'a3a', 'aBa' 'aBBBa'
Un solo dgito
'a#a'
'a0a', 'a1a', 'a2a' 'aaa', 'a10a'
Rango de caracteres '[a-z]'
'f', 'p', 'j'
'2', '&'
Fuera de un rango
'[!a-z]'
'9', '&', '%'
'b', 'a'
Distinto de un dgito
'[!0-9]'
'A', 'a', '&', '~'
'0', '1', '9'
Combinada
'a[!b-m]#'
'An9', 'az0', 'a99' 'abc', 'aj0'
3.4 El Operador In
Este operador devuelve aquellos registros cuyo campo indicado coincide con
alguno de los indicados en una lista. Su sintaxis es:
expresin [Not] In(valor1, valor2, . . .)
SELECT * FROM Pedidos WHERE Provincia In ('Madrid', 'Barcelona', 'Sevilla');
3.5 La clusula WHERE
La clusula WHERE puede usarse para determinar qu registros de las tablas
enumeradas en la clusula FROM aparecern en los resultados de la
instruccin SELECT. Despus de escribir esta clusula se deben especificar
las condiciones expuestas en los apartados 3.1 y 3.2. Si no se emplea esta
clusula, la consulta devolver todas las filas de la tabla. WHERE es
opcional, pero cuando aparece debe ir a continuacin de FROM.
SELECT Apellidos, Salario FROM Empleados WHERE Salario > 21000;
SELECT
Id_Producto,
Existencias
WHERE Existencias <= Nuevo_Pedido;
FROM
Productos
En donde expr contiene el nombre del campo que desea contar. Los
operandos de expr pueden incluir el nombre de un campo de una tabla, una
constante o una funcin (la cual puede ser intrnseca o definida por el usuario
pero no otras de las funciones agregadas de SQL). Puede contar cualquier
tipo de datos incluso texto.
Aunque expr puede realizar un clculo sobre un campo, Count simplemente
cuenta el nmero de registros sin tener en cuenta qu valores se almacenan
en los registros. La funcin Count no cuenta los registros que tienen campos
null a menos que expr sea el carcter comodn asterisco (*). Si utiliza un
asterisco, Count calcula el nmero total de registros, incluyendo aquellos
que contienen campos null. Count(*) es considerablemente ms rpida que
Count(Campo). No se debe poner el asterisco entre dobles comillas ('*').
SELECT Count(*) AS Total FROM Pedidos;
Si expr identifica a mltiples campos, la funcin Count cuenta un registro
slo si al menos uno de los campos no es Null. Si todos los campos
especificados son Null, no se cuenta el registro. Hay que separar los
nombres de los campos con ampersand (&).
SELECT Count(FechaEnvo & Transporte) AS Total FROM Pedidos;
4.4 Max, Min
Devuelven el mnimo o el mximo de un conjunto de valores contenidos en
un campo especifico de una consulta. Su sintaxis es:
Min(expr)
Max(expr)
En donde expr es el campo sobre el que se desea realizar el clculo. Expr
pueden incluir el nombre de un campo de una tabla, una constante o una
funcin (la cual puede ser intrnseca o definida por el usuario pero no otras
de las funciones agregadas de SQL).
SELECT Min(Gastos) AS ElMin FROM Pedidos WHERE Pais = 'Espaa';
SELECT Max(Gastos) AS ElMax FROM Pedidos WHERE Pais = 'Espaa';
4.5 StDev, StDevP
Devuelve estimaciones de la desviacin estndar para la poblacin (el total
de los registros de la tabla) o una muestra de la poblacin representada
(muestra aleatoria) . Su sintaxis es:
StDev(expr)
StDevP(expr)
En donde expr representa el nombre del campo que contiene los datos que
desean evaluarse o una expresin que realiza un clculo utilizando los datos
de dichos campos. Los operandos de expr pueden incluir el nombre de un
campo de una tabla, una constante o una funcin (la cual puede ser
intrnseca o definida por el usuario pero no otras de las funciones agregadas
de SQL)
StDevP evala una poblacin, y StDev evala una muestra de la poblacin.
Si la consulta contiene menos de dos registros (o ningn registro para
StDevP), estas funciones devuelven un valor Null (el cual indica que la
desviacin estndar no puede calcularse).
SELECT StDev(Gastos) AS Desviacion FROM Pedidos WHERE Pais = 'Espaa';
SELECT StDevP(Gastos) AS Desviacion FROM Pedidos WHERE Pais= 'Espaa';
4.6 Sum
Devuelve la suma del conjunto de valores contenido en un campo especifico
de una consulta. Su sintaxis es:
SumP(expr)
En donde expr representa el nombre del campo que contiene los datos que
desean sumarse o una expresin que realiza un clculo utilizando los datos
de dichos campos. Los operandos de expr pueden incluir el nombre de un
campo de una tabla, una constante o una funcin (la cual puede ser
intrnseca o definida por el usuario pero no otras de las funciones agregadas
de SQL).
SELECT Sum(PrecioUnidad * Cantidad) AS Total FROM DetallePedido;
4.7 Var, VarP
Devuelve una estimacin de la varianza de una poblacin (sobre el total de
los registros) o una muestra de la poblacin (muestra aleatoria de registros)
sobre los valores de un campo. Su sintaxis es:
Var(expr)
VarP(expr)
VarP evala una poblacin, y Var evala una muestra de la poblacin. Expr
el nombre del campo que contiene los datos que desean evaluarse o una
expresin que realiza un clculo utilizando los datos de dichos campos. Los
operandos de expr pueden incluir el nombre de un campo de una tabla, una
constante o una funcin (la cual puede ser intrnseca o definida por el usuario
pero no otras de las funciones agregadas de SQL)
Si la consulta contiene menos de dos registros, Var y VarP devuelven Null
(esto indica que la varianza no puede calcularse). Puede utilizar Var y VarP
en una expresin de consulta o en una Instruccin SQL.
SELECT Var(Gastos) AS Varianza FROM Pedidos WHERE Pais = 'Espaa';
SELECT VarP(Gastos) AS Varianza FROM Pedidos WHERE Pais = 'Espaa';
http://www.maestrosdelweb.com/editorial/tutsql4/
Clusula GROUP BY
La clusula GROUP BY especifica una consulta sumaria. En vez de producir un
fila de resultados por cada fila de datos de la base de datos, una consulta
sumaria agrupa todas las filas similares y luego produce una fila sumaria de
resultados para cada grupo.
Seguido de la clusula GROUP BY se especifican los nombres de uno o ms
campos cuyos resultados se desean agrupados. Tiene la forma:
GROUP BY expresin_columna
expresin_columna debe coincidir con la expresin de columna utilizada en la
clusula SELECT. Puede ser uno o ms nombres de campo de una tabla,
separados por coma o una o ms expresiones separadas por comas.
SELECT RUBRO_CLAVE, COUNT(*) FROM ACTIVOS WHERE TIPO = 'Compra'
GROUP BY RUBRO_CLAVE
Esta sentencia nos devolver una fila por cada area RUBRO_CLAVE, y el
numero de veces de cada uno.
Clusula HAVING
La clusula HAVING dice a SQL que incluya solo ciertos grupos producidos por
la clusula GROUP BY en los resultados de la consulta. Al igual que la clusula
WHERE, utiliza una condicin de bsqueda para especificar los grupos
deseados. En otras palabras, especifica la condicin que deben de cumplir los
grupos. Slo es vlida si previamente se ha especificado la clusula GROUP
BY. La clusula HAVING tiene la forma:
HAVING expresin1 operador expresin2
expresin1 y expresin2 pueden ser nombres de campos, valores constantes
o expresiones y estas deben coincidir con una expresin de columna en la
clusula SELECT.
operador es un operador relacional que une las dos expresiones. Ms tarde
se vern los distintos operadores que se pueden utilizar.
La sentencia siguiente nos mostrar el nmero de RUBRO_CLAVE, y el
numero de los mismos en cada RUBRO_CLAVE cuyo numero supera el 1:
SELECT RUBRO_CLAVE, COUNT(*) FROM ACTIVOS WHERE TIPO = 'Compra'
GROUP BY RUBRO_CLAVE HAVING RUBRO_CLAVE > 1
http://www.lania.mx/biblioteca/seminarios/basedatos/sql.html#cgrou
pby
4.4 Consultas sobre mltiples tablas.
4.4.1 Subconsultas.
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
expresin
[NOT]
IN
[NOT] EXISTS (instruccin sql)
SOME]
(instruccin
sql)
(instruccin
sql)
En donde:
comparacin: Es una expresin y un operador de comparacin que compara
la expresin con el resultado de la subconsulta.
igual o mayor que el salario medio de todos los empleados con el mismo
ttulo. A la tabla Empleados se le ha dado el alias T1::
SELECT Apellido, Nombre, Titulo, Salario FROM Empleados AS T1
WHERE
Salario
>=
(SELECT
Avg(Salario)
FROM
Empleados
WHERE T1.Titulo = Empleados.Titulo) ORDER BY Titulo;
En el ejemplo anterior , la palabra reservada AS es opcional.
SELECT
Apellidos,
Nombre,
Cargo,
Salario
FROM
Empleados
WHERE Cargo LIKE "Agente Ven*" AND Salario > ALL (SELECT Salario FROM
Empleados WHERE (Cargo LIKE "*Jefe*") OR (Cargo LIKE "*Director*"));
Obtiene una lista con el nombre, cargo y salario de todos los agentes de
ventas cuyo salario es mayor que el de todos los jefes y directores.
SELECT DISTINCTROW NombreProducto, Precio_Unidad FROM Productos
WHERE (Precio_Unidad = (SELECT Precio_Unidad FROM Productos WHERE
Nombre_Producto = "Almbar anisado");
Obtiene una lista con el nombre y el precio unitario de todos los productos
con el mismo precio que el almbar anisado.
SELECT
DISTINCTROW
Nombre_Contacto,
Nombre_Compaia,
Cargo_Contacto,
Telefono FROM Clientes WHERE (ID_Cliente IN (SELECT DISTINCTROW
ID_Cliente FROM Pedidos WHERE Fecha_Pedido >= #04/1/93# <#07/1/93#);
Obtiene una lista de las compaas y los contactos de todos los clientes que
han realizado un pedido en el segundo trimestre de 1993.
SELECT Nombre, Apellidos FROM Empleados AS E WHERE EXISTS
(SELECT * FROM Pedidos AS O WHERE O.ID_Empleado = E.ID_Empleado);
Selecciona el nombre de todos los empleados que han reservado al menos
un pedido.
SELECT
DISTINCTROW
Pedidos.Id_Producto,
Pedidos.Cantidad,
(SELECT DISTINCTROW Productos.Nombre FROM Productos WHERE
Productos.Id_Producto = Pedidos.Id_Producto) AS ElProducto FROM
Pedidos WHERE Pedidos.Cantidad > 150 ORDER BY Pedidos.Id_Producto;
computar
1.
2.
3.
4.
5.
6.
7.
Operadores Join-Like
Existen varios operadores del estilo del join que son provistos por bases
de datos comerciales.
o El semijoin de las relaciones y
, es el multiconjunto de
tuplas tal que hay al menos una tupla en que concuerda con
en todos los atributos comunes de y .
o El antisemijoin
, es la bolsa de tuplas
en
que no
concuerdan con ninguna tupla de en los atributos
.
o El outerjoin
se forma con
ms el agregado de las
dangling tuples de o , donde una tupla est colgando si esta
no se junta con ninguna de la otra relacin. Las tuplas agregadas
se rellenan con el smbolo de indefinido o nulo
, en aquellos
atributos que la tupla colgante no posee pero que si aparecen en
la relacin resultante.
o El leftouterjoin
es como el outerjoin, pero solo las tuplas
colgantes de son rellenadas con y agregadas al resultado.
o El rightouterjoin
tambin es como el outerjoin, pero esta
vez el argumento que genera las dangling tuples es el derecho.
2. Dar expresiones para los cinco operadores definidos en el prrafo
anterior usando solamente los operadores standard del lgebra
relacional. Para las variantes ``outerjoin'' puede usar una relacin
nula
componente.
3.
Un operador unario
es idempotente si,
en cada
de los operadores
, explique por que son idempotentes o
muestre un contraejemplo.
4. Cuando es posible empujar una seleccin en los dos argumentos de un
operador binario, es necesario decidir si hacerlo o no. Cmo afectara
la existencia de ndices en uno de los argumentos?. Considere, por
ejemplo, una expresin
, donde se tiene un ndice sobre .
5. Dar ejemplos donde se muestre que la eliminacin de duplicados no
puede ser empujada por debajo de la unin o diferencia de
multiconjuntos.
6. Los operadores similares al join del ejercicio 2 obedecen algunas reglas
comunes y otras no. Para cada caso pruebe o de un contraejemplo para
las siguientes leyes.
o
o
o
o
7. Reemplace los join naturales en las expresiones siguientes por thetajoins y proyecciones. Diga cuando los theta-join resultantes forman un
grupo asociativo y conmutativo.
1.
2.
3.
2. Dar reglas para convertir cada una de las siguientes formas de
condicin en lgebra relacional. Asuma que las condiciones se aplican a
una relacin
y no estn correlacionadas a ella. Tenga especial
cuidado para no introducir o eliminar duplicados respecto a la
definicion formal de SQL.
o
o
2.
3.
4.
5.
6.
, donde
es un atributo de
o
, donde es un atributo de
Transforme la siguiente query en un plan lgico y trate de mejorarlo
aplicando leyes algebraicas.
SELECT starName
FROM Actor1996
WHERE studioName="Paramount";
donde hay dos vistas definidas
CREATE VIEW Actor1996 AS
SELECT starName, studioName
FROM MoviesOf1996 NATURAL JOIN starsIn;
CREATE VIEW MovieOf1996 AS
SELECT *
FROM Movie
WHERE year=1996;
y los esquemas son
Movie(title,year,length,inColor,studioName,producerC#)
StarsIn(title,year,starName)
http://hal.famaf.unc.edu.ar/~bdd/Practico6/
JOIN (unir)
La sentencia JOIN, si es proveida, nombra una funcin de estimacin
selectiva join para el operador (nota que esto es un nombre de una funcin,
no un nombre de un operador). Las sentencias JOIN solamente tienen sentido
para operadores binarios que retorna valores bouleanos. La idea detrs de un
estimador selectivo join es suponer que fraccin de las filas de un par de
tablas satisfacern la condicin de la sentencia WHERE del formulario
table1.field1 OP table2.field2
para el operador corriente. Como la sentencia RESTRICT, esta ayuda al
optimizador muy sustancialmente permitiendole deducir cual de las posibles
secuencias join es probable que tome el menor trabajo.
como antes, este captulo no procurar explicar como escribir una funcin
estimadora selectiva join, pero solamente sugeriremos que tu uses uno de
los estimadores estandars si alguna es aplicable:
eqjoinsel
neqjoinsel
scalarltjoinsel
scalargtjoinsel
areajoinsel
positionjoinsel
contjoinsel
for
for
for
for
for
for
for
=
<>
< or <=
> or >=
2D area-based comparisons
2D position-based comparisons
2D containment-based comparisons
http://es.tldp.org/Postgresqles/web/navegable/todopostgresql/xoper.html
4.5 Manipulacin de la base de datos (INSERT, UPDATE, DELETE).
Consultas de Actualizacin
campo2,
..,
campoN)
FROM
Vendedores
5.3 UPDATE
Crea una consulta de actualizacin que cambia los valores de los campos de
una tabla especificada basndose en un criterio especfico. Su sintaxis es:
UPDATE Tabla SET Campo1=Valor1, Campo2=Valor2, ... CampoN=ValorN
WHERE Criterio;
UPDATE es especialmente til cuando se desea cambiar un gran nmero de
registros o cuando stos se encuentran en mltiples tablas. Puede cambiar
varios campos a la vez. El ejemplo siguiente incrementa los valores
Cantidad pedidos en un 10 por ciento y los valores Transporte en un 3 por
ciento para aquellos que se hayan enviado al Reino Unido.:
campos quedaran a nulo. Un valor nulo NULL no significa blancos o ceros sino
simplemente que el campo nunca ha tenido un valor.
Sentencia UPDATE
La sentencia UPDATE se utiliza para cambiar el contenido de los registros de
una tabla de la base de datos. Su formato es:
UPDATE nombre_tabla SET nombre_columna = expr, ...
[WHERE { condicin }]
nombre_tabla puede ser nicamente el nombre de la tabla.
nombre_columna es el nombre de columna o campo cuyo valor se desea
cambiar.
En una misma sentencia UPDATE pueden actualizarse varios campos de cada
registro de la tabla.
expr es el nuevo valor que se desea asignar al campo que le precede. La
expresin puede ser un valor constante o una subconsulta. Las cadenas de
caracteres debern estar encerradas entre comillas . Las subconsultas entre
parntesis.
La clusula WHERE sigue el mismo formato que la vista en la sentencia
SELECT y determina que registros se modificarn.
Por ejemplo, cambiar los nombres de los de la tabla RUBROS de aquellos de
aquelos cuya clave sea mayor que 2, sera:
UPDATE RUBROS SET NOMBRE = 'Nuevo' WHERE CLAVE = 9,
Sentencia DELETE
La sentencia DELETE se utiliza para borrar registros de una tabla de la base
de datos. El formato de la sentencia es:
DELETE FROM nombre_tabla [WHERE { condicin }]
nombre_tabla puede ser nicamente el nombre de la tabla.
La clusula WHERE sigue el mismo formato que la vista en la sentencia
SELECT y determina que registros se borrarn.
Cada sentencia DELETE borra los registros que cumplen la condicin
impuesta o todos si no se indica clusula WHERE.
DELETE FROM RUBROS WHERE CLAVE = 9
Con el ejemplo anterior se borraran todos los registros de la tabla rubros
cuya clave sea igual a 2.
SQL, cuenta con mdulos DDL, para la definicin de datos que nos permite
crear o modificar la estructura de las tablas.
Las instrucciones para realizar estas operaciones son:
CREATE TABLE: Nos permite crear una tabla de datos vaca.
INSERT:
Permite
almacenar
registros
en
una
tabla
creada.
UPDATE: Permite modificar datos de registros almacenados en la tabla.
DELETE: Borra un registro entero o grupo de registros
de una tabla.
CREATE INDEX: Crea un ndice que nos puede auxiliar para las consultas.
DROP
TABLE:
Permite
borrar
una
tabla.
DROP INDEX: Borra el ndice indicado.
Para ejemplificar las instrucciones anteriores consideremos el ejemplo
ALUMNO cursa
- MATERIA, que tienen los siguientes atributos:
NControl
NControl
Clave
NombreA
Clave
NombreM
Especialidad Calif
Creditos
Direccin
* Estructura de la sentencia CREATE TABLE.
CREATE
TABLE
<Nombre
de
la
tabla>
(
Atributo1:
Atributo2:
Atributo3:
tipo
tipo
tipo
de
de
de
dato
longitud
dato
longitud
dato
longitud
,
,
,
:
:
TABLE
Alumno
NOT
NULL,
char(20),
char(3),
char(30),
Tabla Alumno:
NContr Nombre Especialid Direcci
ol
A
ad
n
Insertar en la tabla Alumno, antes creada los datos del alumno Daniel
coln, con numero de control 95310518 de la especialidad de Ingeniera civil,
con domicilio Abasolo Norte #45.
INTO
VALUES("95310518","Daniel Coln","IC","Abasolo Norte #45") ;
INSERT
Alumno
de
los
datos
actualizndolos,
FORMA NORMAL
El proceso de normalizacin de bases de datos consiste en aplicar una serie de reglas a las
relaciones obtenidas tras el paso del modelo entidad-relacin al modelo relacional.
Las bases de datos relacionales se normalizan para:
En el modelo relacional es frecuente llamar tabla a una relacin, aunque para que una tabla sea
considerada como una relacin tiene que cumplir con algunas restricciones:
Dependencia funcional
B es funcionalmente dependiente de A.
Una dependencia funcional es una conexin entre uno o ms atributos. Por ejemplo si se conoce
el valor de DNI tiene una conexin con Apellido o Nombre .
Las dependencias funcionales del sistema se escriben utilizando una flecha, de la siguiente
manera:
FechaDeNacimiento
Edad
De la normalizacin (lgica) a la implementacin (fsica o real) puede ser sugerible tener stas
dependencias funcionales para lograr la eficiencia en las tablas.
nombre
DNI,direccin
nombre,direccin
Si con el DNI se determina el nombre de una persona, entonces con el DNI ms la direccin
tambin se determina el nombre y su direccin.
Z entonces X
FechaDeNacimiento
Edad
Z
Edad
Conducir
FechaDeNacimiento
Edad
Conducir
Las formas normales son aplicadas a las tablas de una base de datos. Decir que una base de datos
est en la forma normal N es decir que todas sus tablas estn en la forma normal N.
Todos los atributos son atmicos. Un atributo es atmico si los elementos del dominio son
indivisibles, mnimos.
La tabla contiene una llave primaria nica.
La llave primaria no contiene atributos nulos.
No debe existir variacin en el nmero de columnas.
Los Campos no llave deben identificarse por la llave (Dependencia Funcional)
Debe Existir una independencia del orden tanto de las filas como de las columnas, es
decir, si los datos cambian de orden no deben cambiar sus significados
Una tabla no puede tener mltiples valores en cada columna.
Los datos son atmicos (a cada valor de X le pertenece un valor de Y y viceversa).
Dependencia Funcional. Una relacin est en 2FN si est en 1FN y si los atributos que no
forman parte de ninguna clave dependen de forma completa de la clave principal. Es decir que no
existen dependencias parciales. (Todos los atributos que no son clave principal deben depender
nicamente de la clave principal).
En otras palabras podramos decir que la segunda forma normal est basada en el concepto de
dependencia completamente funcional. Una dependencia funcional
es completamente
funcional si al eliminar los atributos A de X significa que la dependencia no es mantenida, esto es
que
. Una dependencia funcional
es una dependencia parcial
si hay algunos atributos
que pueden ser eliminados de X y la dependencia todava se
mantiene, esto es
.
Por ejemplo {DNI, ID_PROYECTO} HORAS_TRABAJO (con el DNI de un empleado y el
ID de un proyecto sabemos cuntas horas de trabajo por semana trabaja un empleado en dicho
proyecto) es completamente dependiente dado que ni DNI
HORAS_TRABAJO ni
ID_PROYECTO
HORAS_TRABAJO mantienen la dependencia. Sin embargo {DNI,
ID_PROYECTO}
NOMBRE_EMPLEADO es parcialmente dependiente dado que DNI
NOMBRE_EMPLEADO mantiene la dependencia.
Llave
(PROV,
ART)
Llave(
PROV)
CodLibr Titulo
o
Autor
1001
Variable
compleja
Murray
Spiegel
McGraw
Hill
Prez
15/04/200
Gmez, Juan 5
1004
Visual
E.
Anaya
Ros
Tern, 17/04/200
CodLibr Titulo
o
Autor
Basic 5
Petroustsos
1005
Estadstica
Murray
Spiegel
1006
Oracle
University
Nancy
Greenberg Oracle
y
Priya Corp.
Nathan
1007
Clipper
5.01
Ramalho
McGraw
Hill
McGraw
Hill
Ana
Roca, Ren
16/04/200
5
Garca
Roque, Luis
20/04/200
5
Prez
18/04/200
Gmez, Juan 5
Autor
FechaDev
McGraw
Prez
Hill
Gmez
Juan
15/04/200
5
Tern
Ana
17/04/200
5
Ren
16/04/200
5
1001
Variable Murray
compleja Spiegel
1004
Visual
Basic 5
E.
Petrousts
os
Anaya
1005
Estadsti
ca
Murray
Spiegel
McGraw
Roca
Hill
1006
Oracle
Nancy
Oracle
Universit Greenber Corp.
Ros
Garca
Roque
Luis
20/04/200
5
CodLibr Titulo
o
FechaDev
1006
Oracle
Priya
Universit
Nathan
y
Oracle
Corp.
1007
Clipper
5.01
McGraw
Prez
Hill
Autor
Ramalho
Garca
Roque
Luis
20/04/200
5
Gmez
Juan
18/04/200
5
Autor
Editoria
l
Murray
Spiegel
McGraw
Hill
1001
Variable
compleja
1004
E.
Visual Basic 5 Petroustso Anaya
s
1005
Estadstica
Murray
Spiegel
McGraw
Hill
CodLibr Titulo
o
Autor
Editoria
l
1006
Oracle
University
Nancy
Oracle
Greenberg Corp.
1006
Oracle
University
Priya
Nathan
Oracle
Corp.
1007
Clipper 5.01
Ramalho
McGraw
Hill
Prez
Gmez
Juan
502
Ros
Tern
Ana
503
Roca
504
Garca
Ren
Roque
Luis
Hemos creado una tabla para contener los datos del lector y tambin tuvimos
que crear la columna CodLector para identificar unvocamente a cada uno.
Sin embargo, esta nueva disposicin de la base de datos necesita que exista
otra tabla para mantener la informacin de qu libros estn prestados a qu
lectores. Esta tabla se muestra a continuacin:
1001
501
15/04/200
5
1004
502
17/04/200
5
503
16/04/200
5
1006
504
20/04/200
5
1007
501
18/04/200
5
1005
Para la Tercera Forma Normal (3NF) la relacin debe estar en 2NF y adems
los atributos no clave deben ser mutuamente independientes y dependientes
por completo de la clave primaria. Tambin recordemos que dijimos que esto
significa que las columnas en la tabla deben contener solamente informacin
sobre la entidad definida por la clave primaria y, por tanto, las columnas en
la tabla deben contener datos acerca de una sola cosa.
En nuestro ejemplo en 2NF, la primera tabla conserva informacin acerca del
libro, los autores y editoriales, por lo que debemos crear nuevas tablas para
satisfacer los requisitos de 3NF.
3NF
CodEditorial
Editorial
901
McGraw
Hill
902
Anaya
903
Oracle
Corp.
CodLibr Titulo
o
1001
Variable
compleja
1004
Visual Basic 5
1005
CodLibroEstadstica
codAutor
1001
1006
Oracle
801
University
1004
1007
802
Clipper 5.01
1005
801
1006
803
1006
804
1007
806
CodLibr codEditori
o
al
1001
901
1004
902
1005
901
1006
903
1007
901
Prez
Gmez
Juan
502
Ros
Tern
Ana
necesitan modificacin.
Roca
Ren
501
15/04/200
5
502
17/04/200
5
1005
503
16/04/200
5
504
20/04/200
5
501
18/04/200
5
504
Garca
Roque
Luis
1001
1004
ACTIVIDAD: NORMALIZACION
DE DATOS
al
a
siguiente
tabla.
Ordenes
Id_ord
Fecha
en
Id_clien
te
Nom_clie
nte
Estad
o
Num_a
rt
nom_a
rt
ca
nt
Preci
o
2301
23/02/1
1
101
Martin
Caraca
s
3786
Red
35,00
2301
23/02/1
1
101
Martin
Caraca
s
4011
Raquet
a
65,00
2301
23/02/1
1
101
Martin
Caraca
s
9132
Paq-3
4,75
2302
25/02/1
1
107
Herman
Coro
5794
Paq-6
5,00
2303
27/02/1
1
110
Pedro
Marac
ay
4011
Raquet
a
65,00
2303
27/02/1
1
110
Pedro
Marac
ay
3141
Funda
10,00
EJERCICIOS PROPUESTOS
Organigrama
Crear el esquema entidad/relacin que represente el organigrama de una
empresa, de modo que:
Ejercicio Vuelos
Crear el esquema entidad/relacin que permita gestionar reservas de vuelos,
de modo que:
Ejercicio Futbol
Crear el esquema entidad/relacin que permita crear el diseo de una base
de datos que almacena informacin sobre los partidos de una liga de futbol
una temporada. Hay que tener en cuenta que en dicha liga los jugadores no
pueden cambiar de equipo
Ejercicio:Men diario
Crear un esquema Entidad/relacin que represente un modelo para llevar los
datos que maneja un restaurante de mens diarios. Teniendo en cuenta que:
Ejercicio Twitter
Crear un esquema Entidad/relacin que represente un modelo para llevar los
datos que maneja la red social Twitter: usuarios, mensajes,...
nmero de aula (que tampoco se repite) y los metros que tiene. A una
hora concreta de la semana, el aula puede estar vacia o bien ocuparse,
pero slo se puede ocupar por una asignatura
Necesitamos saber y anotar en la base de datos si una asignatura
requiere que antes se hayan aprobado otras, para poder matricularse
en ella. Por ejemplo, Ampliacin de Matemticas de 2 a lo mejor
requiere aprobar Matemticas de 1. Puede requerirse terminar ms
de una asignatura previamente para poder matricularse de una
concreta.
Se entiende que la asignatura slo la puede impartir un profesor en
todo el ao, siempre ser uno en todo momento el titular
De los profesores se almacena su nombre, direccin, telfono, email,
DNI, n de Seguridad Social y un cdigo interno de profesor as como
los aos que tiene de antigedad impartiendo cada asignatura. Puede
ser cada profesora o profesor, tutora de un curso y tambin se anota la
antigedad que tiene en esa tarea
Ejercicio Inmuebles
Crear un diseo entidad/relacin que permita modelar un sistema que sirva
para gestionar una empresa que posee inmuebles. Para ello
empresa
direccion_empresa
url1
url2
Joe
ABC
1 Work Lane
abc.com
xyz.com
Jill
XYZ
1 Job Street
abc.com
xyz.com
c) Los productos que vende una tienda de computacin son hechos por distintas
marcas, cada producto puede ser fabricado por una o varios marcas y cada marca
puede producir uno o varios productos. La cardinalidad mxima en esta relacin es
de Muchos a Muchos (M:N) y la mnima es de Uno a Uno (1:1), con este ejemplo
se completan las posibles cardinalidades que puede presentar una relacin entre
entidades.
EJERCICIOS PROPUESTOS # 4: DISEO EN ACCESS
Pasa el modelo entidad-relacin de los ejercicios del modelo relacional.
Disea las tablas en Access, realiza las relaciones que consideres
oportunas e inserta cinco registros en cada una de las tablas.