40
  Fundamentos de Base de Datos Proyecto Base de Datos (VIDEOCLUB)  Integrantes: Francisco Ricardo Garza Aguilera Gilberto Francisco Búlfeda Posada PROFESOR: PICAZO VAZQUEZ JOEL ENRIQUE

Fundamentos de Base de Datos

Embed Size (px)

DESCRIPTION

fundamentos de base de datos

Citation preview

  • 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;