Base de datos practicas5

De MediaWiki
Ir a la navegación Ir a la búsqueda

Enunciado

A base de datos practicas5 está creada con fins pedagóxicos e didácticos para realizar exemplos de consultas.

Tarefa

Executa o seguinte script para mediante DDL xenerar o esquema da base de datos e con DML cargar con datos as diferentes táboas.

  1 -- MySQL Administrator dump 1.4
  2 --
  3 -- ------------------------------------------------------
  4 -- Server version	5.1.36-community-log
  5 
  6 
  7 /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
  8 /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
  9 /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
 10 /*!40101 SET NAMES utf8 */;
 11 
 12 /*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
 13 /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
 14 /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
 15 
 16 
 17 --
 18 -- Create schema sql_dml_empleados
 19 --
 20 
 21 CREATE DATABASE IF NOT EXISTS practicas5;
 22 USE practicas5;
 23 
 24 
 25 CREATE TABLE `provincia` (
 26   `id_provincia` smallint(6) DEFAULT NULL,
 27   `provincia` varchar(30) DEFAULT NULL,
 28   PRIMARY KEY (`id_provincia`)
 29 ) ENGINE=InnoDB  DEFAULT CHARSET=latin1 COLLATE=latin1_spanish_ci;
 30 
 31 INSERT INTO `provincia` (`id_provincia`, `provincia`)
 32 VALUES
 33 	(2,'Albacete'),
 34 	(3,'Alicante/Alacant'),
 35 	(4,'Almería'),
 36 	(1,'Álava/Araba'),
 37 	(33,'Asturias'),
 38 	(5,'Ávila'),
 39 	(6,'Badajoz'),
 40 	(7,'Balears, Illes'),
 41 	(8,'Barcelona'),
 42 	(48,'Bizkaia'),
 43 	(9,'Burgos'),
 44 	(10,'Cáceres'),
 45 	(11,'Cádiz'),
 46 	(39,'Cantabria'),
 47 	(12,'Castellón/Castelló'),
 48 	(51,'Ceuta'),
 49 	(13,'Ciudad Real'),
 50 	(14,'Córdoba'),
 51 	(15,'Coruña, A'),
 52 	(16,'Cuenca'),
 53 	(20,'Gipuzkoa'),
 54 	(17,'Girona'),
 55 	(18,'Granada'),
 56 	(19,'Guadalajara'),
 57 	(21,'Huelva'),
 58 	(22,'Huesca'),
 59 	(23,'Jaén'),
 60 	(24,'León'),
 61 	(27,'Lugo'),
 62 	(25,'Lleida'),
 63 	(28,'Madrid'),
 64 	(29,'Málaga'),
 65 	(52,'Melilla'),
 66 	(30,'Murcia'),
 67 	(31,'Navarra'),
 68 	(32,'Ourense'),
 69 	(34,'Palencia'),
 70 	(35,'Palmas, Las'),
 71 	(36,'Pontevedra'),
 72 	(26,'Rioja, La'),
 73 	(37,'Salamanca'),
 74 	(38,'Santa Cruz de Tenerife'),
 75 	(40,'Segovia'),
 76 	(41,'Sevilla'),
 77 	(42,'Soria'),
 78 	(43,'Tarragona'),
 79 	(44,'Teruel'),
 80 	(45,'Toledo'),
 81 	(46,'Valencia/València'),
 82 	(47,'Valladolid'),
 83 	(49,'Zamora'),
 84 	(50,'Zaragoza');
 85 
 86 
 87 
 88 --
 89 -- Definition of table `departamento`
 90 --
 91 
 92 DROP TABLE IF EXISTS `departamento`;
 93 CREATE TABLE `departamento` (
 94   `codigo` tinyint(3) unsigned NOT NULL AUTO_INCREMENT,
 95   `nome` char(25) COLLATE latin1_spanish_ci DEFAULT NULL,
 96   `tipo` enum('H','B','A') NOT NULL,
 97   `cidade` varchar(35) COLLATE latin1_spanish_ci DEFAULT NULL,
 98   `id_provincia` smallint(6) DEFAULT NULL,
 99   PRIMARY KEY (`codigo`),
100    CONSTRAINT `fk_departamento_provincia` FOREIGN KEY (`id_provincia`) REFERENCES `provincia` (`id_provincia`) ON DELETE NO ACTION ON UPDATE NO ACTION
101 ) ENGINE=InnoDB  DEFAULT CHARSET=latin1 COLLATE=latin1_spanish_ci;
102 
103 --
104 -- Dumping data for table `departamento`
105 --
106 
107 /*!40000 ALTER TABLE `departamento` DISABLE KEYS */;
108 INSERT INTO `departamento` (`codigo`,`nome`,`tipo`,`cidade`,`id_provincia`) VALUES 
109  (1,'Central','H','Lugo',27),
110  (2,'Oficina1','H','Monforte',27),
111  (3,'Oficina2','B','Ferrol',15),
112  (4,'Oficina3','H','Vigo',36),
113  (5,'Oficina4','A','Ourense',32),
114  (6,'Oficina5','A','Villalba',27),
115  (7,'Oficina6','H','Ourense',32),
116  (8,'Oficina7','H','Lugo',27),
117  (9,'Oficina8','A','Coruña',15),
118  (10,'Oficina9','B','Villalba',28);
119 /*!40000 ALTER TABLE `departamento` ENABLE KEYS */;
120 
121 
122 --
123 -- Definition of table `empregado`
124 --
125 
126 DROP TABLE IF EXISTS `empregado`;
127 CREATE TABLE `empregado` (
128   `dni` int(11) NOT NULL,
129   `apelidos` varchar(45) COLLATE latin1_spanish_ci NOT NULL,
130   `nome` varchar(30) COLLATE latin1_spanish_ci NOT NULL,
131   `departamento` tinyint(3) unsigned DEFAULT NULL,
132   `salario_bruto` decimal(9,2) unsigned DEFAULT NULL,
133   `dni_xefe` int(11) DEFAULT NULL,
134   PRIMARY KEY (`dni`),
135   KEY `fk_empregado_departamento` (`departamento`),
136   KEY `fk_empregado_empregado1` (`dni_xefe`),
137   CONSTRAINT `fk_empregado_departamento` FOREIGN KEY (`departamento`) REFERENCES `departamento` (`codigo`) ON DELETE NO ACTION ON UPDATE NO ACTION,
138   CONSTRAINT `fk_empregado_empregado1` FOREIGN KEY (`dni_xefe`) REFERENCES `empregado` (`dni`) ON DELETE NO ACTION ON UPDATE NO ACTION
139 ) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_spanish_ci;
140 
141 --
142 -- Dumping data for table `empregado`
143 --
144 
145 /*!40000 ALTER TABLE `empregado` DISABLE KEYS */;
146 INSERT INTO `empregado` (`dni`,`apelidos`,`nome`,`departamento`,`salario_bruto`,`dni_xefe`) VALUES 
147  (12549563,'Case Rodriguez','Fernanda',4,'35520.00',54528788),
148  (12852654,'Martinez Iglesias','Benito',1,'25000.00',33456852),
149  (15245258,'Nuñez Bernardez','Antonia',2,'42000.00',33987456),
150  (33123456,'Fernandez Lopez','Jose Luis',1,'160000.00',NULL),
151  (33147258,'Ruiz Macias','Dario',10,'32000.00',33456852),
152  (33219853,'Hernandez Valin','Valentina',3,'26000.00',33963258),
153  (33251256,'Martinez Diaz','Carlos',2,'31500.00',33987456),
154  (33254916,'Iglesias Dominguez','Adolfo',NULL,'52500.00',33123456),
155  (33322541,'Villar Bernal','Teolindo',5,'17500.00',58745124),
156  (33257964,'Villar Bernal','Rosario',4,'25000.00',54528788),
157  (33365846,'Quiroga Juarez','Francisco',3,'36500.00',33963258),
158  (33456852,'Fernandez Diaz','Julian',1,'85400.00',33123456),
159  (33558994,'Abelleira Carrion','Dorinda',6,'19500.00',58745124),
160  (33625566,'Garcia Perez','Adrian',5,'21500.00',58745124),
161  (33845215,'Sanchez Rodirguez','Maria',3,'35400.00',33963258),
162  (33891564,'Aguiar Lopez','Luis',9,'35000.00',54528788);
163 INSERT INTO `empregado` (`dni`,`apelidos`,`nome`,`departamento`,`salario_bruto`,`dni_xefe`) VALUES 
164  (33963258,'Bernardez Macia','Luisa',8,'65200.00',33456852),
165  (33987456,'Porto Novo','Begoña',9,'52000.00',33456852),
166  (54528788,'Canedo Tellez','Angeles',4,'58500.00',33456852),
167  (58745124,'Cendan Villa','Lorenzo',7,'65350.00',33456852);
168 /*!40000 ALTER TABLE `empregado` ENABLE KEYS */;
169 
170 
171 --
172 -- Definition of table `irpf`
173 --
174 
175 DROP TABLE IF EXISTS `irpf`;
176 CREATE TABLE `irpf` (
177   `limite_inferior` decimal(10,2) unsigned NOT NULL,
178   `limite_superior` decimal(10,2) unsigned NOT NULL,
179   `tipo_imposto` decimal(4,2) NOT NULL,
180   PRIMARY KEY (`tipo_imposto`)
181 ) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_spanish_ci;
182 
183 --
184 -- Dumping data for table `irpf`
185 --
186 
187 /*!40000 ALTER TABLE `irpf` DISABLE KEYS */;
188 INSERT INTO `irpf` (`limite_inferior`,`limite_superior`,`tipo_imposto`) VALUES 
189  ('0.00','17707.00','15.75'),
190  ('17707.00','33007.00','21.00'),
191  ('33007.00','53407.00','27.00'),
192  ('53407.00','120000.00','30.00'),
193  ('120000.00','175000.00','35.00'),
194  ('175000.00','300000.00','42.00'),
195  ('300000.00','99999999.99','55.00');
196 /*!40000 ALTER TABLE `irpf` ENABLE KEYS */;
197 
198 
199 /*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
200 /*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
201 /*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
202 /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
203 /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
204 /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
205 /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;

Diagrama E-R

As táboas desta base de datos móstranse no seguinte diagrama entidade relación deseñado con MySQL Workbench.

Modelo E-R da base de datos practicas5

Descrición

Descríbense a continuación as táboas.

Táboa empregado

A columna departamento é unha clave foránea que contén o código do departamento no que traballa o empregado, e fai referencia á columna codigo da táboa departamento.

Os valores que toma a columna departamento teñen que coincidir cos que toma a columna codigo da táboa departamento, ou ser NULL no caso que o empregado non teña asignado ningún departamento.

A columna dni_xefe é outra clave foránea que contén o dni doutro empregado que sería o seu xefe, ou o valor NULL no caso que non tivera xefe.

Táboa departamento

A columna id_provincia é unha clave foránea que fai referencia á columna id_provincia da táboa provincia.

Táboa irpf

Contén a porcentaxe de imposto que hai que aplicarlle a cada empregado, en función do seu salario bruto, dependendo dos límites entre os que se atope.