You are on page 1of 12

Construcción de modelos de base de datos SIFI 1.

0
AP6-AA1-EV1-CONSTRUCCIÓN DE MODELOS DE BASE DE DATOS

PRESENTADO POR

JULIAN ANDRES CAMARGO MOSCOTE

PRESENTADO A:

JAMIR ANTONIO BERRIO MARINES

ANÁLISIS Y DESARROLLO DE SISTEMAS DE INFORMACIÓN (1412862)

SERVICIO NACIONAL DE APRENDIZAJE – SENA

2018
Construcción de modelos de base de datos SIFI 1.0
Realizar la práctica expuesta en el laboratorio No.12 “Construir sentencias SQL para la
definición y manipulación del modelo de base de datos”. Con el desarrollo de este laboratorio
usted podrá aplicar los conceptos vistos para la construcción de la base de datos propuesta, las
tablas y relaciones entre tablas, según la información suministrada en el laboratorio.
Esta actividad la puede hacer utilizando el SMBD que prefiera (Oracle o MySQL), el laboratorio
suministra un grupo de videotutoriales que les indican los procedimientos particulares a seguir
en estos dos SMBD. Una vez construida la estructura planteada en el laboratorio y validada
contra el diseño presentado, ingresar los datos sugeridos y realizar las consultas propuestas.
Las sentencias utilizadas para la construcción y manipulación de la base de datos deben ser
almacenados en un archivo con extensión .txt.

Codigos Utilizados en el desarrollo de la evidencia

Eliminar Base de datos


DROP DATABASE laboratoriosql;

Crear la base de datos


mysql> create database laboratoriosql;

Mostrar la base de datos


mysql> show database laboratoriosql;

Usar base de datos


mysql> use laboratoriosql;

Mostrar las tablas de la base de datos


mysql> show tables from laboratoriosql;

Propiedades de la tabla
mysql> describe nombredelatabla;

Registros Grabados
mysql> select * from nombredelatabla;

Borrar datos de la tabla


DELETE FROM nombredelatabla;

Agregar Columnas a la Tabla


alter table TiposAutomotores add(
autnombre varchar(11));

Cambiar nombre y propiedad de la tabla


alter table Aseguramientos change Aseestado
Aseestado char(30);

sentencia SQL para la creacion de tablas


create table nombreTabla(
nombrecampo1 tipodatos(tamaño) modificador, “modificador not null, null”
nombrecampo2 tipodatos(tamaño) modificador,
Construcción de modelos de base de datos SIFI 1.0
nombrecampo2 enum(‘x’,’y’)
….
Primary key (nmbrecampo1),
Unique (nmbrecampo),
)auto_increment=valorInicial;

Desarrollo de la evidencia
Ubicado en la base de datos que acabó de crear, construya las siguientes tablas con los
respectivos campos y tipos de datos.

mysql> create table profesor(


doc_prof varchar(11),
nom_prof varchar(30),
ape_prof varchar(30),
cate_prof int,
sal_prof int,
primary key (doc_prof)
);

mysql> create table curso(


cod_curs int auto_increment,
nom_cur varchar(100),
horas_cur int,
valor_cur int,
primary key (cod_curs)
)auto_increment=1;

alter table curso change nom_cur


nom_curs varchar(100);

mysql> create table estudiante(


doc_est varchar(11),
nom_est varchar(30),
ape_est varchar(30),
edad_est int,
primary key (doc_est)
);

create table estudiantexcurso(


cod_cur_estcur int,
doc_est_estcur varchar(11),
fec_ini date,
foreign key (cod_curs) references curso(cod_curs),
foreign key (doc_est) references estudiante(doc_est));

Cambiar nombre y propiedad de la tabla


alter table estudiantexcurso change cod_curs
Construcción de modelos de base de datos SIFI 1.0
cod_cur_estcur int;

alter table estudiantexcurso change doc_est


doc_est_estcur varchar(11);

alter table estudiantexcurso change fec_ini


fec_ini_estcur Date;

create table Cliente(


id_cli varchar(11),
nom_cli varchar(30),
ape_cli varchar(30),
dir_cli varchar(100),
dep_cli varchar(20),
mes_cum_cli varchar(10),
primary key(id_cli)
);

create table Articulo(


id_art int auto_increment,
tit_art varchar(100),
aut_art varchar(100),
edi_art varchar(300),
prec_art int,
primary key(id_art)
)auto_increment=1;

create table pedido(


id_ped int auto_increment,
id_cli_ped varchar(11),
fec_ped date,
val_ped int,
primary key(id_ped),
foreign key (id_cli_ped) references cliente(id_cli)
)auto_increment=1;

Create table articuloxpedido(


id_ped_artped int,
id_art_artped int,
can_art_artped int,
val_ven_art_artped int,
foreign key (id_ped_artped) references pedido(id_ped),
foreign key (id_art_artped) references articulo(id_art)
);
Construcción de modelos de base de datos SIFI 1.0

create table compañia(


comnit varchar(11),
comnombre varchar(30),
comañofun Int,
comreplegal Varchar(100),
primary key (comnit)
);

create table TiposAutomotores(


auttipo int,
primary key (auttipo)
);

create table Automotores(


autoplaca varchar(6),
Automarca varchar(30),
Autotipo int,
Automodelo int,
Autonumpasajeros int,
Autocilindraje int,
Autonumchasis varchar(20),
primary key (autoplaca),
foreign key (Autotipo) references TiposAutomotores(auttipo)
);

create table Aseguramientos(


Asecodigo int(6) auto_increment,
Asefechainicio Date,
Asefechaexpiracion Date,
Asevalorasegurado int,
Aseestado varchar(6),
Asecosto int,
Aseplaca varchar(20),
primary key(asecodigo),
foreign key(Aseplaca) references Automotores(autoplaca)
)auto_increment=1;

create table Incidentes(


incicodigo int auto_increment,
incifecha date,
inciplaca varchar(6),
incilugar varchar(40),
incicantheridos int,
Construcción de modelos de base de datos SIFI 1.0
incicanfatalidades int,
incicanautosinvolucrados int,
primary key(incicodigo),
foreign key(inciplaca) references Automotores(autoplaca)
)auto_increment=1;

Inserte los siguientes registros según las tablas que se presentan a continuación:

Tabla Profesor “tabla no referenciada”

Insertintoprofesor(doc_prof,nom_prof,ape_prof,cate_prof,sal_prof)Values(‘63502720’,’Martha’,
’Rojas’,’2’,’690000’);

Insert into profesor(doc_prof,nom_prof,ape_prof,cate_prof,sal_prof)Values(‘91216904’,’Carlos’,


‘Pérez’,’3’,’950000’);

Insert into
profesor(doc_prof,nom_prof,ape_prof,cate_prof,sal_prof)Values(‘13826789’,’Maritza’,’Angarita’,
’1’,’550000’);

Insert into profesor(doc_prof,nom_prof,ape_prof,cate_prof,sal_prof)Values(‘1098765789’,


‘Alejandra’,’Torres’,’4’,’1100000’);

Tabla curso “tabla no referenciada”

insert into
curso(cod_curs,nom_cur,horas_cur,valor_cur) values(149842,'fundamentos de bases de datos',
40,500000);

insert into curso(cod_curs,nom_cur,horas_cur,valor_cur) values(250067,'Fundamentos de


SQL',20,700000);

insert into curso (cod_curs,nom_cur,horas_cur,valor_cur) values(289011,'Manejo de


Mysql',45,550000);

insert into curso (cod_curs,nom_cur,horas_cur,valor_cur) values(345671,'Fundamentals of


Oracle',60,3000000);

Tabla Estudiante “tabla no referenciada”

insert into estudiante(doc_est,nom_est,ape_est,edad_est)values('63502720','María',


'Perez',23);
Construcción de modelos de base de datos SIFI 1.0
insert into estudiante (doc_est,nom_est,ape_est,edad_est)values('91245678','Carlos
José','Lopez',25);

insert into estudiante


(doc_est,nom_est,ape_est,edad_est)values('1098098097','Jonatan','Ardila',17);

insert into estudiante


(doc_est,nom_est,ape_est,edad_est)values('1098765678','Carlos','Martinez',19);

Tabla estudiantexcurso “ Tabla referenciada”

insert into estudiantexcurso(cod_curs,doc_est,fec_ini) values (289011,1098765678,'2011-02-


01'),(250067,63502720,'2011-03-01'),(289011,1098098097,'2011-02-01'),
(345671,63502720,'2011-04-01');

Tabla: Cliente “tabla no referenciada”

insert into cliente(id_cli,nom_cli,ape_cli,dir_cli,dep_cli,mes_cum_cli) values


('63502718','Maritza','Rojas','Calle 34 No.14-45','Santander','Abril'),
('13890234','Roger','Ariza','Calle 30 No.13-45','Antioqui','Junio'), ('77191956','Juan
Carlos','Arenas','Diagonal 23 No.12-34 apto 101','Valle', 'Marzo'),
('1098765789','Catalina','Zapata','Av el Libertador No. 30 - 14','Cauca', 'Marzo');

Tabla: Articulo “tabla no referenciada”

insert into articulo(tit_art,aut_art,edi_art,prec_art)values ('Redes cisco','Ernesto


Arigasello','Alfaomega-Rama',60000), ('Facebook y twitter para adultos','Veloso
Claudio','Alfaomega',52000),('Creacion de un portal con php y mysql','Jacobo Pavon
Puertas','Alfaomega-Rama',40000),('Administracion de sistemas operativos','Julio Gomez
Lopez','Alfaomega-Rama',55000);

Tabla: Pedido

insert into pedido(id_cli_ped,fec_ped,val_ped)Values('63502718','2012-02-25',120000),


('77191956','2012-04-30',55000),('63502718','2011-12-10',260000),('1098765789','2012-02-
25',1800000);

Tabla: Articulo por pedido “tabla referenciada”

insert into
articuloxpedido(id_ped_artped,id_art_artped,can_art_artped,val_ven_art_artped)Values(1,3,5
,40000),(1,4,12,55000),(2,1,5,65000),(3,2,10,55000), (3,3,12,45000),(4,1,20,65000);

Tabla: Compañía “tabla no referenciada”

insert into compañia(comnit,comnombre,comañofun,comreplegal)Values


Construcción de modelos de base de datos SIFI 1.0
('800890890-2','Seguros Atlantida',1998,'Carlos Lopez'),('899999999-1','Aseguradora
Rojas',1991,'Luis Fernando Rojas'),('899999999-5','Seguros del Estadio',2001,'Maria Margarita
Perez');

Tabla: TiposAutomotores “tabla no referenciada”

alter table TiposAutomotores add(


autnombre varchar(11));

insert into TiposAutomotores (auttipo,autnombre)Values(1,'Automóviles'), (2,'Camperos'),


(3,'Camiones');

Tabla: Automotores “tabla no referenciada”

insert into Automotores(autoplaca,automarca,autotipo,automodelo,autonumpasajeros,


autocilindraje,autonumchasis)Values('FLL420','chevroletcorsa',1,2003,5,1400,'wywzzz167kk009
d25'), ('DKZ820','chevroletcorsa',1,2008,5,1600,'wywwzz157kk009d45'),
('KJQ920','kiasportage',2,2009,7,2000,'wywzzz157kk009d25');

Tabla: Aseguramientos

alter table Aseguramientos change Aseestado


Aseestado char(30);

insert into aseguramientos(asecodigo,asefechainicio,


asefechaexpiracion,asevalorasegurado,aseestado,asecosto,aseplaca)Values(1,'2012-09-
30','2013-09-30',30000000,'Vigente',500000,'FLL420'), (2,'2012-09-27','2013-09-
27',35000000,'Vigente',600000,'DKZ820'),
(3,'2011-09-28','2012-09-28',50000000,'Vencido',800000,'KJQ920');

Tabla: Incidentes

insert into
incidentes(incicodigo,incifecha,inciplaca,incilugar,incicantheridos,incicanfatalidades,incicanaut
osinvolucrados)Values(1,'2012-09-30','DKZ820','Bucaramanga',0,0,2),
(2,'2012-09-27','FLL420','Giron',1,0,1),
(3,'2011-09-28','FLL420','Bucaramanga',1,0,2);

4. Realice las siguientes consultas:

Muestre los salarios de los profesores ordenados por categoría.

select cate_prof, sal_prof from profesor where sal_prof order by cate_prof asc;

Muestre los cursos cuyo valor sea mayor a $500.000.

select valor_cur from curso where valor_cur > 500000;

Cuente el número de estudiantes cuya edad sea mayor a 22.


Construcción de modelos de base de datos SIFI 1.0

select count(edad_est) from estudiante where edad_est >22;

Muestre el nombre y la edad del estudiante más joven.

select nom_est, min(edad_est) from estudiante;

Calcule el valor promedio de los cursos cuyas horas sean mayores a 40.

select avg(valor_cur) from curso where horas_cur >40;

Obtener el sueldo promedio de los profesores de la categoría 1.

select avg(sal_prof) from profesor where cate_prof =1;

Muestre todos los campos de la tabla curso en orden ascendente según


el valor.

select * from curso order by valor_cur asc;

Muestre el nombre del profesor con menor sueldo.

select nom_prof, min(sal_prof) from profesor;

Visualizar todos los estudiantes (código y nombre) que iniciaron cursos


el 01/02/2011, del curso debe mostrarse el nombre, las horas y el valor.

select doc_est, nom_est, fec_ini_estcur, nom_curs, horas_cur, valor_cur


from estudiante join estudiantexcurso join curso
on fec_ini_estcur = '2011-02-01'and doc_est = doc_est_estcur and cod_cur_estcur = cod_curs;

Visualice los profesores cuyo sueldo este entre $500.000 y $700.000.

select * from profesor where sal_prof>500000 and sal_prof<700000;

Visualizar el nombre, apellido y dirección de todos aquellos clientes


que hayan realizado un pedido el día 25 /02/2012.

select nom_cli nombre,ape_cli apellido,dir_cli direccion From pedido,cliente Where


fec_ped="2012-02-25" And id_cli_ped=id_cli;

Listar todos los pedidos realizados incluyendo el nombre del articulo.

select id_ped,id_cli_ped,fec_ped,val_ped, tit_art From pedido,articulo,articuloxpedido Where


id_ped_artped=id_ped And id_art_artped=id_art;

Visualizar los clientes que cumplen años en marzo.

select nom_cli nombre from cliente where mes_cum_cli ="Marzo";


Construcción de modelos de base de datos SIFI 1.0
Visualizar los datos del pedido 1, incluyendo el nombre del cliente, la dirección
del mismo, el nombre y el valor de los artículos que tiene dicho pedido.

select id_ped_artped, nom_cli, dir_cli, tit_art, prec_art, can_art_artped, val_ped


from articuloxpedido join cliente join articulo join pedido
on id_cli = id_cli_ped and id_ped = id_ped_artped and id_ped_artped = 1 and id_art=
id_art_artped;

Visualizar el nombre del cliente, la fecha y el valor del pedido más costoso.

SELECT MAX(pedido.val_ped), cliente.nom_cli,pedido.fec_ped, pedido.val_ped FROM cliente,


pedido WHERE 1;

Mostrar cuantos artículos se tienen de cada editorial.

SELECT COUNT(`edi_art`) FROM `articulo` WHERE 1;

Mostrar los pedidos con los respectivos artículos(código, nombre, valor


y cantidad pedida).

select id_art_artped, tit_art, can_art_artped, val_ven_art_artped


from articuloxpedido join articulo join pedido
on id_ped = id_ped_artped and id_art = id_art_artped;

Visualizar todos los clientes organizados por apellido.

SELECT * FROM `cliente` ORDER BY `ape_cli`;

Visualizar todos los artículos organizados por autor.

select * from articulo order by aut_art;

Visualizar los pedidos que se han realizado para el articulo con id 2, el


listado debe mostrar el nombre y dirección del cliente, el respectivo
número de pedido y la cantidad solicitada.

select id_art_artped, nom_cli, dir_cli, can_art_artped


from articuloxpedido join cliente join pedido join articulo
on id_art = id_art_artped and id_art_artped = 2 group by id_art;

Visualizar los datos de las empresas fundadas entre el año 1991 y 1998.

select * from compañia


where comañofun >= 1991 and comañofun <= 1998;

Listar los todos datos de los automotores cuya póliza expira en octubre
de 2013, este reporte debe visualizar la placa, el modelo, la marca,
número de pasajeros, cilindraje nombre de automotor, el valor de la
póliza y el valor asegurado.
Construcción de modelos de base de datos SIFI 1.0
select autoplaca, automarca, autotipo, automodelo, autonumpasajeros, autocilindraje,
autonumchasis, asefechaexpiracion
from automotores join aseguramientos
on autoplaca = aseplaca and asefechaexpiracion > '2013-10-01' and asefechaexpiracion <
'2013-10-31';

select autoplaca, automarca, autotipo, automodelo, autonumpasajeros, autocilindraje,


autonumchasis, asefechaexpiracion
from automotores join aseguramientos
on autoplaca = aseplaca and asefechaexpiracion > '2013-09-01' and asefechaexpiracion <
'2013-09-30';

Visualizar los datos de los incidentes ocurridos el 30 de septiembre de


2012, con su respectivo número de póliza, fecha de inicio de la póliza,
valor asegurado y valor de la póliza.

Select
aseguramientos.asecodigo,aseguramientos.asefechainicio,aseguramientos.asevalorasegurado,
aseguramientos.asecosto FROM incidentes, aseguramientos WHERE `incifecha`='2012-09-30'
group by incifecha;

Visualizar los datos de los incidentes que han tenido un(1) herido, este
reporte debe visualizar la placa del automotor, con los respectivos
datos de la póliza como son fecha de inicio, valor, estado y valor asegurado.

select incicodigo, inciplaca, asefechainicio, asecosto, aseestado, asevalorasegurado,


incicantheridos
from incidentes join aseguramientos
on inciplaca = aseplaca and incicantheridos = 1;

Visualizar todos los datos de la póliza más costosa.

SELECT * FROM `aseguramientos` where 1 ORDER BY `asevalorasegurado` desc LIMIT 1;

Visualizar los incidentes con el mínimo número de autos involucrados,


de este incidente visualizar el estado de la póliza y el valor asegurado.

SELECT
MIN(`incicanautosinvolucrados`),aseguramientos.aseestado,aseguramientos.asevalorasegurad
o FROM aseguramientos,incidentes WHERE 1 ;

Visualizar los incidentes del vehículo con placas " FLL420", este reporte
debe visualizar la fecha, el lugar, la cantidad de heridos del incidente,
la fecha de inicio la de expiración de la póliza y el valor asegurado.

select incifecha, inciplaca, incilugar, incicantheridos, asefechainicio, asefechaexpiracion,


asevalorasegurado
from incidentes join aseguramientos
on inciplaca = aseplaca and inciplaca = 'FLL420';
Construcción de modelos de base de datos SIFI 1.0
Visualizar los datos de la empresa con nit 899999999-5.

select * from compañia where comnit = '899999999-5';

Visualizar los datos de la póliza cuyo valor asegurado es el más


costoso, este reporte además de visualizar todos los datos de la póliza,
debe presentar todos los datos del vehículo que tiene dicha póliza.

select asecodigo, asefechainicio, asefechaexpiracion, aseplaca, aseestado, asevalorasegurado,


automarca, autotipo, automodelo, autocilindraje, autonumchasis
from aseguramientos join automotores
on aseplaca = autoplaca order by asevalorasegurado desc limit 1;

Visualizar los datos de las pólizas de los automotores tipo 1, este


reporte debe incluir placa, marca, modelo, cilindraje del vehículo junto
con la fecha de inicio, de finalización y estado de la póliza.

select autoplaca, automarca, autotipo, automodelo, autonumpasajeros, autocilindraje,


autonumchasis, asefechainicio, asefechaexpiracion, aseestado, asevalorasegurado

from automotores join aseguramientos


on aseplaca = autoplaca and autotipo = 1;