Proyectobd

357 visualizaciones

Publicado el

Publicado en: Viajes, Empresariales
0 comentarios
0 recomendaciones
Estadísticas
Notas
  • Sé el primero en comentar

  • Sé el primero en recomendar esto

Sin descargas
Visualizaciones
Visualizaciones totales
357
En SlideShare
0
De insertados
0
Número de insertados
13
Acciones
Compartido
0
Descargas
2
Comentarios
0
Recomendaciones
0
Insertados 0
No insertados

No hay notas en la diapositiva.

Proyectobd

  1. 1. DISEÑO DE UNA BASE DE DATOS ONEIDA MARSEL CAMACHO FORERO INGENIERA DE SISTEMAS FUNDACION UNIVERSITARIA PANAMERICANA
  2. 2. CONTENIDO  1. Problema propuesto ¨Empresa de mudanzas¨  2. Diagrama Entidad Relación ¨DER¨  3. Tablas SQL  4. Consultas.  5. Diagrama de relaciones.  6. Interfaz de entrada.  7. Interfaz de salida.  8. Agradecimientos.
  3. 3. 1. EMPRESA DE MUDANZAS  En la página Web http://www.puealfinalmemudo.dadbd se pub licitan distintas empresas de mudanza que ofrecen sus servicios y productos en España.  En la misma página Web puedes rellenar solicitudes de servicios a las distintas empresas que, posteriormente, pueden ser aceptadas o rechazadas tanto por el cliente como por la empresa de mudanzas. Esta página Web necesita almacenar toda esta información en una base de datos y por eso nos ha pedido ayuda.  Después de varias entrevistas con los gerentes de las empresas de mudanza, pudimos recoger la siguiente información:  De las empresas de mudanza nos interesa guardar información sobre el nombre de la empresa (único), su dirección completa, teléfonos de contacto y una lista de poblaciones (nombre de población y provincia) a las que ofrece sus servicios o productos.  Las empresas de mudanza pueden ofertar distintos servicios, como transporte, embalaje,  desmontar/montar muebles, grúas, etc. No todas las empresas ofertan los mismos servicios ni en las mismas poblaciones. Es decir, cada empresa puede ofrecer distintos servicios en distintas poblaciones, por lo que un cliente tendrá que mirar bien con qué empresa contacta.  Todos los servicios se identifican con un nombre de servicio (común para todo el sector de mudanzas). Además, de todos ellos se desea almacenar el precio/hora del servicio ofrecido por cada empresa de mudanzas en cada población (puede tener diferentes precios de servicios dependiendo de la población).
  4. 4. Los distintos servicios de transporte que las empresas pueden ofertar está regulado por ley en base a los kg, definiéndose unos intervalos por peso para cada transporte de forma estándar. Respecto al precio de los servicios de transporte, además de contar con el precio/hora del servicio, existe un plus de aumento de precio si la carga supera una cantidad de kg que fija cada empresa independientemente de la población donde se realice el servicio. Por ejemplo, 10% más si la carga supera los 500kg, 15% más si la carga supera los 750kg, etc. En cuanto a las grúas, interesa almacenar el tamaño de las mismas (tamaño de la base, para comprobar en qué espacios se puede utilizar; y alto de la grúa, para ver a qué piso puede llegar). También existe un plus de aumento de precio según el alto de la grúa independientemente de la población donde se realiza el servicio. Cuando un cliente quiere hacer una mudanza, éste ha rellenar una solicitud (identificada por un código único en nuestra Web) indicando a qué empresa de mudanzas le pide qué servicios y las direcciones de inicio del servicio y que destino si el servicio lo requiere. Estas direcciones deberán, por supuesto, estar dentro de las poblaciones donde la empresa presta sus servicios. Además de la fecha de solicitud, se desea almacenar la fecha de resolución de la solicitud, indicando si la solicitud ha sido aceptada o no y el precio total, así como los precios de cada servicio solicitado.
  5. 5. Los clientes están identificados por un código único y se desea conocer su NIF, dirección, nombre completo y teléfonos de contacto. Una vez aceptada la solicitud, también se deseará almacenar información sobre la fecha real en la que realizaron los servicios solicitados, el tiempo que se ha tardado en cada servicio y qué empleados de la empresa de mudanza han trabajado en los servicios de dicha solicitud. En cuanto a los empleados, la empresa almacena información sobre su NIF, dirección, nombre completo, teléfono de contacto, teléfono de empresa, tipo de empleado (conductor, grúa, jefe de mudanza, etc.) y el sueldo. Aunque existen muchos tipos de empleado, cada uno con su especialidad, en las empresas de mudanza todos pueden realizar cualquier trabajo en algún momento dado, por lo que no será necesario comprobar que únicamente los conductores son los que conducen los vehículos en las mudanzas. Además, un mismo empleado puede serlo de varias empresas de mudanza en distintos momentos, por lo que será necesario guardar esta información.
  6. 6.  Para facilitar la gestión económica de esta base de datos, suponemos que todos los pagos de los  clientes se efectúan a priori.  II. APARTADOS A REALIZAR  1. (4 puntos) Realizar el diseño utilizando el modelo E/R, indicando todos los  supuestos semánticos complementarios al enunciado que sea necesario introducir,  así como todos aquellos que no pueden ser recogidos en el diagrama E/R.  NOTA: Es necesario entregarlo en formato electrónico utilizando cualquier programa  mientras que respete la notación del modelo E/R estudiado en clase. Para los  alumnos que utilicen Visio Microsoft, en la página de la asignatura se ofrece una  biblioteca con los símbolos del modelo E/R.  2. (2 puntos) Transformar el esquema E/R en un esquema relacional (grafo relacional),  en el que se han de indicar las claves primarias, candidatas y las claves ajenas con  sus opciones de integridad referencial, así como si el atributo permite valores nulos.
  7. 7. Si es necesario, se debe incluir las restricciones de verificación (checks), aserciones y disparadores que permitan captar toda la semántica del enunc iado (no es obligatoria la sintaxis en SQL). 3. Creación de la base de datos en Oracle, generar el script, introducir datos en las tablas generadas, suficientes para hacer las pruebas de las siguientes consultas y disparadores en SQL (sintaxis de Oracle). · (2 puntos) CONSULTAS: 1. Qué tipo de servicios ha pedido un cliente dado (“Pepito Pérez”) en el último mes. 2. Cuál es la empresa que ofrece más servicios en la población “Burguillo” de la provincia de “Toledo”. 3. Qué empleados (nombre y apellidos) han trabajado para “Pepito Pérez” en el último mes. 4. Cuántas solicitudes se han aceptado en el último año, el nombre del cliente que la realizó, las poblaciones de origen y destino (en el caso de que hubiera) y el precio total de cada solicitud. · (2 puntos) DISPARADORES: 1. Atributo derivado “precio total” en la solicitud de un cliente. 2. Disparador que compruebe la exclusividad en los distintos servicios que ofrece una empresa de mudanza. 3. Aserción que compruebe que la empresa puede realizar la mudanza solicitada por un cliente según la dirección de inicio y la dirección de destino.
  8. 8. 2. DIAGRAMA ENTIDAD RELACION
  9. 9. 3. TABLAS SQL TABLA CLIENTE: AGRUPAR DATOS(GROUP BY) Este método sirve para agrupar Para crear una tabla solo Los registros cuando son repetidos. escribe el nombre de la Ejemplo: tabla con sus respectivos select Nombre campos y al final en la from CLIENTE primary key se coloca el id group by Nombre; de la tabla. Ejemplo. Aquí estamos agrupando el campo Nombre De la tabla cliente. Fig 1 create table CLIENTE ( Id-cliente int (15), Id-empresa int 15), Cedula int (15), Telefono int (15), Direccion varchar (15), Nombre varchar (25), primary key(Id-cliente)); Fig 1
  10. 10. TABLA SERVICIOS: (GROUP BY) Create Table SERVICIOS ( select Tipo de servicio Id-Servicios int (15), from SERVICIOS Id-Empresa int (15), group by Tipo de servicio; Id-Provincia int (15), Precio int (15), Aquí se esta agrupando Hora del servicio string (15), el tipde servicio dela Tipo de servicio string (25), tabla servicio. primary key (Id-Servicios)); Fig 2 Fig 2
  11. 11. TABLA EMPLEADO: GROUP BY: select Direccion Create Table EMPLEADO ( from EMPLEADO Id-Empleado int (15), group by Direccion; Id-Empresa int (15), En esta tabla se esta agrupando Tipo- de- emplado string (15), La direccion. Direccion int (15), Fig 3 Sueldo int (25), Nombre string (15), Telefono int (25), primary key (Id-Empleado)); Fig 3
  12. 12. TABLA VEHICULO: GROUP BY: create table VEHICULO( SELECT Placa Id-Vehiculo int (15), FROM VEHICULOS Id-Empresa int 15), GROUP BY Placa; Id-Servicios int (15), En esta tabla se esta agrupando Placa int (15), el campo placa. Altura int (15), Fig 4. primary key(Id-Vehiculo)); Fig 4
  13. 13. TABLA PROVINCIA: GROUP BY: Create Table PROVINCIA ( SELECT Nombre Id-Provincia int (15), FROM PROVINCIA Departamento (25), GROUP BY Nombre; Nombre string (25), primary key (Id-Provincia)); Aqui estamos agrupando el campo nombre de la tabla provincia. Fig 5. Fig 5
  14. 14. TABLA SOLICITUD: GROUP BY: create table SOLICITUD ( SELECT Destino Id-Solicitud int (15), FROM SOLICITUD Id-Empleado int 15), GROUP BY Destino; Id-Servicio int (15), Id-Provincia int (15), En esta tablase esta agrupando Id-Cliente (15), El destino de la tabla solicitud. Destino varchar (25), Fig 6 Peso int (15), Fecha de servicio string (25), Solicitud aceptada string (15), primary key(Id-Solicitud)); Fig 6
  15. 15. TABLA EMPRESA: GROUP BY: Create Table EMPRESA ( SELECT Direccion Id-Empresa int (15), FROM EMPRESA Id-Empleado int (15), GROUP BY Direccion; Direccion int (15), Nombre string (15), Aqui estamos agrupando la direccion Telefono int (25), De la tabla empresa. Fig 7 primary key (Id-Empresa)); Fig 7
  16. 16. 4. CONSULTAS 1. Solicitudes de mudanzas que se hicieron antes del 15 de febrero de 2009. SELECT SOLICITUD.[Id-Solicitud], SOLICITUD.[Fecha de servicio], SOLICITUD.Destino FROM SOLICITUD WHERE (((SOLICITUD.[Id-Solicitud])=151813)); Para crear este tipó de consultas hacer clic en crear que se encuentra en la parte superior de la base de datos, luego se hace clic en diseño de consultas ver fig 01 Despues te aparecerá una ventana como la fig 02 Y tu eliges las tablas que necesitas para hacer tus consultas y al finalizar le das depurar y te aparecen tus consultasen una tabla como esta fig 11. Fig 01 Fig 11 Fig 02
  17. 17. 2. Nombre del empleado que cubrió la solicitud 151813 indicando el origen, destino y monto cobrado. SELECT SOLICITUD.[Id-Solicitud], EMPLEADO.Nombre, SOLICITUD.Destino, SERVICIOS.Precio FROM SERVICIOS INNER JOIN (EMPLEADO INNER JOIN SOLICITUD ON EMPLEADO.[Id-Empleado] = SOLICITUD.[Id-Empleado]) ON SERVICIOS.[Id-Servicios] = SOLICITUD.[Id-Servicio] WHERE (((SOLICITUD.[Id-Solicitud])=151813));
  18. 18. 3. Empresa que ofrece el servicio de embalaje Bogotá-Cali y su tarifa. SELECT EMPRESA.[Id-Empresa], EMPRESA.Nombre, SERVICIOS.[Tipo de servicio], SERVICIOS.Precio, SOLICITUD.Destino FROM (EMPRESA INNER JOIN SERVICIOS ON EMPRESA.[Id- Empresa]=SERVICIOS.[Id-Empresa]) INNER JOIN SOLICITUD ON SERVICIOS.[Id-Servicios]=SOLICITUD.[Id-Servicio] WHERE (((EMPRESA.[Id-Empresa])=111)) OR (((EMPRESA.[Id- Empresa])=222));
  19. 19. 4. Tarifa cobrada en el servicio Bobota-Barranquilla el día 15 de febrero de 2009 cuyo peso era de 600 kg indicando el numero de la solicitud, nombre del cliente y hora en la que se realizo el servicio. SELECT SOLICITUD.[Id-Solicitud], SOLICITUD.[Fecha de servicio], SOLICITUD.Destino, SOLICITUD.Peso, SERVICIOS.[Hora del servicio], SERVICIOS.Precio, CLIENTE.Nombre FROM CLIENTE INNER JOIN (SERVICIOS INNER JOIN SOLICITUD ON SERVICIOS.[Id-Servicios] = SOLICITUD.[Id-Servicio]) ON CLIENTE.[Id- cliente] = SOLICITUD.[Id-Cliente] WHERE (((SOLICITUD.[Id-Solicitud])=151814 Or (SOLICITUD.[Id- Solicitud])=151815));
  20. 20. 5. Solicitud de los empleados con sueldo y cargo y nombre de las empresas en la que trabaja. SELECT EMPRESA.[Id-Empresa], EMPRESA.Nombre, EMPLEADO.[Tipo de empleado], EMPLEADO.Nombre, EMPLEADO.Sueldo FROM EMPRESA INNER JOIN EMPLEADO ON EMPRESA.[Id-Empresa] = EMPLEADO.[Id-Empresa] WHERE (((EMPRESA.[Id-Empresa])=111 Or (EMPRESA.[Id-Empresa])=222 Or (EMPRESA.[Id-Empresa])=333 Or (EMPRESA.[Id-Empresa])=444 Or (EMPRESA.[Id-Empresa])=555 Or (EMPRESA.[Id-Empresa])=666));
  21. 21. 6. Consulta de la fotocopia (4). Cuantas solicitudes se han aceptado en el ultimo año, el nombre del cliente que la realizo, las poblaciones de origen y destino (en el caso que hubiera) y el precio total de cada solicitud. SELECT SOLICITUD.[Solicitud aceptada], SOLICITUD.[Fecha de servicio], SOLICITUD.Destino, CLIENTE.Nombre, PROVINCIA.[Id-Provincia], PROVINCIA.Departamento, PROVINCIA.Nombre, SERVICIOS.Precio FROM ((CLIENTE INNER JOIN SOLICITUD ON CLIENTE.[Id-cliente] = SOLICITUD.[Id-Cliente]) INNER JOIN PROVINCIA ON SOLICITUD.[Id- Provincia] = PROVINCIA.[Id-Provincia]) INNER JOIN SERVICIOS ON (PROVINCIA.[Id-Provincia] = SERVICIOS.[Id-Provincia]) AND (SOLICITUD.[Id- Servicio] = SERVICIOS.[Id-Servicios]) WHERE (((SOLICITUD.[Solicitud aceptada])="Si" Or (SOLICITUD.[Solicitud aceptada])="Si"));
  22. 22. 5. DIAGRAMA DE RELACIONES
  23. 23. 6. INTERFAZ DE ENTRADA
  24. 24. 7. INTERFAZ DE SALIDA
  25. 25. 8. AGRADECIMIENTOS INGENIERA ALBENIS CORTES FUNDACION UNIVERSITARIA PANAMERICANA 2009

×