Proyecto Final
- Definir el enunciado del problema a sistematizar según las necesidades detectadas. (Debe ser Claro y tener mínimo 12 tablas) (Entrega 1)
2. REALIZAR LO SIGUIENTE:
2.1. Darle un nombre a la base de datos.
2.2. Listado de tablas que llevara la BD. (Cuales son referenciales y cuales son de movimiento)
2.3. Diseñar el diccionario de datos de cada tabla (campo, nombre el campo, tipo, tamaño y descripción).
2.4. Montar o diseñar el modelo entidad relación.
2.5. Dibujar el Diagrama relacional.
3. Crear la BD y las tablas respectivas en MySQL (guardar evidencias del código MySQL con el que resuelva dicha actividad) (Entrega 2)
4. Diseñar ejercicios en los que se apliquen los diferentes comandos que se utilizaron durante el semestre con su respectivo análisis y resultados. (Entrega 3)
5. Sustentación
Solución
Enunciado del problema
La empresa A'sellaseg ingeniería desea implementar una base de datos para llevar un cierto control sobre el sistema de moldes. Se requiere que esta base de datos almacene la información correspondiente a cada molde (número o referencia, descripción, medidas, fecha de fabricación, valor), se debe tener en cuenta que puede ser tipo molde o tipo perfil y varios materiales para su fabricación.
Se desea también almacenar la empresa a quien se le fabricó con su correspondiente orden de producción, ubicación y el Nit que lo identifica, también el operario que lo trabajó por última vez (nombre, cargo en la empresa, edad, numero de contacto, fecha), La orden debe almacenar la información de cómo se trabajó la última vez (temperatura y tiempo).
Y por último se desea llevar control sobre los moldes que son desechados y los que son reutilizados.
Adicional se debe crear una tabla zona con un campo tipo enum donde se especifique que funciones se realizan allí, una tabla para los cargos o las diferentes funciones que pueden emplear un operario ( zona, horario, jefe inmediato), otra tabla donde se listen las tipos de maquinas con las que se disponen y sus características ( nombre, la descripción o su función, zona) y por ultimo especificar que moldes están programados para ser reparados( fecha, descripción o cual es la reparación.
Todo lo anterior aplicando conceptos vistos en la asignatura base de datos II como manejo de fechas, disparadores, condicionales, datos set, enum, blob y manejo de cadenas.
Entrega 3:
1. Consultar el nombre del operario, el nombre del molde y el mes en que se trabajó.
a. ¿Qué se desea consultar y de que tablas?
operario.nombr
molde.descripcion
moldeoperario.fechaultimavez(month)
b. ¿Qué tablas se ven afectadas?
molde
operario
moldeoperario
c. Condiciones
NA
d. ¿Qué comandos se debe utilizar?
select
e. Sintaxis: select nombre, descripcion, month(fechaultimavez) 'Mes' from operario,molde,moldeoperario where operario.codoperario = moldeoperario.codoperario and moldeoperario.numeromolde=molde.numeromolde;
2. Muestre la
antigüedad de cada molde;
a. ¿Qué se desea consultar y de que tablas?
molde.descripcion
antiguedad en años
b. ¿Qué tablas se ven afectadas?
molde
c. Condiciones
NA
d. ¿Qué comandos se debe utilizar?
select
e. Sintaxis select descripcion, year(current_date()) - year(fechaelaboracion) 'Antiguedad en años' from molde;
3. Mostrar que
moldes se fabricaron los últimos 5 años
a. ¿Qué se desea consultar y de que tablas?
molde *
b. ¿Qué tablas se ven afectadas?
molde
c. Condiciones
fechaelaboracion <=5
d. ¿Qué comandos se debe utilizar?
select
e. Sintaxis: select * from molde where year(current_date()) - year(fechaelaboracion) <=5;
4. Consultar el
molde más antiguo.
a. ¿Qué se desea consultar y de que tablas?
antiguedad en años
b. ¿Qué tablas se ven afectadas?
molde
c. Condiciones
NA
d. ¿Qué comandos se debe utilizar?
Select, max
e. Sintaxis: select max(year(current_date()) - year(fechaelaboracion)) 'Antiguedad en años' from molde;
5. Consultar que moldes se trabajaron en el año 2020.
a. ¿Qué se desea consultar y de que tablas?
Molde.descripcion
b. ¿Qué tablas se ven afectadas?
Molde
moldeoperario
c. Condiciones
fechaultimavez = '2020';
d. ¿Qué comandos se debe utilizar?
select
e. Sintaxis: select descripcion from molde, moldeoperario where molde.numeromolde = moldeoperario.numeromolde and year(fechaultimavez) = '2020';
6. crear una vista con la fecha de elaboración de los moldes y el año en que se desechó.
a. ¿Qué se desea consultar y de que tablas?
Molde.descripcion
Molde.fechaelaboracion
desechado.Year(fecha)
b. ¿Qué tablas se ven afectadas?
molde
Desechado
c. Condiciones
NA
d. ¿Qué comandos se debe utilizar?
Select, view
e. Sintaxis: create view desechados as select descripcion,fechaelaboracion, year(fecha)' Año desechado' from molde,desechado where molde.numeromolde = desechado.numeromolde;
7. consultar los clientes cuyo Nit comience por 900 y el digito de verificación 4 o 5(ultimo digito).
a. ¿Qué se desea consultar y de que tablas?
Cliente.nombrecliente
Cliente.nit
b. ¿Qué tablas se ven afectadas?
cliente
c. Condiciones
substr(nit,1,3) in ('900') and substr(nit,10,1) in ('4','5');
d. ¿Qué comandos se debe utilizar?
Select, substr
e. Sintaxis: select nombrecliente, nit from cliente where substr(nit,1,3) in ('900') and substr(nit,10,1) in ('4','5');
8. listar los cargos cuya descripcion se menor o igual a 30
a. ¿Qué se desea consultar y de que tablas?
Cargo.nombre
Cargo.descripcion
b. ¿Qué tablas se ven afectadas?
cargo
c. Condiciones
character_length(descripcion) <= 30;
d. ¿Qué comandos se debe utilizar?
Select, carácter_length
e. Sintaxis: select nombre, descripcion from cargo where character_length(descripcion) <= 30;
9. Consultar los moldes que tienen precio mayor a 1000 y menor igual a 100000, y sacar un mensaje que diga económico, de lo contrario debe salir un mensaje que diga costoso.
a. ¿Qué se desea consultar y de que tablas?
Molde.descripcion
valoracion
b. ¿Qué tablas se ven afectadas?
molde
c. Condiciones
(valor>1000 and valor<=100000
d. ¿Qué comandos se debe utilizar?
Select, if
e. Sintaxis: select descripcion,if(valor>1000 and valor<=100000, 'Económico','Costoso') Valoracion from molde;
10. consultar que día se reparó el ultimo molde
a. ¿Qué se desea consultar y de que tablas?
Día de la reparación
b. ¿Qué tablas se ven afectadas?
reparacion
c. Condiciones
NA
d. ¿Qué comandos se debe utilizar?
Select, case
e. Sintaxis: select @fecha:=min(fechareparacion) from reparacion;
select case(weekday(@fecha)) when 0 then 'lunes' when 1 then 'martes' when 2 then 'miercoles' when 3 then 'jueves' when 4 then 'viernes' when 5 then 'sabado' when 6 then 'domingo' end;
11. encriptar la ubicación del cliente Exco.
a. ¿Qué se desea consultar y de que tablas?
Cliente.ubicacion
b. ¿Qué tablas se ven afectadas?
cliente
c. Condiciones
nombrecliente ='Exco';
d. ¿Qué comandos se debe utilizar?
Select, encode, @clave:=
e. Sintaxis: select @ubicacion:= ubicacion from cliente where nombrecliente ='Exco';
select encode('Ubicacion','dia');
12. crear una vista con las ubicaciones de los clientes encriptadas.
a. ¿Qué se desea consultar y de que tablas?
Cliente.ubicacion
b. ¿Qué tablas se ven afectadas?
cliente
c. Condiciones
NA
d. ¿Qué comandos se debe utilizar?
Select , view, encode
e. Sintaxis: create view encriptados as select encode(ubicacion,'123') 'Ubicacion' from cliente;
13. desencriptar las ubicaciones de los cliente
a. ¿Qué se desea consultar y de que tablas?
Encriptados.ubicacion
b. ¿Qué tablas se ven afectadas?
encriptados
c. Condiciones
NA
d. ¿Qué comandos se debe utilizar?
Select, decode
e. Sintaxis: select decode(ubicacion,1997) from encriptados;
14. localizar la primera letra o en los nombre de los cargos.
a. ¿Qué se desea consultar y de que tablas?
Posición de la letra o
b. ¿Qué tablas se ven afectadas?
cargo
c. Condiciones
NA
d. ¿Qué comandos se debe utilizar?
Select, position
e. Sintaxis: select position('o' in nombre)'Posicion' from cargo;
15. Consultar los moldes que se van a ser modificados. (Dato tipo set)
a. ¿Qué se desea consultar y de que tablas?
reparacion *
b. ¿Qué tablas se ven afectadas?
reparacion
c. Condiciones
descripcion like'%Modificacion%'
d. ¿Qué comandos se debe utilizar?
select, like
e. Sintaxis: select * from reparacion where descripcion like'%Modificacion%';
16. Consultar los moldes que son de tipo perfil (Dato tipo set)
a. ¿Qué se desea consultar y de que tablas?
Molde.descripcion
Molde.tipo
b. ¿Qué tablas se ven afectadas?
molde
c. Condiciones
tipo = perfil
d. ¿Qué comandos se debe utilizar?
select
e. Sintaxis: select descripcion, tipo from molde where tipo =2;
17. Consultar los cargos que trabajan día completo. (Dato tipo enum)
a. ¿Qué se desea consultar y de que tablas?
*
b. ¿Qué tablas se ven afectadas?
cargo
c. Condiciones
horario Dia completo
d. ¿Qué comandos se debe utilizar?
Select, like
e. Sintaxis: select * from cargo where horario like '%Dia completo%';
18. consultar que máquinas requieren protector facial
a. ¿Qué se desea consultar y de que tablas?
*
b. ¿Qué tablas se ven afectadas?
maquina
c. Condiciones
descripcion like '%protector facial%';
d. ¿Qué comandos se debe utilizar?
Select, like
e. Sintaxis: select * from maquina where descripcion like '%protector facial%';
19. crear otra tabla a partir de la tabla cargo con los diferentes cargos que hay en la empresa.
a. ¿Qué se desea consultar y de que tablas?
Cargo.nombre
b. ¿Qué tablas se ven afectadas?
cargo
c. Condiciones
NA
d. ¿Qué comandos se debe utilizar?
Select, create
e. Sintaxis: Create table cargos
select distinct nombre as Cargo
from cargo;
20. crear otra tabla con el valor total por tipo de molde.
a. ¿Qué se desea consultar y de que tablas?
Molde.tipo
Sum(valor)
b. ¿Qué tablas se ven afectadas?
molde
c. Condiciones
NA
d. ¿Qué comandos se debe utilizar?
Select, create, sum, group by
e. Sintaxis: create table valortotal
select tipo, sum(valor) 'Valor Total' from molde
group by tipo;
21. crear una tabla e insertar en ella los jefes y las zonas que administra.
a. ¿Qué se desea consultar y de que tablas?
Zona.jefeinmediato
Zona.piso
b. ¿Qué tablas se ven afectadas?
zona
c. Condiciones
NA
d. ¿Qué comandos se debe utilizar?
Select, insert
e. Sintaxis
create table zona2
(jefeinmediato varchar(40),
piso varchar(20));
insert into zona2
select z.jefeinmediato, z.piso
from zona as z
22. Consultar la información de los moldes relacionada con los clientes. (cross join)
a. ¿Qué se desea consultar y de que tablas?
Molde *
Cliente *
b. ¿Qué tablas se ven afectadas?
Molde
cliente
c. Condiciones
NA
d. ¿Qué comandos se debe utilizar?
Select, Cross join
e. Sintaxis select m.*,c.*
from molde as m
cross join cliente as c;
23. Consultar nombre del cliente y el respectivo nombre de molde (inner join).
a. ¿Qué se desea consultar y de que tablas?
cliente.nombrecliente
molde.nombre
b. ¿Qué tablas se ven afectadas?
cliente
molde
climolorden
c. Condiciones
NA
d. ¿Qué comandos se debe utilizar?
select, inner join
e. Sintaxis select nombrecliente, descripcion from cliente inner join climolorden on cliente.codcliente=climolorden.codcliente inner join molde on climolorden.numeromolde=molde.numeromolde;
24. Consultar que moldes no son reutilizados ( left join).
a. ¿Qué se desea consultar y de que tablas?
molde.nombre
reutilizado.fecha
reutilizado.numeromolde
reutilizado.nuevonumeromolde
b. ¿Qué tablas se ven afectadas?
molde
reutilizado
c. Condiciones
reutilizado.numeromolde is null
d. ¿Qué comandos se debe utilizar?
left join
e. Sintaxis select molde.descripcion, reutilizado.fecha, reutilizado.numeromolde, reutilizado.nuevonumeromolde from molde left join reutilizado on molde.numeromolde=reutilizado.numeromolde where reutilizado.numeromolde is null;