Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Tallermodeloentidadrelacion 120511235841 Phpapp02
Tallermodeloentidadrelacion 120511235841 Phpapp02
1
TALLER DE BASE DE DATOS
2
TABLA DE CONTENIDOS
Introducción…………………………………………………………… pág. 4
3
INTRODUCCIÓN
4
JUSTIFICACION
Este trabajo se realizo con el fin de analizar la creación de las base de datos
desde su análisis hasta la creación del el Script en MYSQL. Teniendo en
cuenta que para el diseño de base de datos es fundamental tener el modelo
relacional y el diccionario de datos de cada una de las tablas de cada base de
datos.
5
OBJETIVO GENERAL
6
OBJETIVOS ESPECÍFICOS
7
TALLER N° 1
EJERCICIO N° 1
"Se desean registrar todas las personas que tienen un vehículo. Es necesario
guardar los datos personales de cada persona (nombre, apellidos, dirección,
población, teléfono y DNI).
Se desea llevar también un registro de las multas que se aplican. Cada multa tendrá
asignado un número de referencia correlativo. Además, deberá registrarse la fecha,
hora, lugar de infracción e importe de la misma. Una multa solo se aplicará a un
conductor e involucra a un solo vehículo."
8
Figura 1: modelo entidad relacional
9
Figura 2: Modelo Relacional
10
EJERCICIO N°2.
Se trata de realizar el diseño de la base de datos en el modelo E/R para una cadena
de hoteles.
"Cada hotel (del que interesa almacenar su nombre, dirección, teléfono, año de
construcción, etc.) se encuentra clasificado obligatoriamente en una categoría (por
ejemplo, tres estrellas) pudiendo bajar o aumentar de categoría.
Cada categoría tiene asociada diversas informaciones, como, por ejemplo, el tipo
de IVA que le corresponde y la descripción.
11
Figura 3: modelo entidad relacional
12
Figura 4: Modelo Relacional
13
EJERCICIO 3.
La empresa tiene una serie de empleados. Cada empleado tiene un teléfono, fecha
de alta en la empresa, NIF y nombre. De cada empleado también interesa saber el
número de hijos que tiene y el salario de cada empleado.
A esta empresa también le interesa tener guardada información sobre los hijos de
los empleados. Cada hijo de un empleado tendrá un código, nombre y fecha de
nacimiento.
14
15
16
TALLER N°2
EJERCICIO 1.
Una agencia de viajes desea informatizar toda la gestión de los viajeros que acuden
a la agencia y los viajes que estos realizan. Tras ponernos en contacto con la
agencia, ésta nos proporciona la siguiente información.
"La agencia desea guardar la siguiente información de los viajeros: dni, nombre,
dirección y teléfono.
De cada uno de los viajes que maneja la agencia interesa guardar el código de viaje,
número de plazas, fecha en la que se realiza el viaje y otros datos. Un viajero puede
realizar tantos viajes como desee con la agencia. Un viaje determinado sólo puede
ser cubierto por un viajero.
Cada viaje realizado tiene un destino y un lugar de origen. De cada uno de ellos se
quiere almacenar el código, nombre y otros datos que puedan ser de interés. Un
viaje tiene un único lugar de destino y un único lugar de origen".
17
18
19
20
21
EJERCICIO 2.
Los coches que el concesionario vende pueden ser nuevos o usados (de segunda
mano). De los coches nuevos interesa saber el número de unidades que hay en el
concesionario. De los coches viejos interesa el número de kilómetros que lleva
recorridos.
22
23
24
25
26
27
EJERCICIO 3.
Cada aparato electrónico viene determinado por un Código único y una descripción.
Además cada aparato corresponde a un tipo de electrodomésticos (a lo sumo).
Los componentes son las piezas que forman el aparato. Vienen dados por un
nombre (por ejemplo transformador) y unas especificaciones (un campo de texto).
Cada aparato puede llevar cualquier cantidad de componentes. Interesa saber para
cada aparato que componentes lleva y que fabricante suministra cada componente.
Un aparato puede llevar muchas unidades de un mismo componente (interesa saber
cuántas), pero en este caso todas estarán suministradas por el mismo fabricante y
con un mismo precio.
28
29
30
31
32
33
EJERCICIO 4.
a. Una persona puede comprar una o muchas casas, Una casa debe ser propiedad
de una sola persona.
b. Un cliente debe comprar uno o muchos productos, Un producto debe ser
comprado por un cliente.
c. Un proveedor puede proveer uno o más productos, Un producto debe ser provisto
por uno o más proveedores.
d. Un empleado puede estar a cargo de uno o muchos empleados, Un empleado
debe ser subordinado de un empleado.
e. Un investigador puede hacer muchas observaciones, Una observación debe ser
hecha por un investigador.
f. Un territorio puede pertenecer a una comunidad, Una comunidad debe habitar en
un territorio.
g. Una hembra puede ser la madre de muchos chimpancés. Un chimpancé debe ser
hijo de una hembra.
h. Un libro puede ser escrito por uno o muchos autores. Un autor puede escribir
muchos libros.
i. Un estudiante está matriculado en muchos cursos. En un curso hay muchos
estudiantes matriculados.
j. Una base de datos debe contener información relativa a las ventas de los
productos de una cierta compañía. Cada agente de la compañía es responsable de
las ventas en una o más áreas. Cada área tiene uno o más agentes como
responsables de las ventas que se realicen en ella. Cada agente es responsable
de la venta de uno o más productos y cada producto tiene uno o más agentes
responsables de su venta. Un producto se vende en todas las áreas y en un área
se pueden vender todos los productos.
34
35
36
37
38
39
40
41
42
43
EJERCICIO 5.
La cooperativa ‘Jonh F. Kennedy’ tiene como objetivo prestar dinero a sus socios.
Para ello tiene diferentes modalidades de préstamo (vivienda, vehículo, estudio,
electrodomésticos...), cada modalidad tiene un plazo máximo estipulado y una tasa
de interés definida. Los socios pueden tener varios préstamos a la vez y para cada
uno la cooperativa registra los siguientes datos:
Número del préstamo, fecha de inicio, el valor del préstamo, la cuota mensual y el
plazo en meses el cual no puede sobrepasar el plazo máximo estipulado.
Cada socio para adquirir un préstamo debe estar trabajando en una empresa, por
lo tanto la cooperativa guarda no sólo los datos del socio sino también los de la
empresa en la cual trabaja ya que se lleva estadísticas sobre las empresas que más
socios tienen asociados a la cooperativa.
44
45
46
47
48
EJERCICIO 6.
Se desea diseñar una base de datos para una comisaría de policía que recoja la
información acerca de su funcionamiento. Se consideran los siguientes
supuestos:
En la comisaría trabajan una serie de policías que tienen una cedula, nombre y
categoría, ellos pueden desempeñar funciones distintas como administrativas,
agentes etc.
Cada policía tiene un único jefe aunque un policía puede ser jefe de varios.
En la comisaría existe un arsenal de armas. Cada arma está identificada por un
código único pertenece a una clase y tiene un nombre determinado.
Cada policía puede utilizar una o varias armas en un momento determinado. Es
importante conocer el grado de habilidad (puntuación de 1 a 10) de cada policía con
cada una de las armas que utiliza.
Un delincuente tiene una identificación, nombre y teléfono es arrestado por uno o
más policías.
A cada delincuente que permanece en la comisaría se le encierra en un calabozo
que tiene un código y una ubicación.
En el calabozo pueden estar encerrados varios delincuentes.
Los delincuentes están involucrados en casos de los que se conocen el código del
caso y el juzgado que los instruye); Interesa saber cuál es principal cargo (robo,
homicidio etc.) que se le atribuye a un delincuente en cada caso que esté
involucrado.
49
Uno o varios policías investigan cada uno de los casos
50
51
52
53
54
TALLER N°3
EJERCICIO N°1
Obtén el modelo ERE, relacional: Queremos hacer una aplicación para gestionar un
pequeño aeropuerto. En este aeropuerto tendremos aviones identificados por un
número, cada avión puede ser de un tipo diferente identificado por un modelo, su
peso y su capacidad.
Los aviones los guardamos en hangares que se identifican por un número, una
capacidad y una localización.
En este aeropuerto tenemos tres tipos de personas (nss, dirección y teléfono): piloto
(núm. licencia, restricciones), empleados (salario y turno) y propietarios. Cada piloto
puede volar en distintos tipos de aviones, así mismo, los empleados trabajan para
ciertos tipos de aviones. Los aviones son posesión de uno o varios propietarios
interesándonos almacenar desde qué fecha lo poseen.
55
56
57
58
CREATE TABLE PROPIETARIO(COD_INTER INT NOT NULL AUTO_INCREMENT, FECHA_QUE_LO_POSEE DATE NOT
NULL, PRIMARY KEY(COD_INTER))ENGINE =INNODN;
CREATE TABLE HANGAR(COD_INTERNO INT NOT NULL AUTO_INCREMENT, CAPACIDAD VARCHAR(10) NOT NULL,
LOCACION VARCHAR(10) NOT NULL, PRIMARY KEY(COD_INTERNO))ENGINE =INNODN;
CREATE TABLE TIPO_AVION(COD_INT INT NOT NULL AUTO_INCREMENT, PESO VARCHAR(1000) NOT NULL,
MODELO VARCHAR(100) NOT NULL, PRIMARY KEY(COD_INT))ENGINE =INNODN;
CREATE TABLE PERSONAS(NSS INT NOT NULL, TEL VARCHAR(12) NOT NULL, DIRECCION VARCHAR(30) NOT
NULL, PRIMARY KEY(NSS))ENGINE =INNODN;
CREATE TABLE AVION(N_AVION VARCHAR(100) NOT NULL, COD_INT INT NOT NULL AUTO_INCREMENT ,
COD_INTERNO INT NOT NULL AUTO_INCREMENT, COLOR VARCHAR(30) NOT NULL, PRIMARY KEY
(N_AVION),FOREIGN KEY(COD_INT)REFERENCES TIPO_AVION(COD_INT),FOREIGN KEY(COD_INTERNO)
REFERENCES HANGAR(COD_INTERNO))ENGINE =INNODN;
CREATE TABLE PILOTO(NSS INT, N_LICENCIA VARCHAR(100) NOT NULL, RESTRICIONES VARCHAR(100) NOT
NULL, PRIMARY KEY(NSS),FOREIGN KEY(NSS)REFERENCES PERSONAS(NSS))ENGINE =INNODN;
CREATE TABLE EMPLEADOS(NSS INT, SALARIO MONEY NOT NULL, TURNO DATETIME NOT NULL, PRIMARY KEY
(NSS),FOREIGN KEY(NSS)REFERENCES PERSONAS(NSS))ENGINE =INNODN;
CREATE TABLE TRABAJAR(NSS INT NOT NULL, N_AVION VARCHAR(100) NOT NULL, PRIMARY KEY(NSS,N_AVION),
FOREIGN KEY(NSS)REFERENCES PERSONAS(NSS),FOREIGN KEY(N_AVION)REFERENCES AVION(N_AVION))ENGINE
INNODN;
CREATE TABLE PROPIEDAD_DE(COD_INTER INT NOT NULL AUTO_INCREMENT, N_AVION VARCHAR(100) NOT
NULL, PRIMARY KEY(COD_INTER,N_AVION),FOREIGN KEY(COD_INTER)REFERENCES PROPIETARIO(COD_INTER
),FOREIGN KEY(N_AVION)REFERENCES AVION(N_AVION)) ENGINE =INNODN;
EJERCICIO 2.
59
aquel personal que realice funciones de directivo tendrá a su cargo personal.
Interesa conocer qué directivo tiene a su cargo qué personal. Hay que tener en
cuenta que un directivo puede tener a su cargo a otros directivos y que cada persona
de la empresa sólo tiene un directivo como jefe directo. En cuanto al personal que
aparece como plantilla, se almacenará además la especialidad en la que ejercerá
sus funciones. Los directivos siempre tendrán personal a su cargo y todo empleado
(ya sea de plantilla o directivo) tendrá siempre jefe. Por último, el personal que
realiza funciones de directivo no aparecerá nunca como personal de plantilla y al
contrario.
En cuanto a los proyectos desarrollados por la empresa, se almacenará un código
de proyecto, un nombre y el esfuerzo estimado en personas-mes para realizarlo. Lo
proyectos son de dos tipos: de desarrollo o estratégicos, sin embargo, en algunos
casos, los proyectos de desarrollo pueden ser además, estratégicos. Si un proyecto
es estratégico, se almacenará además el plazo de ejecución estimado y si es de
desarrollo, el presupuesto.
Cada proyecto es gestionado por un directivo de la empresa siempre y cuando el
proyecto sea estratégico. No puede haber proyectos de este tipo sin directivo
asignado. Esto no significa que todo directivo tenga un proyecto bajo su dirección.
En caso que el proyecto sea de desarrollo, se almacenará qué personal de plantilla
participa en dicho proyecto y el tanto por ciento de dedicación. Una persona de
plantilla puede estar asignada a ninguno o muchos proyectos.
Respecto a los servicios que se prestan a otras empresas, la política de esta
empresa en considerar a parte del personal de plantilla como un servicio lo mismo
se puede decir de los proyectos de desarrollo: algunos son servicios prestados a
otras empresas. De estos servicios se almacenará el código de servicio y el precio
por mes. También se almacenará la empresa para la que se ofrece el servicio. Hay
que tener en cuenta que un servicio (ya sea personal de plantilla o un proyecto de
desarrollo) siempre estará asignado a una única empresa y que una empresa
contrata uno o muchos servicios. De las empresas cliente interesa conocer el
nombre, nit, dirección, teléfono.
EJERCICIO 3.
60
categorías profesionales en las que clasifica a los albañiles son Maestro y Peón,
pudiendo haber otras categorías. Si un albañil tiene la categoría de Maestro
almacena el dni y el sueldo. Si es Peón Albañil almacena, el dni y el sueldo en el
caso de ser de nacionalidad española, y el país de origen y sueldo si es extranjero.
Obviamente un albañil sólo puede pertenecer a una categoría.
Los albañiles en plantilla están agrupados en cuadrillas propias de la empresa (un
albañil debe encontrarse en una y solo una cuadrilla) de las que se almacena un
código interno, nombre (que también la identifica) y localidad principal de actuación.
61
62
63
64
65
CREATE TABLE CUADRILLA( CODIGO_INTERNO VARCHAR(10) NOT NULL, NOMBRE CHAR(20)NOT NULL,
LOCALIZACION_PRINCIPAL CHAR(12)NOT NULL, PRIMARY KEY( CODIGO_INTERNO ) )ENGINE= INNODB;
CREATE TABLE ALBAÑILES ( NUM_SEGURIDAD_SOCIAL VARCHAR (12) NOT NULL, CODIGO_INTERNO CHAR(10)
NOT NULL, NOMBRE CHAR(10)NOT NULL, APELLIDOS CHAR(10)NOT NULL, FECHA_NACIMIENTO DATE NOT NULL,
TELEFONOS VARCHAR (12) NOT NULL, PRIMARY KEY (NUM_SEGURIDAD_SOCIAL ), FOREIGN KEY (
CODIGO_INTERNO) REFERENCES CUADRILLA ( CODIGO_INTERNO ) )ENGINE= INNODB;
CREATE TABLE MAESTRO( NUM_SEGURIDAD_SOCIAL VARCHAR (12)NOT NULL, DNI CHAR(20)NOT NULL,
SUELDO CHAR(20)NOT NULL, PRIMARY KEY(NUM_SEGURIDAD_SOCIAL ), FOREIGN KEY (
NUM_SEGURIDAD_SOCIAL ) REFERENCES ALBAÑILES(NUM_SEGURIDAD_SOCIAL))ENGINE= INNODB;
CREATE TABLE PEON(NUM_SEGURIDAD_SOCIAL VARCHAR (12)NOT NULL, DNI VARCHAR(10) NOT NULL,
SUELDO MONEY NOT NULL, NACIONALIDAD VARCHAR(30) NOT NULL, PRIMARY KEY (NUM_SEGURIDAD_SOCIAL
),FOREIGN KEY(NUM_SEGURIDAD_SOCIAL) REFERENCES ALBAÑILES ( NUM_SEGURIDAD_SOCIAL ) ) ENGINE=
INNODB;
EJERCICIO 4.
66
(habitual, ocasional...) y queremos almacenar para cada tipo de usuarios que
descuentos se aplican en las gafas de sol.
67
68
CREATE TABLE PRODUCTOS_DE_LOS_OJITOS(COD_PRODUCTO INT NOT NULLAUTO_INCREMENT, PRECIO MONEY
NOT NULL, MARCA VARCHAR(100) OT NULL, PRIMARY KEY(COD_PRODUCTO)) ENGINE =INNODB;
CREATE TABLE CLIENTES(CODIGO INT NOT NULL AUTO_INCREMENT, NOMBRE VARCHAR(30) NOT NULL,
TELEFONO VARCHAR(12) NULL, PRIMARY KEY(CODIGO)) ENGINE = INNODB;
CREATE TABLE LENTES_DE_CONTACTO(COD_PRODUCTO INT NOT NULL AUTO_INCREMENT, TIPO CHAR(50) NOT
NULL, COLOR VARCHAR(30) NOT NULL, PRODUCTO_DE_LIMPIEZA_PARA_LENTES VARCHAR(50) NOT NULL,
GRADUACION VARCHAR(50) NOT NUL, PRIMARY KEY(COD_PRODUCTO),FOREIGN KEY(COD_PRODUCTO)
REFERENCES PRODUCTOS_DE_LOS_OJITOS(COD_PRODUCTO))ENGINE =INNODB;
CREATE TABLE GAFAS(COD_PRODUCTO INT NOT NULL AUTO_INCREMENT, MODELO VARCHAR(4) NOT NULL,
69
MATERIAL_DE_FABRICACION VARCHAR(100) NOT NULL, PRIMARY KEY(COD_PRODUCTO),FOREIGN KEY(
COD_PRODUCTO)REFERENCES PRODUCTOS_DE_LOS_OJITOS(COD_PRODUCTO)) ENGINE =INNNODB;
CREATE TABLE HABITUALES(CODIGO INT NOT NULL AUTO_INCREMENT, DES_DEGAFAS INT NOT NULL, PRIMARY
KEY(CODIGO),FOREIGN KEY(CODIGO)REFERENCES CLIENTES(CODIGO)) ENGINE =INNODB;
CREATE TABLE OCASIONAL(CODIGO INT NOT NULL AUTO_INCREMENT, DES_DE_GAFAS INT NOT NULL, PRIMARY
KEY(CODIGO),FOREIGN KEY(CODIGO)REFERENCES CLIENTES(CODIGO))ENGINE=INNODB;
CREATE TABLE COMPRAR(CODIGO INT NOT NULL AUTO_INCREMENT, COD_PRODUCTO INT NOT NULL
AUTO_INCREMENT, PRIMARY KEY(CODIGO,COD_PRODUCTO),FOREIGN KEY(CODIGO)REFERENCES CLIENTES(
CODIGO),FOREIGN KEY(COD_PRODUCTO)REFERENCES PRODUCTOS_DE_LOS_OJITOS(COD_PRODUCTO))
ENGINE=INNODB;
70