Base de datos de traballadores

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

Enunciado

A base de datos traballadores serve para levar control dos empregados, departamentos e centros dunha empresa.

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 -- Creación da base de datos
 2 create database if not exists xxx_traballadores
 3 	character set utf8
 4 	collate utf8_spanish_ci;
 5 -- Activación da base de datos
 6 use xxx_traballadores ;
 7 -- Creación e carga de datos da táboa centro.
 8 -- Contén datos dos centros de traballo da empresa 
 9 create table  centro  (
10 	cenNumero  int(11) not null,
11 	cenNome  char(30) default null,
12 	cenEnderezo  char(30) default null,
13 	primary key (cenNumero),
14     key  cenNome  (cenNome)
15 ) engine=myisam ;
16 insert into centro  
17 	values (10,'SEDE CENTRAL','C/ ALCALA, 820-MADRID'),(20,'RELACION CON CLIENTES','C/ ATOCHA, 405-MADRID'),(30,'DELEGACION GALICIA','C/ MAIOR, 27-LUGO');
18 -- Creación e carga de datos da táboa departamento.
19 -- Contén información dos departamentos da empresa
20  create table  departamento  (
21 	depNumero  int(11) not null,
22 	depNome  char(20) default null,   
23 	depDirector  int(11) not null,
24 	deptipoDirector  char(1) default null,
25 	depPresuposto  decimal(9,2) default null,
26 	depDepende  int(11) default null comment 'número de departamento do que depende',
27 	depCentro  int(11) default null comment 'número do centro ao que pertenece este departamento',
28     depEmpregados smallint unsigned default null comment 'número de empregados que traballan no departamento', 
29 	primary key (depNumero),
30     key  depDirector  (depDirector),
31     key  depDepende  (depDepende),
32     key  depCentro  (depCentro),
33 	key  depNome  (depNome)
34 ) engine=myisam;
35 insert into  departamento (depNumero,depCentro,depDirector,deptipoDirector,depPresuposto,depDepende,depNome)
36 	values (122,30,350,'F','60000.00',120,'PROCESO DE DATOS'),(121,10,110,'P','200000.00',120,'PERSOAL'),(120,10,150,'P','30000.00',100,'ORGANIZACION'),(112,20,270,'F','90000.00',110,'SECTOR SERVICIOS'),(111,20,400,'P','111000.00',110,'SECTOR INDUSTRIAL'),(110,20,180,'P','15000.00',100,'DIRECCION COMERCIAL'),(130,10,310,'P','20000.00',100,'FINANZAS'),(200,20,600,'F','80000.00',100,'TRANSPORTES'),(100,10,260,'P','120000.00',null,'DIRECION XERAL');
37 -- Creación e carga de datos da táboa empregado.
38 -- Contén información dos traballadores da empresa
39 create table  empregado  (
40 	empNumero  int(11) not null auto_increment,
41 	empDepartamento  int(11) not null comment 'número de departamento no que traballa o empregado',
42 	empExtension smallint(6) not null comment 'extensión telefónica para o traballador',
43 	empDataNacemento  date default null,
44 	empDataIngreso  date default null comment 'data de ingreso na empresa',
45 	empSalario  decimal(6,2) default null,
46 	empComision  decimal(6,2) default null,
47 	empFillos  smallint(6) default null comment 'número de fillos que ten o traballador',
48 	empNome  char(20) not null,  
49 	primary key (empNumero),
50 	key  empDepartamento  (empDepartamento),
51 	key  empNome  (empNome)
52 ) engine=myisam;
53 insert into  empregado ()
54 	values (510,110,550,'1953-03-12','1996-11-01','2000.00',null,1,'CAMPOS, ROMULO'),(500,111,750,'1975-08-17','2001-01-01','2000.00','100.00',0,'VAZQUEZ, HONORIA'),(490,112,880,'1984-04-15','2010-01-01','1800.00','100.00',0,'TORRES, HORACIO'),(480,111,760,'1955-02-11','1986-02-28','800.00','100.00',1,'PINO, DIANA'),(450,112,880,'1989-08-29','2014-02-28','600.00','100.00',0,'PEREZ, SABINA'),(440,111,760,'1980-08-04','2013-02-28','650.00','100.00',0,'DURAN, LIVIA'),(430,122,650,'1957-09-03','1988-11-19','500.00',null,1,'MORA, VALERIANA'),(420,130,450,'1955-08-30','1988-11-19','700.00',null,0,'FIERRO, CLAUDIA'),(410,122,660,'1956-05-23','2001-10-13','1750.00',null,0,'LOPEZ, AZUCENA'),(400,111,780,'1957-06-27','1987-11-01','2700.00',null,0,'LARA, LUCRECIA'),(390,110,500,'1956-12-29','1999-10-08','2150.00',null,1,'MORAN, CARMEN'),(380,112,880,'1955-02-06','1990-01-01','1800.00',null,0,'MARTIN, MICAELA'),(370,121,360,'1957-04-30','1987-01-20','1900.00',null,1,'RUIZ, FABIOLA'),(360,111,750,'1968-09-06','2002-10-10','2500.00','100.00',2,'LARA, DORINDA'),(350,122,610,'1959-02-10','1984-09-10','2250.00',null,1,'CAMPS, AURELIO'),(330,112,850,'1958-06-28','1992-03-01','800.00','90.00',0,'DIEZ, AMELIA'),(320,122,620,'1957-11-03','1978-02-05','1100.00',null,2,'SANZ, CORNELIO'),(310,130,480,'1956-09-29','2013-01-15','2100.00',null,0,'GARCIA, AUGUSTO'),(290,120,910,'1957-10-08','1995-02-14','1200.00',null,3,'GIL, GLORIA'),(285,122,620,'1959-09-03','1999-02-15','550.50',null,0,'POLO, OTILIA'),(280,130,410,'1958-08-20','1988-10-08','600.60',null,5,'FLOR, DOROTEA'),(270,112,800,'1955-03-30','1987-09-10','1900.00','80.00',3,'GARCIA, OCTAVIO'),(260,100,220,'1954-10-11','1992-07-12','3600.00',null,6,'LOPEZ, ANTONIO'),(250,100,250,'1956-09-04','1987-03-01','1550.50',null,0,'ALBA, ADRIANA'),(240,111,760,'1988-01-05','2014-02-24','800.25','100.00',3,'SANZ, LAVINIA'),(210,100,200,'1956-08-07','1995-01-22','1000.60',null,2,'GALVEZ, PILAR'),(190,121,350,'1957-03-21','1985-02-11','610.10',null,4,'VEIGA, JULIANA'),(180,110,508,'1959-08-26','1996-03-18','2200.00','50.00',2,'PEREZ, MARCOS'),(160,111,740,'1959-05-17','2012-11-11','1550.00','110.00',2,'AGUIRRE, AUREO'),(150,120,340,'1960-06-18','2000-01-15','2200.00',null,0,'PEREZ, JULIO'),(130,112,810,'1961-07-19','1996-02-01','1500.00','110.00',2,'TEROL, LUCIANO'),(120,112,840,'1950-04-17','1968-10-01','1200.00','110.00',1,'LASA, MARIO'),(110,121,350,'1951-09-19','2003-02-15','2000.00',null,3,'PONS, CESAR'),(550,111,780,'1952-11-19','1988-01-21','680.00','120.00',0,'SANTOS,SANCHO'),(600,200,500,'1954-03-21','1984-01-15','1500.00','100.00',2,'RUIZ, ANTONIO'),(650,111,880,'1953-11-19','1988-11-08','1200.00','120.00',2,'TELLO,LUIS'),(652,200,520,'1985-03-21','2001-01-15','900.00','100.00',1,'ARANGO, BERTA'),(653,200,112,'1979-10-11','2010-11-11','1100.00',null,0,'FERNANDEZ, CARMEN'),(654,120,88,'1989-08-14','2014-05-15','900.00','50.00',0,'SANCHEZ, MARCOS');

Para reflexionar

Sentenzas e modelo E-R

Revisa as sentenzas do script:

  • comprendes o seu funcionamento? Podes indagar sobre aquelas que non comprendas
  • pensa como pode ser o modelo E-R que esboza ese script

Relacional e descripción

A base de datos está formada por un grupo de táboas, relacionadas entre si, tal e como se mostra no seguinte grafo relacional e se describe a continuación.

Grafo relacional de base de datos traballadores

Táboa centro
Nome columna Tipo Null Clave Observacións
cenNumero int Non Primaria Número co que se identifica.
cenNome char(30) Índice Nome.
cenEnderezo char(30) Enderezo.
Táboa empregado
Nome columna Tipo Null Clave Observacións
empNumero int Non Primaria Número co que se identifica.
empDepartamento int Non Índice Número do departamento no que traballa.
empExtension smallint Non Extensión telefónica para o empregado.
Pode compartirse entre empregados de diferentes departamentos.
empDataNacemento date Data de nacemento.
empDataIngreso date Data de ingreso na empresa.
empSalario decimal(6,2) Salario mensual en euros.
empComision decimal(6,2) Comisión mensual.
empFillos smallint Número de fillos.
empNome char(20) Non Índice Nome do empregado coa forma: primeiro apelido, nome.
Táboa departamento
Nome columna Tipo Null Clave Observacións
depNumero int Non Primaria Número co que se identifica.
depNome char(20) Índice Nome.
depDirector int Non Índice Número do empregado director do departamento.
deptipoDirector char(1) Tipo de directo: P (en propiedade, é dicir, titular), F (en funcións).
depPresuposto decimal(9,2) Cantidade en euros de presuposto anual.
depDepende int Índice Número do departamento do que depende.
depCentro int Índice Número do centro ao que pertence.
depEmpregados smallint unsigned Número de empregados que traballan no departamento.

Táboas non transaccionais

As táboas son MyIsam (non transaccionais) e por tanto non teñen definidas claves foráneas. Investiga:

  • que son as táboas non transaccionais
  • como funciona o motor MyISAM? cal é a sua principal ventaxa? cal é o seu principal inconvinte? por qué motor está sendo maioritariamente reemplzado en versións de MySQL posteriores á 5.5?

Para continuar

Podes facer as tarefas que se indican na seguinte unidade sobre esta base de datos, na Práctica DML sobre a base de datos traballadores

Créditos e referencias