fundamentos de base de datos
DESCRIPTION
fundamentos de base de datosTRANSCRIPT
-
Fundamentos de Base de Datos Proyecto Base de Datos (VIDEOCLUB)
Integrantes:
Francisco Ricardo Garza Aguilera
Gilberto Francisco Blfeda Posada
PROFESOR: PICAZO VAZQUEZ JOEL ENRIQUE
-
2
INDICE
Descripcin Videoclub . 3
Definicin DDL y DML ... 4
Modelo Entidad-Relacin .. 6
Tablas ... 7
Algebra Relacional
Seleccin 8
Proyeccin ... 9
Reunin .. 9
Consultas SQL 5 preguntas abiertas ... 11
5 preguntas abiertas con clusula where 16
5 preguntas abiertas con clusula order by .. 21
3 preguntas abiertas con clusula group by . 26
3 preguntas abiertas con clusula having .. 29
3 preguntas abiertas con todo . 32
3 preguntas que relacionen 3 tablas o ms . 35
3 preguntas que relacionen 3 tablas y empleen todo 38
-
3
Descripcin de Videoclub
En esta base de datos manejamos 5 tablas: clientes, pelculas, alquileres, empleados y proveedores;
en estas tablas todos tienen un identificador nico en donde la tabla de clientes tiene un ID_CLIENTE
donde nos sirve para identificar nuestro cliente as como los alquileres que ha realizado desde la
tabla Alquileres, en esta tenemos los ID de todas las tablas en donde se lleva el control de la renta de
pelculas
CLIENTE almacena los datos de cada uno de los clientes del vdeo club: ID_CLIENTES,
NOMBRE_CLIENTE, CIUDAD_CLIENTE y TELEFONO_CLIENTE.
PELICULA almacena informacin sobre cada una de las pelculas de las cuales tiene: ID_PELICULA,
TITULO, GENERO, ID_PROVEEDOR.
ALQUILER almacena informacin de los prstamos que se han realizado.
EMPLEADO almacena informacin de los empleados que trabajan en el Videoclub.
PROVEEDORES almacena informacin de cada uno de los proveedores de nuestras pelculas.
-
4
DDL y DML
Lenguaje de definicin de datos (DDL: Data Definition Language): Sencillo lenguaje artificial para
definir y describir los objetos de la base de datos, su estructura, relaciones y restricciones. En la
prctica puede consistir en un subconjunto de instrucciones de otro lenguaje informtico. Aparte
suele poseer dos subconjuntos de instrucciones:
Lenguaje de definicin del almacenamiento de los datos (DSDL: Data Storage Definition
Language): permite especificar caractersticas fsicas de la base de datos (volmenes y
archivos donde van a ser almacenados los datos, etc).
Lenguaje de control de datos (DCL: Data Control Language): encargado del control y
seguridad de los datos (privilegios y modos de acceso, etc).
Lenguaje de manipulacin de datos (DML: Data Manipulation Language): Lenguaje artificial de
cierta complejidad que permite el manejo y procesamiento del contenido de la base de datos. En la
prctica puede consistir en un subconjunto de instrucciones de otro lenguaje informtico. Las
aplicaciones que trabajan sobre la base de datos se programan en un lenguaje de programacin (C,
Cobol, ...) insertando en el cdigo fuente sentencias del DML. Al utilizar un DML se deben especificar
los datos que sern afectados por las sentencias del lenguaje. Un DML puede tener o no
procedimientos, segn sea necesario especificar adems cmo deben obtenerse esos datos. Los DML
con procedimientos tienen sentencias de control de flujo como bucles o condicionales. Los DML sin
procedimientos son conocidos tambin como declarativos.
Comandos del DDL y del DML
Comandos DLL
Comando Descripcin
CREATE Utilizado para crear nuevas tablas, stored procedures e ndices
DROP Empleado para eliminar tablas, stored procedures e ndices
ALTER Utilizado para modificar las tablas agregando campos o cambiando la definicin de los campos
-
5
Comandos DML
Comando Descripcin
SELECT Utilizado para consultar registros de la base de datos que satisfagan un criterio determinado.
INSERT Utilizado para cargar lotes de datos en la base de datos en una nica operacin.
DELETE Utilizado para modificar los valores de los campos y registros especificados.
UPDATE Utilizado para eliminar registros de una tabla de una base de datos.
-
6
Modelo Entidad-Relacin.
-
7
Tablas
-
8
Algebra Relacional
Las relaciones base que forman las base de datos de un videoclub son las siguientes:
Clientes (ID_CLIENTE,NOMBRE_CLIENTE,CIUDAD_CLIENTE,TELEFONO_CLIENTE)
Pelculas (ID_PELICULA,TITULO,GENERO,ID_PROVEEDOR)
Alquileres (ID_ALQUILER,ID_CLIENTE,ID_PELICULA,FECHA_RETIRO,FECHA_ENTREGA,ID_EMPLEADO)
Empleado (ID_Empleado,Nombre,Apellidos,Telefono)
Proveedores (ID_Proveedor,Nomb_Empresa,Num_Peliculas,Telefono,E-mail)
Seleccin
Buscar pelcula de Genero de Accion y de Nombre Guerra Mundial Z
(Genero=Accion AND TITULO=Guerra Mundial Z (Peliculas))
Buscar todas las pelculas de Ciencia Ficcin
Genero=Ciencia Ficcion (Peliculas)
Buscar quien rento la pelcula de X-Men
ID_CLIENTE, NOMBRE_CLIENTE ( TITULO=X-Men)(Clientes Peliculas)
Buscar el titulo de las pelculas de Accion
TITULO ( Genero=Accion(Peliculas))
Buscar todos los clientes de Cd. Victoria
NOMBRE_CLIENTE ( CIUDAD_CLIENTE=Victoria(Clientes))
-
9
Proyeccin
Obtener los nombres de los clientes que tienen actualmente prestada una pelcula
ID_CLIENTE,NOMBRE_CLIENTE (Clientes)
Obtener el nombre de las pelculas de genero Accion
ID_PELICULA, TITULO ( GENERO=Accion(Peliculas))
Obtener el nombre de todos los proveedores de pelculas
ID_PROVEEDOR,NOMB_Empresa (Proveedores)
Obtener todos los nombres de los Empleados
ID_Empleado,Nombre (Empleado)
Obtener todas las pelculas del VideoClub
ID_PELICULA,TITULO (Peliculas)
Reunin
Obtener Clientes y su fecha de entrega
ID_CLIENTE,NOMBRE_CLIENTE,ID_PELICULA,FECHA_ENTREGA(Clientes Alquileres)
Obtener clientes que rentaron la pelcula con el ID 123453
ID_CLIENTE,NOMBRE_CLIENTE ( ID_PELICULA=123453 (Clientes Alquileres))
Obtener el nombre del empleado que atendi a Francisco Garca
ID_Empleado,Nombre ( ID_CLIENTE=Francisco Garca (Empleado Alquileres) )
Obtener los Nombres de los Proveedores de cada Pelcula
ID_Pelicula,TITULO,ID_Proveedor,Nomb_Empresa (Peliculas Proveedores)
-
10
Obtener registro de ID_CLIENTE, Nombre del cliente, su telfono, el ID de la pelcula, el nombre de la
pelcula, su gnero, el ID del alquiler, la fecha lmite de Entrega, el nombre del Empleado que lo
atendi y el nombre del Proveedor de esa pelcula.
T1 Clientes Alquileres
ID_CLIENTE = ID_CLIENTE
T2 T1 Pelculas
ID_PELICULA = ID_PELICULA
T3 T2 Empleado
ID_Empleado = ID_Empleado
T4 T3 Proveedores
ID_Proveedor = ID_Proveedor
ID_CLIENTE,NOMBRE_CLIENTE,TELEFONO_CLIENTE,ID_PELICULA,TITULO,GENERO,ID_ALQUILER,
FECHA_ENTREGA,ID_Empleado,Nombre,ID_Proveedor,Nombre_Empresa (T4)
-
11
5 preguntas abiertas.
1.-Obtener el nombre de los clientes de la tabla clientes
Select Nombre_Cliente
From Clientes
-
12
2.-Obtener el ID y titulo de las pelculas disponibles de la tabla pelculas
Select ID_Pelicula, Titulo
From Peliculas
-
13
3.-Obtener todos los registros de la tabla alquileres.
Select *
From Alquileres
-
14
4. Obtener los registros de las tablas clientes y alquileres
Select C.NOMBRE_CLIENTE,J.*
From ALQUILERES J inner join PELICULAS E
on J.ID_PELICULA = E.ID_PELICULA
inner join Clientes C on J.ID_CLIENTE=c.ID_CLIENTE
-
15
5.- De la tabla alquileres agrupar los empleados que atendieron mas de una
ves
Select count(id_empleado)Total
From Alquileres
Group by id_empleado
-
16
5 preguntas abiertas con clusula where:
6.-Obtener de la tabla clientes el nombre y ciudad de los clientes de victoria
Select nombre_cliente,ciudad_cliente
From Clientes
Where (ciudad_cliente=victoria
-
17
7-Obtener de la tabla peliculas el id y titulo de las pelculas que sean de
accin
Select ID_Pelicula,Titulo
From Peliculas
Where Genero=Accion
-
18
8.-Obtener de la tabla proveedores, las empresas que reparten mas de 20
peliculas
Select Nomb_empresa,ID_Proveedor
From Proveedores
Where num_peliculas>20;
-
19
9.-Obtener de la tabla empleados, el id, nombre, apellidos de los empleados
que se llamen carlos
Select ID_Empleado, nombre, apellidos
From Empleados
Where nombre=Carlos
-
20
10.- obtener de la tabla Alquileres la cantidad de empleados con id=4
Select count(ID_Empleado)
From Alquileres
Where ID_Empleado=4
-
21
5 preguntas abiertas con clusula order by:
11.De la tabla Clientes ordenar alfabticamente las ciudades.
Select ID_Cliente,Nombre_Cliente,Ciudad_Cliente
From CLIENTES
Order by CIUDAD_CLIENTE
-
22
12.-De la tabla Empleados ordenar por apellidos
Select Nombre,Apellidos
From Empleados
Order by apellidos
-
23
13.-De la tabla alquileres ordenar por fecha de entrega de mayor a menor
Select id_alquiler,id_cliente,id_pelicula,fecha_entrega
From Alquileres
Order by fecha_entrega desc
-
24
14.-De la tabla Alquileres ordenar de mayor a menor el ID_empleado
Select ID_Alquiler,ID_Cliente,ID_Empleado
From Alquileres
Order by ID_Empleado desc
-
25
15.-De la tabla pelculas ordenar de menor a mayor el id_pelicula
Select ID_Pelicula,Titulo,Genero
From Peliculas
Order by ID_pelicula
-
26
3 preguntas abiertas con clusula group by:
16.-Agrupar el total de pelculas por genero
Select count (genero) Titulo, GENERO,ID_PELICULA
From PELICULAS
group by GENERO
-
27
17.-Agrupar de la tabla alquileres el total de peliculas que se retiraron el
mismo dia
Select count(fecha_retiro) Total, fecha_retiro
From Alquileres
Group by fecha_retiro
-
28
18.-Agrupar de la tabla clientes los que son una misma ciudad
Select count(Ciudad_cliente)Total, Ciudad_Cliente
From Clientes
Group by Ciudad_Cliente
-
29
3 preguntas abiertas con clusula having: 19.-De la tabla alquileres mostrar los empleados que atendieron mas de una
ves
SELECT ID_empleado, COUNT(*) Total
FROM alquileres
GROUP BY ID_empleado
HAVING (COUNT(*) > 1)
-
30
20.-De la tabla Alquileres mostrar la fecha de entrega que se repita mas de 1
veces
Select count (Fecha_Entrega) total, Fecha_Entrega
From Alquileres
Group by Fecha_Entrega
Having (count(fecha_entrega)>1)
-
31
21.-De la tabla clientes obtener los clientes que son de una misma ciudad
pero que sean mas de 2
Select Ciudad_Cliente, count(Ciudad_cliente)Total
From Clientes
Group by Ciudad_Cliente
Having (count(ciudad_cliente)>2)
-
32
3 preguntas abiertas con todo: 22.-Obtener de la tabla pelculas, el genero que se repite mas de una ves y
ordenar el nombre del genero por orden descendente.
Select Genero, count(genero)total
From Peliculas
Group by GENERO
Having(count(genero)>1)
Order by genero desc
-
33
23.-Obtener el total de las pelculas que fueron retiradas el mismo dia y
ordenarlas por orden descendente
Select Fecha_retiro,count(Fecha_retiro)Total
From Alquileres
Group by Fecha_retiro
Having (count(Fecha_retiro)>1)
Order by Fecha_Retiro desc
-
34
24.-Obtener de la tabla alquileres el id de los empleados que se repitan mas
de 1 vez y ordenarlos por orden ascendente
Select id_empleado,count(id_empleado)
From Alquileres
Group by id_empleado
Having (count(id_empleado)>1)
Order by im_empleado asc
-
35
3 preguntas que relacionen 3 tablas o ms:
25.-Obtener el nombre del cliente con el titulo de pelcula que rento y el
empleado que lo atendio.
Select J.ID_CLIENTE, J.ID_PELICULA, J.ID_EMPLEADO,
E.NOMBRE_CLIENTE,d.Nombre
From ALQUILERES J inner join CLIENTES E
on J.ID_CLIENTE = E.ID_CLIENTE
inner join Empleados d on J.ID_EMPLEADO=d.ID_Empleado
-
36
26.-Obtener el titulo de la pelcula, la fecha de entrega y nombre del
empleado
Select E.TITULO,J.FECHA_ENTREGA,d.Nombre
From ALQUILERES J inner join PELICULAS E
on J.ID_PELICULA = E.ID_PELICULA
inner join Empleados d on J.ID_EMPLEADO=d.ID_Empleado
-
37
27.-Obtener el nombre del cliente que rento la pelcula con id 123453, el titulo
de dicha pelcula y el proveedor que suministro esta pelcula.
Select C.NOMBRE_CLIENTE, j.ID_PELICULA,e.TITULO,D.Nomb_Empresa
From ALQUILERES J inner join PELICULAS E
on J.ID_PELICULA = E.ID_PELICULA
inner join PROVEDORES d on d.ID_Proveedor=E.ID_PROVEEDOR
inner join Clientes C on J.ID_CLIENTE=c.ID_CLIENTE
where j.ID_PELICULA=123453
-
38
3 preguntas que relacionen 3 tablas y empleen todo:
28.-Obtener el nombre de los clientes y la pelcula que rentaron y el nombre
del empleado que los atendio y ordenados por nombres de pelculas
Select C.NOMBRE_CLIENTE,e.TITULO,k.Nombre
From ALQUILERES J inner join PELICULAS E
on J.ID_PELICULA = E.ID_PELICULA
inner join PROVEDORES d on d.ID_Proveedor=E.ID_PROVEEDOR
inner join Clientes C on J.ID_CLIENTE=c.ID_CLIENTE
Inner join Empleados K on J.ID_EMPLEADO=K.ID_Empleado
group by j.ID_EMPLEADO,C.NOMBRE_CLIENTE, e.TITULO,k.Nombre
order by e.TITULO;
-
39
29.- obtener los clientes que alquilaron el genero romantica y los nombres de
los proveedores que tienen el genero de romntica
Select C.NOMBRE_CLIENTE,e.TITULO,e.GENERO,d.Nomb_Empresa
From ALQUILERES J inner join PELICULAS E
on J.ID_PELICULA = E.ID_PELICULA
inner join PROVEDORES d on d.ID_Proveedor=E.ID_PROVEEDOR
inner join Clientes C on J.ID_CLIENTE=c.ID_CLIENTE
Inner join Empleados K on J.ID_EMPLEADO=K.ID_Empleado
group by C.NOMBRE_CLIENTE, e.TITULO,e.GENERO,d.Nomb_Empresa
having e.GENERO='Romantica'
order by e.TITULO;
-
40
30.- obtener el id de los clientes, el nombre de los clientes que alquilaron el
genero Accion, el nombre de pelcula y los nombres de los proveedores que
tienen el genero de accin y mostrar la fecha de retiro y entrega
Select
J.ID_CLIENTE,C.NOMBRE_CLIENTE,e.TITULO,e.GENERO,d.Nomb_Empresa,j.FECH
A_RETIRO,j.FECHA_ENTREGA
From ALQUILERES J inner join PELICULAS E
on J.ID_PELICULA = E.ID_PELICULA
inner join PROVEDORES d on d.ID_Proveedor=E.ID_PROVEEDOR
inner join Clientes C on J.ID_CLIENTE=c.ID_CLIENTE
Inner join Empleados K on J.ID_EMPLEADO=K.ID_Empleado
group by J.ID_Cliente,C.NOMBRE_CLIENTE,
e.TITULO,e.GENERO,d.Nomb_Empresa,j.FECHA_RETIRO,j.FECHA_ENTREGA
having e.GENERO='Accion'
order by e.TITULO;