Академический Документы
Профессиональный Документы
Культура Документы
1) Crearlossiguientesusuarios:
MSVENTAS
,
MSINVENTARIO,MSCONTROL,
MSRESERVAS
2) Conectarsealabasededatosconelusuario
MSVENTAS
3) EjecutarelsiguienteScript.
--adaptamos el formato de fecha
ALTER SESSION SET NLS_DATE_FORMAT
=
'DD-MM-YYYY HH24:MI';
--definici
n de las tablas
create table clientes(id integer primary key,nombre varchar
(
20)
);
create table vendedores(id integer primary key,nombre varchar
(
20)
);
create table ventas(idCliente integer,idVendedor integer, importe integer,fecha date,
primary key
(
idCliente
,
idVendedor
,
fecha
),
foreign key
(
idCliente
)references clientes
(
id
),
foreign key
(
idVendedor
)references vendedores
(
id
),
check
(
importe
>
0)
);
--insertamos valores
insert
intovendedores values
(
1
,
'Bertoldo'
);
insert
intovendedores values
(
2
,
'Herminia'
);
insert
intoclientes values
(
41
,
'Calixto'
);
insert
intoclientes values
(
42
,
'Melibea'
);
insert
intoventas values
(
41
,
1
,
500
,
'14-2-2007 15:30'
);
insert
intoventas values
(
41
,
2
,
120
,
'14-2-2007 14:20'
);
insert
intoventas values
(
42
,
2
,
350
,
'5-1-2007 10:14'
);
insert
intoventas values
(
42
,
2
,
180
,
'5-1-2007 10:15'
);
insert
intoventas values
(
42
,
2
,
180
,
'31-12-2006 18:30'
);
Obtenerunlistadoquemuestrelasforeignkeysenlastablasdelusuario
MSVENTAS_NN.Laconsultadebemostrarelnombredelatabla'hija'(laquecontiene
lareferencia)ylatabla'madre'alaquesereferencia.Ejemplo:
TABLA_MADRETABLA_HIJAFOREIGN_KEY
==========================================
xxx_madrexxx_hijaxxx_llave
4) Ejecutarlassiguientesconsultasconelusuario
MSINVENTARIO.
Escribircdigoparamostrarelnombredecadavendedorjuntoconeltotaldelasventas
queharealizadoordenadospornombre(sesuponequeelnombreesnico).
Nombredelclientequemshacomprado(slohayunoysunombreesnico).
Sugerencia:usarunavista.
Enlavistamostrartodoslosclientesyeltotaldeloqueha
comprado.Apartirdelavistaobteneralclientequemshacomprado.
Mostrarelnombredelosusuariosquetenganalgunatablaconnombre
VENTAS.
5) Ingresaralabasededatosconelusuario
MSCONTROL
Ejecutarlassiguientessentencias
create table taviones
(
tipo varchar
(
15
)primary key
,capacidad
int
);
create table tvuelos
(
id varchar
(
10
)primary key
,tipoavion references taviones
,
pasajeros
int
,destino varchar
(
20
)
);
create table tpasajeros
(
nombre varchar
(
20
),vuelo references tvuelos
,primary
key
(
nombre
,
vuelo
));
insert
intotaviones values
(
'Airbus A300'
,
120
);
insert
intotaviones values
(
'Boeing 707'
,
210
);
insert
intotaviones values
(
'Douglas DC-9'
,
190
);
insert
intotvuelos values
(
'LHE 100'
,
'Airbus A300'
,
110
,
'Roma-Fiumicino'
);
insert
intotvuelos values
(
'IBE 398'
,
'Boeing 707'
,
209
,
'Barcelona-El Prat'
);
commit;
Lastablassirvenparareflejarvuelosrealizadosportiposdeaviones.Sesuponequeelnmero
depasajerossiempredebesermenorquelacapacidaddelavin.
ParaesteejerciciosedebeestablecerdossesionesA1yA2paraemularelaccesoalabase
dedatosde2agencias.
Supongamosqueahorallegan2clientes,unoacadaagencia,yqueambosquierenreservar
plazaenelvuelo"IBE398".Elempleadodecadaagenciamiraaversielvueloanestlibrey
siloestindicaquehallegadounnuevopasajero,incrementandoportantoelnmerode
pasajerosenelvuelo.Suponemosademsqueenlasegundaagenciasevanrealizandolas
accionesunpocomstarde.
A1
A2
Pregunta
:escribirunaconsultaparaversi
quedansitioslibresenelvueloIBE398
(sugerencia:usartvuelosytaviones).La
consultadebemostrarporpantallala
capacidaddelavinyelnmerodeplazas
ocupadas
select.....
demomentoaqunosehacenada
Aquseestinformandoalviajerodeque
quedaunaplaza
teclearlamismaconsultaparaversi
quedanvueloslibresenelvueloIBE398
sihaysitiolibreincrementarconupdateel
nmerodeplazasenelvuelo
Pregunta
:update....(Armarsentenciapara
hacerelcambio)
Aquseestinformandoalviajerodeque
haysitioslibres
Ejecutarelmismoupdatequeenelcaso
anterior
Escribaydocumenteelanlisisconlaproblemticadeestasituacinyanexelaevidenciade
lospasosanteriores.
Examen PLSQL
6)Copiaryarreglarelsiguientecdigo:
mostrarlafechaactual
DECLARE
fechaDate
BEGIN
SelectSysdatefromdualintofecha
DBMS_OUTPUT.PUT_LINE('Hoyes'||fecha)
END
7)Ejecutarlassiguientessentenciasenelusuario
MSRESERVAS
.
--por si las tablas ya existen
drop table reservas;
drop table habitaciones;
drop table temporadas;
create table habitaciones (
piso integer NOT NULL
,
habitacion varchar
(
2
)NOT NULL,
tipo varchar
(
10
)DEFAULT
'Doble'
CONSTRAINT nn_tipo NOT NULL
CONSTRAINT ch_Tipo CHECK
(
tipo IN
(
'Individual'
,
'Doble'
,
'Suite'
)),
primary key
(
piso
,
habitacion
));
create table reservas (
piso integer,
habitacion varchar
(
2
),
fechaentrada date DEFAULT SYSDATE,
noches integer,
primary key
(
piso
,
habitacion
,
fechaentrada
),
foreign key
(
piso
,
habitacion
)references habitaciones
);
create table temporadas (
nombre varchar
(
10
)
not
null,
mesInicio integer
not
null,
diaInicio integer
not
null,
mesFin integer
not
null,
diaFin integer
not
null,
primary key
(
nombre
,
mesInicio
,
diaInicio)
);
insert
intotemporadas values
(
'Alta'
,
6
,
1
,
8
,
30
);
insert
intotemporadas values
(
'Baja'
,
1
,
1
,
5
,
31
);
insert
intotemporadas values
(
'Baja'
,
1
,
9
,
12
,
31
);
8)
Ejercicio
:Escribirunprocedimientosinparmetros
creaHabitaciones
pararellenarla
tablahabitacionesconlosdatosdelhotel.Elhoteldisponede12plantasdehabitaciones,
numeradasdela1ala12.Encadaplantadela1ala11hay25habitaciones:20dobles
(numeradasde1a20)y5sencillas(dela21ala25).Enlaplanta12slotiene8suites
numeradasdela1ala8.
9)
Escribirunafuncin
solapan
querecibecuatroparmetros:fecha1yfecha2detipodate
yn1,n2detiponumricoeindiquesilosintervalos[fecha1,fecha1+n1],[fecha2,fecha2+n2]
coinciden.Lafuncindebervalidarsiambasfechassetraslapanentresi.Sitienenalgndia
encomn,deberdevolver1y0encasocontrario.
??
10)
Ahorausarlafuncinparahacerelprocedimiento:recibircuatroparmetros:elpiso,la
habitacin,lafechayelnmerodenoches.Siesposiblehacerlareservalaapuntar.Enotro
casomostrarunmensajeindicandoquenosepuede.
11)Aadirunafuncinquecalculeelprecioparaunafechaconcretaenuntipoconcretode
habitacindelhotel.SesabequeelpreciodelahabitacinIndividuales100euros,dela
dobles120ydelaSuite200.Aestepreciosedebeaadirun30%deincrementoen
temporadaalta.
12)Escribirunafuncinquerecibacomoparmetrosuntipodehabitacin,unafechayun
nmerodenocheseindiqueporpantallaloquecostaralaestanciacompleta.Tenerencuenta
queduranteelperiododeestanciasepuedecambiardetemporadaaltaabajaoviceversa.
13)Unsistemaentiemporealdecontroldeuninvernaderovagrabandounficherologenel
queregistralasaccionesquerealiza.
Paraellodisponedeunatablaquesecreadelasiguienteforma:
generarelusuario
MSINVERNADERO
yejecutarlassiguientessentencias
drop table logt;
create table logt
( accion varchar
(
20
),
objeto varchar
(
20
), dato
decimal
);
insert
intologt values
(
'comprueba'
,
'temperatura'
,
30
);
insert
intologt values
(
'activa'
,
'refrigeracion'
,
null
);
insert
intologt values
(
'comprueba'
,
'humedad'
,
89
);
insert
intologt values
(
'desactiva'
,
'riego'
,
null
);
insert
intologt values
(
'comprueba'
,
'temperatura'
,
24
);
insert
intologt values
(
'desactiva'
,
'refrigeracion'
,
null
);
drop table error;
create table error(id integer primary key, mensaje varchar(100) );
drop table comprueba;
create table comprueba(id integer primary key, aparato varchar(30), dato decimal);
drop table activa;
create table activa(id integer primary key, aparato varchar(30));
Enprincipioyporrazonesdeeficienciaelsistemasloutilizaelarchivolog.
Posteriormentesedebehacerunaanlisisdelarchivologcon2objetivos:
1. Comprobarsielsistematieneelfuncionamientoadecuado.Enestecasolanicaregla
quesedebecomprobaresquesiempreantesdedesactivarunaparatostetieneque
habersidoactivadoyviceversa(alprincipiosesuponentodosdesactivados).Los
posiblesaparatosson'refrigeracin'y'riego'.Cuandonosecumplaestareglael
sistemagrabarunmensajedeerrorindicativoenlatablaerror.
2. Repartirlasaccionesentre3tablas,comprueba,activaydesactiva.Dadoqueeldato
paraactivaydesactivasiempreesnullnoseincluyeenactivaniendesactiva.
UtilizandouncursorPL/SQLescribirunprocedimientoquepaselosdatosdelatablalogalas
4tablasindicadas.Laoperacindebeserreversible(sedebepoderreconstruirellogapartir
deerror,comprueba,activaydesactiva).Paraellocadatablallevaunidentificadorqueindica
dequlneadelficherologproviene.Parasaberelnmerodelneasepuedeusarunavariable
contadorenelprocedimiento,peroaquvamosautilizarensulugarelatributorownumalhacer
elselectasociadoalcursor.
Ahoraqueremoshacereltrabajoinverso:queremosreconstruirelficherologapartirde
error,comprueba,activaydesactiva.Paraellohabrquerecorrerconcursorescada
fichero,eirinsertandoenelficherolalneaadecuadaencadamomentodeformaque
semantengaelordenentrelasoperaciones.Elficherodeerrornoseutilizarporquesi
unaoperacinhaproducidounerrornodebeincluirsedevuelta.Elresultadoquedar
enunatablareclog
Supongamosquesedecidequeelsistemaentiemporealescapazdegrabarlainformacinya
distribuidaen
error,comprueba,activaydesactiva.
Escribir:
UnafuncinsiguienteIDquedevuelveelprimeridentificadornoutilizadoan.Paraello
calcularelmximoidalmacenadoentrelas4tablasydevolveresevalor+1.Sino
hayidentificadorestodaslastablasvacasdevolver0.
UnprocedimientonuevaLineaquerecibacomoparmetrolaaccin(unacadena:
'comprueba','activa'o'desactiva'),elaparato(otracadena)yeldato(doble)einserte
unalneaenelficherocorrespondiente.Ademselprocedimientodebecomprobarsise
haproducidounerror(segnlasreglasdelpunto2)enesecasosegrabarlalneaen
elficherodeerrorynoenlosotrosficheros.Elprocedimientoutilizarlafuncinanterior
paragenerarelidentificadordecadalnea,quesernicoparatodaslastablasdela
instancia.
Secompruebaqueelclculodelsiguienteidentificadoresdemasiadolentoparaelsistemade
tiemporeal.Porellosedecideutilizarunasecuenciaquevayadndonoselsiguientevalorde
formaautomtica.UnasecuenciaesunaestructuraOraclequeseusaparagenerarvaloresy
quesealmacenacomounobjetoenlabasededatos,igualquesucedeconlasfuncioneso
procedimientos.
Examen JAVA
CompletarlasclasesTiendayArtculo,ycrearlaclaseCliente,deacuerdoconeldiagramade
clasesfacilitado(verapndice).Paraprobarelcdigounavezcompletadosefacilitaunaclase
Maindeprueba.Sitodofuncionacorrectamenteelprogramadeberagenerarlasalidaquese
describeenelapndice.
Apndice
Diagramadeclases
Maindeprueba
publicstaticvoidmain(String[]args){
//Creamostienda,llenamoselalmacenymostramoselinventario:
Tiendat=newTienda()
t.llenarAlmacen()
t.mostrarInventario()
//Creamoscliente,loregistramosenlatiendaymostramossusaldo:
Clientec=newCliente("Pedro",1000)
t.aniadirCliente(c)
c.mostrarSaldo()
//Obtenemosarraydearticulosenlatienda:
Articulo[]articulos=t.obtenerArticulos()
//Ejemplodeventadirecta:
t.vender(articulos[0],c)
//
//Algunascosasprohibidas:
//
//1.Intentamoscomprarunarticuloquenoestaenelinventario:
t.vender(newArticulo(99,"ArticuloTrampa",0),c)
//3.Unclientenoregistradointentacomprarenlatienda:
t.vender(articulos[0],newCliente("ClienteNoRegistrado"))
}
Salidaesperada
VendiendoarticuloCeroaclientePedro:
VendiendoarticuloUnoaclientePedro:
VendiendoarticuloTresaclientePedro:
Error:Articulonoexisteenlatienda.
VendiendoarticuloArticuloTrampaaclientePedro:
Error:Articulonoexisteenlatienda.
VendiendoarticuloCeroaclienteClienteNoRegistrado:
Error:Clientenoestaregistradoenlatienda.
Entrega
Lasprcticassedebenentregarenunarchivo
.zip
quedebeincluir:
un
leeme.txt
quedescribalosficherosincluidosenel
.zip
.
el
build.xml
usadoparacompilaryejecutarlaprctica(generadopornetbeansocreado
manualmente).***
una
memoria
enpdfyundirectoriojavadocconladocumentacingeneradaparacada
clase.****