Sei sulla pagina 1di 16

1. Código de creación de la BDD.

-- MySQL Workbench Forward Engineering

SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;


SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL,ALLOW_INVALID_DATES';

-- -----------------------------------------------------
-- Schema LaSinagua
-- -----------------------------------------------------
-- Base de datos - La Sinagua

-- -----------------------------------------------------
-- Schema LaSinagua
--
-- Base de datos - La Sinagua
-- -----------------------------------------------------
CREATE SCHEMA IF NOT EXISTS `LaSinagua` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin ;
USE `LaSinagua` ;

-- -----------------------------------------------------
-- Table `LaSinagua`.`Cultivo`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `LaSinagua`.`Cultivo` (
`idCultivo` INT NOT NULL,
`nomCultivo` VARCHAR(45) NOT NULL,
`TiemCultivo` FLOAT NOT NULL,
`FechaCultivo` DATE NOT NULL,
PRIMARY KEY (`idCultivo`))
ENGINE = InnoDB;

-- -----------------------------------------------------
-- Table `LaSinagua`.`Estado_Cultivo`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `LaSinagua`.`Estado_Cultivo` (
`idEstado_Cultivo` INT NOT NULL,
`Estado_cultivo` VARCHAR(45) NOT NULL,
PRIMARY KEY (`idEstado_Cultivo`))
ENGINE = InnoDB;

-- -----------------------------------------------------
-- Table `LaSinagua`.`Actividad`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `LaSinagua`.`Actividad` (
`idActividad` INT NOT NULL,
`NombreActividad` VARCHAR(45) NOT NULL,
`ValorHoraActividad` INT NOT NULL,
`Estado_Cultivo_idEstado_Cultivo` INT NOT NULL,
PRIMARY KEY (`idActividad`, `Estado_Cultivo_idEstado_Cultivo`),
INDEX `fk_Actividad_Estado_Cultivo1_idx` (`Estado_Cultivo_idEstado_Cultivo` ASC),
CONSTRAINT `fk_Actividad_Estado_Cultivo1`
FOREIGN KEY (`Estado_Cultivo_idEstado_Cultivo`)
REFERENCES `LaSinagua`.`Estado_Cultivo` (`idEstado_Cultivo`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `LaSinagua`.`Trabajador`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `LaSinagua`.`Trabajador` (
`idTrabajador` INT NOT NULL,
`NomTrabajador` VARCHAR(45) NOT NULL,
`ApeTrabajador` VARCHAR(45) NOT NULL,
`TelTrabajador` VARCHAR(45) NOT NULL,
`DirTrabajador` VARCHAR(45) NOT NULL,
`CuentaTrabajador` VARCHAR(20) NOT NULL,
PRIMARY KEY (`idTrabajador`))
ENGINE = InnoDB;

-- -----------------------------------------------------
-- Table `LaSinagua`.`Lote`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `LaSinagua`.`Lote` (
`idLote` INT NOT NULL,
`AreaLote` VARCHAR(45) NOT NULL,
`Cultivo_idCultivo` INT NOT NULL,
`Trabajador_idTrabajador` INT NOT NULL,
PRIMARY KEY (`idLote`, `Cultivo_idCultivo`, `Trabajador_idTrabajador`),
INDEX `fk_Lote_Cultivo1_idx` (`Cultivo_idCultivo` ASC),
INDEX `fk_Lote_Trabajador1_idx` (`Trabajador_idTrabajador` ASC),
CONSTRAINT `fk_Lote_Cultivo1`
FOREIGN KEY (`Cultivo_idCultivo`)
REFERENCES `LaSinagua`.`Cultivo` (`idCultivo`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_Lote_Trabajador1`
FOREIGN KEY (`Trabajador_idTrabajador`)
REFERENCES `LaSinagua`.`Trabajador` (`idTrabajador`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;

-- -----------------------------------------------------
-- Table `LaSinagua`.`Actividad_Realizada`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `LaSinagua`.`Actividad_Realizada` (
`idActividad_Realizada` INT NOT NULL,
`Fecha_Actividad_Realizada` DATE NOT NULL,
`Horas_Actividad_Realizada` FLOAT NOT NULL,
`Valor_hora` FLOAT NOT NULL,
`Act_realizada` VARCHAR(45) NOT NULL,
`Lote_idLote` INT NOT NULL,
`Actividad_idActividad` INT NOT NULL,
PRIMARY KEY (`idActividad_Realizada`, `Lote_idLote`, `Actividad_idActividad`),
INDEX `fk_Actividad_Realizada_Lote1_idx` (`Lote_idLote` ASC),
INDEX `fk_Actividad_Realizada_Actividad1_idx` (`Actividad_idActividad` ASC),
CONSTRAINT `fk_Actividad_Realizada_Lote1`
FOREIGN KEY (`Lote_idLote`)
REFERENCES `LaSinagua`.`Lote` (`idLote`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_Actividad_Realizada_Actividad1`
FOREIGN KEY (`Actividad_idActividad`)
REFERENCES `LaSinagua`.`Actividad` (`idActividad`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;

-- -----------------------------------------------------
-- Table `LaSinagua`.`Nomina`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `LaSinagua`.`Nomina` (
`Fecha_trab` DATE NOT NULL,
`Horas_trab` INT NOT NULL,
`Valor_unitario` VARCHAR(15) NOT NULL,
`Actividad_Realizada_idActividad_Realizada` INT NOT NULL,
`Trabajador_idTrabajador` INT NOT NULL,
INDEX `fk_Nomina_Actividad_Realizada_idx` (`Actividad_Realizada_idActividad_Realizada` ASC),
INDEX `fk_Nomina_Trabajador1_idx` (`Trabajador_idTrabajador` ASC),
CONSTRAINT `fk_Nomina_Actividad_Realizada`
FOREIGN KEY (`Actividad_Realizada_idActividad_Realizada`)
REFERENCES `LaSinagua`.`Actividad_Realizada` (`idActividad_Realizada`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_Nomina_Trabajador1`
FOREIGN KEY (`Trabajador_idTrabajador`)
REFERENCES `LaSinagua`.`Trabajador` (`idTrabajador`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;

-- -----------------------------------------------------
-- Table `LaSinagua`.`Ventas`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `LaSinagua`.`Ventas` (
`Nom-prod` INT NOT NULL,
`Kilos` FLOAT NOT NULL,
`Valor_kilo` FLOAT NOT NULL,
`Actividad_Realizada_idActividad_Realizada` INT NOT NULL,
INDEX `fk_Ventas_Actividad_Realizada1_idx` (`Actividad_Realizada_idActividad_Realizada` ASC),
CONSTRAINT `fk_Ventas_Actividad_Realizada1`
FOREIGN KEY (`Actividad_Realizada_idActividad_Realizada`)
REFERENCES `LaSinagua`.`Actividad_Realizada` (`idActividad_Realizada`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;

SET SQL_MODE=@OLD_SQL_MODE;
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;

2. Con base en el modelo relacional del caso 1, cree una base de datos llamada
FINCASINAGUA con sus respectivas tablas utilizando toda la sintaxis del
Lenguaje de Definicioó n de datos y el Lenguaje de Manipulacioó n de datos. Se
debe usar la herramienta MySql y mostrar las evidencias de los pantallazos.
Ademaó s, hacer las siguientes operaciones:
a. Modificar la estructura de una tabla.

Insertar una nueva columna en una tabla:


ALTER TABLE Cultivo ADD Prueba Int NOT NULL;
Eliminar una columna de una tabla:

ALTER TABLE Cultivo DROP Prueba;


b. Adicionar para cada tabla, míónimo cinco filas.

Insert into Cultivo (idCultivo, nomCultivo, TiemCultivo, FechaCultivo) values


(0001, "Papa", 60, 20150219);
Insert into Cultivo (idCultivo, nomCultivo, TiemCultivo, FechaCultivo) values
(0002, "Yuca", 70, 20150209);
Insert into Cultivo (idCultivo, nomCultivo, TiemCultivo, FechaCultivo) values
(0003, "Mora", 80, 20150131);
Insert into Cultivo (idCultivo, nomCultivo, TiemCultivo, FechaCultivo) values
(0004, "Melocotoó n", 90, 20150121);
Insert into Cultivo (idCultivo, nomCultivo, TiemCultivo, FechaCultivo) values
(0005, "Curuba", 100, 20150111);

INSERT INTO Trabajador (idTrabajador, NomTrabajador, ApeTrabajador,


TelTrabajador, DirTrabajador, CuentaTrabajador) VALUES (11111111, "Andres",
"Alvarez", "3111111111", "Kr 1 1 11", "10010001000");
INSERT INTO Trabajador (idTrabajador, NomTrabajador, ApeTrabajador,
TelTrabajador, DirTrabajador, CuentaTrabajador) VALUES (22222222,
"Bernardo", "Benitez", "3222222222", "Kr 2 2 22", "20020002000");
INSERT INTO Trabajador (idTrabajador, NomTrabajador, ApeTrabajador,
TelTrabajador, DirTrabajador, CuentaTrabajador) VALUES (33333333, "Camilo",
"Camacho", "3333333333", "Kr 3 3 33", "30030003000");
INSERT INTO Trabajador (idTrabajador, NomTrabajador, ApeTrabajador,
TelTrabajador, DirTrabajador, CuentaTrabajador) VALUES (44444444, "Diego",
"Dalvez", "3444444444", "Kr 4 4 44", "40040004000");
INSERT INTO Trabajador (idTrabajador, NomTrabajador, ApeTrabajador,
TelTrabajador, DirTrabajador, CuentaTrabajador) VALUES (55555555, "Edwin",
"Echeverry", "3555555555", "Kr 5 5 55", "50050005000");

INSERT INTO `LaSinagua`.`Lote` (`idLote`, `AreaLote`, `Trabajador_idTrabajador`,


`Cultivo_idCultivo`) VALUES ('110', '110m2', '11111111', '1'), ('120', '120m2',
'22222222', '2'), ('130', '130m2', '33333333', '3'), ('140', '140m2', '44444444', '4'),
('150', '150m2', '55555555', '5');

INSERT INTO `LaSinagua`.`Estado_Cultivo` (`idEstado_Cultivo`, `Estado_cultivo`)


VALUES ('11', 'Siembra'), ('22', 'Mantenimiento'), ('33', 'Produccion'), ('44',
'Almacenamiento'), ('55', 'Ventas');

INSERT INTO `LaSinagua`.`Actividad` (`idActividad`, `NombreActividad`,


`ValorHoraActividad`, `Estado_Cultivo_idEstado_Cultivo`) VALUES ('101', 'Preparacion
Terreno', '10000', '11'), ('201', 'Control de plagas', '10000', '22'), ('301', 'Recoleccion',
'10000', '33'), ('401', 'Almacenamiento', '10000', '44'), ('501', 'Ventas', '10000', '55');

INSERT INTO `LaSinagua`.`Actividad_Realizada` (`idActividad_Realizada`,


`Fecha_Actividad_Realizada`, `Horas_Actividad_Realizada`, `Valor_hora`, `Act_realizada`,
`Lote_idLote`, `Actividad_idActividad`) VALUES ('1001', '2014-04-19', '8', '10000',
'Siembra', '110', '101'), ('1002', '2011-04-19', '8', '10000', 'control de plagas', '120',
'201'), ('1003', '2013-04-19', '8', '10000', 'recoleccion', '130', '301'), ('1004', '2013-04-
19', '8', '10000', 'Almacenamiento', '140', '401'), ('1005', '2013-04-19', '8', '10000',
'Ventas', '150', '501');

INSERT INTO `LaSinagua`.`Nomina` (`Fecha_trab`, `Horas_trab`, `Valor_unitario`,


`Actividad_Realizada_idActividad_Realizada`, `Trabajador_idTrabajador`) VALUES
('2015-04-19', '8', '10000', '1001', '11111111'), ('2015-04-19', '8', '10000', '1002',
'22222222'), ('2015-04-19', '8', '10000', '1003', '33333333'), ('2015-04-19', '8',
'10000', '1004', '44444444'), ('2015-04-19', '8', '10000', '1005', '55555555');

INSERT INTO `LaSinagua`.`Ventas` (`Nom-prod`, `Kilos`, `Valor_kilo`,


`Actividad_Realizada_idActividad_Realizada`) VALUES ('101010', '10', '8000', '1001'),
('202020', '11', '9000', '1002'), ('303030', '12', '10000', '1003'), ('404040', '13',
'11000', '1004'), ('505050', '8', '12000', '1005');
c. Eliminar unas filas en alguna tabla (Pueden eliminar 3 Registros).

DELETE FROM `Ventas` WHERE `Nom-prod` = 101010;


DELETE FROM `Ventas` WHERE `Kilos` = 11;
DELETE FROM `Ventas` WHERE `Valor_kilo` = 10000;
DELETE FROM `Ventas` WHERE `Actividad_Realizada_idActividad_Realizada` = 1004;
d. Actualizar una fila
UPDATE `LaSinagua`.`Trabajador` SET `NomTrabajador` = 'Alexander' WHERE `trabaja
dor`.`idTrabajador` = 11111111;
3. Teniendo en cuenta la base de datos anterior, realizar las siguientes consultas

a. Se requiere el nombre de los cultivos que le realizaron la actividad cuyo


nombre es la “Siembra”.

SELECT nomCultivo FROM Cultivo, Lote, Actividad_Realizada WHERE idCultivo


=Lote.Cultivo_idCultivo and idLote=Actividad_Realizada.Lote_idLote and Act_realizada
= ‘Siembra’;

b. Se requiere el nombre de los cultivos con el nombre de las actividades en el anñ o


2013.

SELECT nomCultivo, NombreActividad FROM Cultivo, Lote, Actividad_Realizada,


Actividad WHERE idCultivo =Lote.Cultivo_idCultivo and
idLote=Actividad_Realizada.Lote_idLote and
idActividad=Actividad_Realizada.Actividad_idActividad and Fecha_Actividad_realizada
LIKE '%2013%';
c. Se requiere saber el nombre de los estados de cultivos con los respectivos
nombres de trabajadores que han realizado actividades, organizados por
nombre de cultivo.

SELECT nomCultivo, Estado_cultivo, NomTrabajador FROM Estado_Cultivo, Actividad,


Actividad_Realizada, Lote, Trabajador, Cultivo WHERE
IdEstado_Cultivo=Actividad.Estado_Cultivo_idEstado_Cultivo and
idActividad=Actividad_Realizada.Actividad_idActividad and
idLote=Actividad_Realizada.Lote_idLote and
idTrabajador=Lote.Trabajador_idTrabajador and idCultivo=Lote.Cultivo_idCultivo
ORDER BY nomCultivo ASC;
d. Se desea saber el nombre de los cultivos con su respectiva cantidad total de
actividades realizadas. Solo aquellos cultivos que tuvieron maó s de 3 actividades
realizadas desde el 2012 hasta la fecha.

SELECT nomCultivo, Count(*) nomCultivo FROM Cultivo, Lote, Actividad_Realizada


WHERE idCultivo=Lote.Cultivo_idCultivo and idLote=Actividad_Realizada.Lote_idLote
and Fecha_actividad_Realizada > '2012-01-01';

Potrebbero piacerti anche