1) Desarrolle los comandos necesarios para crear la vista vistaPromedioRentaPropiedad que muestre para cada empleado el promedio de renta de las propiedades que administra: (15 Puntos)
create or replace view vistaPromedioRentaPropiedad as
select numempleado, avg(renta) as "Renta Promedio"
from Propiedad
group by numempleado
2) Indique el comando necesario para eliminar la vista vistaPromedioRentaPropiedad creada en la pregunta anterior. (5 Puntos)
drop view vistaPromedioRentaPropiedad;
3) Indique la instrucción para eliminar la referencia a la tabla Oficina desde la tabla Empleado
(La foreign key FK_EMPLEADO_REFERENCE_OFICINA) (10 puntos)
alter table Empleado
drop constraint FK_EMPLEADO_REFERENCE_OFICINA
4) Escriba la sentencia para eliminar la tabla Empleado junto a sus llaves foráneas.(10 Puntos)
drop table empleado cascade constraint
5) Indique el comando para actualizar la fecha de nacimiento (fechNac) del empleado ‘SL21’ a '01/07/2011' (10 puntos)
update empleado
set fechNac = '01/07/2011'
where numempleado = ‘SL21’
6) Indique el comando necesario para listar todos los empleados nacidos entre el año 1970 y 1980, ambas fechas inclusive. (10 puntos)
select *
from Empleado
where to_char(FechNac, 'YYYY') between '1950' and '1960'
select *
from Empleado
where fechnac >= '01/01/1950' and fechnac <= '31/12/1960'
domingo, 10 de julio de 2011
domingo, 3 de julio de 2011
►Consultas SQL.-
1) Escriba el comando DDL que defina la llave foránea de EMPLEADO referenciando OFICINA
Alter table EMPLEADO
add constraint fk_empleado_ref_Oficina
foreign key(NUMOFICINA) references
OFICINA (NUMOFICINA);
2) INSERTAR 2 REGISTROS EN EMPLEADO
primero insertamos UN registro a OFICINA
insert into OFICINA values ('0001', 'Alonso Ovalle', 'Santiago','56');
...Ahora van los Empleados.
insert into EMPLEADO values('E007','James','Bond','Espia','M','01/01/1939',200000,'0001');
3) Desarrolle una consulta SQL que liste todos los empleados que tienen un salario inferior a 1500
select *
from Empleado
where salario < 100000;
4) desarrolle una consulta SQL que liste todos los empleadois Hombre que tienen un cargo de Supervisor
select *
from Empleado
where lower(cargo) = 'supervisor';
5) Indicar el comando DDL necesario para agregar el atributo TotPropiedades a la tabla Oficina
Alter table OFICINA
add TotPropiedades number
6) Emitir un listado con el numero de empleados que trabajan en la ciudad de 'SANTIAGO'
select count(NUMOFICINA)
from empleado
where numOficina in
(select numOficina
from Oficina
where ciudad = 'santiago');
7) Listar NUMPROPIEDAD de las propiedades que han sido visitadas, eliminando los repetidos
select distinCt NUMPROPIEDAD
from VISITA;
opcion 2
select NUMPROPIEDAD
from PROPIEDAD
where NUMPROPIEDAD in(select NUMPROPIEDAD from VISITA);
8)Listar NUMPROPIEDAD de las propiedades que han sido visitadas, pero los clientes no han emitido comentario
select distinct NUMPROPIEDAD
from VISITA
where comnetario is NULL
9)Listar todos los Empleados, ordenados por Sexo y descendente por fecha de nacimiento
select *
from Empleado
order by sexo, FECHANAC DESC;
11) Indique el comando necesario para eliminar la vista vistaPromedioRentaPropiedad creada en la pregunta anterior. (5 Puntos) */
drop view vistaPromedioRentaPropiedad;
12) Indique la instrucción para eliminar la referencia a la tabla Oficina desde la tabla Empleado
(La foreign key FK_EMPLEADO_REFERENCE_OFICINA) (10 puntos) */
alter table Empleado
drop constraint FK_EMPLEADO_REFERENCE_OFICINA
13) Escriba la sentencia para eliminar la tabla Empleado junto a sus llaves foráneas.(10 Puntos)*/
drop table empleado cascade constraint
14) Indique el comando para actualizar la fecha de nacimiento (fechNac) del empleado ‘SL21’ a '01/07/2011' (10 puntos) */
update empleado
set fechNac = '01/07/2011'
where numempleado = ‘SL21’
15) Indique el comando necesario para listar todos los empleados nacidos entre el año 1970 y 1980, ambas fechas inclusive. (10 puntos) */
select *
from Empleado
where to_char(FechNac, 'YYYY') between '1950' and '1960'
select *
from Empleado
where fechnac >= '01/01/1950' and fechnac <= '31/12/1960'
Alter table EMPLEADO
add constraint fk_empleado_ref_Oficina
foreign key(NUMOFICINA) references
OFICINA (NUMOFICINA);
2) INSERTAR 2 REGISTROS EN EMPLEADO
primero insertamos UN registro a OFICINA
insert into OFICINA values ('0001', 'Alonso Ovalle', 'Santiago','56');
...Ahora van los Empleados.
insert into EMPLEADO values('E007','James','Bond','Espia','M','01/01/1939',200000,'0001');
3) Desarrolle una consulta SQL que liste todos los empleados que tienen un salario inferior a 1500
select *
from Empleado
where salario < 100000;
4) desarrolle una consulta SQL que liste todos los empleadois Hombre que tienen un cargo de Supervisor
select *
from Empleado
where lower(cargo) = 'supervisor';
5) Indicar el comando DDL necesario para agregar el atributo TotPropiedades a la tabla Oficina
Alter table OFICINA
add TotPropiedades number
6) Emitir un listado con el numero de empleados que trabajan en la ciudad de 'SANTIAGO'
select count(NUMOFICINA)
from empleado
where numOficina in
(select numOficina
from Oficina
where ciudad = 'santiago');
7) Listar NUMPROPIEDAD de las propiedades que han sido visitadas, eliminando los repetidos
select distinCt NUMPROPIEDAD
from VISITA;
opcion 2
select NUMPROPIEDAD
from PROPIEDAD
where NUMPROPIEDAD in(select NUMPROPIEDAD from VISITA);
8)Listar NUMPROPIEDAD de las propiedades que han sido visitadas, pero los clientes no han emitido comentario
select distinct NUMPROPIEDAD
from VISITA
where comnetario is NULL
9)Listar todos los Empleados, ordenados por Sexo y descendente por fecha de nacimiento
select *
from Empleado
order by sexo, FECHANAC DESC;
11) Indique el comando necesario para eliminar la vista vistaPromedioRentaPropiedad creada en la pregunta anterior. (5 Puntos) */
drop view vistaPromedioRentaPropiedad;
12) Indique la instrucción para eliminar la referencia a la tabla Oficina desde la tabla Empleado
(La foreign key FK_EMPLEADO_REFERENCE_OFICINA) (10 puntos) */
alter table Empleado
drop constraint FK_EMPLEADO_REFERENCE_OFICINA
13) Escriba la sentencia para eliminar la tabla Empleado junto a sus llaves foráneas.(10 Puntos)*/
drop table empleado cascade constraint
14) Indique el comando para actualizar la fecha de nacimiento (fechNac) del empleado ‘SL21’ a '01/07/2011' (10 puntos) */
update empleado
set fechNac = '01/07/2011'
where numempleado = ‘SL21’
15) Indique el comando necesario para listar todos los empleados nacidos entre el año 1970 y 1980, ambas fechas inclusive. (10 puntos) */
select *
from Empleado
where to_char(FechNac, 'YYYY') between '1950' and '1960'
select *
from Empleado
where fechnac >= '01/01/1950' and fechnac <= '31/12/1960'
►Crear y Poblar tablas.-
/* BORRADO DE TABLAS */
/*==============================================================*/
drop table TotPropEmpleado cascade constraints;
drop table ARRIENDO cascade constraints;
drop table CLIENTE cascade constraints;
drop table EMPLEADO cascade constraints;
drop table OFICINA cascade constraints;
drop table PROPIEDAD cascade constraints;
drop table PROPIETARIO cascade constraints;
drop table VISITA cascade constraints;
/*==============================================================*/
/* Tabla: ARRIENDO */
/*==============================================================*/
create table ARRIENDO (
NUMARRIENDO INTEGER not null,
NUMPROPIEDAD CHAR(4),
NUMCLIENTE CHAR(4),
RENTA FLOAT,
FORMAPAGO CHAR(10),
DEPOSITO FLOAT,
PAGADO CHAR(1),
INICIORENTA DATE,
FINRENTA DATE,
constraint PK_ARRIENDO primary key (NUMARRIENDO)
);
/*==============================================================*/
/* Tabla: CLIENTE */
/*==============================================================*/
create table CLIENTE (
NUMCLIENTE CHAR(4) not null,
NOMBRE CHAR(30),
APELLIDO CHAR(30),
DIRECCION CHAR(35),
TELEFONO CHAR(10),
TIPOPREF CHAR(25),
MAXRENT FLOAT,
constraint PK_CLIENTE primary key (NUMCLIENTE)
);
/*==============================================================*/
/* Tabla: EMPLEADO */
/*==============================================================*/
create table EMPLEADO (
NUMEMPLEADO CHAR(4) not null,
NOMBRE CHAR(30),
APELLIDO CHAR(30),
CARGO CHAR(35),
SEXO CHAR(1),
FECHNAC DATE,
SALARIO FLOAT,
NUMOFICINA CHAR(4),
constraint PK_EMPLEADO primary key (NUMEMPLEADO)
);
/*==============================================================*/
/* Tabla: OFICINA */
/*==============================================================*/
create table OFICINA (
NUMOFICINA CHAR(4) not null,
CALLE CHAR(30),
CIUDAD CHAR(25),
CODIGOPOSTAL CHAR(10),
constraint PK_OFICINA primary key (NUMOFICINA)
);
/*==============================================================*/
/* Tabla: PROPIEDAD */
/*==============================================================*/
create table PROPIEDAD (
NUMPROPIEDAD CHAR(4) not null,
CALLE CHAR(30),
CIUDAD CHAR(25),
CODIGOPOSTAL CHAR(10),
TIPO CHAR(25),
HAB INTEGER,
RENTA FLOAT,
NUMPROPIETARIO CHAR(4),
NUMEMPLEADO CHAR(4),
constraint PK_PROPIEDAD primary key (NUMPROPIEDAD)
);
/*==============================================================*/
/* Tabla: PROPIETARIO */
/*==============================================================*/
create table PROPIETARIO (
NUMPROPIETARIO CHAR(4) not null,
NOMBRE CHAR(30),
APELLIDO char(30),
DIRECCION CHAR(30),
TELEFONO CHAR(10),
constraint PK_PROPIETARIO primary key (NUMPROPIETARIO)
);
/*==============================================================*/
/* Tabla: VISITA */
/*==============================================================*/
create table VISITA (
NUMCLIENTE CHAR(4) not null,
NUMPROPIEDAD CHAR(4) not null,
FECHA DATE not null,
COMENTARIO VARCHAR2(30),
constraint PK_VISITA primary key (NUMCLIENTE, NUMPROPIEDAD, FECHA)
);
/*==============================================================*/
/* Tabla TotPropEmpleado */
/* Se utiliza para insertar desde otra tabla
/*==============================================================*/
create table TotPropEmpleado (
NUMEMPLEADO CHAR(4) not null,
totProp INTEGER,
constraint PK_TotPropEmpleado primary key (NUMEMPLEADO)
);
alter table TotPropEmpleado
add constraint FK_TotProp_REFERENCE_EMPLEADO foreign key (NUMEMPLEADO)
references EMPLEADO (NUMEMPLEADO);
alter table EMPLEADO
add constraint FK_EMPLEADO_REFERENCE_OFICINA foreign key (NUMOFICINA)
references OFICINA (NUMOFICINA);
alter table PROPIEDAD
add constraint FK_PROPIEDA_REFERENCE_EMPLEADO foreign key (NUMEMPLEADO)
references EMPLEADO (NUMEMPLEADO);
alter table VISITA
add constraint FK_VISITA_REFERENCE_CLIENTE foreign key (NUMCLIENTE)
references CLIENTE (NUMCLIENTE);
alter table VISITA
add constraint FK_VISITA_REFERENCE_PROPIEDA foreign key (NUMPROPIEDAD)
references PROPIEDAD (NUMPROPIEDAD);
/*==============================================================*/
/*= P o b l a m i e n t o d e t a b l a s =*/
/*==============================================================*/
/*==============================================================*/
/* datos: oficina */
/*==============================================================*/
insert into oficina values('B005','16 Holhead','Aberdeem','AB7 5SU');
insert into oficina values('B007','6 Argvill St.','London','NW2');
insert into oficina values('B003','164 Main street','Glasgow','G119Qx');
insert into oficina values('B004','2 Manor Rd','Glasgow','G114Qx');
insert into oficina values('B001','10 Dale Rd','bristol','G12');
insert into oficina values('B002','17 Holhead','Aberdeem','AB7 5SU');
insert into oficina values('B008','7 Argvill St.','London','NW21');
insert into oficina values('B006','163 Main street','Glasgow','G11');
insert into oficina values('B010','2 Manor Rd','Glasgow','G114x');
insert into oficina values('B011','14 Dale Rd','bristol','G2');
insert into oficina values('B017','6 Argvill St.','London','W2');
insert into oficina values('B013','166 Main street','Glasgow','9Qx');
insert into oficina values('B014','3 Manor Rd','Glasgow','Qx');
insert into oficina values('B012','11 Dale Rd','bristol','GH2');
insert into oficina values('B015','Costanera 25','Valdivia','0324');
insert into oficina values('B115','Picarte 124','Valdivia','0324');
insert into oficina values('B215','El Morro 110','Arica','10300');
insert into oficina values('B315','El Vergel 1500','Arica','123123');
insert into oficina values('B415','Av. Walker Martinez 1360','Santiago','W101');
insert into oficina values('B515','Av. Antonio Varas 929','Santiago','W101');
/*==============================================================*/
/* datos: cliente */
/*==============================================================*/
insert into cliente values('CR76','Jhon','Kay','56 High ST,Londonn,SW14EH','0207774563','Departamento',450);
insert into cliente values('CR56','Aline','Stewart','64 Fern Dr, Glasgow G42 OBL','0141324182','Departamento',350);
insert into cliente values('CR74','Mike','Ritchie','63 Well St, Glasgow,G42','0141943742','Casa',750);
insert into cliente values('CR62','Mary','Tregear','12 Park PI, Glasgow, G40QR','0141225742','Departamento',600);
insert into cliente values('CR78','Juan','Kayser','55 High ST,Londonn,SW14EH','0207774564','Departamento',450);
insert into cliente values('CR57','Alicia','Soto','63 Fern Dr,. GlasgowG42 OBL','0141324183','Departamento',350);
insert into cliente values('CR72','Miguel','Torres','62 Well St, Glasgow,G42','0141943740','Casa',750);
insert into cliente values('CR63','Maria','Perez','13 Park PI, Glasgow,G4 0QR','0141225741','Departamento',600);
/*==============================================================*/
/* datos: empleado */
/*==============================================================*/
insert into empleado values('SL21','Jhon','White','Gerente','M','01/10/45',300000,'B005');
insert into empleado values('SG37','Peter','Denver','Asistente','M','10/11/60',120000,'B006');
insert into empleado values('SG14','David','Ford','Supervisor','M','09/09/58',180000,'B003');
insert into empleado values('SA9','Mary','Lee','Asistente','F','17/09/59',90000,'B007');
insert into empleado values('SG5','Susan','Sarandon','Gerente','F','21/03/60',240000,'B003');
insert into empleado values('SL41','Julie','Roberts','Asistente','F','13/06/63',90000,'B005');
insert into empleado values('SL22','Juan','Blanco','Gerente','M','01/10/44',300000,'B005');
insert into empleado values('SG36','Luis','Jara','Asistente','M','10/11/61',120000,'B003');
insert into empleado values('SG13','David','Gates','Supervisor','M','09/09/58',180000,'B003');
insert into empleado values('SA8','Maria','Bombal','Asistente','F','17/09/59',90000,'B007');
insert into empleado values('SG4','Susana','Sarandons','Gerente','F','21/03/60',240000,'B003');
insert into empleado values('SL40','James','Bond','Asistente','F','13/06/63',90000,'B005');
insert into empleado values('SL50','Juan','Perez','Vendedor','M','13/06/63',151000,'B015');
insert into empleado values('SL60','Jaime','Soto','Vendedor','M','14/06/83',350000,'B115');
insert into empleado values('SL70','Julia','Berne','Vendedor','F','23/01/53',200000,'B215');
insert into empleado values('SL55','Jorge','Fernandez','Vendedor','M','13/06/63',151000,'B015');
insert into empleado values('SL65','Jose','Isla','Vendedor','M','14/06/83',350000,'B115');
/*==============================================================*/
/* datos: Propietario */
/*==============================================================*/
insert into propietario values('C046','Joe','Keogh','2 Fergus Dr, AberdeenAB 7SX','0122486121');
insert into propietario values('C087','Carol','Farrel','6 Achray St.Glasgow, G32 9DX','0141357741');
insert into propietario values('C040','Tina','Murphy','63 Well St, Glasgow, G42','0141943742');
insert into propietario values('C093','Tony','Shaw','12 Park PI, Glasgow, G40QR','0141225742');
insert into propietario values('C047','Jose','Casanova','El Volvan 123, Santiago AB 7SX','0122486125');
insert into propietario values('C088','Carolina','Fernandez','Macul 1800. Santiago, G32 9DX','0141357741');
insert into propietario values('C041','Cristina','Mora','Av. Matta 1800, Santiago, G42','0141943752');
insert into propietario values('C094','Tomas','Figueroa','Av. Macul 120, Santiago, G40QR','0141225542');
/*==============================================================*/
/* datos: PROPIEDAD */
/*==============================================================*/
insert into PROPIEDAD values('PA14','16 Holhead','Aberdeem','AB7 5SU','Casa','6','650','C046','SL21');
insert into PROPIEDAD values('PL94','6 Argvill St.','London','NW2','Departamento','4','400','C087','SL21');
insert into PROPIEDAD values('PG4' ,'6 Lawrence St','Glasgow','G119QX','Departamento','3','350','C040','SA9');
insert into PROPIEDAD values('PG36','2 Manor Rd','Glasgow','G114QX','Departamento','3','375','C093','SA9');
insert into PROPIEDAD values('PG21','AV. Matta 150','Santiago','G12','Casa','5','600','C087','SG5' );
insert into PROPIEDAD values('PR01','Macul 120 ','Santaigo','G129AX','Departamento','4','450','C093','SA8');
insert into PROPIEDAD values('PR02','Macul 220','Santiago','G129AX','Departamento','5','550','C093','SG13');
insert into PROPIEDAD values('PR03','Macul 420','Santiago','G129AX','Departamento','6','650','C093','SG14');
insert into PROPIEDAD values('PR04','Macul 620','Santiago','G129AX','Departamento','3','350','C093','SG36');
insert into PROPIEDAD values('PR05','Loa 100','Santiago','G129AX','Departamento','2','250','C093','SG4');
insert into PROPIEDAD values('PG16','Arturo Prats 250','Santiago','G129AX','Departamento','4','450','C047','SL22');
insert into PROPIEDAD values('PR07','Gorbea 200','Santiago','G129AX', 'Departamento','6','650','C047','SL40');
insert into PROPIEDAD values('PR08','Gomez 230','Santiago','G129AX', 'Departamento','2','250','C041','SL41');
insert into PROPIEDAD values('PR09','Garibaldi 1500','Santiago','G129AX', 'Departamento','6','650','C041','SL50');
insert into PROPIEDAD values('PR10','Las Urbinas 210','Santiago','G129AX', 'Departamento','6','650','C094','SL55');
insert into PROPIEDAD values('PR11','Lastarria 1400','Santiago','G129AX', 'Departamento','3','350','C094','SL60');
insert into PROPIEDAD values('PR12','Las Giraldas 200','Santiago','G129AX','Departamento','4','450','C093','SL70');
/*==============================================================*/
/* datos: VISITA */
/*==============================================================*/
insert into visita values('CR56','PA14','24-11-1999','muy pequeño');
insert into visita values('CR62','PA14','14-11-1999','no tiene salón');
insert into visita values('CR76','PG4','20-10-1999','muy lejos');
insert into visita values('CR72','PG16','24-06-2007','Bakan');
insert into visita values('CR72','PG36','24-06-2007','Super');
insert into visita values('CR62','PG16','25-06-2007','Cool');
insert into visita values('CR62','PG4','25-06-2007', NULL);
insert into visita values('CR62','PG36','25-06-2007','No salva');
insert into visita (numCliente, numPropiedad, fecha) values ('CR72','PG4','25-06-2007');
insert into visita (numCliente, numPropiedad, fecha) values('CR56','PG36','28-10-1999');
insert into visita (numCliente, numPropiedad, fecha) values('CR56','PG4','26-11-1999');
/*==============================================================*/
/* datos: ARRIENDO*/
/*==============================================================*/
insert into arriendo values('10024','PA14','CR62','650','Visa','1300','Y','01-06-2005','31-05-2006');
insert into arriendo values('10075','PL94','CR76','400','Contado','800','N','01-08-2005','31-01-2006');
insert into arriendo values('10012','PG21','CR74','600','Cheque','1200','Y','01-07-2005','30-06-2006');
/*==============================================================*/
/*==============================================================*/
drop table TotPropEmpleado cascade constraints;
drop table ARRIENDO cascade constraints;
drop table CLIENTE cascade constraints;
drop table EMPLEADO cascade constraints;
drop table OFICINA cascade constraints;
drop table PROPIEDAD cascade constraints;
drop table PROPIETARIO cascade constraints;
drop table VISITA cascade constraints;
/*==============================================================*/
/* Tabla: ARRIENDO */
/*==============================================================*/
create table ARRIENDO (
NUMARRIENDO INTEGER not null,
NUMPROPIEDAD CHAR(4),
NUMCLIENTE CHAR(4),
RENTA FLOAT,
FORMAPAGO CHAR(10),
DEPOSITO FLOAT,
PAGADO CHAR(1),
INICIORENTA DATE,
FINRENTA DATE,
constraint PK_ARRIENDO primary key (NUMARRIENDO)
);
/*==============================================================*/
/* Tabla: CLIENTE */
/*==============================================================*/
create table CLIENTE (
NUMCLIENTE CHAR(4) not null,
NOMBRE CHAR(30),
APELLIDO CHAR(30),
DIRECCION CHAR(35),
TELEFONO CHAR(10),
TIPOPREF CHAR(25),
MAXRENT FLOAT,
constraint PK_CLIENTE primary key (NUMCLIENTE)
);
/*==============================================================*/
/* Tabla: EMPLEADO */
/*==============================================================*/
create table EMPLEADO (
NUMEMPLEADO CHAR(4) not null,
NOMBRE CHAR(30),
APELLIDO CHAR(30),
CARGO CHAR(35),
SEXO CHAR(1),
FECHNAC DATE,
SALARIO FLOAT,
NUMOFICINA CHAR(4),
constraint PK_EMPLEADO primary key (NUMEMPLEADO)
);
/*==============================================================*/
/* Tabla: OFICINA */
/*==============================================================*/
create table OFICINA (
NUMOFICINA CHAR(4) not null,
CALLE CHAR(30),
CIUDAD CHAR(25),
CODIGOPOSTAL CHAR(10),
constraint PK_OFICINA primary key (NUMOFICINA)
);
/*==============================================================*/
/* Tabla: PROPIEDAD */
/*==============================================================*/
create table PROPIEDAD (
NUMPROPIEDAD CHAR(4) not null,
CALLE CHAR(30),
CIUDAD CHAR(25),
CODIGOPOSTAL CHAR(10),
TIPO CHAR(25),
HAB INTEGER,
RENTA FLOAT,
NUMPROPIETARIO CHAR(4),
NUMEMPLEADO CHAR(4),
constraint PK_PROPIEDAD primary key (NUMPROPIEDAD)
);
/*==============================================================*/
/* Tabla: PROPIETARIO */
/*==============================================================*/
create table PROPIETARIO (
NUMPROPIETARIO CHAR(4) not null,
NOMBRE CHAR(30),
APELLIDO char(30),
DIRECCION CHAR(30),
TELEFONO CHAR(10),
constraint PK_PROPIETARIO primary key (NUMPROPIETARIO)
);
/*==============================================================*/
/* Tabla: VISITA */
/*==============================================================*/
create table VISITA (
NUMCLIENTE CHAR(4) not null,
NUMPROPIEDAD CHAR(4) not null,
FECHA DATE not null,
COMENTARIO VARCHAR2(30),
constraint PK_VISITA primary key (NUMCLIENTE, NUMPROPIEDAD, FECHA)
);
/*==============================================================*/
/* Tabla TotPropEmpleado */
/* Se utiliza para insertar desde otra tabla
/*==============================================================*/
create table TotPropEmpleado (
NUMEMPLEADO CHAR(4) not null,
totProp INTEGER,
constraint PK_TotPropEmpleado primary key (NUMEMPLEADO)
);
alter table TotPropEmpleado
add constraint FK_TotProp_REFERENCE_EMPLEADO foreign key (NUMEMPLEADO)
references EMPLEADO (NUMEMPLEADO);
alter table EMPLEADO
add constraint FK_EMPLEADO_REFERENCE_OFICINA foreign key (NUMOFICINA)
references OFICINA (NUMOFICINA);
alter table PROPIEDAD
add constraint FK_PROPIEDA_REFERENCE_EMPLEADO foreign key (NUMEMPLEADO)
references EMPLEADO (NUMEMPLEADO);
alter table VISITA
add constraint FK_VISITA_REFERENCE_CLIENTE foreign key (NUMCLIENTE)
references CLIENTE (NUMCLIENTE);
alter table VISITA
add constraint FK_VISITA_REFERENCE_PROPIEDA foreign key (NUMPROPIEDAD)
references PROPIEDAD (NUMPROPIEDAD);
/*==============================================================*/
/*= P o b l a m i e n t o d e t a b l a s =*/
/*==============================================================*/
/*==============================================================*/
/* datos: oficina */
/*==============================================================*/
insert into oficina values('B005','16 Holhead','Aberdeem','AB7 5SU');
insert into oficina values('B007','6 Argvill St.','London','NW2');
insert into oficina values('B003','164 Main street','Glasgow','G119Qx');
insert into oficina values('B004','2 Manor Rd','Glasgow','G114Qx');
insert into oficina values('B001','10 Dale Rd','bristol','G12');
insert into oficina values('B002','17 Holhead','Aberdeem','AB7 5SU');
insert into oficina values('B008','7 Argvill St.','London','NW21');
insert into oficina values('B006','163 Main street','Glasgow','G11');
insert into oficina values('B010','2 Manor Rd','Glasgow','G114x');
insert into oficina values('B011','14 Dale Rd','bristol','G2');
insert into oficina values('B017','6 Argvill St.','London','W2');
insert into oficina values('B013','166 Main street','Glasgow','9Qx');
insert into oficina values('B014','3 Manor Rd','Glasgow','Qx');
insert into oficina values('B012','11 Dale Rd','bristol','GH2');
insert into oficina values('B015','Costanera 25','Valdivia','0324');
insert into oficina values('B115','Picarte 124','Valdivia','0324');
insert into oficina values('B215','El Morro 110','Arica','10300');
insert into oficina values('B315','El Vergel 1500','Arica','123123');
insert into oficina values('B415','Av. Walker Martinez 1360','Santiago','W101');
insert into oficina values('B515','Av. Antonio Varas 929','Santiago','W101');
/*==============================================================*/
/* datos: cliente */
/*==============================================================*/
insert into cliente values('CR76','Jhon','Kay','56 High ST,Londonn,SW14EH','0207774563','Departamento',450);
insert into cliente values('CR56','Aline','Stewart','64 Fern Dr, Glasgow G42 OBL','0141324182','Departamento',350);
insert into cliente values('CR74','Mike','Ritchie','63 Well St, Glasgow,G42','0141943742','Casa',750);
insert into cliente values('CR62','Mary','Tregear','12 Park PI, Glasgow, G40QR','0141225742','Departamento',600);
insert into cliente values('CR78','Juan','Kayser','55 High ST,Londonn,SW14EH','0207774564','Departamento',450);
insert into cliente values('CR57','Alicia','Soto','63 Fern Dr,. GlasgowG42 OBL','0141324183','Departamento',350);
insert into cliente values('CR72','Miguel','Torres','62 Well St, Glasgow,G42','0141943740','Casa',750);
insert into cliente values('CR63','Maria','Perez','13 Park PI, Glasgow,G4 0QR','0141225741','Departamento',600);
/*==============================================================*/
/* datos: empleado */
/*==============================================================*/
insert into empleado values('SL21','Jhon','White','Gerente','M','01/10/45',300000,'B005');
insert into empleado values('SG37','Peter','Denver','Asistente','M','10/11/60',120000,'B006');
insert into empleado values('SG14','David','Ford','Supervisor','M','09/09/58',180000,'B003');
insert into empleado values('SA9','Mary','Lee','Asistente','F','17/09/59',90000,'B007');
insert into empleado values('SG5','Susan','Sarandon','Gerente','F','21/03/60',240000,'B003');
insert into empleado values('SL41','Julie','Roberts','Asistente','F','13/06/63',90000,'B005');
insert into empleado values('SL22','Juan','Blanco','Gerente','M','01/10/44',300000,'B005');
insert into empleado values('SG36','Luis','Jara','Asistente','M','10/11/61',120000,'B003');
insert into empleado values('SG13','David','Gates','Supervisor','M','09/09/58',180000,'B003');
insert into empleado values('SA8','Maria','Bombal','Asistente','F','17/09/59',90000,'B007');
insert into empleado values('SG4','Susana','Sarandons','Gerente','F','21/03/60',240000,'B003');
insert into empleado values('SL40','James','Bond','Asistente','F','13/06/63',90000,'B005');
insert into empleado values('SL50','Juan','Perez','Vendedor','M','13/06/63',151000,'B015');
insert into empleado values('SL60','Jaime','Soto','Vendedor','M','14/06/83',350000,'B115');
insert into empleado values('SL70','Julia','Berne','Vendedor','F','23/01/53',200000,'B215');
insert into empleado values('SL55','Jorge','Fernandez','Vendedor','M','13/06/63',151000,'B015');
insert into empleado values('SL65','Jose','Isla','Vendedor','M','14/06/83',350000,'B115');
/*==============================================================*/
/* datos: Propietario */
/*==============================================================*/
insert into propietario values('C046','Joe','Keogh','2 Fergus Dr, AberdeenAB 7SX','0122486121');
insert into propietario values('C087','Carol','Farrel','6 Achray St.Glasgow, G32 9DX','0141357741');
insert into propietario values('C040','Tina','Murphy','63 Well St, Glasgow, G42','0141943742');
insert into propietario values('C093','Tony','Shaw','12 Park PI, Glasgow, G40QR','0141225742');
insert into propietario values('C047','Jose','Casanova','El Volvan 123, Santiago AB 7SX','0122486125');
insert into propietario values('C088','Carolina','Fernandez','Macul 1800. Santiago, G32 9DX','0141357741');
insert into propietario values('C041','Cristina','Mora','Av. Matta 1800, Santiago, G42','0141943752');
insert into propietario values('C094','Tomas','Figueroa','Av. Macul 120, Santiago, G40QR','0141225542');
/*==============================================================*/
/* datos: PROPIEDAD */
/*==============================================================*/
insert into PROPIEDAD values('PA14','16 Holhead','Aberdeem','AB7 5SU','Casa','6','650','C046','SL21');
insert into PROPIEDAD values('PL94','6 Argvill St.','London','NW2','Departamento','4','400','C087','SL21');
insert into PROPIEDAD values('PG4' ,'6 Lawrence St','Glasgow','G119QX','Departamento','3','350','C040','SA9');
insert into PROPIEDAD values('PG36','2 Manor Rd','Glasgow','G114QX','Departamento','3','375','C093','SA9');
insert into PROPIEDAD values('PG21','AV. Matta 150','Santiago','G12','Casa','5','600','C087','SG5' );
insert into PROPIEDAD values('PR01','Macul 120 ','Santaigo','G129AX','Departamento','4','450','C093','SA8');
insert into PROPIEDAD values('PR02','Macul 220','Santiago','G129AX','Departamento','5','550','C093','SG13');
insert into PROPIEDAD values('PR03','Macul 420','Santiago','G129AX','Departamento','6','650','C093','SG14');
insert into PROPIEDAD values('PR04','Macul 620','Santiago','G129AX','Departamento','3','350','C093','SG36');
insert into PROPIEDAD values('PR05','Loa 100','Santiago','G129AX','Departamento','2','250','C093','SG4');
insert into PROPIEDAD values('PG16','Arturo Prats 250','Santiago','G129AX','Departamento','4','450','C047','SL22');
insert into PROPIEDAD values('PR07','Gorbea 200','Santiago','G129AX', 'Departamento','6','650','C047','SL40');
insert into PROPIEDAD values('PR08','Gomez 230','Santiago','G129AX', 'Departamento','2','250','C041','SL41');
insert into PROPIEDAD values('PR09','Garibaldi 1500','Santiago','G129AX', 'Departamento','6','650','C041','SL50');
insert into PROPIEDAD values('PR10','Las Urbinas 210','Santiago','G129AX', 'Departamento','6','650','C094','SL55');
insert into PROPIEDAD values('PR11','Lastarria 1400','Santiago','G129AX', 'Departamento','3','350','C094','SL60');
insert into PROPIEDAD values('PR12','Las Giraldas 200','Santiago','G129AX','Departamento','4','450','C093','SL70');
/*==============================================================*/
/* datos: VISITA */
/*==============================================================*/
insert into visita values('CR56','PA14','24-11-1999','muy pequeño');
insert into visita values('CR62','PA14','14-11-1999','no tiene salón');
insert into visita values('CR76','PG4','20-10-1999','muy lejos');
insert into visita values('CR72','PG16','24-06-2007','Bakan');
insert into visita values('CR72','PG36','24-06-2007','Super');
insert into visita values('CR62','PG16','25-06-2007','Cool');
insert into visita values('CR62','PG4','25-06-2007', NULL);
insert into visita values('CR62','PG36','25-06-2007','No salva');
insert into visita (numCliente, numPropiedad, fecha) values ('CR72','PG4','25-06-2007');
insert into visita (numCliente, numPropiedad, fecha) values('CR56','PG36','28-10-1999');
insert into visita (numCliente, numPropiedad, fecha) values('CR56','PG4','26-11-1999');
/*==============================================================*/
/* datos: ARRIENDO*/
/*==============================================================*/
insert into arriendo values('10024','PA14','CR62','650','Visa','1300','Y','01-06-2005','31-05-2006');
insert into arriendo values('10075','PL94','CR76','400','Contado','800','N','01-08-2005','31-01-2006');
insert into arriendo values('10012','PG21','CR74','600','Cheque','1200','Y','01-07-2005','30-06-2006');
/*==============================================================*/
viernes, 17 de junio de 2011
►Tics Para Consultas SQL.-
USANDO ORACLE:
PARA CREAR LA TABLA
create table miPrimeraTabla(id numeric, nombre varchar2(30), apellido varchar2(30))
PARA INSERTAR VALORES
begin
insert into miPrimeraTabla values(1, 'javier', 'caceres');
insert into miPrimeraTabla values(2, 'sebastian', 'ulloa');
insert into miPrimeraTabla values(3, 'eduardo', 'aguero');
end
PARA LISTAR AQUELLOS INDIVIDUOS QUE CUYO NOMBRE EMPIECE EN "j"
select * from miPrimeraTabla where nombre like 'j%';
PARA LISTAR AQUELLOS INDIVIDUOS QUE CUYO APELLIDO TERMINE EN "s"
select * from miPrimeraTabla where apellido like '%s';
PARA MODIFICAR LOS DATOS DE LA TABLA EN ESTE CASO CAMBIAR "javier caceres a oscar caceres"
update miPrimeraTabla set nombre= 'oscar' where nombre = 'javier' and apellido = 'caceres'
PARA MOSTAR LOS DATOS DE LA TABLA
describe miPrimeraTabla
ELIMINAR REGISTRO DENTRO DE LA TABLA EN ESTE CASO AQUEL REGISTRO CUYO ID SEA 10
delete miPrimeraTabla where id = 10;
ELIMINAR LA TABLA
drop table miPrimeraTabla
PARA CREAR LA TABLA
create table miPrimeraTabla(id numeric, nombre varchar2(30), apellido varchar2(30))
PARA INSERTAR VALORES
begin
insert into miPrimeraTabla values(1, 'javier', 'caceres');
insert into miPrimeraTabla values(2, 'sebastian', 'ulloa');
insert into miPrimeraTabla values(3, 'eduardo', 'aguero');
end
PARA LISTAR AQUELLOS INDIVIDUOS QUE CUYO NOMBRE EMPIECE EN "j"
select * from miPrimeraTabla where nombre like 'j%';
PARA LISTAR AQUELLOS INDIVIDUOS QUE CUYO APELLIDO TERMINE EN "s"
select * from miPrimeraTabla where apellido like '%s';
PARA MODIFICAR LOS DATOS DE LA TABLA EN ESTE CASO CAMBIAR "javier caceres a oscar caceres"
update miPrimeraTabla set nombre= 'oscar' where nombre = 'javier' and apellido = 'caceres'
PARA MOSTAR LOS DATOS DE LA TABLA
describe miPrimeraTabla
ELIMINAR REGISTRO DENTRO DE LA TABLA EN ESTE CASO AQUEL REGISTRO CUYO ID SEA 10
delete miPrimeraTabla where id = 10;
ELIMINAR LA TABLA
drop table miPrimeraTabla
lunes, 2 de mayo de 2011
►Proceso de Normalización.-
El proceso de normalización
El proceso de normalización consiste en comprobar en secuencia si el esquema original está en 1FN, 2FN y 3FN, analizando las dependencias funcionales en cada paso.
Un ejemplo completo
Tenemos una empresa pública donde los puestos de trabajo están regulados por el Estado, de modo que las condiciones salariales están determinadas por el puesto. Se ha creado el siguiente esquema relacional
EMPLEADOS(id, nombre, puesto, salario, email) con id como clave primaria.
id | nombre | puesto | salario | |
111 | Juan Pérez | Jefe de Área | 3.000.000 | juanp@live.cl; jefe2@live.cl |
222 | José Sánchez | Administrativo | 1.500.000 | jsanchez@live.c |
333 | Ana Díaz | Administrativo | 1.500.000 | adiaz@live.cl; ana32@live.cl |
... | ... | ... | ... | ... |
Primera forma normal (1FN)
Una tabla está en 1FN si sus atributos contienen valores atómicos. En el ejemplo, podemos ver que el atributo email puede contener más de un valor, por lo que viola 1FN.
En general, tenemos una relación Roriginal con clave primaria Koriginal. Si un atributo Aoriginal viola la condición de 1FN, tenemos dos opciones.
Solución 1: duplicar los registros con valores repetidos
En general, esta solución pasa por sustituir Rorignal por una nueva relación modificada Rnuevo, en la cual:
- El atributo Aoriginal que violaba 1FN se elimina.
- Se incluye un nuevo atributo Anuevo que solo puede contener valores simples, de modo que si Rnuevo[Anuevo] es uno de los valores que teníamos en Roriginal[Aoriginal], entonces Rnuevo[Koriginal] = Roriginal[Koriginal]. En otras palabras, para una tupla con N valores duplicados en A, en la nueva relación habrá N tuplas, que sólo varían en que cada una de ellas guarda uno de los valores que había en Aoriginal.
- La clave primaria de Rnuevo es (Koriginal, Anuevo'), dado que podrá haber valores de Koriginal repetidos, para los valores multivaluados en Aoriginal.
Siguiendo el ejemplo, tendríamos el siguiente esquema para la nueva tabla EMPLEADOS'(a) con clave primaria (id, email):
id | nombre | puesto | salario | |
111 | Juan Pérez | Jefe de Área | 3.000.000 | juanp@live.cl |
111 | Juan Pérez | Jefe de Área | 3.000.000 | jefe2@live.cl |
222 | José Sánchez | Administrativo | 1.500.000 | jsanchez@live.cl |
333 | Ana Díaz | Administrativo | 1.500.000 | adiaz@live.cl |
333 | Ana Díaz | Administrativo | 1.500.000 | ana32@live.cl |
... | ... | ... | ... | ... |
Solución 2: separar el atributo que viola 1FN en una tabla
En general, esta solución pasa por:
sustituir Roriginal por una nueva relación modificada Rnuevo que no contiene el atributo Anuevo.
Crear una nueva relación N(Koriginal, Anuevo), es decir, una relación con una clave ajena Koriginal referenciando Rnuevo, junto al atributo Anuevo, que es la variante mono-valuada del atributo Aoriginal.
La nueva relación N tiene como clave (Koriginal, Anuevo).
Siguiendo el ejemplo, tendríamos el siguiente esquema para la nueva tabla EMPLEADOS'(b)
id | nombre | puesto | salario |
111 | Juan Pérez | Jefe de Área | 3.000.000 |
222 | José Sánchez | Administrativo | 1.500.000 |
333 | Ana Díaz | Administrativo | 1.500.000 |
... | ... | ... | ... |
Y además tendríamos una nueva tabla EMAIL con clave primaria (id, email):
id | |
111 | juanp@live.cl |
111 | jefe2@live.cl |
222 | jsanchez@live.c |
333 | adiaz@live.cl |
333 | ana32@live.cl |
... | ... |
Segunda forma normal (2FN)
Un esquema está en 2FN si:
Está en 1FN.
Todos sus atributos que no son de la clave principal tienen dependencia funcional completa respecto de todas las claves existentes en el esquema. En otras palabras, para determinar cada atributo no clave se necesita la clave primaria completa, no vale con una subclave.
La 2FN se aplica a las relaciones que tienen claves primarias compuestas por dos o más atributos. Si una relación está en 1FN y su clave primaria es simple (tiene un solo atributo), entonces también está en 2FN. Por tanto, de las soluciones anteriores, la tabla EMPLEADOS'(b) está en 1FN (y la tabla EMAIL no tiene atributos no clave), por lo que el esquema está en 2FN. Sin embargo, tenemos que examinar las dependencias funcionales de los atributos no clave de EMPLEADOS'(a). Las dependencias funcionales que tenemos son las siguientes:
id->nombre, puesto, salario, email
Como la clave es (id, email), las dependencias de nombre, salario y email son incompletas, por lo que la relación no está en 2FN.
En general, tendremos que observar los atributos no clave que dependan de parte de la clave.
Para solucionar este problema, tenemos que hacer lo siguiente para los gupos de atributos con dependencia incompleta Aoriginal:
Eliminar de Roriginal el atributo Aoriginal.
Crear una nueva relación N con el atributo Aoriginal y la parte de la clave primaria Koriginal de la que depende, que llamaremos Knuevo.
La clave primaria de la nueva relación será Knuevo.
Siguiendo el ejemplo anterior, crearíamos una nueva relación con los atributos que tienen dependencia incompleta:
id | nombre | puesto | salario |
111 | Juan Pérez | Jefe de Área | 3.000.000 |
222 | José Sánchez | Administrativo | 1.500.000 |
333 | Ana Díaz | Administrativo | 1.500.000 |
... | ... | ... | ... |
Y al eliminar de la tabla original estos atributos nos quedaría:
id | |
111 | juanp@live.cl |
111 | jefe2@live.cl |
222 | jsanchez@live.c |
333 | adiaz@live.cl |
333 | ana32@live.cl |
... | ... |
Como vemos, la solución a la que llegamos es la misma que en la otra opción de solución para el problema de 1FN.
Tercera forma normal (3FN)
Una relación está en tercera forma normal si, y sólo si:
está en 2FN
y, además, cada atributo que no está incluido en la clave primaria no depende transitivamente de la clave primaria.
Por lo tanto, a partir de un esquema en 2FN, tenemos que buscar dependencias funcionales entre atributos que no estén en la clave.
En general, tenemos que buscar dependencias transitivas de la clave, es decir, secuencias de dependencias como la siguiente: K->A y A->B, donde A y B no pertenecen a la clave. La solución a este tipo de dependencias está en separar en una tabla adicional N el/los atributos B, y poner como clave primaria de N el atributo que define la transitividad A.
Siguiendo el ejemplo anterior, podemos detectar la siguiente transitividad:
id->puesto
puesto->salario
Por lo tanto la descomposición sería la siguiente:
id | nombre | puesto |
111 | Juan Pérez | Jefe de Área |
222 | José Sánchez | Administrativo |
333 | Ana Díaz | Administrativo |
... | ... | ... |
En la nueva tabla PUESTOS, la clave sería el puesto, que también queda como clave ajena referenciando la tabla EMPLEADOS. El resto de las tablas quedan como estaban.
jueves, 21 de abril de 2011
►Comandos SQL.-
PARA CREAR LA TABLA.-
create table "nombre de la tabla"("ingresar valores")
PARA INSERTAR VALORES.-
begin
insert into "nombre de la tabla"("damos valor a nuestros atributos");
end
PARA LISTAR.-
select * from "nombre de la tabla"
PARA MODIFICAR.-
update "nombre de la tabla"
PARA MOSTAR LOS DATOS DE LA TABLA.-
describe "nombre de la tabla"
ELIMINAR REGISTRO DENTRO DE LA TABLA.-
delete "nombre de la tabla"
ELIMINAR LA TABLA.-
drop table "nombre de la tabla"
create table "nombre de la tabla"("ingresar valores")
PARA INSERTAR VALORES.-
begin
insert into "nombre de la tabla"("damos valor a nuestros atributos");
end
PARA LISTAR.-
select * from "nombre de la tabla"
PARA MODIFICAR.-
update "nombre de la tabla"
PARA MOSTAR LOS DATOS DE LA TABLA.-
describe "nombre de la tabla"
ELIMINAR REGISTRO DENTRO DE LA TABLA.-
delete "nombre de la tabla"
ELIMINAR LA TABLA.-
drop table "nombre de la tabla"
lunes, 11 de abril de 2011
►Modelo Curso de Capacitación.-
Las interrogantes correspondientes:
- ¿Listar cursos que tengan más de 3 ediciones?
- ¿Listar empleados que son alumnos de una edición de un curso?
- ¿Listar empleados que asistan a clases durante la mañana?
- ¿Listar cursos que su duración sea mayor a 2 meses?
- ¿Listar empleados que son docentes de una edición de un curso?
►Modelo Amigo-Cerveza.-
Las interrogantes correspondientes:
- ¿A cuantos amigos les gusta mucho la corona?
- ¿Cuáles son los bares más frecuentados durante la tarde?
- ¿Listar bares ubicados en la comuna providencia?
- ¿Listar las cervezas mas servidas en los bares?
- ¿Listar las cervezas que les gusta nada a los amigos?
viernes, 8 de abril de 2011
►Recordatorio.-
Martes 12/04/2011 Disertación sobre:
- Amigo/Cerveza: Rehacer el modelo y practicarlo
- Modelo evaluado de el día martes 05/04/2011 (Cursos de Capacitación)
- Semana del 18 de abril será la prueba
jueves, 7 de abril de 2011
viernes, 1 de abril de 2011
►Mandatorios.-
Mandatorio:
Se refiere a la Clase padre, de la cual las clases hijas heredan los atributos.
And:
Se refiere a la comparacion entre dos clases hijas. puede ser una "y" la otra.
Or:
Se refiere a la comparacion entre dos clases hijas. puede ser una "o" la otra, por ende, no pueden ser las dos.
Optional:
Se refiere a que no existe la necesidad de clasificar las clases heredadas.
martes, 29 de marzo de 2011
►DB Designer 4
DB Designer, actualmente se en encuentra en la versión 4, y puede ser descargado gratuitamente desde su web oficial, se trata de un software visual que nos ayuda para el diseño, modelado, creación y mantenimiento de nuestras bases de datos, trabaja perfectamente con MySQL, Oracle, MSSQL y otras bases de datos ODBC y modelos XML.
Principales características de DBDesigner:
- Disponible para Linux y Windows.
- Modo diseño y modo Consulta.
- Ingeniería inversa para las bases de datos MySQL, Oracle, MSSQL y cualquier base de datos ODBC.
- Generación de esquemas definido por el usuario.
- Sincronización del modelo a la base de datos.
- Soporte de índices.
- Soporte de entidades débiles.
- Sincronización de Inserts estándar.
- Capacidad de documentar la base de datos.
- Impresión avanzada de modelos.
- Soporta plugins.
- Muchas características más.
LINK DE DESARGA: http://fabforce.net/downloads.php
►Microsoft Office Visio 2007
Visualización fácil de procesos, sistemas e información
Office Visio 2007 permite documentar, diseñar y comprender de forma visual el estado de los sistemas y procesos empresariales con una gran variedad de diagramas, diagramas de flujo de proceso empresarial, diagramas de red, diagramas de flujo de trabajo, modelos de bases de datos y diagramas de software, entre otros. Para sacar el máximo partido de los diagramas, vincúlelos a datos subyacentes para proporcionar una imagen más completa.
En conclusión una herramienta práctica, fácil de usar y bastante cómoda.
Office Visio 2007 permite documentar, diseñar y comprender de forma visual el estado de los sistemas y procesos empresariales con una gran variedad de diagramas, diagramas de flujo de proceso empresarial, diagramas de red, diagramas de flujo de trabajo, modelos de bases de datos y diagramas de software, entre otros. Para sacar el máximo partido de los diagramas, vincúlelos a datos subyacentes para proporcionar una imagen más completa.
En conclusión una herramienta práctica, fácil de usar y bastante cómoda.
viernes, 25 de marzo de 2011
►¿Que es DDL y DML?
DDL (Data Definition Languaje - lenguaje de definición de datos): las sentencias DDL son aquellas utilizadas para la creación de una base de datos y todos sus componentes: tablas, índices, relaciones, disparadores (triggers), procedimientos almacenados, etc.
DML (Data Manipulation Languaje - lenguaje de manipulación de datos): las sentencias DML son aquellas utilizadas para insertar, borrar, modificar y consultar los datos de una base de datos. Es una de las partes fundamentales del lenguaje SQL.
El DML lo forman las instrucciones capaces de modificar los datos de las tablas. Al conjunto de instrucciones DML que se ejecutan consecutivamente, se las llama transacciones y se pueden anulartodas ellas o aceptar, ya que una instrucción DML no es realmente efectuada hasta que no se acepta (COMMIT). En todas estas consultas, el único dato devuelto por Oracle es el número de registros que se han modificado.
El DML lo forman las instrucciones capaces de modificar los datos de las tablas. Al conjunto de instrucciones DML que se ejecutan consecutivamente, se las llama transacciones y se pueden anulartodas ellas o aceptar, ya que una instrucción DML no es realmente efectuada hasta que no se acepta (COMMIT). En todas estas consultas, el único dato devuelto por Oracle es el número de registros que se han modificado.
►¿Que es DropBox?
Se trata de una herramienta de sincronización de archivos a través de un disco duro o directorio virtual. Permite disponer de un directorio de archivos (de cualquier tipo) de forma remota y accesible desde cualquier ordenador. Es decir, crea una carpeta en nuestra Pc y realiza una copia a través de Internet de todos los archivos que depositemos en ella.
Se ocupa de mantener la copia de nuestros archivos siempre sincronizada, es decir, cada vez que hagamos un cambio en nuestros documentos, por pequeño que sea, lo detectará y volverá a copiárselo al instante, conservando la versión antigua por si la necesitamos en el futuro.
¿Como funciona Dropbox?
Dropbox funciona instalando el programa en cada PC desde el que queramos acceder al directorio virtual y asociándolo a una cuenta determinada. Desde ese momento, dispondremos de una carpeta en la que alojar nuestros archivos y desde la que poder copiar, pegar o arrastrar documentos como si de cualquier carpeta de pc se tratara. El sistema lo tratará como un directorio más, no como un disco duro virtual ni nada similar.
Con los ficheros en «la nube», es posible acceder a ellos desde cualquier computadora del mundo con acceso a Internet a través de la interfaz web de Dropbox, pero las ventajas no se quedan ahí.
Si lo instas en otras PC, también replicará en ellas todos tus ficheros y se ocupará de mantener todas las copias sincronizadas en ambas, lo que permitirá, por ejemplo, iniciar un informe en la oficina, terminarlo en tu casa e imprimir al día siguiente el resultado final desde la oficina sin tener que hacer nada.
Una de las grandes ventajas de Dropbox es que es multiplataforma con lo cual puedes utilizarlo en equipos MAC, Windows y Linux sin problemas.
La noticia de último momento es que Dropbox ha incrementado sus límites de almacenamiento (que antes era de 3GB) hasta los 8GB, permitiendo tener un total de 10 GB gratis de espacio en disco para alojar nuestra archivos en la nube.
BUENO AQUI UN LINK DE UN VIDEO DE COMO SE OCUPA DROPBOX---->>> PINCHA AQUI
►Modelo Entidad-Relación.-
Es un tipo de modelo de datos conceptual de alto nivel que se emplea en el diseño de las base de datos relacionales. El modelo entidad-relación muestra la estructura de la base de datos empleando todo tipo de herramientas conceptuales.
Creación de un modelo entidad-relación
El primer paso para la construcción del modelo entidad-relación es la obtención y el análisis de los requerimientos de los usuarios. Esta tarea es parte de los diseñadores de la base de datos relacional.
Luego, a partir de los requisitos, se crea un esquema conceptual de la base de datos. El esquema conceptual contiene las descripciones detalladas de las entidades, relaciones y restricciones. Todas estas descripciones se expresan empleando conceptos gráficos y textuales del modelo de datos relacional.
El siguiente paso es implementar la base de datos empleando algún SGBD (software de gestión de bases de datos) adaptado al modelo entidad-relación.
Elementos del modelo entidad-relación
Los elementos conceptuales que emplea el modelo ER son:
- Entidad
- Entidad débil
- Vínculo
- Vínculo identificador
- Atributo
- Atributo clave
- Atributo multivaluado
- Atributo compuesto
- Atributo derivado
- Relaciones
- Jerarquías de generalización.
miércoles, 23 de marzo de 2011
►¿Qué es CRUD?
En computación CRUD es el de Crear, Obtener, Actualizar y Borrar (Create, Retrieve, Update y Delete en inglés ). Es usado para referirse a las funciones básicas en bases de datos o la capa de persistencia en un sistema de software .
En algunos lugares, se utilizan las siglas ABM para lo mismo (Alta Baja Modificación), obviando la operación de Obtener; el acrónimo ABC para Altas, Bajas y Cambios; ABML siendo la última letra (L) de listar, listado o lectura; o ABMC siendo la C de Consulta.
Tambien es usado el ABCDEF: Agregar,Buscar,Cambiar,Desplegar(listar),Eliminar,Fichar(Ficha, cedula o Reporte de un registro).
►Patrón de Diseño.-
Los patrones de diseño son la base para la búsqueda de soluciones a problemas comunes en el desarrollo de software y otros ámbitos referentes al diseño de interacción o interfaces.
Un patrón de diseño es una solución a un problema de diseño. Para que una solución sea considerada un patrón debe poseer ciertas características. Una de ellas es que debe haber comprobado su efectividad resolviendo problemas similares en ocasiones anteriores. Otra es que debe ser reusable, lo que significa que es aplicable a diferentes problemas de diseño en distintas circunstancias.
- Patrones Creacionales: Inicialización y configuración de objetos.
- Patrones Estructurales: Separan la interfaz de la implementación. Se ocupan de cómo las clases y objetos se agrupan, para formar estructuras más grandes.
- Patrones de Comportamiento: Más que describir objetos o clases, describen la comunicación entre ellos.
En el diagrama de la Figura 1, Microsoft sostiene que las columnas de la tabla son enfoques o puntos de vista de la solución, mientras que las filas representan los niveles de abstracción. Un ejemplo muy conocido en el ambiente de desarrollo Web es el patrón de diseño de capas (layers), el cual plantea la separación de una aplicación en una capa de presentación, una de negocio y una de datos.
A continuación una lista con los patrones de diseño a objetos más habituales publicados en el libro "Design Patterns", escrito por los que comúnmente se conoce como GoF (gang of four, "pandilla de los cuatro").
- Patrones de creaciónAbstract Factory.
- Proporciona una interfaz para crear familias de objetos o que dependen entre sí, sin especificar sus clases concretas.
- Builder. Separa la construcción de un objeto complejo de su representación, de forma que el mismo proceso de construcción pueda crear diferentes representaciones.
- Factory Method. Define una interfaz para crear un objeto, pero deja que sean las subclases quienes decidan qué clase instanciar. Permite que una clase delegue en sus subclases la creación de objetos.
- Prototype. Especifica los tipos de objetos a crear por medio de una instancia prototípica, y crear nuevos objetos copiando este prototipo.
- Singleton. Garantiza que una clase sólo tenga una instancia, y proporciona un punto de acceso global a ella.
Patrones estructurales
- Adapter. Convierte la interfaz de una clase en otra distinta que es la que esperan los clientes. Permiten que cooperen clases que de otra manera no podrían por tener interfaces incompatibles.
- Bridge. Desvincula una abstracción de su implementación, de manera que ambas puedan variar de forma independiente.
- Composite. Combina objetos en estructuras de árbol para representar jerarquías de parte-todo. Permite que los clientes traten de manera uniforme a los objetos individuales y a los compuestos.
- Decorator. Añade dinámicamente nuevas responsabilidades a un objeto, proporcionando una alternativa flexible a la herencia para extender la funcionalidad.
- Facade. Proporciona una interfaz unificada para un conjunto de interfaces de un subsistema. Define una interfaz de alto nivel que hace que el subsistema se más fácil de usar.
- Flyweight. Usa el compartimiento para permitir un gran número de objetos de grano fino de forma eficiente.
- Proxy. Proporciona un sustituto o representante de otro objeto para controlar el acceso a éste.
Patrones de comportamiento
- Chain of Responsibility. Evita acoplar el emisor de una petición a su receptor, al dar a más de un objeto la posibilidad de responder a la petición. Crea una cadena con los objetos receptores y pasa la petición a través de la cadena hasta que esta sea tratada por algún objeto.
- Command. Encapsula una petición en un objeto, permitiendo así parametrizar a los clientes con distintas peticiones, encolar o llevar un registro de las peticiones y poder deshacer la operaciones.
- Interpreter. Dado un lenguaje, define una representación de su gramática junto con un intérprete que usa dicha representación para interpretar las sentencias del lenguaje.
- Iterator. Proporciona un modo de acceder secuencialmente a los elementos de un objeto agregado sin exponer su representación interna.
- Mediator. Define un objeto que encapsula cómo interactúan un conjunto de objetos. Promueve un bajo acoplamiento al evitar que los objetos se refieran unos a otros explícitamente, y permite variar la interacción entre ellos de forma independiente.
- Memento. Representa y externaliza el estado interno de un objeto sin violar la encapsulación, de forma que éste puede volver a dicho estado más tarde.
- Observer. Define una dependencia de uno-a-muchos entre objetos, de forma que cuando un objeto cambia de estado se notifica y actualizan automáticamente todos los objetos.
- State. Permite que un objeto modifique su comportamiento cada vez que cambia su estado interno. Parecerá que cambia la clase del objeto.
- Strategy. Define una familia de algoritmos, encapsula uno de ellos y los hace intercambiables. Permite que un algoritmo varíe independientemente de los clientes que lo usan.
- Template Method. Define en una operación el esqueleto de un algoritmo, delegando en las subclases algunos de sus pasos. Permite que las subclases redefinan ciertos pasos del algoritmo sin cambiar su estructura.
- Visitor. Representa una operación sobre los elementos de una estructura de objetos. Permite definir una nueva operación sin cambiar las clases de los elementos sobre los que opera.
Suscribirse a:
Entradas (Atom)