SlideShare ist ein Scribd-Unternehmen logo
1 von 90
1
PROYECTO

                “MER, MERE, MYSQL”




            MARÍA ISABEL VARGAS NAVAS




“INSTITUTO TOLIMENSE DE FORMACIÓN TÉCNICA PROFESIONAL”

   FACULTAD INGENIERÍA Y CIENCIAS AGROINDUSTRIALES

                    BASE DE DATOS

                SISTEMA Y COMPUTACIÓN

                SEMESTRE Ill NOCTURNO

                   ESPINAL- TOLIMA

                         2012




                          2
PROYECTO

                “MER, MERE, MYSQL”




            MARÍA ISABEL VARGAS NAVAS




                       Docente
           ING. NAYIBE SORAYA SANCHEZ LEON




“INSTITUTO TOLIMENSE DE FORMACIÓN TÉCNICA PROFESIONAL”

   FACULTAD INGENIERÍA Y CIENCIAS AGROINDUSTRIALES

                    BASE DE DATOS

                SISTEMA Y COMPUTACIÓN

                SEMESTRE Ill NOCTURNO

                   ESPINAL- TOLIMA

                         2012




                          3
TABLA DE CONTENIDO

Introducción
Objetivos
Justificación
Metodología
Marco teórico (MER, MERE)

   Enunciado del problema.
   Análisis del problema.
   Diseño del problema.

        Diagrama Entidad Relación.
        Modelo Relacional .

   Script MYSQL

Continuación

   Diccionario de datos




                           4
INRODUCCIÓN
El presente informe tiene como objetivo central, describir en forma
sucinta el proceso que se debiera seguir para desarrollar una
recopilación de informe “BASE DE DATOS “, mostrando cada uno de
los pasos que intervienen en dicho proceso.

Aquí se encontrará un desglose de cada etapa de una recopilación,
Bases de datos nació bajo la necesidad de organizar y crear sistemas
de información a cualquier tipo de organización, para poder en
cualquier momento solucionar los problemas que se le presenten con
ayuda de la información que esta nos puede suministrar.

El presente trabajo está enfocado en la aplicación de los conceptos
vistos en la asignatura de base de datos durante el presente
semestre.

Para el desarrollo de este trabajo he recopilado todos los talleres de
dicho tema en el cual se suministrara más información explicada por la
Docente.




                                  5
OBJETIVOS


Aplicar los conceptos vistos en bases de datos diseñando       el
MER, MERE, DICCIONARIOS DE DATOS Y mysql .



Dar a conocer lo importante que es crear o diseñar una base de
datos. es una herramienta fundamental que tiene gran utilidad en
nuestro                      mundo                        actual.

Distinguir como son las relaciones, y por medio de ella nos
ayuda a terminar el proceso que deseemos.

Ver que la persona pueda comprender, interpretar y distinguir las
ventajas de dicho tema.




                             6
JUSTIFICACIÓN
Hoy en día las SGBD rigen nuestra vida y nos plantean una solución a
cualquier tipo problema que se nos presenta en la vida.

Pero la ciencia debe tener tanto coherencia como cohesión al
momento de divulgar la información que nos suministra, esto es una
buena administración de la información.

Base de datos nos permite crear una información organizada lo cual
nos permite la coherencia y cohesión buscada, no solo en las ciencias
sino también en los procesos administrativos como es el caso de este
trabajo.




                                  7
METODOLOGÍA




Primero que todo antes de empezar este desarrollo recopile
información suministrada por el docente, documentos, artículos de
internet para adquirir más conocimiento acerca de los conceptos de
base datos. Por último organicé mis ideas y las plasmé en este
trabajo.




                                8
ENUNCIADO DEL PROBLEMA
EJERCICIOS 1 “MER ”
Imagina que una agencia de seguros de tu municipio te ha solicitado
una base de datos mediante la cual llevar un control de los accidentes
y las multas. Tras una serie de entrevistas, has tomado las siguientes
notas:

"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).

De cada vehículo se desea almacenar la matrícula, la marca y el
modelo. Una persona puede tener varios vehículos, y puede darse el
caso de un vehículo pertenezca a varias personas a la vez.

También se desea incorporar la información destinada a gestionar los
accidentes del municipio. Cada accidente posee un número de
referencia correlativo según orden de entrada a la base de datos. Se
desea conocer la fecha, lugar y hora en que ha tenido lugar cada
accidente. Se debe tener en cuenta que un accidente puede involucrar
a varias personas y varios vehículos.

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."

Realiza el modelo E-R, pásalo al modelo relacional, diccionario de
datos y script mysql.




                                   9
ANALISIS DEL PROBLEMA


PRIMARY KEY = SE IDENTIFICARA DEL COLOR (KP)

FOREIGN KEY = SE IDENTIFICARA DEL COLOR (KF)



PERSONAS (dni, nombre, apellidos, dirección, teléfono, ciudad, tipo
de persona)

VEHICULOS (matricula, marca. Modelo)

MULTAS (consecutivo multa, fecha, hora, lugar infracción, dni)




                                  10
DISEÑO DEL PROBLEMA
DIAGRAMA ENTIDAD RELACION




                        11
MODELO RELACIONAL




       12
SCRIPT DE MYSQL
Mysql>CRÉATE DATABASE ACCIDENTES;

Mysql>USE ACCIDENTES;

Mysql>CREATE TABLE VEHÍCULOS (MATRICULA VARCHAR (10)
NOT NULL, MARCA VARCHAR(30)NOT NULL, MODELO VARCHAR
(40), PRIMARY KEY(MATRICULA ) )ENGINE=INNODB;

Mysql>CREATE TABLE PERSONAS( DNI INT(15)NOT NULL,
NOMBRE VARCHAR (15)NOT NULL,DIRECCIÓN VARCHAR
(10)NOT   NULL, CIUDAD   VARCHAR   (15)  NOT    NULL,
TIPODEPERSONAS TEXT, APELLIDOS VARCHAR (15) NOT NULL,
TELÉFONO    INT  (12)NOT   NULL,  PRIMARY    KEY(DNI)
)EGINE=INNODB;

Mysql>CREATE TABLE MULTAS (CONCECUTIVODEMULTAS INT
(5) NOT NULL,DNI INT(15) NOT NULL , FECHAYHORA DATETIME,
LUGARINFRACION                           VARCHAR(250)NOT
NULL,PRIMARYKEY(CONCECUTIVODEMULTAS)

ENGINE=INNODB;

MYSQL>ALTER TABLE ACCIDENTES ADD INDEX (DNI);

Mysql> ALTER TABLE ACCIDENTS ADD FOREIGN KEY

(DNI)REFERENCES ACCIDENTES.PERSONAS (DNI) ON DELETE
NOT ACTION ON UPDATE CASCADE;

Mysql>CREATE TABLE POSSER( TARJETA_DE_PROPIEDAD
VARCHAR(14)                 NOT                  NULL,
CIUDAD_DE_EXPEDICION VARCHAR (15) NOT NULL, MATRICULA
VARCHAR (10) NOT NULL, DNI INT (15) NOT NULL, PRIMARY




                           13
KEY(TARJETA_DE_PROPIEDAD,                       CIUDAD_DE_EXPEDICION,
MATRICULA, DNI )ENGINE= INNODB;

Mysql>ALTER TABLE ACCIDENTES ADD INDEX (DNI);

Mysql> ALTER TABLE ACCIDENTES ADD FOREIGN KEY (DNI)
REFERENCES ACCIDENTES.PERSONAS (DNI) ON DELETE NOT
ACTION ON UPDATE CASCADE;

Mysql>ALTER TABLE ACCIDENTES ADD INDEX (MATRICULA);

Mysql>  ALTER    TABLE   ACCIDENTES    ADD    FOREIGN
KEY(MATRICULA     )REFERENCES     ACCIDENTS.VEHICULOS
(MATRICULA) ON DELETE NOT ACTION ON UPDATE CASCADE;

Mysql> CREATE TABLE INVOLUCRAR (HORA DATETIME,
MATRICULA VARCHAR (10) NOT NULL, DNI INT (15) NOT NULL,
PRIMARY KEY (HORA, MATRICULA, DNI),

Mysql>ALTER TABLE ACCIDENTES ADD INDEX (MATRICULA);
Mysql> ALTER TABLE ACCIDENTES ADD FOREIGN KEY(MATRICULA )REFERENCES
ACCIDENTES.VEHICULOS (MATRICULA) ON DELETE NOT ACTION ON UPDATE CASCADE;

Mysql>ALTER TABLE ACCIDENTES ADD INDEX (DNI);

Mysql> ALTER TABLE ACCIDENTES ADD FOREIGN KEY              (DNI)REFERENCES
ACCIDENTES.PERSONAS (DNI) ON DELETE NOT ACTION ON UPDATE CASCADE;




                                      14
ENUNCIADO DEL PROBLEMA
EJERCICIO 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.

Los hoteles tiene diferentes clases de habitaciones (suites, dobles,
individuales, etc.), que se numeran de forma que se pueda identificar
fácilmente la planta en la que se encuentran. Así pues, de cada
habitación se desea guardar el código y el tipo de habitación.

Los particulares pueden realizar reservas de las habitaciones de los
hoteles. En la reserva de los particulares figurarán el nombre, la
dirección y el teléfono.

Las agencias de viaje también pueden realizar reservas de las
habitaciones. En caso de que la reserva la realiza una agencia de
viajes, se necesitarán los mismos datos que para los particulares,
además del nombre de la persona para quien la agencia de viajes está
realizando la reserva.

En los dos casos anteriores también se debe almacenar el precio de la
reserva, la fecha de inicio y la fecha de fin de la reserva".




                                 15
ANÁLISIS DEL PROBLEMA
HOTELES ( nit, nombre , dirección ,año de construcción)

CATEGORÍAS (nivel, IVA, descripción)

HABITACIONES (código, tipos de habitaciones)

PERSONAS (cedula, nombre, dirección, teléfono)

AGENCIA DE VIAJES ( nit a_v, nombre, dirección, teléfono ,ciudad)

RESERVAS (n° reserva, f. ingreso, f. salida , hora ingreso)




                                  16
DISEÑO DEL PROBLEMA
DIAGRAMA ENTIDAD RELACION




                        17
MODELO RELACIONAL




                    18
SCRIPT MYSQL
Mysql>CREATE DATABASE HOTELERA;

Mysql>USE HOTELERA

Mysql>CREATE TABLE CATEGORIA (NIVELVARCHAR (15) NOT NULL, IVA MONEY,
DESCRIPCION TEXT, PRIMARY KEY (NIVEL )) ENGINE=INNODB;

Mysql> CREATE TABLE PERSONAS(CEDULAINT(15)NOT NULL,NOMBRE VARCHAR(15) NOT
NULL, APELLIDOS VARCHAR(15) NOT NULL, DIRECCION VARCHAR(10)        NOT NULL,
TELEFONO INT (10) NOT NULL, PRIMARY KEY ( CEDULA ) ) ENGINE= INNODB ;

Mysql> CREATE TABLE AGENCIAS_DE_VIAJES(NIT_A_V INT (20) NOT NULL ,NOMBRE
VARCHAR(15) NOT NULL, DIRECCION VARCHAR(10)NOTNULL, TELEFONO INT (10) NOT
NULL,          CIUDAD     VARCHAR(15)   NOT     NULL,     PRIMARY     KEY
(NIT_A_V))ENGINE= INNODB;

Mysql> CREATE TABLE HOTELES (NIT INT (20) NOT NULL, NIVEL VARCHAR (15) NOT NULL,
NOMBRE    VARCHAR(15)   NOT    NULL,     DIRECCION    VARCHAR(14)   NOT    NULL,
AÑO_DE_CONSTRUCCION INT (4) NOT NULL, PRIMARY KEY( NIT)) ENGINE= INNODB;



Mysql>ALTER TABLE HOTELERA ADD INDEX (NIVEL);

Mysql> ALTER TABLE HOTELERA ADD FOREIGN KEY(NIVEL )REFERENCES
HOTELERA.CATEGORIA (NIVEL) ON DELETE NOT ACTION ON UPDATE CASCADE;



Mysql> CREATE TABLE HABITACION (CODIGO_HABITACION INT (4) NOT NULL,NIT INT (20)
NOT NULL, TIPOS_DE_HABITACIONES VARCHAR(16) NOT NULL, PRIMARY KEY(
CODIGO_HABITACION )) ENGINE= INNODB;

Mysql>ALTER TABLE HOTELERA ADD INDEX (NIT);

Mysql> ALTER TABLE HOTELERA ADD FOREIGN KEY(NIT )REFERENCES HOTELERA
.HOTELES (NIT) ON DELETE NOT ACTION ON UPDATE CASCADE;

Mysql> CREATE TABLE RESERVAS (NUMERO_RESERVAS INT(15)NOT NULL,              NIT INT
(15) NOT NULL, CEDULA INT (15) NOT NULL, NIT_A_V INT (20) NOT NULL, FECHA_INGRESO
DATETIME NOT NULL, FECHA_SALIDA DATETIME NOT NULL, HORA_INGRESO DATETIME
NOT NULL, PRIMARY KEY(          NUMERO_RESERVAS)) ENGINE= INNODB;

Mysql>ALTER TABLE HOTELERA ADD INDEX (NIT);




                                        19
Mysql> ALTER TABLE HOTELERA ADD FOREIGN KEY(NIT)REFERENCES HOTELERA
.HOTELES (NIT) ON DELETE NOT ACTION ON UPDATE CASCADE;



Mysql>ALTER TABLE HOTELERA ADD INDEX (CEDULA);

Mysql> ALTER TABLE HOTELERA ADD FOREIGN KEY(CEDULA)REFERENCES HOTELERA
.PERSONAS (CEDULA) ON DELETE NOT ACTION ON UPDATE CASCADE;

Mysql>ALTER TABLE HOTELERA ADD INDEX (NIT_A_V);

Mysql>ALTER         TABLE        HOTELERA           ADD           FOREIGN
KEY(NIT_A_V)REFERENCESHOTELERA.AGENCIAS_DE_VIAJES (NIT_A_V) ON DELETE NOT
ACTION ON UPDATE CASCADE;




                                      20
ENUNCIADO DEL PROBLEMA
EJERCICO 3



 "Se desea diseñar una base de datos para almacenar y gestionar la
información empleada por una empresa dedicada a la venta de
automóviles, teniendo en cuenta los siguientes aspectos:



La empresa dispone de una serie de coches para su venta. Se
necesita conocer la matrícula, marca y modelo, el color y el precio de
venta de cada coche. La marca es una entidad independiente, de la
cual se le tiene asignado un código y la descripción.



Los datos que interesa conocer de cada cliente son el NIT, nombre,
dirección, ciudad y número de teléfono: además, los clientes se
diferencian por un código interno de la empresa que se incrementa
automáticamente cuando un cliente se da de alta en ella. Un cliente
puede comprar tantos coches como desee a la empresa. Un coche
determinado solo puede ser comprado por un único cliente.




                                  21
ANÁLISIS DEL PROBLEMA
COCHE (matricula, modelo, color, pvc ,
MARCA (código, descripción)

CLIENTE (nit, nombre, dirección, ciudad , código cliente)




                                  22
DISEÑO DEL PROBLEMA
DIAGRAMA ENTIDAD RELACION




                        23
MODELO RELACIONAL




                    24
SCRIPT MYSQL

Mysql>CREATE DATABASE AUTOMOBILE;

Mysql>USE AUTOMOBILE;

Mysql>CREATE TABLE CLIENTES ( NIT_C INT (15) NOT NULL ,
                                                     NOMBRE VARCHAR(15)
NOT NULL, APELLIDOS VARCHAR(15) NOT NULL, DIRECCION VARCHAR(16) NOT NULL,
CIUDAD VARCHAR(15) NOT NULL, CODIGO_CLIENTE INT(15), PRIMARY KEY( NIT_C))
ENGINE=INNODB;

Mysql>CREATE TABLE MARCA (CODIGO_M INT (10) NOT NULL, DESCRIPCION TEXT NOT
NULL,   PRIMARY KEY (CODIGO_M)) ENGINE= INNODB;

Mysql>   CREATE TABLE COCHE (MATRICULA VARCHAR(10)NOT NULL, MODELO TEXT
NOT NULL, COLOR TEXT NOT NULL , PVC MONEY NOT NULL, PRIMARY KEY (MATRICULA))
ENGINE=INNODB;

Mysql>ALTER TABLE AUTOMOBILE ADD INDEX (NIT_C);

Mysql>   ALTER TABLE AUTOMOBILE ADD FOREIGN KEY(NIT_C)REFERENCES
AUTOMOBILE .CLIENTES (NIT_C) ON DELETE NOT ACTION ON UPDATE CASCADE;

Mysql>ALTER TABLE AUTOMOBILE ADD INDEX (CODIGO_M);

Mysql>   ALTER TABLE AUTOMOBILE ADD FOREIGN KEY(CODIGO_M)REFERENCES
AUTOMOBILE .MARCA (CODIGO_M) ON DELETE NOT ACTION ON UPDATE CASCADE ;




                                     25
ENUNCIADO DEL PROBLEMA
EJERCICIO 4

Se desea informatizar la gestión de una tienda informática llamada EL
OSITO FELIZ. La tienda dispone de una serie de productos que se
pueden vender a los clientes.

De cada producto informático se desea guardar el código, descripción,
precio y número de existencias. De cada cliente se desea guardar el
código, nombre, apellidos, dirección y número de teléfono.



Un cliente puede comprar varios productos en la tienda y un mismo
producto puede ser comprado por varios clientes. Cada vez que se
compre un artículo quedará registrada la compra en la base de datos
junto con la fecha en la que se ha comprado el artículo.

La tienda tiene contactos con varios proveedores que son los que
suministran los productos. Un mismo producto puede ser suministrado
por varios proveedores. De cada proveedor se desea guardar el
código, nombre, apellidos, dirección, provincia y número de teléfono".




                                  26
ANÁLISIS DEL PROBLEMA

PRODUCTO ( código_producto, descripción, precio, n°
existencia)

CLIENTES ( código_c, nombre, apellidos, dirección, teléfono)

PROVEEDORES      (cód._     proveedores,   nombre,   apellidos,
dirección, provincia, n_ teléfono)




                              27
DISEÑO DEL PROBLEMA

DIAGRAMA ENTIDAD RELACION




                        28
MODELO RELACIONAL




       29
SCRIPT MYSQL

mysql>CREATE DATABASE TIENDA;

mysql>USE TIENDA;

mysql> CREATE TABLE CLIENTE(CODIGO_C INT(10) NOT NULL,
NOMBRE VARCHAR(15) NOT NULL, APELLIDOS VARCHAR(15)
NOT NULL , DIRECCION VARCHAR(15) NOT NULL, TELEFONO
INT(10) NOT NULL, PRIMARY KEY( CODIGO_C) )ENGINE=INNODB;

mysql> CREATE TABLE PRODUCTO(CODIGO_PRODUCTO INT(10)
NOT NULL, DESCRIPCION VARCHAR(20)NOT NULL,   PRECIO
MONEY NOT NULL, NUMERO_EXITENCIAINT(10),PRIMARYKEY(
CODIGO_PRODUCTO))ENGINE=INNODB;

 mysql> CREATE TABLE PROVEDORES(CODIGO_PROVEDORES
INT(10)NOT NULL, NOMBRE VARCHAR(15) NOT NULL, APELLIDOS
VARCHAR(15) NOT NULL, DIRECCION VARCHAR(10)NOT NULL,
PROVINVIA VARCHAR(30)NOT NULL, NUMERO_TELEFONO
INT(10)NOTNULL,PRIMARYKEY(CODIGO_PROVEDORES))

ENGINE=INNODB;

mysql> CREATE TABLE COMPRAR(FECHA_COMPRA DATETIME
NOT NULL, CODIGO_C INT(10) NOT NULL, CODIGO_PRODUCTO
INT(10) NOT NULL,       PRIMARY KEY( FECHA_COMPRA,
CODIGO_C, CODIGO_PRODUCTO)ENGINE=INNODB;

mysql>ALTER TABLE TIENDA ADD INDEX (CODIGO_C);

mysql>ALTERTABLETIENDAADDFOREIGNKEY(CODIGO_C)REFER
ENCES TIENDA .CLIENTE (CODIGO_C) ON DELETE NOT ACTION
ON UPDATE CASCADE;

mysql>ALTER TABLE TIENDA ADD INDEX (CODIGO_PRODUCTO);




                           30
mysql>   ALTER   TABLE   TIENDA    ADD    FOREIGN
KEY(CODIGO_M)REFERENCES     TIENDA     .PRODUCTO
(CODIGO_PRODUCTO) ON DELETE NOT ACTION ON UPDATE
CASCADE;

mysql> CREATE TABLE DISTRIBUIR(CANTIDAD_PRODUCTO
INT(10) NOT NULL, CODIGO_PROVEDORES INT(10)NOT NULL,
PRIMARY     KEY(CANTIDAD_PRODUCTO,CODIGO_PRODUCTO,
CODIGO_PROVEDORES))ENGINE=INNODB;

mysql>ALTER TABLE TIENDA ADD INDEX (CODIGO_PRODUCTO);

mysql>   ALTER   TABLE   TIENDA    ADD    FOREIGN
KEY(CODIGO_M)REFERENCES     TIENDA     .PRODUCTO
(CODIGO_PRODUCTO) ON DELETE NOT ACTION ON UPDATE
CASCADE;

mysql>ALTER TABLE TIENDA ADD INDEX
(CODIGO_PROVEDORES);

mysql> ALTER TABLE TIENDA ADD FOREIGN KEY(PROVEDORES
)REFERENCES TIENDA .PROVEDORES ( CODIGO_PROVEDORES
) ON DELETE NOT ACTION ON UPDATE CASCADE;




                          31
ENUNCIADO DEL PROBLEMA

EJERCICIO 5



A partir del siguiente enunciado, diseñar el modelo entidad-relación.



"En la biblioteca del centro se manejan fichas de autores y libros. En la
ficha de cada autor se tiene el código de autor y el nombre. De cada
libro se guarda el código, título, ISBN, editorial y número de página. Un
autor puede escribir varios libros, y un libro puede ser escrito por
varios autores. Un libro está formado por ejemplares. Cada ejemplar
tiene un código y una localización. Un libro tiene muchos ejemplares y
un ejemplar pertenece sólo a un libro.



Los usuarios de la biblioteca del centro también disponen de ficha en
la biblioteca y sacan ejemplares de ella. De cada usuario se guarda el
código, nombre, dirección y teléfono. Los ejemplares son prestados a
los usuarios. Un usuario puede tomar prestados varios ejemplares, y
un ejemplar puede ser prestado a varios usuarios. De cada préstamos
interesa guardar la fecha de préstamo y la fecha de devolución".



Pasar el modelo entidad-relación resultante al modelo relacional.
Diseñar las tablas en Access, realizar las relaciones oportunas entre
tablas e insertar cinco registros en cada una de las tablas.




                                   32
ANÁLISIS DEL PROBLEMA


LIBRO ( código_ libro, titulo, editorial, n° pagina)

AUTOR (código_autor , nombre)

EJEMPLARES ( código_ejemplares , localización)

USUARIO (código_ usuario , nombre, dirección , teléfono)




                                     33
DISEÑO DEL PROBLEMA

DIAGRAMA ENTIDAD RELACIÓN




                     34
MODELO RELACIONAL




                    35
SCRIPT MYSQL

mysql>CREATE DATABASE BIBLIOTECA ;

mysql>USE BIBLIOTECA;

mysql>  CREATE TABLE LIBRO(CODIGO_LIBRO INT(10)NOT NULL, TITULO TEXT NOT
NULL, NUMERO_PAGINA INT(15)NOT NULL, EDICTORIAL VARCHAR(16) NOT NULL, ISBN
VARCHAR(12)NOT NULL ,    PRIMARY KEY(CODIGO_LIBRO)) ENGINE=INNODB;

mysql>   CREATE TABLE USUARIO(CODIGO_USUSARIO INT( 15)NOT NULL, NOMBRE
VARCHAR(15)NOT NULL ,         APELLIDOS VARCHAR(30)NOT NULL,  DIRECCION
VARCHAR(30)NOT NULL,    TELEFONO INT (10) NOT NULL,             PRIMARY
KEY(CODIGO_USUARIO))ENGINE=INNODB,

mysql>   CREATE TABLE AUTOR( CODIGO_AUTOR INT(10)NOT NULL,      NOMBRE
VARCHAR(15)NOT NULL,   PRIMARY KEY(CODIGO_AUTOR)) ENGINE= INNODB;

 mysql> CREATE TABLE EJEMPLARES( CODIGO_EJEMPLARES INT(15)NOT NULL,
CODIGO_LIBRO INT(10)NOT NULL, LOCALIZACION VARCHAR(20 )NOT NULL, PRIMARY
KEY (CODIGO_EJEMPLARES))ENGINE=INNODB;

mysql>ALTER TABLE BIBLIOTECA ADD INDEX (CODIGO_LIBRO);

mysql> ALTER TABLEBIBLIOTECA ADD FOREIGN KEY(CODIGO_LIEBRO)REFERENCES
BIBLIOTECA .LIBRO ( CODIGO_LIBRO) ON DELETE NOT ACTION ON UPDATE CASCADE;


 mysql>      (CREATE TABLE PRESTAR(CODIGO_USUARIO INT(15) NOT NULL   ,
FECHA_DEVOLUCION DATETIME NOT NULL,      FECHA_PRESTAMO DATETIME NOT
NULL,       PRIMARY KEY(CODIGO_USUARIO,   CODIGO_EJEMPLARES) )ENGINE=
INNODB;

 mysql>ALTER TABLE BIBLIOTECA ADD INDEX (CODIGO_USUARIO);

mysql> ALTER TA BLEBIBLIOTECA ADD FOREIGN KEY(CODIGO_USUARIO)REFERENCES
BIBLIOTECA .LIBRO ( CODIGO_LIBRO) ON DELETE NOT ACTION ON UPDATE CASCADE;


mysql>ALTER TABLE BIBLIOTECA ADD INDEX (CODIGO_EJEMPLARES );




                                     36
mysql>ALTERTABLEBIBLIOTECAADDFOREIGNKEY(CODIGO_EJEMPLARES)REFERENCES
BIBLIOTECA .LIBRO ( CODIGO_ERJEMPLARES) ON DELETE NOT ACTION ON UPDATE
CASCADE;




mysql>    CREATE TABLE ESCRIBIR( DIA_MES_AÑO DATETIME NOT NULL,
CODIGO_LIBRO INT(10) NOT NULL, PRIMARY HEY ( DIA_MES_AÑO, CODIGO_AUTOR,
CODIGO_LIBRO))ENGINE= INNODB;

mysql>ALTER TABLE BIBLIOTECA ADD INDEX (CODIGO_AUTOR);

mysql> ALTER TA BLEBIBLIOTECA ADD FOREIGN KEY(CODIGO_AUTOR )REFERENCES
BIBLIOTECA .AUTOR ( CODIGO_AUTOR) ON DELETE NOT ACTION ON UPDATE CASCADE;


mysql>ALTER TABLE BIBLIOTECA ADD INDEX (CODIGO_USUARIO);

mysql> ALTER TA BLEBIBLIOTECA ADD FOREIGN KEY(CODIGO_USUARIO)REFERENCES
BIBLIOTECA .LIBRO ( CODIGO_LIBRO) ON DELETE NOT ACTION ON UPDATE CASCADE;




                                     37
ENUNCIADO PROBLEMA

EJERCICIO 6


A partir del siguiente enunciado se desea realiza el modelo entidad-
relación y pasarlo al modelo de datos relacional.

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".

“Todo viajero debe tener referencia familiares a la agenda de viajes.”




                                   38
ANALISIS DEL PROBLEMA
VIAJEROS ( dni, nombre, dirección, teléfono)

VIAJES ( código_de_viaje, numero_ plazas, fvr )

ORIGEN (código_origen)

DESTINO ( código_destino)

REFERNCIA FAMILIARES ( dni_familiar, nombre, apellido, dirección,
teléfono)




                                 39
DISEÑO DEL PROBLEMA
DIAGRAMA ENTIDAD RELACIÓN




                     40
MODELO RELACIONAL




                    41
SCRIPT MYSQL
mysql>CREATE DATABASE AGENCIA;
MYSQL>USE AGENCIA;

MYSQL>CREATE TABLE VIAJEROS( DNI INT(10) NOT NULL, NOMBRE VARCHAR(15)NOT
NULL, DIRECCION VARCHAR(15)NOT NULL, TELEFONO INT(15) NOT NULL, PRIMARY
KEY( DNI))ENGINE=INNODB;

MYSQL>CREATE TABLE VIAJES(CODIGO_DE_VIAJE INT(5) NOT NULL,   DNI INT(10)NOT
NULL, NUMERO_PLAZAS INT(10)NOT NULL,       FRV DATETIME NOT NULL, PRIMARY
KEY(     CODIGO_DE_VIAJE))ENGINE=INNODB;

MYSQL> ALTER TABLE AGENCIA ADD INDEX (DNI);

mysql> ALTER TA BLE AGENCIA ADD FOREIGN KEY(DNI)REFERENCES.VIAJEROS      (DNI)
ON DELETE NOT ACTION ON UPDATE CASCADE;

MYSQL> CREATE TABLE ORIGEN(CODIGO_DE_VIAJE INT(5)NOT NULL, CODIGO_ORIGEN
INT(5)NOT NULL, PRIMARY KEY(CODIGO_DE_VIAJE))ENGINE=INNODB;

MYSQL> ALTER TABLE AGENCIA ADD INDEX(CODIGO_DE_VIAJE);

mysql>ALTERTABLEAGENCIAADDFOREIGNKEY(CODIGO_DE_VIAJE)REFERENCES.VIAJE
ROS (CODIGO_DE_VIAJE) ON DELETE NOT ACTION ON UPDATE CASCADE;

mysql>    CREATE TABLE DESTINO(           CODIGO_DE_VIAJE INT(5) NOT NULL,
CODIGO_DESTINO INT((5)NOT NULL, PRIMARY KEY(CODIGO_DE_VIAJE))ENGINE=INNODB;

MYSQL> ALTER TABLE AGENCIA ADD INDEX(CODIGO_DE_VIAJE);

mysql>ALTERTABLEAGENCIAADDFOREIGNKEY(CODIGO_DE_VIAJE)REFERENCES.VIAJE
ROS (CODIGO_DE_VIAJE) ON DELETE NOT ACTION ON UPDATE CASCADE;

mysql> CREATE TABLE REFERENCIAS_FAMILIARES(      DNI_FAMILIAR INT(15) NOT NULL,
NOMBRE VARCHAR(15)NOT NULL,       APELLIDOS VARCHAR(16)NOT NULL, DIRECCION
INT(10) NOT NULL,  TELEFONO INT(10) NOT NULL, PRIMARY KEY ( DNI_FAMILIAR, DNI
,CODIGO_DE_VIAJE))ENGINE=INNODB;




                                      42
MYSQL> ALTER TABLE AGENCIA ADD INDEX(DNI);

mysql>ALTERTABLEAGENCIAADDFOREIGNKEY(DNI)REFERENCES.VIAJEROS    (DNI) ON
DELETE NOT ACTION ON UPDATE CASCADE;

MYSQL> ALTER TABLE AGENCIA ADD INDEX(CODIGO_DE_VIAJE);

mysql>ALTERTABLEAGENCIAADDFOREIGNKEY(CODIGO_DE_VIAJE)REFERENCES.VIAJE
ROS (CODIGO_DE_VIAJE) ON DELETE NOT ACTION ON UPDATE CASCADE;




                                     43
ENUNCIADO DEL PROBLEMA

EJERCICIO 7.

A partir del siguiente enunciado se desea realiza el modelo entidad-
relación y pasarlo al modelo de datos relacional.

"A un concesionario de coches llegan clientes para comprar
automóviles. De cada coche interesa saber la matrícula, modelo,
marca y color. Un cliente puede comprar varios coches en el
concesionario. Cuando un cliente compra un coche, se le hace una
ficha en el concesionario con la siguiente información: dni, nombre,
apellidos, dirección y teléfono.



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.



El concesionario también dispone de un taller en el que los mecánicos
reparan los coches que llevan los clientes. Un mecánico repara varios
coches a lo largo del día, y un coche puede ser reparado por varios
mecánicos. Los mecánicos tienen un dni, nombre, apellidos, fecha de
contratación y salario. Se desea guardar también la fecha en la que se
repara cada vehículo y el número de horas que se tardado en arreglar
cada automóvil".




                                  44
ANÁLISIS DEL PROBLEMA


COCHE (MATRICULA, MODELO, MARCA, COLOR)

CLIENTE (DNI CLIENTE, NOMBRE, APELLIDOS, CIUDAD, DIRECCIÓN , TELÉFONO)

FICHA CLIENTE ( DNI, NOMBRE, APELLIDOS, DIRECCIÓN, TELÉFONO)

NUEVO( N° UNIDADES )

USADOS(N° KILÓMETROS)

MECANICO( DNI_M, NOMBRE , APELLIDOS, FECHA CONTRATACIÓN, SALARIO)




                                      45
DISEÑO DEL PROBLEMA
DIAGRAMA ENTIDAD RELACION




                     46
MODELO RELACIONAL




       47
SCRIPT MYSQL
mysql>CREATE DATABASE CONCESIOANRIO;
MYSQL>USE CONCESIONARIO;

MYSQL> CREATE TABLE FICHA_CLIENTE(DNI_F_C INT(10)NOT NULL, NOMBRE
VARCHAR(15)NOT NULL,         APELLIDOS VARCHAR(15)NOT NULL, DIRECCION
VARCHAR(10)NOT NULL,       TELEFONO INT (10) NOT NULL,        PRIMARY
KEY(DNI_F_C)ENGINE=INNODB;

MYSQL>    CREATE    TABLE    MECANICOS(DNI_M     INT(10)NOT   NULL, NOMBRE
VARCHAR(15)NOT        NULL,      APELLIDOS         VARCHAR(15)NOT     NULL,
FECHA_DE_CONTRATACION DATETIME NOT NULL,          SALARIO MONAY NOT NULL,
PRIMARY KEY( DNI_M))ENGINE=INNODB;

MYSQL> CREATE TABLE CLIENTE(DNI_CLIENTE INT(10) NOT NULL, DNI_F_C INT(10) NOT
NULL, NOMBRE VARCHAR(15)NOT NULL, APELLLIDOS VARCHAR(15)NOT NULL,       CIUDAD
VARCHAR(15)NOT NULL, DIRECCION VARCHAR(10)NOT NULL, TELEFONO INT(10),
PRIMARY KEY( DNI_CLIENTE))ENGINE=INNODB;

MYSQL> ALTER TABLE CONCESIOANRIO ADD INDEX( DNI_F_C);

mysql>ALTERTABLE CONCESIOANRIO ADDFOREIGNKEY( DNI_F_C)REFERENCES.
FICHA_CLIENTE (DNI_F_C) ON DELETE NOT ACTION ON UPDATE CASCADE;

MYSQL> CREATE TABLE COCHE(MATRICULA INT(10)NOT NULL, DNI_CLIENTE INT(10)NOT
NULL, MODELO VARCHAR(15)NOT NULL, MARCA VARCHAR(15)NOT NULL, COLOR
VARCHAR(15)NOT NULL, PRIMARY KEY ( MATRICULA))ENGINE=INNODB;

MYSQL> ALTER TABLE CONCESIOANRIO ADD INDEX( DNI_CLIENTE);

mysql>ALTERTABLE CONCESIOANRIO ADDFOREIGNKEY( DNI_CLIENTE)REFERENCES.
CLIENTE (DNI_CLIENTE) ON DELETE NOT ACTION ON UPDATE CASCADE




mysql> CREATE TABLE NUEVO(MATRICULA INT(10)NOT NULL, N_UNIDADES INT(20)NOT
NULL, PRIMARY KEY(MATRICULA))ENGINE=INNODB;

MYSQL> ALTER TABLE CONCESIOANRIO ADD INDEX(MATRICULA);

mysql>ALTERTABLE CONCESIOANRIO ADDFOREIGNKEY( MATRUICULA)REFERENCES.
COCHE(MATRICULA) ON DELETE NOT ACTION ON UPDATE CASCADE;




                                      48
mysql>CREATE TABLE VIEJOSMATRICULA INT(10)NOT NULL, (, N_KILOMETROS
INT(30)NOT NULL,   PRIMARY KEY( MATRICULA))ENGINE=INNODB;

MYSQL> ALTER TABLE CONCESIOANRIO ADD INDEX(MATRICULA);

mysql>ALTERTABLE CONCESIOANRIO ADDFOREIGNKEY( MATRUICULA)REFERENCES.
COCHE(MATRICULA) ON DELETE NOT ACTION ON UPDATE CASCADE;




mysql>CREATE TABLE REPARAR(     N_HORAS DATETIME NOT NULL, FECHA_R_V
DATETIME, NOT NULL, MATRICULA INT(10)NOT NULL, DNI_M INT(10)NOT NULL,
PRIMARY KEY( N_HORAS, FECHA_R_V, MATRICULA, DNI_M)ENGINE=INNODB;

MYSQL> ALTER TABLE CONCESIOANRIO ADD INDEX(MATRICULA);

mysql>ALTERTABLE CONCESIOANRIO ADDFOREIGNKEY( MATRUICULA)REFERENCES.
COCHE(MATRICULA) ON DELETE NOT ACTION ON UPDATE CASCADE;

MYSQL> ALTER TABLE CONCESIOANRIO ADD INDEX(DNI_M);

mysql>ALTERTABLE CONCESIOANRIO ADDFOREIGNKEY( DNI_M)REFERENCES.
MECANICO(DNI_MA) ON DELETE NOT ACTION ON UPDATE CASCADE;




                                     49
ENUNCIADO DEL PROBLEMA
EJERCICIO 8.

A partir del siguiente enunciado se desea realiza el modelo entidad-
relación y pasarlo al modelo de datos relacional.

Una empresa de aparatos electrónicos desea informatizar sus datos.

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).

Cada tipo de electrodoméstico (televisor, mp3, lavadora, etc.) tiene un
nombre y unas características (un campo de texto). Se supone que no
hay dos tipos con el mismo nombre y características. Algunos tipos
pueden formar parte de otro tipo más general (mp3 de aparato de
música), pero en este caso solo forman parte de un único tipo.

Los componentes son las piezas que forman el aparato. Vienen dados
por un nombre (por ejemplo transformador) y unas especificaciones
(un campo de texto).

También nos interesa conocer datos de los              fabricantes   de
componentes: Su CIF (único) y su domicilio social.

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.




                                  50
ANÁLISIS DEL PROBLEMA


APARATO ELÉCTRICO (CÓDIGO, DECRIPCION)

TIPO ELECTRODOMÉSTICO (CÓDIGO_T_ ELECTRODOMEESTICO, NOMBRE,
CARACTERISTICAS)

COMPONENTES PEIZAS ( CÓDIGO PIEZA, NOMBRE , ESPECICFICACION,CÓDIGO)

FABRICANTES ( CIF, DOMICILIO SOCIAL, NOMBRE,)




                                       51
DISEÑO DEL PROBLEMA

DIAGRAMA ENTIDAD RELACIÓN




                     52
MODELO RELACIONAL




       53
SCRIPT MYSQL

mysql>CREATE DATABASE ELECTRODOMESTICOS;
MYSQL>USE ELECTROMESTICO;

MYSQL> CREATE TABLE APARATO_ELECTRODOMESTICO (CODIGO_A_E INT(20)
NOTNULL, DESCRIPCION TEXT NOT NULL, PRIMARY KEY(CODIGO_A_E))ENGINE=INNODB;

MYSQL> CREATE TABLE TIPO_ELCETRODOMESTICO(CODIGO_T_E INT(20)NOT
NULL,CODIGO_A_E INT (20)NOT NULL, NOMBRE VARCHAR(15)NOT NULL,
CARACTERISTICASTEXT NOT NULL, PRIMARY KEY ( CODIGO_T_E)ENGINE=INNODB;



MYSQL> ALTER TABLE ELECTRODOMESTICOS ADD INDEX(CODIGO_A_E);

mysql>ALTERTABLEELECTRODOMESTICOSADDFOREIGNKEY(CODIGO_A_E)
REFERENCES. APARATO_ELECTRODOMESTICO ( CODIGO_A_E) ON DELETE NOT ACTION
ON UPDATE CASCADE;

MYSQL> CREATE TABLE COMPONENTE_PIEZAS (CODIGO_PIEZAS INT(15) NOT NULL,
CODIGO_A_E INT(20)NOT NULL, ESPECIFICACION TEXT NOT NULL, NOMBRE
VARCHAR(15)NOT NULL, PRIMARY KEY ( CODIGO_PIEZAS )ENGIEN= INNODB;


MYSQL> ALTER TABLE ELECTRODOMESTICOS ADD INDEX(CODIGO_A_E);

mysql>VALTERTABLEELECTRODOMESTICOSADDFOREIGNKEY(CODIGO_A_E)
REFERENCES. APARATO_ELECTRODOMESTICO ( CODIGO_A_E) ON DELETE NOT ACTION
ON UPDATE CASCADE;

mysql> CREATE TABLE FABRICANTE(CIF INT(20)NOT NULL, CODIGO_PIEZAS INT(15),
NOMBRE_FABRICANTE VARCHAR(15)NOT NULL, DOMICILO_SOCIAL TEXT NOT NUL,
PRIMARY KEY( CIF)ENGINE=INNODB;


MYSQL> ALTER TABLE ELECTRODOMESTICOS ADD INDEX(CODIGO_PIEZAS);

mysql>VALTERTABLEELECTRODOMESTICOSADDFOREIGNKEY(CODIGO_PIEZAS)
REFERENCES. COMPONENTE_PIEZAS ( CODIGO_PIEZAS) ON DELETE NOT ACTION ON
UPDATE CASCADE;




                                     54
ENUNCIADO PROBLEMA
EJERCICIO 9.
A partir del siguiente enunciado se desea realiza el modelo entidad-
relación y pasarlo al modelo de datos relacional.

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.
De las empresas interesa conocer persona de contacto, dirección de la
empresa y número de empleados total, y si actualmente se tiene o no
convenio con ellos.
De los socios además de sus datos básicos (cédula, nombre, teléfono,
dirección, número de celular y correo electrónico opcionales), interesa
conocer el salario mensual. Cada préstamo requiere además de un
codeudor del cual se registran sus datos básicos. También es
importante conocer si el codeudor es un posible cliente o no, para
enviarle información para que se afilie a la cooperativa.
En caso de que un codeudor se vuelve socio de la compañía entonces
es necesario que el asociado solicitante del préstamo consiga otro
codeudor externo, no se permiten codeudores que sean socios de la
cooperativa.




                                  55
ANÁLISIS DEL PROBLEMA

SOCIOS (CEDULA, NOMBRE , APELLIDOS , TELÉFONO, DIRECCIÓN, NUMERO CELULAR,
CORREO ELECTRÓNICO, SALARIO MENSUAL)

PRÉSTAMO (NUMERO PRÉSTAMO, TIPO MODALIDAD)

EMPRESA( DNI, P.CONTACTO, DIRECCIÓN, NUMERO EMPLEADOS TOTAL)

MODALIDAD ( CÓDIGO MODALIDAD, PLAZO MÁXIMO ESTIMULADO, TASA DE INTERÉS
DEFINIDA)

COOPERATIVA (NUMERO PRÉSTAMO, FECHA INICIO, VALOR PRÉSTAMO, CUOTA
MENSUAL, PLAZO MESES)


CODEUDOR ( DNI, NOMBRE, APELLIDOS , CIUDAD, TELÉFONO, DIRECCIÓN)




                                     56
DISEÑO DELPROBLEMA

DIAGRAMA ENTIDAD RELACION




                        57
MODELO RELACIONAL




       58
SCRIPT MYSQL

mysql>CREATE DATABASE DINERO;
MYSQL>USE DINERO;


MYSQL>CREATETABLE     PRESTAMO(NUMERO_PRESTAMO     INT(10)  NOT    NULL,
TIPO_MODALIDAD TEXT NOTNULL, PRIMARYKEY(NUMERO_PRESTAMO))ENGINE=INNODB;



MYSQL>CREATE        TABLE      EMPRESA(DNI_EMPRESA       INT(20)NOT NULL,
PERSONA_CONTACTO VARCHAR(20)NOT NULL, DIRECCION VARCHAR(15)NOT NULL,
N_E_T INT(10)NOT NULL, PRIMARY KEY( DNI_EMPRESA ))ENGINE=INNODB;


MYSQL>CREATE TABLE COOPERATIVA (N_PRESTAMO INT(10)NOT NULL,FECHA_INICIO
DATETIME     NOT      NULL,VALOR_PRESTAMO     MONEY       NOT     NULL,
CUOTA_MENSUAL MONEY NOT NULL,         PLAZO_MESES INT(10),PRIMARY KEY(
N_PRESTAMO))ENGINE=INNODB;




MYSQL>CREATE TABLE CODEUDOR(DNI INT(10)NOT NULL, NOMBRE VARCHAR(15)NOT
NULL APELLDOS VARCHAR(16)NOT NULL, CIUDAD VARCHAR(15)NOT NULL, TELEFONO
INT(10)NOT    NULL,     DIRECCION     VARCHAR(10)NOT   NULL,    PRIMARY
KEY(DNI))ENGINE=INNODB;


MYSQL> CREATE TABLE SOCIOS(CEDULA INT(10)NOT NUL, DNI_EMPRESA INT(20)NOT
NULL,DNI INT(10)NOT NULL, N_PRESTAMO INT(10)NOT NULL, NOMBRE VARCHAR(15)NOT
NULL,     APELLIDOS VARCHAR(15)NOT NULL, TELEFONO INT(10)NOT NULL , DIRECCION
VARCHAR(15) NOT NUL, NUMERO_CELULAR INT(10)NOT NULL, CORREO_ELECTRONICO
VARCHAR(15)NOTNULL,SALARIO_MENSUALMONEY                 NOT              NULL,
PRIMARY KEY (CEDULA))ENGINE=INNODB;


MYSQL> ALTER TABLE DINERO ADD INDEX(DNI_EMPRESA);

mysql> ALTERTABLE DINERO ADDFOREIGNKEY(DNI_EMPRESA) REFERENCES. EMPRESA
( DNI_EMPRESA) ON DELETE NOT ACTION ON UPDATE CASCADE;


MYSQL> ALTER TABLE DINERO ADD INDEX(DNI);




                                      59
mysql>VALTERTABLE DINERO ADDFOREIGNKEY(DNI) REFERENCES. CODEUDOR(      DNI)
ON DELETE NOT ACTION ON UPDATE CASCADE;



 MYSQL> ALTER TABLE DINERO ADD INDEX(N_PRESTAMOI);
mysql>   ALTERTABLE     DINEROSADDFOREIGNKEY(N_PRESTAMO)     REFERENCES.
COOPERATIVA ( N_ PRESTAMO)ON DELETE NOT ACTION ON UPDATE CASCADE;


 MYSQL> CREATE TABLE MODALIDAD( CODIGO_MODALIDAD INT (10)NOT NULL, CEDULA
INT(10)NOT NULL, NUMERO_PRESTAMO INT(10)NOT NULL P_M_E TEXT NOT NULL,
 T_I_D MONEY NOT NULL ,PRIMARY KEY( CODIGO_MODALIDAD))ENGINE=INNODB;


MYSQL> ALTER TABLE DINERO ADD INDEX(CEDULA);

mysql>  ALTERTABLE   DINERO    ADDFOREIGNKEY(CEDUAL)    REFERENCES.SOCIOS
(CEDULA)ON DELETE NOT ACTION ON UPDATE CASCADE;


MYSQL> ALTER TABLE DINERO ADD INDEX(NUMERO_PRESTAMO);

mysql>     ALTERTABLE    DINERO     ADDFOREIGNKEY(NUMERO_PRESTAMO)
REFERENCES.PRESTAMO (NUMERO_PRESTAMO)ON DELETE NOT ACTION ON UPDATE
CASCADE;


MYSQL>    CREATE      TABLE    DELIGENCIAR(N_PRESTAMO    INT(10)NOT   NULL,
DNI_EMPRESA INT(20), PRIMARY KEY(N_PRESTAMO, DNI_EMPRESA))ENGINE=INNODB;


 MYSQL> ALTER TABLE DINERO ADD INDEX(N_PRESTAMOI);
mysql>   ALTERTABLE     DINEROSADDFOREIGNKEY(N_PRESTAMO)     REFERENCES.
COOPERATIVA ( N_ PRESTAMO)ON DELETE NOT ACTION ON UPDATE CASCADE;



MYSQL> ALTER TABLE DINERO ADD INDEX(DNI_EMPRESA);

mysql> ALTERTABLE DINERO ADDFOREIGNKEY(DNI_EMPRESA) REFERENCES. EMPRESA
( DNI_EMPRESA) ON DELETE NOT ACTION ON UPDATE CASCADE;




                                    60
ENUNCIADO DEL PROBLEMA

EJERCICIO 10.

A partir del siguiente enunciado se desea realiza el modelo entidad-
relación y pasarlo al modelo de datos relacional.

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 u momento
                                                           n
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 delin cuente 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.
Uno o varios policías investigan cada uno de los casos




                                 61
ANÁLISIS DEL PROBLEMA
POLICIA ( CEDULA, NOMBRE, CATEGORIA, NOMBE JEFE

ARMAS (CODIGO ARMAS, NOMBRE)

DELICUENTE ( DNI, NOMBRE, APELLIDOS)

CALABOZO ( CODIGO, UBICACIÓN)

CASO ( CODIGO_ CASO,JUZGADO, CARGO)

ARRESTAR(FECHA ARRESTO)




                                       62
DISEÑO DEL PROBLEMA

DIAGRAMA ENTIDAD RELACIÓN




                        63
MODELO RELACIONAL




       64
SCRIPT MYSQL

mysql>CREATE DATABASE COMISARIPOL;
MYSQL>USE COMISARIAPOL;

MYSQL>CREATE     TABLE    ARMA(CODIGO_ARMA     INT(8)NOT  NULL,      NOMBRE
VARCHAR(15)NOT NULL, PRIMARY KEY(CODIGO_ARMA))ENGINE=INNODB;

MYSQL> CREATE TABLE CALABOZO(CODIGO_C INT(5)NOT NULL,              UBICACION
VARCHAR(16)NOT NULL, PRIMARY KE (CODIGO_C))ENGINE=INNODB;

MYSQL> CREATE TABLE CASO(CODIGO_CASO INT(10) NOT NULL, JUZGADO TEXT NOT
NULL, PRIMARY KEY ( C ODIGO_CASO))ENGINE=INNODB;

 MYSQL> CREATE TABLE POLICIA(CEDULA INT(10) NOT NULL, CEDULA_1 INT(10)NOT
NULL,   CODIGO_ARMA INT(8)NOT NULL, NOMBRE VARCHAR(15)NOT NULL, CATEGORIA
VARCHAR(15)NOT NULL, NOMBRE_JEFE VARCHAR(15)NOT NULL, PRIMARY KEY(
CEDULA))ENGINE=INNODB;

MYSQL> ALTER TABLE COMISARIPOL ADD INDEX(CEDULA_1);

mysql>VALTERTABLE       COMISARIAPOLADDFOREIGNKEY(CEDULA_1)     REFERENCES.
POLICIA (CEDULA_1) ON DELETE NOT ACTION ON UPDATE CASCADE;


MYSQL> ALTER TABLE COMISARIPOL ADD INDEX(CODIGO_ARMA);

mysql>VALTERTABLE   COMISARIAPOLADDFOREIGNKEY(CODIGO_ARMA) REFERENCES.
ARMA (CODIGO_ARMA) ON DELETE NOT ACTION ON UPDATE CASCADE;


MYSQL> CREATE TABLE DELICUENTE(DNI INT(10)NOT NULL, CODIGO_C INT(5)NOT NULL,
CODIGO_CASO INT(10)NOT NULL, NOMBRE VARCHAR(15)NOT NULL, APELLIDOS
VARCHAR(15)NOT NULL, PRIMARY KEY(DNI))ENGINE=INNODB;               ,

MYSQL> ALTER TABLE COMISARIPOL ADD INDEX( CODIGO_C);

mysql>VALTERTABLE COMISARIAPOLADDFOREIGNKEY(      CODIGO_C) REFERENCES.
CALABOZO(   CODIGO_C) ON DELETE NOT ACTION ON UPDATE CASCADE;




                                     65
MYSQL> ALTER TABLE COMISARIPOL ADD INDEX( CODIGO_CASO);

mysql>VALTERTABLE COMISARIAPOLADDFOREIGNKEY(     CODIGO_CASO)
REFERENCES. CASO(   CODIGO_CASO) ON DELETE NOT ACTION ON UPDATE CASCADE;

mysql>CREATE     TABLE ARRESTAR(FECHA_ARRESTO DATETIME NOT NULL, CEDULA
INT(10) NOT NULL, DNI INT(10)NOT NULL, PRIMARY KEY(FECHA_ARRESTO, CEDULA,
DNI))ENGINE=INNODB;

MYSQL> ALTER TABLE COMISARIPOL ADD INDEX(CEDULA);

mysql>VALTERTABLE        COMISARIAPOLADDFOREIGNKEY(CEDULA)   REFERENCES.
POLICIA (CEDULA) ON DELETE NOT ACTION ON UPDATE CASCADE;

MYSQL> ALTER TABLE COMISARIPOL ADD INDEX(DNI);

mysql>VALTERTABLE COMISARIAPOLADDFOREIGNKEY(DNI) REFERENCES.DELICUENTE
(DNI) ON DELETE NOT ACTION ON UPDATE CASCADE;

mysql> CREATE TABLE INVESTIGAR(
                              D_M_A DATETIME NOT NULL, CEDULA INT(10)NOT
NULL , CODIGO_CASO INT(10)NIOT NULL, PRIMARY KEY(D_M_A,         CEDULA,
CODIGO_CASO))ENGINE=INNODB;

MYSQL> ALTER TABLE COMISARIPOL ADD INDEX(CEDULA);

mysql>VALTERTABLE        COMISARIAPOLADDFOREIGNKEY(CEDULA)   REFERENCES.
POLICIA (CEDULA) ON DELETE NOT ACTION ON UPDATE CASCADE

MYSQL> ALTER TABLE COMISARIPOL ADD INDEX( CODIGO_CASO);

mysql>VALTERTABLE COMISARIAPOLADDFOREIGNKEY( CODIGO_CASO) REFERENCES.
CASO ( CODIGO_CASO) ON DELETE NOT ACTION ON UPDATE CASCADE;




                                    66
ENUNCIADO PROBLEMA
EJERCICIO 11.

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 (num 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.




                                 67
ANALISIS DEL PROBLEMA
AVIONES ( NUMERO_AVION, COMBUSTIBLE)

CLASIFICACION AVIONES (MODELO, PESO, CAPACIDAD)

HANGARES (NÚMERO, CAPACIDAD, LOCALIZACION)

PERSONAS (NSS, DIRECCION, TELEFONO)

PILOTO (NUMEROLICENCIA, RESTRICIONES)

EMPELADO (SALARIO, TURNO)

PROPIETARIO (SALARIO, TURNO)




                                       68
DISEÑO PROBLEMA
DIAGRAMA ENTIDAD RELACION




                        69
MODELO RELACIONAL




       70
SCRIPT MYSQL
mysql>CREATE DATABASE AEROPUERTO;
MYSQL>USE AEROPUERTOL;
mysql> CREATE TABLE PERSONAS(NSS VARCHAR(12)NOT NULL,     DIRECCION
VARCHAR(30)NOT NULL, TELEFONO VARCHAR(12)NOT NULL, NOMBRE VARCHAR(20)NOT
NULL, APELLIDOS VARCHAR(20)NOT NULL, PRIMARY KEY(NSS))ENGINE=INNODB;

mysql> CREATE TABLE CLASIFICACION_DE_AVIONES(MODELO VARCHAR(5)NOT NULL,
PESOINT(20)NOTNULL,CAPACIDADINT(30)NOTNULL,PRIMARYKEY(MODELO))

ENGINE=INNODB;

 mysql> CREATE TABLE HANGARES(NUMERO_HANGARES INT(20)NOT NULL,,
CAPACIDAD INT(30)NOT NULL,  LOCALIZACION VARCHAR(30)NOT NULL, PRIMARY
KEY(NUMERO_HANGARES))ENGINE=INNODB;

mysql>     CREATE TABLE PILOTO                   NSS VARCHAR(12)NOT NULL,
NUMERO_DE_LICENCIA VARCHAR(15)NOT NULL,         RESTRICIONES TEXT NOT NULL,
PRIMARY KEY (NSS))ENGINE=INNODB;

MYSQL> ALTER TABLE AEROPUERTO ADD INDEX(NSS);

mysql>ALTERTABLE      AEROPUERTO       ADDFOREIGNKEY(NSS)      REFERENCES.
PERSONAS(NSS) ON DELETE NOT ACTION ON UPDATE CASCADE;

mysql>   CREATE TABLE EMPLEADOS(NSS VARCHAR(12)NOT NULL,     SALARIO
MONEY NOT NULL, TURNO VARCHAR(15)NOT NULL,PRIMARY KEY(NSS))ENGINE=INNODB;

mysql>    CREATE TABLE PROPIETARIO        NSS VARCHAR(12) NOT NULL,PRIMAY
KEY(NSS))ENGINE=INNODB;

MYSQL> ALTER TABLE AEROPUERTO ADD INDEX(NSS);

mysql>ALTERTABLE      AEROPUERTO       ADDFOREIGNKEY(NSS)      REFERENCES.
PERSONAS(NSS) ON DELETE NOT ACTION ON UPDATE CASCADE;

mysql>   CREATE TABLE AVIONES        (NUMERO_AVIONES VARCHAR(10)NOT NULL,
MODELO VARCHAR(5)NOT NULL, COMBUSTIBLE VARCHAR(15)NOT NULL, PRIMARY KEY(
NUMERO_AVIONES))EMGINE=INNODB;




                                     71
MYSQL> ALTER TABLE AEROPUERTO ADD INDEX(MODELO);


mysql>ALTERTABLE     AEROPUERTO     ADDFOREIGNKEY(MODELO)     REFERENCES.
CLASIFICACION_DE_AVIONES (MODELO) ON DELETE NOT ACTION ON UPDATE CASCADE;

mysql> CREATE TABLE GUARDAR(NUMERO_HANGARES INT(20)NOT NULL,
NUMERO_AVIONES VARCHAR(10)NOT NULL, FECHA_RETIRO DATETIMENOT NULL,
FECHA_INGRESO DATETIME NOT NULL,    PRIMARY KEY(NUMERO_HANGARES,
NUMERO_AVIONES))ENGINE=INNODB;

MYSQL> ALTER TABLE AEROPUERTO ADD INDEX(NUMERO_HANGARES);


mysql>ALTERTABLE      AEROPUERTO     ADDFOREIGNKEY(NUMERO_HANGARES)
REFERENCES. HANGARES (NUMERO_HANGARES )ON DELETE NOT ACTION ON UPDATE
CASCADE;

 MYSQL> ALTER TABLE AEROPUERTO ADD INDEX(NUMERO_AVIONES);

mysql>ALTERTABLE      AEROPUERTO      ADDFOREIGNKEY(NUMERO_AVIONES)
REFERENCES. AVIONES(NUMERO_AVIONES)ON DELETE NOT ACTION ON UPDATE
CASCADE;

 MYSQL>            CREATE   TABLE   PILOTIAR(NSS     VARCHAR(12)NOT   NULL,
NUMERO_AVIONES    VARCHAR(10)NOT    NULL,                          PRIMARY
KEY(NSS,NUMERO_AVIONES))ENGINE=INNODB;

MYSQL> ALTER TABLE AEROPUERTO ADD INDEX(NSS);


mysql>ALTERTABLE AEROPUERTO ADDFOREIGNKEY(NSS) REFERENCES. PILOTO(NSS)
ON DELETE NOT ACTION ON UPDATE CASCADE;

MYSQL> ALTER TABLE AEROPUERTO ADD INDEX(NUMERO_AVIONES);

mysql>ALTERTABLE      AEROPUERTO      ADDFOREIGNKEY(NUMERO_AVIONES)
REFERENCES. AVIONES(NUMERO_AVIONES)ON DELETE NOT ACTION ON UPDATE
CASCADE;

mysql>CREATE       TABLE      TRABAJAR(NSS         VARCHAR(12)NOT      NULL,
NUMERO_AVIONESVARCHAR(10)NOT                    NULL,               PRIMARY
KEY(NSS,NUMERO_AVIONES))ENGINE=INNODB;




                                   72
MYSQL> ALTER TABLE AEROPUERTO ADD INDEX(NSS);


mysql>ALTERTABLE AEROPUERTO ADDFOREIGNKEY(NSS) REFERENCES. EMPLEADOS
(NSS) ON DELETE NOT ACTION ON UPDATE CASCADE;

 MYSQL> ALTER TABLE AEROPUERTO ADD INDEX(NUMERO_AVIONES);

mysql>ALTERTABLE      AEROPUERTO      ADDFOREIGNKEY(NUMERO_AVIONES)
REFERENCES. AVIONES(NUMERO_AVIONES)ON DELETE NOT ACTION ON UPDATE
CASCADE;

mysql>      CREATE TABLE TENER( NUMERO_AVIONES VARCHAR(10)NOT NULL,
NSSVARCHAR(12)NOT NULL, FECHA_COMPRA DATETIME NOT NULL , PRIMARY KEY
(NUMERO_AVIONES,NSS))ENGINE=INNODB;

 MYSQL> ALTER TABLE AEROPUERTO ADD INDEX(NUMERO_AVIONES);

mysql>ALTERTABLE      AEROPUERTO      ADDFOREIGNKEY(NUMERO_AVIONES)
REFERENCES. AVIONES(NUMERO_AVIONES)ON DELETE NOT ACTION ON UPDATE
CASCADE;

 MYSQL> ALTER TABLE AEROPUERTO ADD INDEX(NSS);

mysql>ALTERTABLE     AEROPUERTO      ADDFOREIGNKEY(NSS)     REFERENCES.
AVIONES(NUMERO_AVIONES)ON DELETE NOT ACTION ON UPDATE CASCADE;

MYSQL> ALTER TABLE AEROPUERTO ADD INDEX(NSS);

mysql>ALTERTABLE       AEROPUERTO      ADDFOREIGNKEY(NSS)   REFERENCES.
PROPIETARIO (NSS)ON DELETE NOT ACTION ON UPDATE CASCADE;

   ,




                                    73
ENUNCIADO DEL PROBLEMA
EJERCICIO 12.
Dado el siguiente enunciado obtén el modelo ERE, relacional.

Una empresa de servicios quiere informatizar su gestión en lo
referente su personal, proyectos y los servicios que presta a otras
empresas.
Respecto al personal de la empresa, se almacenará un código
asignado por el departamento de Recursos Humanos, el nombre,
dirección y teléfono así como el tipo de actividad dentro de la empresa
de servicios: directivo o plantilla. Únicamente 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.




                                    74
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.




                                 75
DISEÑO DEL PROBLEMA

DIAGRAMA ENTIDAD RELACIÓN




                        76
MODELO RELACIONAL




       77
ENUNCIADO DEL PROBLEMA

EJERCICIO 13.

Dado el siguiente enunciado, obtén el modelo entidad-relación
extendido, relacional.
Una empresa dedicada a la realización de reformas y construcciones
en general maneja la siguiente información para llevar parte de su
negocio.
La empresa dispone de albañiles en plantilla de los que almacena,
entre otras cosas, el número de la Seguridad Social, nombre,
apellidos, fecha de nacimiento, números de los teléfonos que dispone
(fijos y/o móviles) y categoría profesional. Las 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.




                                   78
ANALISIS DEL PROBLEMA
ALBAÑIL ( NSS, NOMBRE,APELLIDOS, FECHADE NACIMIENTO,NUMERO
FIJO.NUMERO MOVIL)

ALBAÑIL PEON( DNI, SUELDO,NACIONALIDAD)

ALBAÑIL MAESTRO (DNI, SUELDO)

CUADRILALS ( CODIGO_INTERNO, NOMBRE, LOCALIDAD)




                                79
DISEÑO DEL PROBLEMA
DIAGRAMA ENTIDAD RELACION




                        80
MODELO RELACIONAL




       81
SCRIPT MYSQL
mysql>CREATE DATABASE NEGOCIO ;
MYSQL>USE NEGOCIO ;


mysql>CREATE TABLE CUADRILLAS(CODIGO_INTERNO INT(20)NOT NULL, NOMBRE
VARCHAR(15)NOT NULL, LOCALIDAD VARCHAR(20)NOT NULL, PRIMARY KEY(
CODIGO_INTERNO))ENGINE=INNODB;




mysql>CREATE TABLE ALBAÑIL(NSS INT(15)NOT NULL, CODIGO_INTERNO INT(20)NOT
NULL, NOMBRE VARCHAR(15)NOT NULL,         APELLIDOS VARCHAR(20)NOT NULL,
FECHA_DE_NACIMIENTO DATETIME NOT NULL PRIMARY KEY(NSS))ENGINE=INNODB;



MYSQL> ALTER TABLE NEGOCIO ADD INDEX( CODIGO_INTERNO);


mysql>ALTERTABLE     NEGOCIO ADDFOREIGNKEY(CODIGO_INTERNO) REFERENCES.
CUADRILLAS (CODIGO_INTERNO) ON DELETE NOT ACTION ON UPDATE CASCADE;




mysql>CREATE TABLE PEON(NSS INT(15)NOT NULL, DNI INT(10)NOT NULL,   SUELDO
MONEY NOT NULL, NACIONALIDAD VARCHAR (20)NOT NULL,     PRIMARY
KEY(NSS))ENGINE=INNODB;

 MYSQL> ALTER TABLE NEGOCIO ADD INDEX( NSS);


mysql>ALTERTABLE   NEGOCIO ADDFOREIGNKEY(NSS) REFERENCES. ALBAÑIL(NSS) ON
DELETE NOT ACTION ON UPDATE CASCADE;




mysql>CREATE TABLE MAESTRO(NSS INT(15)NOT NULL, DNI INT(10)NOT NULL,
SUELDO MONEY NOT NULL, PRIMARY KEY    (NSS))ENGINE=INNODB;




                                     82
ENUNCIADO DEL PROBLEMA


EJERCICIO 14.

Dado el siguiente enunciado, obtén el modelo entidad-relación
extendido, relacional.
Una empresa dedicada a la venta de material óptico desea que
diseñemos una base de datos para la automatización de sus procesos.
La información relevante desde el punto de vista del modelo de datos
es la siguiente:
Los productos que vende la empresa son lentes de contacto o gafas,
interesando conocer de ellos su código de producto (que es único), su
precio de venta y su marca. En cuanto a las lentes de contacto
interesa, además, conocer su tipo (blandas, rígidas, etc.), su color, los
productos de limpieza que requiere y su graduación. Para las gafas, se
desea también almacenar su modelo, el material de fabricación.

Se debe tener en cuenta que la empresa dispondrá de gafas
graduadas, de gafas de sol y de gafas de sol graduadas. De las gafas
graduadas, interesa conocer su graduación así como en qué tipo de
problemas oculares se pueden utilizar (miopía, astigmatismo, etc.). De
las gafas de sol, interesa conocer el nivel de filtrado de los rayos
ultravioleta.

      Hay que tener en cuenta además que queremos gestionar las
personas que han comprado gafas en nuestro establecimiento, para
estas personas almacenaremos un código y el nombre. Además cada
persona pertenece a un tipo (habitual, ocasional...) y queremos
almacenar para cada tipo de usuarios que descuentos se aplican en
las gafas de sol.




                                   83
ANÁLISIS DEL PROBLEMA


PRODUCTO (CÓDIGO PRODUCTO, PV, MARCA )

GAFAS (MODELO, MATERIAL FABRICACIÓN)

 ♥ GAFAS DE GRADUACIÓN (GRADUACIÓN, TIPO DE PROBLEMA)

 ♥GAFAS DE SOL ( NIVEL FILTRADO)

 ♥GAFAS DE SOL_ GRADUACIÓN

LENTES DE CONTACTO (COLOR, PRODUCTO LIMPIEZA, GRADUACIÓN)

PERSONAS (CÓDIGO, NOMBRE, APELLIDO, CIUDAD, TELÉFONO)

HABITUAL_ O_ O OCASIONAL (DESCUENTO, FECHA)




                                       84
DISEÑO DEL PROBLEMA
DIAGRAMA ENTIDAD RELACIÓN




                     85
MODELO RELACIONAL




       86
SCRIPT MYSQL


mysql>CREATE DATABASE OPTICO;
MYSQL>USE OPTICO ;


mysql>CREATE TABLE PRODUCTOS(CODIGO_PRODUCTO INT(5)NOT NULL,PV MONEY
NOT NULL, MARCA VARCHAR(15NOT NULL, MARCA VARCHAR(15)NOT, MARCA
VARCHAR(15)NOT NULL, PRIMARY KEY( CODIGO_PRODUCTO))ENGINE=INNODB;

mysql>   CREATE TABLE PERSONAS( CODIGO INT(15)NOT NULL, NOMBRE
VARCHAR(15)NOT NULL, APELLIDOS VARCHAR(15)NOT NULL, CIUDAD VARCHAR(15)NOT
NULL, TELEFONO INT(10)NOT NULL,   PRIMARY KEY(CODIGO))ENGINE=INNODB;

mysql>  CREATE TABLE LENTES_CONTACTO(CODIGO_PRODUCTO INT(5)NOT NULL,
COLOR VARCHAR(15)NOT NULL,    PRODUCTO_LIMPIEZA VARCHAR(15)NOT NULL,
GRADUACION INT(10),  PRIMARY KEY(      CODIGO_PRODUCTO))ENGINE=INNODB;

 MYSQL> ALTER TABLE OPTICO ADD INDEX(CODIGO_PRODUCTO);


mysql>ALTERTABLE  OPTICO ADD FOREIGNKEY(CODIGO_PRODUCTO)REFERENCES.
PRODUCTO(CODIGO_PRODUCTO) ON DELETE NOT ACTION ON UPDATE CASCADE;




mysql>    CREATE TABLE GAFAS(   CODIGO_PRODUCTO INT(5)NOT NULL,     CODIGO
INT(15)NOT NULL, MODELO VARCHAR(15)NOT NULL, MATERIAL_FABRICACION
VARCHAR(15)NOT NULL,     PRIMARY KEY(
CODIGO_PRODUCTO))ENGINE=INNODB;

 MYSQL> ALTER TABLE OPTICO ADD INDEX(CODIGO_PRODUCTO);


mysql>ALTERTABLE  OPTICO ADD FOREIGNKEY(CODIGO_PRODUCTO)REFERENCES.
PRODUCTO(CODIGO_PRODUCTO) ON DELETE NOT ACTION ON UPDATE CASCADE;

 MYSQL> ALTER TABLE OPTICO ADD INDEX(CODIGO);


mysql>ALTERTABLE    OPTICO ADD FOREIGNKEY(CODIGO)REFERENCES. PRERSONAS
(CODIGO) ON DELETE NOT ACTION ON UPDATE CASCADE;




                                    87
mysql>   CREATE TABLE GAFA_DE_GRADUACION(CODIGO_PRODUCTO INT(5)NOT
NULL,   GRADUACION INT(10)NOT NULL, TIPO_PROBLEMA TEXT NOT NULL,   PRIMARY
KEY(CODIGO_PRODUCTO))ENGINE=INNODB;



 MYSQL> ALTER TABLE OPTICO ADD INDEX(CODIGO_PRODUCTO);


mysql>ALTERTABLE  OPTICO ADD FOREIGNKEY(CODIGO_PRODUCTO)REFERENCES.
GAFAS (CODIGO_PRODUCTO) ON DELETE NOT ACTION ON UPDATE CASCADE;

 MYSQL> CREATE TABLE GAFAS_DE_SOL(CODIGO_PRODUCTO INT(5)NOT NULL,

   NIVEL_FILTRADO INT(10)NOT NULL, PRIMARY
KEY(CODIGO_PRODUCTO))ENGINE=INNODB;



 MYSQL> ALTER TABLE OPTICO ADD INDEX(CODIGO_PRODUCTO);


mysql>ALTERTABLE  OPTICO ADD FOREIGNKEY(CODIGO_PRODUCTO)REFERENCES.
GAFAS (CODIGO_PRODUCTO) ON DELETE NOT ACTION ON UPDATE CASCADE;

MYSQL> CREATE TABLE GAFAS_SOL_GRADUCACION(CODIGO_PRODUCTO INT(5)NOT
NULL,PRIMARY(CODIGO_PRODUCTO))ENGINE=INNODB;



 MYSQL> ALTER TABLE OPTICO ADD INDEX(CODIGO_PRODUCTO);


mysql>ALTERTABLE  OPTICO ADD FOREIGNKEY(CODIGO_PRODUCTO)REFERENCES.
GAFAS (CODIGO_PRODUCTO) ON DELETE NOT ACTION ON UPDATE CASCADE;

mysql> CREATE TABLE HABITUAL_O_OCACIONAL(DESCUENTO MONEY NOT NULL,
   CODIGO INT(15)NOT NULL, FECHA DATETIME NOT NULL, PRIMARY
KEY(DESCUETO,CODIGO))ENGINE=INNOBD;

MYSQL> ALTER TABLE OPTICO ADD INDEX(CODIGO);


mysql>ALTERTABLE    OPTICO ADD FOREIGNKEY(CODIGO)REFERENCES. PERSONAS
(CODIGO) ON DELETE NOT ACTION ON UPDATE CASCADE;




                                     88
89
90

Weitere ähnliche Inhalte

Was ist angesagt?

Ejemplos diagrama de entidad relación
Ejemplos diagrama de entidad relaciónEjemplos diagrama de entidad relación
Ejemplos diagrama de entidad relaciónmariqueve
 
Information Visualisation - Lecture 1
Information Visualisation - Lecture 1Information Visualisation - Lecture 1
Information Visualisation - Lecture 1Stefan Wasserbauer
 
Ejercicios con diagramas modelo Entidad Relacion
Ejercicios con diagramas modelo Entidad RelacionEjercicios con diagramas modelo Entidad Relacion
Ejercicios con diagramas modelo Entidad RelacionJuan Carlos A. Ch
 
Enhanced E-R diagram
Enhanced E-R diagramEnhanced E-R diagram
Enhanced E-R diagramMayank Jain
 
Mer(modelo entidad relación) parte 6
Mer(modelo entidad relación) parte 6Mer(modelo entidad relación) parte 6
Mer(modelo entidad relación) parte 6MarioCasas2G
 
Customer Event Hub - the modern Customer 360° view
Customer Event Hub - the modern Customer 360° viewCustomer Event Hub - the modern Customer 360° view
Customer Event Hub - the modern Customer 360° viewGuido Schmutz
 
Data product thinking-Will the Data Mesh save us from analytics history
Data product thinking-Will the Data Mesh save us from analytics historyData product thinking-Will the Data Mesh save us from analytics history
Data product thinking-Will the Data Mesh save us from analytics historyRogier Werschkull
 
Relational databases vs Non-relational databases
Relational databases vs Non-relational databasesRelational databases vs Non-relational databases
Relational databases vs Non-relational databasesJames Serra
 
Taller modelo entidad relacion
Taller modelo entidad relacionTaller modelo entidad relacion
Taller modelo entidad relacionBrayan Vega Diaz
 
Diseño Entidad Relación
Diseño Entidad RelaciónDiseño Entidad Relación
Diseño Entidad Relaciónkyaalena
 
Five9 sfdc sales presentation july 23 2014
Five9 sfdc sales presentation july 23 2014Five9 sfdc sales presentation july 23 2014
Five9 sfdc sales presentation july 23 2014Chris Nelson
 
The Basics of MongoDB
The Basics of MongoDBThe Basics of MongoDB
The Basics of MongoDBvaluebound
 
ER model to Relational model mapping
ER model to Relational model mappingER model to Relational model mapping
ER model to Relational model mappingShubham Saini
 
Ejercicios modelo E-R en Erwin Data Modeler
Ejercicios modelo E-R en Erwin Data ModelerEjercicios modelo E-R en Erwin Data Modeler
Ejercicios modelo E-R en Erwin Data ModelerKevin Pinaud Collazos
 

Was ist angesagt? (20)

Ejemplos diagrama de entidad relación
Ejemplos diagrama de entidad relaciónEjemplos diagrama de entidad relación
Ejemplos diagrama de entidad relación
 
Information Visualisation - Lecture 1
Information Visualisation - Lecture 1Information Visualisation - Lecture 1
Information Visualisation - Lecture 1
 
Data warehouse logical design
Data warehouse logical designData warehouse logical design
Data warehouse logical design
 
Ejercicios con diagramas modelo Entidad Relacion
Ejercicios con diagramas modelo Entidad RelacionEjercicios con diagramas modelo Entidad Relacion
Ejercicios con diagramas modelo Entidad Relacion
 
Enhanced E-R diagram
Enhanced E-R diagramEnhanced E-R diagram
Enhanced E-R diagram
 
Erd examples
Erd examplesErd examples
Erd examples
 
Mer(modelo entidad relación) parte 6
Mer(modelo entidad relación) parte 6Mer(modelo entidad relación) parte 6
Mer(modelo entidad relación) parte 6
 
Customer Event Hub - the modern Customer 360° view
Customer Event Hub - the modern Customer 360° viewCustomer Event Hub - the modern Customer 360° view
Customer Event Hub - the modern Customer 360° view
 
MongoDB Avanzado
MongoDB AvanzadoMongoDB Avanzado
MongoDB Avanzado
 
Data product thinking-Will the Data Mesh save us from analytics history
Data product thinking-Will the Data Mesh save us from analytics historyData product thinking-Will the Data Mesh save us from analytics history
Data product thinking-Will the Data Mesh save us from analytics history
 
Relational databases vs Non-relational databases
Relational databases vs Non-relational databasesRelational databases vs Non-relational databases
Relational databases vs Non-relational databases
 
Taller modelo entidad relacion
Taller modelo entidad relacionTaller modelo entidad relacion
Taller modelo entidad relacion
 
Oracle
OracleOracle
Oracle
 
enhanced er diagram
enhanced er diagramenhanced er diagram
enhanced er diagram
 
Reglas de transformación
Reglas de transformaciónReglas de transformación
Reglas de transformación
 
Diseño Entidad Relación
Diseño Entidad RelaciónDiseño Entidad Relación
Diseño Entidad Relación
 
Five9 sfdc sales presentation july 23 2014
Five9 sfdc sales presentation july 23 2014Five9 sfdc sales presentation july 23 2014
Five9 sfdc sales presentation july 23 2014
 
The Basics of MongoDB
The Basics of MongoDBThe Basics of MongoDB
The Basics of MongoDB
 
ER model to Relational model mapping
ER model to Relational model mappingER model to Relational model mapping
ER model to Relational model mapping
 
Ejercicios modelo E-R en Erwin Data Modeler
Ejercicios modelo E-R en Erwin Data ModelerEjercicios modelo E-R en Erwin Data Modeler
Ejercicios modelo E-R en Erwin Data Modeler
 

Andere mochten auch

Top 100 Companies\' Engagement in social media
Top 100 Companies\'  Engagement in social mediaTop 100 Companies\'  Engagement in social media
Top 100 Companies\' Engagement in social mediaSerge Beckers
 
Insteddstungtrengsimulationafteractionreportdec2008 090517125737-phpapp01
Insteddstungtrengsimulationafteractionreportdec2008 090517125737-phpapp01Insteddstungtrengsimulationafteractionreportdec2008 090517125737-phpapp01
Insteddstungtrengsimulationafteractionreportdec2008 090517125737-phpapp01InSTEDD
 
F 2 a38baa82aa
F 2 a38baa82aaF 2 a38baa82aa
F 2 a38baa82aatuliogeo
 
Trend Hunter 2010 Trend Reports Sample
Trend Hunter 2010 Trend Reports SampleTrend Hunter 2010 Trend Reports Sample
Trend Hunter 2010 Trend Reports SampleMarcusMunro
 
Blackboard Next Generation Preview - Online
Blackboard Next Generation Preview - OnlineBlackboard Next Generation Preview - Online
Blackboard Next Generation Preview - OnlineJason Rhode
 
Social Media Brand Engamente Report
Social Media Brand Engamente ReportSocial Media Brand Engamente Report
Social Media Brand Engamente Report...
 
Wildlife Sickness Reporting
Wildlife Sickness ReportingWildlife Sickness Reporting
Wildlife Sickness ReportingInSTEDD
 

Andere mochten auch (9)

Top 100 Companies\' Engagement in social media
Top 100 Companies\'  Engagement in social mediaTop 100 Companies\'  Engagement in social media
Top 100 Companies\' Engagement in social media
 
Insteddstungtrengsimulationafteractionreportdec2008 090517125737-phpapp01
Insteddstungtrengsimulationafteractionreportdec2008 090517125737-phpapp01Insteddstungtrengsimulationafteractionreportdec2008 090517125737-phpapp01
Insteddstungtrengsimulationafteractionreportdec2008 090517125737-phpapp01
 
F 2 a38baa82aa
F 2 a38baa82aaF 2 a38baa82aa
F 2 a38baa82aa
 
Formacion de oferta
Formacion de ofertaFormacion de oferta
Formacion de oferta
 
Trend Hunter 2010 Trend Reports Sample
Trend Hunter 2010 Trend Reports SampleTrend Hunter 2010 Trend Reports Sample
Trend Hunter 2010 Trend Reports Sample
 
Blackboard Next Generation Preview - Online
Blackboard Next Generation Preview - OnlineBlackboard Next Generation Preview - Online
Blackboard Next Generation Preview - Online
 
Social Media Brand Engamente Report
Social Media Brand Engamente ReportSocial Media Brand Engamente Report
Social Media Brand Engamente Report
 
Pinterest cipr presentation final 6th sept
Pinterest cipr presentation final 6th sept Pinterest cipr presentation final 6th sept
Pinterest cipr presentation final 6th sept
 
Wildlife Sickness Reporting
Wildlife Sickness ReportingWildlife Sickness Reporting
Wildlife Sickness Reporting
 

Ähnlich wie Recopilacion...

Te enamoraste jeje
Te enamoraste jejeTe enamoraste jeje
Te enamoraste jejemixmax27
 
Arquitectura de datos empresariales análisis de una base de datos
Arquitectura de datos empresariales   análisis de una base de datosArquitectura de datos empresariales   análisis de una base de datos
Arquitectura de datos empresariales análisis de una base de datosCarlosTenelema1
 
Machine Learning Aplicado al Marketing: Mejorando tu Negocio.
Machine Learning Aplicado al Marketing: Mejorando tu Negocio.Machine Learning Aplicado al Marketing: Mejorando tu Negocio.
Machine Learning Aplicado al Marketing: Mejorando tu Negocio.Good Rebels
 
Diapositivas ii
Diapositivas iiDiapositivas ii
Diapositivas iidouglas79
 
Tecnologias informaticas
Tecnologias informaticas Tecnologias informaticas
Tecnologias informaticas Freddy Estevez
 
Portafolio computación aplicada I
Portafolio computación aplicada IPortafolio computación aplicada I
Portafolio computación aplicada IJorge Piedra Luna
 
Exposición: Proyecto de Investigación "MACK"
Exposición: Proyecto de Investigación "MACK"Exposición: Proyecto de Investigación "MACK"
Exposición: Proyecto de Investigación "MACK"kerenaradi
 
Sistemas de bases de datos que dan soporte a la toma de decisiones
Sistemas de bases de datos que dan soporte a la toma de decisionesSistemas de bases de datos que dan soporte a la toma de decisiones
Sistemas de bases de datos que dan soporte a la toma de decisionesJuan Anaya
 
Trabajo Por Entregar Wilmar Y Alvaro 1
Trabajo Por Entregar Wilmar Y Alvaro 1Trabajo Por Entregar Wilmar Y Alvaro 1
Trabajo Por Entregar Wilmar Y Alvaro 1Wilmar Gonzalez
 
Sistemas de Información Empresarial
Sistemas de Información EmpresarialSistemas de Información Empresarial
Sistemas de Información EmpresarialCristian Salazar C.
 
Presentacion del proyecto
Presentacion del proyectoPresentacion del proyecto
Presentacion del proyectoIng Buendia
 
PORTAFOLIO DE COMPUTACIÓN APLICADA
PORTAFOLIO DE COMPUTACIÓN APLICADAPORTAFOLIO DE COMPUTACIÓN APLICADA
PORTAFOLIO DE COMPUTACIÓN APLICADARitaMenoscal
 

Ähnlich wie Recopilacion... (20)

Te enamoraste jeje
Te enamoraste jejeTe enamoraste jeje
Te enamoraste jeje
 
Business intelligence diapositivas
Business intelligence diapositivasBusiness intelligence diapositivas
Business intelligence diapositivas
 
Arquitectura de datos empresariales análisis de una base de datos
Arquitectura de datos empresariales   análisis de una base de datosArquitectura de datos empresariales   análisis de una base de datos
Arquitectura de datos empresariales análisis de una base de datos
 
Mineria de datos
Mineria de datosMineria de datos
Mineria de datos
 
Machine Learning Aplicado al Marketing: Mejorando tu Negocio.
Machine Learning Aplicado al Marketing: Mejorando tu Negocio.Machine Learning Aplicado al Marketing: Mejorando tu Negocio.
Machine Learning Aplicado al Marketing: Mejorando tu Negocio.
 
Diapositivas ii
Diapositivas iiDiapositivas ii
Diapositivas ii
 
Tecnologias informaticas
Tecnologias informaticas Tecnologias informaticas
Tecnologias informaticas
 
Portafolio computación aplicada I
Portafolio computación aplicada IPortafolio computación aplicada I
Portafolio computación aplicada I
 
2 p inf 11 rmb.odt
2 p inf 11 rmb.odt2 p inf 11 rmb.odt
2 p inf 11 rmb.odt
 
Bases de datos
Bases de datosBases de datos
Bases de datos
 
2 p inf 9 rmb.odt
2 p inf 9 rmb.odt2 p inf 9 rmb.odt
2 p inf 9 rmb.odt
 
Exposición: Proyecto de Investigación "MACK"
Exposición: Proyecto de Investigación "MACK"Exposición: Proyecto de Investigación "MACK"
Exposición: Proyecto de Investigación "MACK"
 
Sistemas de bases de datos que dan soporte a la toma de decisiones
Sistemas de bases de datos que dan soporte a la toma de decisionesSistemas de bases de datos que dan soporte a la toma de decisiones
Sistemas de bases de datos que dan soporte a la toma de decisiones
 
Trabajo Por Entregar Wilmar Y Alvaro 1
Trabajo Por Entregar Wilmar Y Alvaro 1Trabajo Por Entregar Wilmar Y Alvaro 1
Trabajo Por Entregar Wilmar Y Alvaro 1
 
Sistemas de Información Empresarial
Sistemas de Información EmpresarialSistemas de Información Empresarial
Sistemas de Información Empresarial
 
Bases de datos
Bases de datosBases de datos
Bases de datos
 
Bases de datos 1
Bases de datos 1Bases de datos 1
Bases de datos 1
 
Presentacion del proyecto
Presentacion del proyectoPresentacion del proyecto
Presentacion del proyecto
 
rdolinski consultor 20100501 español
 rdolinski consultor 20100501 español rdolinski consultor 20100501 español
rdolinski consultor 20100501 español
 
PORTAFOLIO DE COMPUTACIÓN APLICADA
PORTAFOLIO DE COMPUTACIÓN APLICADAPORTAFOLIO DE COMPUTACIÓN APLICADA
PORTAFOLIO DE COMPUTACIÓN APLICADA
 

Recopilacion...

  • 1. 1
  • 2. PROYECTO “MER, MERE, MYSQL” MARÍA ISABEL VARGAS NAVAS “INSTITUTO TOLIMENSE DE FORMACIÓN TÉCNICA PROFESIONAL” FACULTAD INGENIERÍA Y CIENCIAS AGROINDUSTRIALES BASE DE DATOS SISTEMA Y COMPUTACIÓN SEMESTRE Ill NOCTURNO ESPINAL- TOLIMA 2012 2
  • 3. PROYECTO “MER, MERE, MYSQL” MARÍA ISABEL VARGAS NAVAS Docente ING. NAYIBE SORAYA SANCHEZ LEON “INSTITUTO TOLIMENSE DE FORMACIÓN TÉCNICA PROFESIONAL” FACULTAD INGENIERÍA Y CIENCIAS AGROINDUSTRIALES BASE DE DATOS SISTEMA Y COMPUTACIÓN SEMESTRE Ill NOCTURNO ESPINAL- TOLIMA 2012 3
  • 4. TABLA DE CONTENIDO Introducción Objetivos Justificación Metodología Marco teórico (MER, MERE)  Enunciado del problema.  Análisis del problema.  Diseño del problema.  Diagrama Entidad Relación.  Modelo Relacional .  Script MYSQL Continuación  Diccionario de datos 4
  • 5. INRODUCCIÓN El presente informe tiene como objetivo central, describir en forma sucinta el proceso que se debiera seguir para desarrollar una recopilación de informe “BASE DE DATOS “, mostrando cada uno de los pasos que intervienen en dicho proceso. Aquí se encontrará un desglose de cada etapa de una recopilación, Bases de datos nació bajo la necesidad de organizar y crear sistemas de información a cualquier tipo de organización, para poder en cualquier momento solucionar los problemas que se le presenten con ayuda de la información que esta nos puede suministrar. El presente trabajo está enfocado en la aplicación de los conceptos vistos en la asignatura de base de datos durante el presente semestre. Para el desarrollo de este trabajo he recopilado todos los talleres de dicho tema en el cual se suministrara más información explicada por la Docente. 5
  • 6. OBJETIVOS Aplicar los conceptos vistos en bases de datos diseñando el MER, MERE, DICCIONARIOS DE DATOS Y mysql . Dar a conocer lo importante que es crear o diseñar una base de datos. es una herramienta fundamental que tiene gran utilidad en nuestro mundo actual. Distinguir como son las relaciones, y por medio de ella nos ayuda a terminar el proceso que deseemos. Ver que la persona pueda comprender, interpretar y distinguir las ventajas de dicho tema. 6
  • 7. JUSTIFICACIÓN Hoy en día las SGBD rigen nuestra vida y nos plantean una solución a cualquier tipo problema que se nos presenta en la vida. Pero la ciencia debe tener tanto coherencia como cohesión al momento de divulgar la información que nos suministra, esto es una buena administración de la información. Base de datos nos permite crear una información organizada lo cual nos permite la coherencia y cohesión buscada, no solo en las ciencias sino también en los procesos administrativos como es el caso de este trabajo. 7
  • 8. METODOLOGÍA Primero que todo antes de empezar este desarrollo recopile información suministrada por el docente, documentos, artículos de internet para adquirir más conocimiento acerca de los conceptos de base datos. Por último organicé mis ideas y las plasmé en este trabajo. 8
  • 9. ENUNCIADO DEL PROBLEMA EJERCICIOS 1 “MER ” Imagina que una agencia de seguros de tu municipio te ha solicitado una base de datos mediante la cual llevar un control de los accidentes y las multas. Tras una serie de entrevistas, has tomado las siguientes notas: "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). De cada vehículo se desea almacenar la matrícula, la marca y el modelo. Una persona puede tener varios vehículos, y puede darse el caso de un vehículo pertenezca a varias personas a la vez. También se desea incorporar la información destinada a gestionar los accidentes del municipio. Cada accidente posee un número de referencia correlativo según orden de entrada a la base de datos. Se desea conocer la fecha, lugar y hora en que ha tenido lugar cada accidente. Se debe tener en cuenta que un accidente puede involucrar a varias personas y varios vehículos. 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." Realiza el modelo E-R, pásalo al modelo relacional, diccionario de datos y script mysql. 9
  • 10. ANALISIS DEL PROBLEMA PRIMARY KEY = SE IDENTIFICARA DEL COLOR (KP) FOREIGN KEY = SE IDENTIFICARA DEL COLOR (KF) PERSONAS (dni, nombre, apellidos, dirección, teléfono, ciudad, tipo de persona) VEHICULOS (matricula, marca. Modelo) MULTAS (consecutivo multa, fecha, hora, lugar infracción, dni) 10
  • 11. DISEÑO DEL PROBLEMA DIAGRAMA ENTIDAD RELACION 11
  • 13. SCRIPT DE MYSQL Mysql>CRÉATE DATABASE ACCIDENTES; Mysql>USE ACCIDENTES; Mysql>CREATE TABLE VEHÍCULOS (MATRICULA VARCHAR (10) NOT NULL, MARCA VARCHAR(30)NOT NULL, MODELO VARCHAR (40), PRIMARY KEY(MATRICULA ) )ENGINE=INNODB; Mysql>CREATE TABLE PERSONAS( DNI INT(15)NOT NULL, NOMBRE VARCHAR (15)NOT NULL,DIRECCIÓN VARCHAR (10)NOT NULL, CIUDAD VARCHAR (15) NOT NULL, TIPODEPERSONAS TEXT, APELLIDOS VARCHAR (15) NOT NULL, TELÉFONO INT (12)NOT NULL, PRIMARY KEY(DNI) )EGINE=INNODB; Mysql>CREATE TABLE MULTAS (CONCECUTIVODEMULTAS INT (5) NOT NULL,DNI INT(15) NOT NULL , FECHAYHORA DATETIME, LUGARINFRACION VARCHAR(250)NOT NULL,PRIMARYKEY(CONCECUTIVODEMULTAS) ENGINE=INNODB; MYSQL>ALTER TABLE ACCIDENTES ADD INDEX (DNI); Mysql> ALTER TABLE ACCIDENTS ADD FOREIGN KEY (DNI)REFERENCES ACCIDENTES.PERSONAS (DNI) ON DELETE NOT ACTION ON UPDATE CASCADE; Mysql>CREATE TABLE POSSER( TARJETA_DE_PROPIEDAD VARCHAR(14) NOT NULL, CIUDAD_DE_EXPEDICION VARCHAR (15) NOT NULL, MATRICULA VARCHAR (10) NOT NULL, DNI INT (15) NOT NULL, PRIMARY 13
  • 14. KEY(TARJETA_DE_PROPIEDAD, CIUDAD_DE_EXPEDICION, MATRICULA, DNI )ENGINE= INNODB; Mysql>ALTER TABLE ACCIDENTES ADD INDEX (DNI); Mysql> ALTER TABLE ACCIDENTES ADD FOREIGN KEY (DNI) REFERENCES ACCIDENTES.PERSONAS (DNI) ON DELETE NOT ACTION ON UPDATE CASCADE; Mysql>ALTER TABLE ACCIDENTES ADD INDEX (MATRICULA); Mysql> ALTER TABLE ACCIDENTES ADD FOREIGN KEY(MATRICULA )REFERENCES ACCIDENTS.VEHICULOS (MATRICULA) ON DELETE NOT ACTION ON UPDATE CASCADE; Mysql> CREATE TABLE INVOLUCRAR (HORA DATETIME, MATRICULA VARCHAR (10) NOT NULL, DNI INT (15) NOT NULL, PRIMARY KEY (HORA, MATRICULA, DNI), Mysql>ALTER TABLE ACCIDENTES ADD INDEX (MATRICULA); Mysql> ALTER TABLE ACCIDENTES ADD FOREIGN KEY(MATRICULA )REFERENCES ACCIDENTES.VEHICULOS (MATRICULA) ON DELETE NOT ACTION ON UPDATE CASCADE; Mysql>ALTER TABLE ACCIDENTES ADD INDEX (DNI); Mysql> ALTER TABLE ACCIDENTES ADD FOREIGN KEY (DNI)REFERENCES ACCIDENTES.PERSONAS (DNI) ON DELETE NOT ACTION ON UPDATE CASCADE; 14
  • 15. ENUNCIADO DEL PROBLEMA EJERCICIO 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. Los hoteles tiene diferentes clases de habitaciones (suites, dobles, individuales, etc.), que se numeran de forma que se pueda identificar fácilmente la planta en la que se encuentran. Así pues, de cada habitación se desea guardar el código y el tipo de habitación. Los particulares pueden realizar reservas de las habitaciones de los hoteles. En la reserva de los particulares figurarán el nombre, la dirección y el teléfono. Las agencias de viaje también pueden realizar reservas de las habitaciones. En caso de que la reserva la realiza una agencia de viajes, se necesitarán los mismos datos que para los particulares, además del nombre de la persona para quien la agencia de viajes está realizando la reserva. En los dos casos anteriores también se debe almacenar el precio de la reserva, la fecha de inicio y la fecha de fin de la reserva". 15
  • 16. ANÁLISIS DEL PROBLEMA HOTELES ( nit, nombre , dirección ,año de construcción) CATEGORÍAS (nivel, IVA, descripción) HABITACIONES (código, tipos de habitaciones) PERSONAS (cedula, nombre, dirección, teléfono) AGENCIA DE VIAJES ( nit a_v, nombre, dirección, teléfono ,ciudad) RESERVAS (n° reserva, f. ingreso, f. salida , hora ingreso) 16
  • 17. DISEÑO DEL PROBLEMA DIAGRAMA ENTIDAD RELACION 17
  • 19. SCRIPT MYSQL Mysql>CREATE DATABASE HOTELERA; Mysql>USE HOTELERA Mysql>CREATE TABLE CATEGORIA (NIVELVARCHAR (15) NOT NULL, IVA MONEY, DESCRIPCION TEXT, PRIMARY KEY (NIVEL )) ENGINE=INNODB; Mysql> CREATE TABLE PERSONAS(CEDULAINT(15)NOT NULL,NOMBRE VARCHAR(15) NOT NULL, APELLIDOS VARCHAR(15) NOT NULL, DIRECCION VARCHAR(10) NOT NULL, TELEFONO INT (10) NOT NULL, PRIMARY KEY ( CEDULA ) ) ENGINE= INNODB ; Mysql> CREATE TABLE AGENCIAS_DE_VIAJES(NIT_A_V INT (20) NOT NULL ,NOMBRE VARCHAR(15) NOT NULL, DIRECCION VARCHAR(10)NOTNULL, TELEFONO INT (10) NOT NULL, CIUDAD VARCHAR(15) NOT NULL, PRIMARY KEY (NIT_A_V))ENGINE= INNODB; Mysql> CREATE TABLE HOTELES (NIT INT (20) NOT NULL, NIVEL VARCHAR (15) NOT NULL, NOMBRE VARCHAR(15) NOT NULL, DIRECCION VARCHAR(14) NOT NULL, AÑO_DE_CONSTRUCCION INT (4) NOT NULL, PRIMARY KEY( NIT)) ENGINE= INNODB; Mysql>ALTER TABLE HOTELERA ADD INDEX (NIVEL); Mysql> ALTER TABLE HOTELERA ADD FOREIGN KEY(NIVEL )REFERENCES HOTELERA.CATEGORIA (NIVEL) ON DELETE NOT ACTION ON UPDATE CASCADE; Mysql> CREATE TABLE HABITACION (CODIGO_HABITACION INT (4) NOT NULL,NIT INT (20) NOT NULL, TIPOS_DE_HABITACIONES VARCHAR(16) NOT NULL, PRIMARY KEY( CODIGO_HABITACION )) ENGINE= INNODB; Mysql>ALTER TABLE HOTELERA ADD INDEX (NIT); Mysql> ALTER TABLE HOTELERA ADD FOREIGN KEY(NIT )REFERENCES HOTELERA .HOTELES (NIT) ON DELETE NOT ACTION ON UPDATE CASCADE; Mysql> CREATE TABLE RESERVAS (NUMERO_RESERVAS INT(15)NOT NULL, NIT INT (15) NOT NULL, CEDULA INT (15) NOT NULL, NIT_A_V INT (20) NOT NULL, FECHA_INGRESO DATETIME NOT NULL, FECHA_SALIDA DATETIME NOT NULL, HORA_INGRESO DATETIME NOT NULL, PRIMARY KEY( NUMERO_RESERVAS)) ENGINE= INNODB; Mysql>ALTER TABLE HOTELERA ADD INDEX (NIT); 19
  • 20. Mysql> ALTER TABLE HOTELERA ADD FOREIGN KEY(NIT)REFERENCES HOTELERA .HOTELES (NIT) ON DELETE NOT ACTION ON UPDATE CASCADE; Mysql>ALTER TABLE HOTELERA ADD INDEX (CEDULA); Mysql> ALTER TABLE HOTELERA ADD FOREIGN KEY(CEDULA)REFERENCES HOTELERA .PERSONAS (CEDULA) ON DELETE NOT ACTION ON UPDATE CASCADE; Mysql>ALTER TABLE HOTELERA ADD INDEX (NIT_A_V); Mysql>ALTER TABLE HOTELERA ADD FOREIGN KEY(NIT_A_V)REFERENCESHOTELERA.AGENCIAS_DE_VIAJES (NIT_A_V) ON DELETE NOT ACTION ON UPDATE CASCADE; 20
  • 21. ENUNCIADO DEL PROBLEMA EJERCICO 3 "Se desea diseñar una base de datos para almacenar y gestionar la información empleada por una empresa dedicada a la venta de automóviles, teniendo en cuenta los siguientes aspectos: La empresa dispone de una serie de coches para su venta. Se necesita conocer la matrícula, marca y modelo, el color y el precio de venta de cada coche. La marca es una entidad independiente, de la cual se le tiene asignado un código y la descripción. Los datos que interesa conocer de cada cliente son el NIT, nombre, dirección, ciudad y número de teléfono: además, los clientes se diferencian por un código interno de la empresa que se incrementa automáticamente cuando un cliente se da de alta en ella. Un cliente puede comprar tantos coches como desee a la empresa. Un coche determinado solo puede ser comprado por un único cliente. 21
  • 22. ANÁLISIS DEL PROBLEMA COCHE (matricula, modelo, color, pvc , MARCA (código, descripción) CLIENTE (nit, nombre, dirección, ciudad , código cliente) 22
  • 23. DISEÑO DEL PROBLEMA DIAGRAMA ENTIDAD RELACION 23
  • 25. SCRIPT MYSQL Mysql>CREATE DATABASE AUTOMOBILE; Mysql>USE AUTOMOBILE; Mysql>CREATE TABLE CLIENTES ( NIT_C INT (15) NOT NULL , NOMBRE VARCHAR(15) NOT NULL, APELLIDOS VARCHAR(15) NOT NULL, DIRECCION VARCHAR(16) NOT NULL, CIUDAD VARCHAR(15) NOT NULL, CODIGO_CLIENTE INT(15), PRIMARY KEY( NIT_C)) ENGINE=INNODB; Mysql>CREATE TABLE MARCA (CODIGO_M INT (10) NOT NULL, DESCRIPCION TEXT NOT NULL, PRIMARY KEY (CODIGO_M)) ENGINE= INNODB; Mysql> CREATE TABLE COCHE (MATRICULA VARCHAR(10)NOT NULL, MODELO TEXT NOT NULL, COLOR TEXT NOT NULL , PVC MONEY NOT NULL, PRIMARY KEY (MATRICULA)) ENGINE=INNODB; Mysql>ALTER TABLE AUTOMOBILE ADD INDEX (NIT_C); Mysql> ALTER TABLE AUTOMOBILE ADD FOREIGN KEY(NIT_C)REFERENCES AUTOMOBILE .CLIENTES (NIT_C) ON DELETE NOT ACTION ON UPDATE CASCADE; Mysql>ALTER TABLE AUTOMOBILE ADD INDEX (CODIGO_M); Mysql> ALTER TABLE AUTOMOBILE ADD FOREIGN KEY(CODIGO_M)REFERENCES AUTOMOBILE .MARCA (CODIGO_M) ON DELETE NOT ACTION ON UPDATE CASCADE ; 25
  • 26. ENUNCIADO DEL PROBLEMA EJERCICIO 4 Se desea informatizar la gestión de una tienda informática llamada EL OSITO FELIZ. La tienda dispone de una serie de productos que se pueden vender a los clientes. De cada producto informático se desea guardar el código, descripción, precio y número de existencias. De cada cliente se desea guardar el código, nombre, apellidos, dirección y número de teléfono. Un cliente puede comprar varios productos en la tienda y un mismo producto puede ser comprado por varios clientes. Cada vez que se compre un artículo quedará registrada la compra en la base de datos junto con la fecha en la que se ha comprado el artículo. La tienda tiene contactos con varios proveedores que son los que suministran los productos. Un mismo producto puede ser suministrado por varios proveedores. De cada proveedor se desea guardar el código, nombre, apellidos, dirección, provincia y número de teléfono". 26
  • 27. ANÁLISIS DEL PROBLEMA PRODUCTO ( código_producto, descripción, precio, n° existencia) CLIENTES ( código_c, nombre, apellidos, dirección, teléfono) PROVEEDORES (cód._ proveedores, nombre, apellidos, dirección, provincia, n_ teléfono) 27
  • 28. DISEÑO DEL PROBLEMA DIAGRAMA ENTIDAD RELACION 28
  • 30. SCRIPT MYSQL mysql>CREATE DATABASE TIENDA; mysql>USE TIENDA; mysql> CREATE TABLE CLIENTE(CODIGO_C INT(10) NOT NULL, NOMBRE VARCHAR(15) NOT NULL, APELLIDOS VARCHAR(15) NOT NULL , DIRECCION VARCHAR(15) NOT NULL, TELEFONO INT(10) NOT NULL, PRIMARY KEY( CODIGO_C) )ENGINE=INNODB; mysql> CREATE TABLE PRODUCTO(CODIGO_PRODUCTO INT(10) NOT NULL, DESCRIPCION VARCHAR(20)NOT NULL, PRECIO MONEY NOT NULL, NUMERO_EXITENCIAINT(10),PRIMARYKEY( CODIGO_PRODUCTO))ENGINE=INNODB; mysql> CREATE TABLE PROVEDORES(CODIGO_PROVEDORES INT(10)NOT NULL, NOMBRE VARCHAR(15) NOT NULL, APELLIDOS VARCHAR(15) NOT NULL, DIRECCION VARCHAR(10)NOT NULL, PROVINVIA VARCHAR(30)NOT NULL, NUMERO_TELEFONO INT(10)NOTNULL,PRIMARYKEY(CODIGO_PROVEDORES)) ENGINE=INNODB; mysql> CREATE TABLE COMPRAR(FECHA_COMPRA DATETIME NOT NULL, CODIGO_C INT(10) NOT NULL, CODIGO_PRODUCTO INT(10) NOT NULL, PRIMARY KEY( FECHA_COMPRA, CODIGO_C, CODIGO_PRODUCTO)ENGINE=INNODB; mysql>ALTER TABLE TIENDA ADD INDEX (CODIGO_C); mysql>ALTERTABLETIENDAADDFOREIGNKEY(CODIGO_C)REFER ENCES TIENDA .CLIENTE (CODIGO_C) ON DELETE NOT ACTION ON UPDATE CASCADE; mysql>ALTER TABLE TIENDA ADD INDEX (CODIGO_PRODUCTO); 30
  • 31. mysql> ALTER TABLE TIENDA ADD FOREIGN KEY(CODIGO_M)REFERENCES TIENDA .PRODUCTO (CODIGO_PRODUCTO) ON DELETE NOT ACTION ON UPDATE CASCADE; mysql> CREATE TABLE DISTRIBUIR(CANTIDAD_PRODUCTO INT(10) NOT NULL, CODIGO_PROVEDORES INT(10)NOT NULL, PRIMARY KEY(CANTIDAD_PRODUCTO,CODIGO_PRODUCTO, CODIGO_PROVEDORES))ENGINE=INNODB; mysql>ALTER TABLE TIENDA ADD INDEX (CODIGO_PRODUCTO); mysql> ALTER TABLE TIENDA ADD FOREIGN KEY(CODIGO_M)REFERENCES TIENDA .PRODUCTO (CODIGO_PRODUCTO) ON DELETE NOT ACTION ON UPDATE CASCADE; mysql>ALTER TABLE TIENDA ADD INDEX (CODIGO_PROVEDORES); mysql> ALTER TABLE TIENDA ADD FOREIGN KEY(PROVEDORES )REFERENCES TIENDA .PROVEDORES ( CODIGO_PROVEDORES ) ON DELETE NOT ACTION ON UPDATE CASCADE; 31
  • 32. ENUNCIADO DEL PROBLEMA EJERCICIO 5 A partir del siguiente enunciado, diseñar el modelo entidad-relación. "En la biblioteca del centro se manejan fichas de autores y libros. En la ficha de cada autor se tiene el código de autor y el nombre. De cada libro se guarda el código, título, ISBN, editorial y número de página. Un autor puede escribir varios libros, y un libro puede ser escrito por varios autores. Un libro está formado por ejemplares. Cada ejemplar tiene un código y una localización. Un libro tiene muchos ejemplares y un ejemplar pertenece sólo a un libro. Los usuarios de la biblioteca del centro también disponen de ficha en la biblioteca y sacan ejemplares de ella. De cada usuario se guarda el código, nombre, dirección y teléfono. Los ejemplares son prestados a los usuarios. Un usuario puede tomar prestados varios ejemplares, y un ejemplar puede ser prestado a varios usuarios. De cada préstamos interesa guardar la fecha de préstamo y la fecha de devolución". Pasar el modelo entidad-relación resultante al modelo relacional. Diseñar las tablas en Access, realizar las relaciones oportunas entre tablas e insertar cinco registros en cada una de las tablas. 32
  • 33. ANÁLISIS DEL PROBLEMA LIBRO ( código_ libro, titulo, editorial, n° pagina) AUTOR (código_autor , nombre) EJEMPLARES ( código_ejemplares , localización) USUARIO (código_ usuario , nombre, dirección , teléfono) 33
  • 34. DISEÑO DEL PROBLEMA DIAGRAMA ENTIDAD RELACIÓN 34
  • 36. SCRIPT MYSQL mysql>CREATE DATABASE BIBLIOTECA ; mysql>USE BIBLIOTECA; mysql> CREATE TABLE LIBRO(CODIGO_LIBRO INT(10)NOT NULL, TITULO TEXT NOT NULL, NUMERO_PAGINA INT(15)NOT NULL, EDICTORIAL VARCHAR(16) NOT NULL, ISBN VARCHAR(12)NOT NULL , PRIMARY KEY(CODIGO_LIBRO)) ENGINE=INNODB; mysql> CREATE TABLE USUARIO(CODIGO_USUSARIO INT( 15)NOT NULL, NOMBRE VARCHAR(15)NOT NULL , APELLIDOS VARCHAR(30)NOT NULL, DIRECCION VARCHAR(30)NOT NULL, TELEFONO INT (10) NOT NULL, PRIMARY KEY(CODIGO_USUARIO))ENGINE=INNODB, mysql> CREATE TABLE AUTOR( CODIGO_AUTOR INT(10)NOT NULL, NOMBRE VARCHAR(15)NOT NULL, PRIMARY KEY(CODIGO_AUTOR)) ENGINE= INNODB; mysql> CREATE TABLE EJEMPLARES( CODIGO_EJEMPLARES INT(15)NOT NULL, CODIGO_LIBRO INT(10)NOT NULL, LOCALIZACION VARCHAR(20 )NOT NULL, PRIMARY KEY (CODIGO_EJEMPLARES))ENGINE=INNODB; mysql>ALTER TABLE BIBLIOTECA ADD INDEX (CODIGO_LIBRO); mysql> ALTER TABLEBIBLIOTECA ADD FOREIGN KEY(CODIGO_LIEBRO)REFERENCES BIBLIOTECA .LIBRO ( CODIGO_LIBRO) ON DELETE NOT ACTION ON UPDATE CASCADE; mysql> (CREATE TABLE PRESTAR(CODIGO_USUARIO INT(15) NOT NULL , FECHA_DEVOLUCION DATETIME NOT NULL, FECHA_PRESTAMO DATETIME NOT NULL, PRIMARY KEY(CODIGO_USUARIO, CODIGO_EJEMPLARES) )ENGINE= INNODB; mysql>ALTER TABLE BIBLIOTECA ADD INDEX (CODIGO_USUARIO); mysql> ALTER TA BLEBIBLIOTECA ADD FOREIGN KEY(CODIGO_USUARIO)REFERENCES BIBLIOTECA .LIBRO ( CODIGO_LIBRO) ON DELETE NOT ACTION ON UPDATE CASCADE; mysql>ALTER TABLE BIBLIOTECA ADD INDEX (CODIGO_EJEMPLARES ); 36
  • 37. mysql>ALTERTABLEBIBLIOTECAADDFOREIGNKEY(CODIGO_EJEMPLARES)REFERENCES BIBLIOTECA .LIBRO ( CODIGO_ERJEMPLARES) ON DELETE NOT ACTION ON UPDATE CASCADE; mysql> CREATE TABLE ESCRIBIR( DIA_MES_AÑO DATETIME NOT NULL, CODIGO_LIBRO INT(10) NOT NULL, PRIMARY HEY ( DIA_MES_AÑO, CODIGO_AUTOR, CODIGO_LIBRO))ENGINE= INNODB; mysql>ALTER TABLE BIBLIOTECA ADD INDEX (CODIGO_AUTOR); mysql> ALTER TA BLEBIBLIOTECA ADD FOREIGN KEY(CODIGO_AUTOR )REFERENCES BIBLIOTECA .AUTOR ( CODIGO_AUTOR) ON DELETE NOT ACTION ON UPDATE CASCADE; mysql>ALTER TABLE BIBLIOTECA ADD INDEX (CODIGO_USUARIO); mysql> ALTER TA BLEBIBLIOTECA ADD FOREIGN KEY(CODIGO_USUARIO)REFERENCES BIBLIOTECA .LIBRO ( CODIGO_LIBRO) ON DELETE NOT ACTION ON UPDATE CASCADE; 37
  • 38. ENUNCIADO PROBLEMA EJERCICIO 6 A partir del siguiente enunciado se desea realiza el modelo entidad- relación y pasarlo al modelo de datos relacional. 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". “Todo viajero debe tener referencia familiares a la agenda de viajes.” 38
  • 39. ANALISIS DEL PROBLEMA VIAJEROS ( dni, nombre, dirección, teléfono) VIAJES ( código_de_viaje, numero_ plazas, fvr ) ORIGEN (código_origen) DESTINO ( código_destino) REFERNCIA FAMILIARES ( dni_familiar, nombre, apellido, dirección, teléfono) 39
  • 40. DISEÑO DEL PROBLEMA DIAGRAMA ENTIDAD RELACIÓN 40
  • 42. SCRIPT MYSQL mysql>CREATE DATABASE AGENCIA; MYSQL>USE AGENCIA; MYSQL>CREATE TABLE VIAJEROS( DNI INT(10) NOT NULL, NOMBRE VARCHAR(15)NOT NULL, DIRECCION VARCHAR(15)NOT NULL, TELEFONO INT(15) NOT NULL, PRIMARY KEY( DNI))ENGINE=INNODB; MYSQL>CREATE TABLE VIAJES(CODIGO_DE_VIAJE INT(5) NOT NULL, DNI INT(10)NOT NULL, NUMERO_PLAZAS INT(10)NOT NULL, FRV DATETIME NOT NULL, PRIMARY KEY( CODIGO_DE_VIAJE))ENGINE=INNODB; MYSQL> ALTER TABLE AGENCIA ADD INDEX (DNI); mysql> ALTER TA BLE AGENCIA ADD FOREIGN KEY(DNI)REFERENCES.VIAJEROS (DNI) ON DELETE NOT ACTION ON UPDATE CASCADE; MYSQL> CREATE TABLE ORIGEN(CODIGO_DE_VIAJE INT(5)NOT NULL, CODIGO_ORIGEN INT(5)NOT NULL, PRIMARY KEY(CODIGO_DE_VIAJE))ENGINE=INNODB; MYSQL> ALTER TABLE AGENCIA ADD INDEX(CODIGO_DE_VIAJE); mysql>ALTERTABLEAGENCIAADDFOREIGNKEY(CODIGO_DE_VIAJE)REFERENCES.VIAJE ROS (CODIGO_DE_VIAJE) ON DELETE NOT ACTION ON UPDATE CASCADE; mysql> CREATE TABLE DESTINO( CODIGO_DE_VIAJE INT(5) NOT NULL, CODIGO_DESTINO INT((5)NOT NULL, PRIMARY KEY(CODIGO_DE_VIAJE))ENGINE=INNODB; MYSQL> ALTER TABLE AGENCIA ADD INDEX(CODIGO_DE_VIAJE); mysql>ALTERTABLEAGENCIAADDFOREIGNKEY(CODIGO_DE_VIAJE)REFERENCES.VIAJE ROS (CODIGO_DE_VIAJE) ON DELETE NOT ACTION ON UPDATE CASCADE; mysql> CREATE TABLE REFERENCIAS_FAMILIARES( DNI_FAMILIAR INT(15) NOT NULL, NOMBRE VARCHAR(15)NOT NULL, APELLIDOS VARCHAR(16)NOT NULL, DIRECCION INT(10) NOT NULL, TELEFONO INT(10) NOT NULL, PRIMARY KEY ( DNI_FAMILIAR, DNI ,CODIGO_DE_VIAJE))ENGINE=INNODB; 42
  • 43. MYSQL> ALTER TABLE AGENCIA ADD INDEX(DNI); mysql>ALTERTABLEAGENCIAADDFOREIGNKEY(DNI)REFERENCES.VIAJEROS (DNI) ON DELETE NOT ACTION ON UPDATE CASCADE; MYSQL> ALTER TABLE AGENCIA ADD INDEX(CODIGO_DE_VIAJE); mysql>ALTERTABLEAGENCIAADDFOREIGNKEY(CODIGO_DE_VIAJE)REFERENCES.VIAJE ROS (CODIGO_DE_VIAJE) ON DELETE NOT ACTION ON UPDATE CASCADE; 43
  • 44. ENUNCIADO DEL PROBLEMA EJERCICIO 7. A partir del siguiente enunciado se desea realiza el modelo entidad- relación y pasarlo al modelo de datos relacional. "A un concesionario de coches llegan clientes para comprar automóviles. De cada coche interesa saber la matrícula, modelo, marca y color. Un cliente puede comprar varios coches en el concesionario. Cuando un cliente compra un coche, se le hace una ficha en el concesionario con la siguiente información: dni, nombre, apellidos, dirección y teléfono. 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. El concesionario también dispone de un taller en el que los mecánicos reparan los coches que llevan los clientes. Un mecánico repara varios coches a lo largo del día, y un coche puede ser reparado por varios mecánicos. Los mecánicos tienen un dni, nombre, apellidos, fecha de contratación y salario. Se desea guardar también la fecha en la que se repara cada vehículo y el número de horas que se tardado en arreglar cada automóvil". 44
  • 45. ANÁLISIS DEL PROBLEMA COCHE (MATRICULA, MODELO, MARCA, COLOR) CLIENTE (DNI CLIENTE, NOMBRE, APELLIDOS, CIUDAD, DIRECCIÓN , TELÉFONO) FICHA CLIENTE ( DNI, NOMBRE, APELLIDOS, DIRECCIÓN, TELÉFONO) NUEVO( N° UNIDADES ) USADOS(N° KILÓMETROS) MECANICO( DNI_M, NOMBRE , APELLIDOS, FECHA CONTRATACIÓN, SALARIO) 45
  • 46. DISEÑO DEL PROBLEMA DIAGRAMA ENTIDAD RELACION 46
  • 48. SCRIPT MYSQL mysql>CREATE DATABASE CONCESIOANRIO; MYSQL>USE CONCESIONARIO; MYSQL> CREATE TABLE FICHA_CLIENTE(DNI_F_C INT(10)NOT NULL, NOMBRE VARCHAR(15)NOT NULL, APELLIDOS VARCHAR(15)NOT NULL, DIRECCION VARCHAR(10)NOT NULL, TELEFONO INT (10) NOT NULL, PRIMARY KEY(DNI_F_C)ENGINE=INNODB; MYSQL> CREATE TABLE MECANICOS(DNI_M INT(10)NOT NULL, NOMBRE VARCHAR(15)NOT NULL, APELLIDOS VARCHAR(15)NOT NULL, FECHA_DE_CONTRATACION DATETIME NOT NULL, SALARIO MONAY NOT NULL, PRIMARY KEY( DNI_M))ENGINE=INNODB; MYSQL> CREATE TABLE CLIENTE(DNI_CLIENTE INT(10) NOT NULL, DNI_F_C INT(10) NOT NULL, NOMBRE VARCHAR(15)NOT NULL, APELLLIDOS VARCHAR(15)NOT NULL, CIUDAD VARCHAR(15)NOT NULL, DIRECCION VARCHAR(10)NOT NULL, TELEFONO INT(10), PRIMARY KEY( DNI_CLIENTE))ENGINE=INNODB; MYSQL> ALTER TABLE CONCESIOANRIO ADD INDEX( DNI_F_C); mysql>ALTERTABLE CONCESIOANRIO ADDFOREIGNKEY( DNI_F_C)REFERENCES. FICHA_CLIENTE (DNI_F_C) ON DELETE NOT ACTION ON UPDATE CASCADE; MYSQL> CREATE TABLE COCHE(MATRICULA INT(10)NOT NULL, DNI_CLIENTE INT(10)NOT NULL, MODELO VARCHAR(15)NOT NULL, MARCA VARCHAR(15)NOT NULL, COLOR VARCHAR(15)NOT NULL, PRIMARY KEY ( MATRICULA))ENGINE=INNODB; MYSQL> ALTER TABLE CONCESIOANRIO ADD INDEX( DNI_CLIENTE); mysql>ALTERTABLE CONCESIOANRIO ADDFOREIGNKEY( DNI_CLIENTE)REFERENCES. CLIENTE (DNI_CLIENTE) ON DELETE NOT ACTION ON UPDATE CASCADE mysql> CREATE TABLE NUEVO(MATRICULA INT(10)NOT NULL, N_UNIDADES INT(20)NOT NULL, PRIMARY KEY(MATRICULA))ENGINE=INNODB; MYSQL> ALTER TABLE CONCESIOANRIO ADD INDEX(MATRICULA); mysql>ALTERTABLE CONCESIOANRIO ADDFOREIGNKEY( MATRUICULA)REFERENCES. COCHE(MATRICULA) ON DELETE NOT ACTION ON UPDATE CASCADE; 48
  • 49. mysql>CREATE TABLE VIEJOSMATRICULA INT(10)NOT NULL, (, N_KILOMETROS INT(30)NOT NULL, PRIMARY KEY( MATRICULA))ENGINE=INNODB; MYSQL> ALTER TABLE CONCESIOANRIO ADD INDEX(MATRICULA); mysql>ALTERTABLE CONCESIOANRIO ADDFOREIGNKEY( MATRUICULA)REFERENCES. COCHE(MATRICULA) ON DELETE NOT ACTION ON UPDATE CASCADE; mysql>CREATE TABLE REPARAR( N_HORAS DATETIME NOT NULL, FECHA_R_V DATETIME, NOT NULL, MATRICULA INT(10)NOT NULL, DNI_M INT(10)NOT NULL, PRIMARY KEY( N_HORAS, FECHA_R_V, MATRICULA, DNI_M)ENGINE=INNODB; MYSQL> ALTER TABLE CONCESIOANRIO ADD INDEX(MATRICULA); mysql>ALTERTABLE CONCESIOANRIO ADDFOREIGNKEY( MATRUICULA)REFERENCES. COCHE(MATRICULA) ON DELETE NOT ACTION ON UPDATE CASCADE; MYSQL> ALTER TABLE CONCESIOANRIO ADD INDEX(DNI_M); mysql>ALTERTABLE CONCESIOANRIO ADDFOREIGNKEY( DNI_M)REFERENCES. MECANICO(DNI_MA) ON DELETE NOT ACTION ON UPDATE CASCADE; 49
  • 50. ENUNCIADO DEL PROBLEMA EJERCICIO 8. A partir del siguiente enunciado se desea realiza el modelo entidad- relación y pasarlo al modelo de datos relacional. Una empresa de aparatos electrónicos desea informatizar sus datos. 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). Cada tipo de electrodoméstico (televisor, mp3, lavadora, etc.) tiene un nombre y unas características (un campo de texto). Se supone que no hay dos tipos con el mismo nombre y características. Algunos tipos pueden formar parte de otro tipo más general (mp3 de aparato de música), pero en este caso solo forman parte de un único tipo. Los componentes son las piezas que forman el aparato. Vienen dados por un nombre (por ejemplo transformador) y unas especificaciones (un campo de texto). También nos interesa conocer datos de los fabricantes de componentes: Su CIF (único) y su domicilio social. 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. 50
  • 51. ANÁLISIS DEL PROBLEMA APARATO ELÉCTRICO (CÓDIGO, DECRIPCION) TIPO ELECTRODOMÉSTICO (CÓDIGO_T_ ELECTRODOMEESTICO, NOMBRE, CARACTERISTICAS) COMPONENTES PEIZAS ( CÓDIGO PIEZA, NOMBRE , ESPECICFICACION,CÓDIGO) FABRICANTES ( CIF, DOMICILIO SOCIAL, NOMBRE,) 51
  • 52. DISEÑO DEL PROBLEMA DIAGRAMA ENTIDAD RELACIÓN 52
  • 54. SCRIPT MYSQL mysql>CREATE DATABASE ELECTRODOMESTICOS; MYSQL>USE ELECTROMESTICO; MYSQL> CREATE TABLE APARATO_ELECTRODOMESTICO (CODIGO_A_E INT(20) NOTNULL, DESCRIPCION TEXT NOT NULL, PRIMARY KEY(CODIGO_A_E))ENGINE=INNODB; MYSQL> CREATE TABLE TIPO_ELCETRODOMESTICO(CODIGO_T_E INT(20)NOT NULL,CODIGO_A_E INT (20)NOT NULL, NOMBRE VARCHAR(15)NOT NULL, CARACTERISTICASTEXT NOT NULL, PRIMARY KEY ( CODIGO_T_E)ENGINE=INNODB; MYSQL> ALTER TABLE ELECTRODOMESTICOS ADD INDEX(CODIGO_A_E); mysql>ALTERTABLEELECTRODOMESTICOSADDFOREIGNKEY(CODIGO_A_E) REFERENCES. APARATO_ELECTRODOMESTICO ( CODIGO_A_E) ON DELETE NOT ACTION ON UPDATE CASCADE; MYSQL> CREATE TABLE COMPONENTE_PIEZAS (CODIGO_PIEZAS INT(15) NOT NULL, CODIGO_A_E INT(20)NOT NULL, ESPECIFICACION TEXT NOT NULL, NOMBRE VARCHAR(15)NOT NULL, PRIMARY KEY ( CODIGO_PIEZAS )ENGIEN= INNODB; MYSQL> ALTER TABLE ELECTRODOMESTICOS ADD INDEX(CODIGO_A_E); mysql>VALTERTABLEELECTRODOMESTICOSADDFOREIGNKEY(CODIGO_A_E) REFERENCES. APARATO_ELECTRODOMESTICO ( CODIGO_A_E) ON DELETE NOT ACTION ON UPDATE CASCADE; mysql> CREATE TABLE FABRICANTE(CIF INT(20)NOT NULL, CODIGO_PIEZAS INT(15), NOMBRE_FABRICANTE VARCHAR(15)NOT NULL, DOMICILO_SOCIAL TEXT NOT NUL, PRIMARY KEY( CIF)ENGINE=INNODB; MYSQL> ALTER TABLE ELECTRODOMESTICOS ADD INDEX(CODIGO_PIEZAS); mysql>VALTERTABLEELECTRODOMESTICOSADDFOREIGNKEY(CODIGO_PIEZAS) REFERENCES. COMPONENTE_PIEZAS ( CODIGO_PIEZAS) ON DELETE NOT ACTION ON UPDATE CASCADE; 54
  • 55. ENUNCIADO PROBLEMA EJERCICIO 9. A partir del siguiente enunciado se desea realiza el modelo entidad- relación y pasarlo al modelo de datos relacional. 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. De las empresas interesa conocer persona de contacto, dirección de la empresa y número de empleados total, y si actualmente se tiene o no convenio con ellos. De los socios además de sus datos básicos (cédula, nombre, teléfono, dirección, número de celular y correo electrónico opcionales), interesa conocer el salario mensual. Cada préstamo requiere además de un codeudor del cual se registran sus datos básicos. También es importante conocer si el codeudor es un posible cliente o no, para enviarle información para que se afilie a la cooperativa. En caso de que un codeudor se vuelve socio de la compañía entonces es necesario que el asociado solicitante del préstamo consiga otro codeudor externo, no se permiten codeudores que sean socios de la cooperativa. 55
  • 56. ANÁLISIS DEL PROBLEMA SOCIOS (CEDULA, NOMBRE , APELLIDOS , TELÉFONO, DIRECCIÓN, NUMERO CELULAR, CORREO ELECTRÓNICO, SALARIO MENSUAL) PRÉSTAMO (NUMERO PRÉSTAMO, TIPO MODALIDAD) EMPRESA( DNI, P.CONTACTO, DIRECCIÓN, NUMERO EMPLEADOS TOTAL) MODALIDAD ( CÓDIGO MODALIDAD, PLAZO MÁXIMO ESTIMULADO, TASA DE INTERÉS DEFINIDA) COOPERATIVA (NUMERO PRÉSTAMO, FECHA INICIO, VALOR PRÉSTAMO, CUOTA MENSUAL, PLAZO MESES) CODEUDOR ( DNI, NOMBRE, APELLIDOS , CIUDAD, TELÉFONO, DIRECCIÓN) 56
  • 59. SCRIPT MYSQL mysql>CREATE DATABASE DINERO; MYSQL>USE DINERO; MYSQL>CREATETABLE PRESTAMO(NUMERO_PRESTAMO INT(10) NOT NULL, TIPO_MODALIDAD TEXT NOTNULL, PRIMARYKEY(NUMERO_PRESTAMO))ENGINE=INNODB; MYSQL>CREATE TABLE EMPRESA(DNI_EMPRESA INT(20)NOT NULL, PERSONA_CONTACTO VARCHAR(20)NOT NULL, DIRECCION VARCHAR(15)NOT NULL, N_E_T INT(10)NOT NULL, PRIMARY KEY( DNI_EMPRESA ))ENGINE=INNODB; MYSQL>CREATE TABLE COOPERATIVA (N_PRESTAMO INT(10)NOT NULL,FECHA_INICIO DATETIME NOT NULL,VALOR_PRESTAMO MONEY NOT NULL, CUOTA_MENSUAL MONEY NOT NULL, PLAZO_MESES INT(10),PRIMARY KEY( N_PRESTAMO))ENGINE=INNODB; MYSQL>CREATE TABLE CODEUDOR(DNI INT(10)NOT NULL, NOMBRE VARCHAR(15)NOT NULL APELLDOS VARCHAR(16)NOT NULL, CIUDAD VARCHAR(15)NOT NULL, TELEFONO INT(10)NOT NULL, DIRECCION VARCHAR(10)NOT NULL, PRIMARY KEY(DNI))ENGINE=INNODB; MYSQL> CREATE TABLE SOCIOS(CEDULA INT(10)NOT NUL, DNI_EMPRESA INT(20)NOT NULL,DNI INT(10)NOT NULL, N_PRESTAMO INT(10)NOT NULL, NOMBRE VARCHAR(15)NOT NULL, APELLIDOS VARCHAR(15)NOT NULL, TELEFONO INT(10)NOT NULL , DIRECCION VARCHAR(15) NOT NUL, NUMERO_CELULAR INT(10)NOT NULL, CORREO_ELECTRONICO VARCHAR(15)NOTNULL,SALARIO_MENSUALMONEY NOT NULL, PRIMARY KEY (CEDULA))ENGINE=INNODB; MYSQL> ALTER TABLE DINERO ADD INDEX(DNI_EMPRESA); mysql> ALTERTABLE DINERO ADDFOREIGNKEY(DNI_EMPRESA) REFERENCES. EMPRESA ( DNI_EMPRESA) ON DELETE NOT ACTION ON UPDATE CASCADE; MYSQL> ALTER TABLE DINERO ADD INDEX(DNI); 59
  • 60. mysql>VALTERTABLE DINERO ADDFOREIGNKEY(DNI) REFERENCES. CODEUDOR( DNI) ON DELETE NOT ACTION ON UPDATE CASCADE; MYSQL> ALTER TABLE DINERO ADD INDEX(N_PRESTAMOI); mysql> ALTERTABLE DINEROSADDFOREIGNKEY(N_PRESTAMO) REFERENCES. COOPERATIVA ( N_ PRESTAMO)ON DELETE NOT ACTION ON UPDATE CASCADE; MYSQL> CREATE TABLE MODALIDAD( CODIGO_MODALIDAD INT (10)NOT NULL, CEDULA INT(10)NOT NULL, NUMERO_PRESTAMO INT(10)NOT NULL P_M_E TEXT NOT NULL, T_I_D MONEY NOT NULL ,PRIMARY KEY( CODIGO_MODALIDAD))ENGINE=INNODB; MYSQL> ALTER TABLE DINERO ADD INDEX(CEDULA); mysql> ALTERTABLE DINERO ADDFOREIGNKEY(CEDUAL) REFERENCES.SOCIOS (CEDULA)ON DELETE NOT ACTION ON UPDATE CASCADE; MYSQL> ALTER TABLE DINERO ADD INDEX(NUMERO_PRESTAMO); mysql> ALTERTABLE DINERO ADDFOREIGNKEY(NUMERO_PRESTAMO) REFERENCES.PRESTAMO (NUMERO_PRESTAMO)ON DELETE NOT ACTION ON UPDATE CASCADE; MYSQL> CREATE TABLE DELIGENCIAR(N_PRESTAMO INT(10)NOT NULL, DNI_EMPRESA INT(20), PRIMARY KEY(N_PRESTAMO, DNI_EMPRESA))ENGINE=INNODB; MYSQL> ALTER TABLE DINERO ADD INDEX(N_PRESTAMOI); mysql> ALTERTABLE DINEROSADDFOREIGNKEY(N_PRESTAMO) REFERENCES. COOPERATIVA ( N_ PRESTAMO)ON DELETE NOT ACTION ON UPDATE CASCADE; MYSQL> ALTER TABLE DINERO ADD INDEX(DNI_EMPRESA); mysql> ALTERTABLE DINERO ADDFOREIGNKEY(DNI_EMPRESA) REFERENCES. EMPRESA ( DNI_EMPRESA) ON DELETE NOT ACTION ON UPDATE CASCADE; 60
  • 61. ENUNCIADO DEL PROBLEMA EJERCICIO 10. A partir del siguiente enunciado se desea realiza el modelo entidad- relación y pasarlo al modelo de datos relacional. 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 u momento n 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 delin cuente 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. Uno o varios policías investigan cada uno de los casos 61
  • 62. ANÁLISIS DEL PROBLEMA POLICIA ( CEDULA, NOMBRE, CATEGORIA, NOMBE JEFE ARMAS (CODIGO ARMAS, NOMBRE) DELICUENTE ( DNI, NOMBRE, APELLIDOS) CALABOZO ( CODIGO, UBICACIÓN) CASO ( CODIGO_ CASO,JUZGADO, CARGO) ARRESTAR(FECHA ARRESTO) 62
  • 63. DISEÑO DEL PROBLEMA DIAGRAMA ENTIDAD RELACIÓN 63
  • 65. SCRIPT MYSQL mysql>CREATE DATABASE COMISARIPOL; MYSQL>USE COMISARIAPOL; MYSQL>CREATE TABLE ARMA(CODIGO_ARMA INT(8)NOT NULL, NOMBRE VARCHAR(15)NOT NULL, PRIMARY KEY(CODIGO_ARMA))ENGINE=INNODB; MYSQL> CREATE TABLE CALABOZO(CODIGO_C INT(5)NOT NULL, UBICACION VARCHAR(16)NOT NULL, PRIMARY KE (CODIGO_C))ENGINE=INNODB; MYSQL> CREATE TABLE CASO(CODIGO_CASO INT(10) NOT NULL, JUZGADO TEXT NOT NULL, PRIMARY KEY ( C ODIGO_CASO))ENGINE=INNODB; MYSQL> CREATE TABLE POLICIA(CEDULA INT(10) NOT NULL, CEDULA_1 INT(10)NOT NULL, CODIGO_ARMA INT(8)NOT NULL, NOMBRE VARCHAR(15)NOT NULL, CATEGORIA VARCHAR(15)NOT NULL, NOMBRE_JEFE VARCHAR(15)NOT NULL, PRIMARY KEY( CEDULA))ENGINE=INNODB; MYSQL> ALTER TABLE COMISARIPOL ADD INDEX(CEDULA_1); mysql>VALTERTABLE COMISARIAPOLADDFOREIGNKEY(CEDULA_1) REFERENCES. POLICIA (CEDULA_1) ON DELETE NOT ACTION ON UPDATE CASCADE; MYSQL> ALTER TABLE COMISARIPOL ADD INDEX(CODIGO_ARMA); mysql>VALTERTABLE COMISARIAPOLADDFOREIGNKEY(CODIGO_ARMA) REFERENCES. ARMA (CODIGO_ARMA) ON DELETE NOT ACTION ON UPDATE CASCADE; MYSQL> CREATE TABLE DELICUENTE(DNI INT(10)NOT NULL, CODIGO_C INT(5)NOT NULL, CODIGO_CASO INT(10)NOT NULL, NOMBRE VARCHAR(15)NOT NULL, APELLIDOS VARCHAR(15)NOT NULL, PRIMARY KEY(DNI))ENGINE=INNODB; , MYSQL> ALTER TABLE COMISARIPOL ADD INDEX( CODIGO_C); mysql>VALTERTABLE COMISARIAPOLADDFOREIGNKEY( CODIGO_C) REFERENCES. CALABOZO( CODIGO_C) ON DELETE NOT ACTION ON UPDATE CASCADE; 65
  • 66. MYSQL> ALTER TABLE COMISARIPOL ADD INDEX( CODIGO_CASO); mysql>VALTERTABLE COMISARIAPOLADDFOREIGNKEY( CODIGO_CASO) REFERENCES. CASO( CODIGO_CASO) ON DELETE NOT ACTION ON UPDATE CASCADE; mysql>CREATE TABLE ARRESTAR(FECHA_ARRESTO DATETIME NOT NULL, CEDULA INT(10) NOT NULL, DNI INT(10)NOT NULL, PRIMARY KEY(FECHA_ARRESTO, CEDULA, DNI))ENGINE=INNODB; MYSQL> ALTER TABLE COMISARIPOL ADD INDEX(CEDULA); mysql>VALTERTABLE COMISARIAPOLADDFOREIGNKEY(CEDULA) REFERENCES. POLICIA (CEDULA) ON DELETE NOT ACTION ON UPDATE CASCADE; MYSQL> ALTER TABLE COMISARIPOL ADD INDEX(DNI); mysql>VALTERTABLE COMISARIAPOLADDFOREIGNKEY(DNI) REFERENCES.DELICUENTE (DNI) ON DELETE NOT ACTION ON UPDATE CASCADE; mysql> CREATE TABLE INVESTIGAR( D_M_A DATETIME NOT NULL, CEDULA INT(10)NOT NULL , CODIGO_CASO INT(10)NIOT NULL, PRIMARY KEY(D_M_A, CEDULA, CODIGO_CASO))ENGINE=INNODB; MYSQL> ALTER TABLE COMISARIPOL ADD INDEX(CEDULA); mysql>VALTERTABLE COMISARIAPOLADDFOREIGNKEY(CEDULA) REFERENCES. POLICIA (CEDULA) ON DELETE NOT ACTION ON UPDATE CASCADE MYSQL> ALTER TABLE COMISARIPOL ADD INDEX( CODIGO_CASO); mysql>VALTERTABLE COMISARIAPOLADDFOREIGNKEY( CODIGO_CASO) REFERENCES. CASO ( CODIGO_CASO) ON DELETE NOT ACTION ON UPDATE CASCADE; 66
  • 67. ENUNCIADO PROBLEMA EJERCICIO 11. 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 (num 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. 67
  • 68. ANALISIS DEL PROBLEMA AVIONES ( NUMERO_AVION, COMBUSTIBLE) CLASIFICACION AVIONES (MODELO, PESO, CAPACIDAD) HANGARES (NÚMERO, CAPACIDAD, LOCALIZACION) PERSONAS (NSS, DIRECCION, TELEFONO) PILOTO (NUMEROLICENCIA, RESTRICIONES) EMPELADO (SALARIO, TURNO) PROPIETARIO (SALARIO, TURNO) 68
  • 71. SCRIPT MYSQL mysql>CREATE DATABASE AEROPUERTO; MYSQL>USE AEROPUERTOL; mysql> CREATE TABLE PERSONAS(NSS VARCHAR(12)NOT NULL, DIRECCION VARCHAR(30)NOT NULL, TELEFONO VARCHAR(12)NOT NULL, NOMBRE VARCHAR(20)NOT NULL, APELLIDOS VARCHAR(20)NOT NULL, PRIMARY KEY(NSS))ENGINE=INNODB; mysql> CREATE TABLE CLASIFICACION_DE_AVIONES(MODELO VARCHAR(5)NOT NULL, PESOINT(20)NOTNULL,CAPACIDADINT(30)NOTNULL,PRIMARYKEY(MODELO)) ENGINE=INNODB; mysql> CREATE TABLE HANGARES(NUMERO_HANGARES INT(20)NOT NULL,, CAPACIDAD INT(30)NOT NULL, LOCALIZACION VARCHAR(30)NOT NULL, PRIMARY KEY(NUMERO_HANGARES))ENGINE=INNODB; mysql> CREATE TABLE PILOTO NSS VARCHAR(12)NOT NULL, NUMERO_DE_LICENCIA VARCHAR(15)NOT NULL, RESTRICIONES TEXT NOT NULL, PRIMARY KEY (NSS))ENGINE=INNODB; MYSQL> ALTER TABLE AEROPUERTO ADD INDEX(NSS); mysql>ALTERTABLE AEROPUERTO ADDFOREIGNKEY(NSS) REFERENCES. PERSONAS(NSS) ON DELETE NOT ACTION ON UPDATE CASCADE; mysql> CREATE TABLE EMPLEADOS(NSS VARCHAR(12)NOT NULL, SALARIO MONEY NOT NULL, TURNO VARCHAR(15)NOT NULL,PRIMARY KEY(NSS))ENGINE=INNODB; mysql> CREATE TABLE PROPIETARIO NSS VARCHAR(12) NOT NULL,PRIMAY KEY(NSS))ENGINE=INNODB; MYSQL> ALTER TABLE AEROPUERTO ADD INDEX(NSS); mysql>ALTERTABLE AEROPUERTO ADDFOREIGNKEY(NSS) REFERENCES. PERSONAS(NSS) ON DELETE NOT ACTION ON UPDATE CASCADE; mysql> CREATE TABLE AVIONES (NUMERO_AVIONES VARCHAR(10)NOT NULL, MODELO VARCHAR(5)NOT NULL, COMBUSTIBLE VARCHAR(15)NOT NULL, PRIMARY KEY( NUMERO_AVIONES))EMGINE=INNODB; 71
  • 72. MYSQL> ALTER TABLE AEROPUERTO ADD INDEX(MODELO); mysql>ALTERTABLE AEROPUERTO ADDFOREIGNKEY(MODELO) REFERENCES. CLASIFICACION_DE_AVIONES (MODELO) ON DELETE NOT ACTION ON UPDATE CASCADE; mysql> CREATE TABLE GUARDAR(NUMERO_HANGARES INT(20)NOT NULL, NUMERO_AVIONES VARCHAR(10)NOT NULL, FECHA_RETIRO DATETIMENOT NULL, FECHA_INGRESO DATETIME NOT NULL, PRIMARY KEY(NUMERO_HANGARES, NUMERO_AVIONES))ENGINE=INNODB; MYSQL> ALTER TABLE AEROPUERTO ADD INDEX(NUMERO_HANGARES); mysql>ALTERTABLE AEROPUERTO ADDFOREIGNKEY(NUMERO_HANGARES) REFERENCES. HANGARES (NUMERO_HANGARES )ON DELETE NOT ACTION ON UPDATE CASCADE; MYSQL> ALTER TABLE AEROPUERTO ADD INDEX(NUMERO_AVIONES); mysql>ALTERTABLE AEROPUERTO ADDFOREIGNKEY(NUMERO_AVIONES) REFERENCES. AVIONES(NUMERO_AVIONES)ON DELETE NOT ACTION ON UPDATE CASCADE; MYSQL> CREATE TABLE PILOTIAR(NSS VARCHAR(12)NOT NULL, NUMERO_AVIONES VARCHAR(10)NOT NULL, PRIMARY KEY(NSS,NUMERO_AVIONES))ENGINE=INNODB; MYSQL> ALTER TABLE AEROPUERTO ADD INDEX(NSS); mysql>ALTERTABLE AEROPUERTO ADDFOREIGNKEY(NSS) REFERENCES. PILOTO(NSS) ON DELETE NOT ACTION ON UPDATE CASCADE; MYSQL> ALTER TABLE AEROPUERTO ADD INDEX(NUMERO_AVIONES); mysql>ALTERTABLE AEROPUERTO ADDFOREIGNKEY(NUMERO_AVIONES) REFERENCES. AVIONES(NUMERO_AVIONES)ON DELETE NOT ACTION ON UPDATE CASCADE; mysql>CREATE TABLE TRABAJAR(NSS VARCHAR(12)NOT NULL, NUMERO_AVIONESVARCHAR(10)NOT NULL, PRIMARY KEY(NSS,NUMERO_AVIONES))ENGINE=INNODB; 72
  • 73. MYSQL> ALTER TABLE AEROPUERTO ADD INDEX(NSS); mysql>ALTERTABLE AEROPUERTO ADDFOREIGNKEY(NSS) REFERENCES. EMPLEADOS (NSS) ON DELETE NOT ACTION ON UPDATE CASCADE; MYSQL> ALTER TABLE AEROPUERTO ADD INDEX(NUMERO_AVIONES); mysql>ALTERTABLE AEROPUERTO ADDFOREIGNKEY(NUMERO_AVIONES) REFERENCES. AVIONES(NUMERO_AVIONES)ON DELETE NOT ACTION ON UPDATE CASCADE; mysql> CREATE TABLE TENER( NUMERO_AVIONES VARCHAR(10)NOT NULL, NSSVARCHAR(12)NOT NULL, FECHA_COMPRA DATETIME NOT NULL , PRIMARY KEY (NUMERO_AVIONES,NSS))ENGINE=INNODB; MYSQL> ALTER TABLE AEROPUERTO ADD INDEX(NUMERO_AVIONES); mysql>ALTERTABLE AEROPUERTO ADDFOREIGNKEY(NUMERO_AVIONES) REFERENCES. AVIONES(NUMERO_AVIONES)ON DELETE NOT ACTION ON UPDATE CASCADE; MYSQL> ALTER TABLE AEROPUERTO ADD INDEX(NSS); mysql>ALTERTABLE AEROPUERTO ADDFOREIGNKEY(NSS) REFERENCES. AVIONES(NUMERO_AVIONES)ON DELETE NOT ACTION ON UPDATE CASCADE; MYSQL> ALTER TABLE AEROPUERTO ADD INDEX(NSS); mysql>ALTERTABLE AEROPUERTO ADDFOREIGNKEY(NSS) REFERENCES. PROPIETARIO (NSS)ON DELETE NOT ACTION ON UPDATE CASCADE; , 73
  • 74. ENUNCIADO DEL PROBLEMA EJERCICIO 12. Dado el siguiente enunciado obtén el modelo ERE, relacional. Una empresa de servicios quiere informatizar su gestión en lo referente su personal, proyectos y los servicios que presta a otras empresas. Respecto al personal de la empresa, se almacenará un código asignado por el departamento de Recursos Humanos, el nombre, dirección y teléfono así como el tipo de actividad dentro de la empresa de servicios: directivo o plantilla. Únicamente 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. 74
  • 75. 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. 75
  • 76. DISEÑO DEL PROBLEMA DIAGRAMA ENTIDAD RELACIÓN 76
  • 78. ENUNCIADO DEL PROBLEMA EJERCICIO 13. Dado el siguiente enunciado, obtén el modelo entidad-relación extendido, relacional. Una empresa dedicada a la realización de reformas y construcciones en general maneja la siguiente información para llevar parte de su negocio. La empresa dispone de albañiles en plantilla de los que almacena, entre otras cosas, el número de la Seguridad Social, nombre, apellidos, fecha de nacimiento, números de los teléfonos que dispone (fijos y/o móviles) y categoría profesional. Las 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. 78
  • 79. ANALISIS DEL PROBLEMA ALBAÑIL ( NSS, NOMBRE,APELLIDOS, FECHADE NACIMIENTO,NUMERO FIJO.NUMERO MOVIL) ALBAÑIL PEON( DNI, SUELDO,NACIONALIDAD) ALBAÑIL MAESTRO (DNI, SUELDO) CUADRILALS ( CODIGO_INTERNO, NOMBRE, LOCALIDAD) 79
  • 80. DISEÑO DEL PROBLEMA DIAGRAMA ENTIDAD RELACION 80
  • 82. SCRIPT MYSQL mysql>CREATE DATABASE NEGOCIO ; MYSQL>USE NEGOCIO ; mysql>CREATE TABLE CUADRILLAS(CODIGO_INTERNO INT(20)NOT NULL, NOMBRE VARCHAR(15)NOT NULL, LOCALIDAD VARCHAR(20)NOT NULL, PRIMARY KEY( CODIGO_INTERNO))ENGINE=INNODB; mysql>CREATE TABLE ALBAÑIL(NSS INT(15)NOT NULL, CODIGO_INTERNO INT(20)NOT NULL, NOMBRE VARCHAR(15)NOT NULL, APELLIDOS VARCHAR(20)NOT NULL, FECHA_DE_NACIMIENTO DATETIME NOT NULL PRIMARY KEY(NSS))ENGINE=INNODB; MYSQL> ALTER TABLE NEGOCIO ADD INDEX( CODIGO_INTERNO); mysql>ALTERTABLE NEGOCIO ADDFOREIGNKEY(CODIGO_INTERNO) REFERENCES. CUADRILLAS (CODIGO_INTERNO) ON DELETE NOT ACTION ON UPDATE CASCADE; mysql>CREATE TABLE PEON(NSS INT(15)NOT NULL, DNI INT(10)NOT NULL, SUELDO MONEY NOT NULL, NACIONALIDAD VARCHAR (20)NOT NULL, PRIMARY KEY(NSS))ENGINE=INNODB; MYSQL> ALTER TABLE NEGOCIO ADD INDEX( NSS); mysql>ALTERTABLE NEGOCIO ADDFOREIGNKEY(NSS) REFERENCES. ALBAÑIL(NSS) ON DELETE NOT ACTION ON UPDATE CASCADE; mysql>CREATE TABLE MAESTRO(NSS INT(15)NOT NULL, DNI INT(10)NOT NULL, SUELDO MONEY NOT NULL, PRIMARY KEY (NSS))ENGINE=INNODB; 82
  • 83. ENUNCIADO DEL PROBLEMA EJERCICIO 14. Dado el siguiente enunciado, obtén el modelo entidad-relación extendido, relacional. Una empresa dedicada a la venta de material óptico desea que diseñemos una base de datos para la automatización de sus procesos. La información relevante desde el punto de vista del modelo de datos es la siguiente: Los productos que vende la empresa son lentes de contacto o gafas, interesando conocer de ellos su código de producto (que es único), su precio de venta y su marca. En cuanto a las lentes de contacto interesa, además, conocer su tipo (blandas, rígidas, etc.), su color, los productos de limpieza que requiere y su graduación. Para las gafas, se desea también almacenar su modelo, el material de fabricación. Se debe tener en cuenta que la empresa dispondrá de gafas graduadas, de gafas de sol y de gafas de sol graduadas. De las gafas graduadas, interesa conocer su graduación así como en qué tipo de problemas oculares se pueden utilizar (miopía, astigmatismo, etc.). De las gafas de sol, interesa conocer el nivel de filtrado de los rayos ultravioleta. Hay que tener en cuenta además que queremos gestionar las personas que han comprado gafas en nuestro establecimiento, para estas personas almacenaremos un código y el nombre. Además cada persona pertenece a un tipo (habitual, ocasional...) y queremos almacenar para cada tipo de usuarios que descuentos se aplican en las gafas de sol. 83
  • 84. ANÁLISIS DEL PROBLEMA PRODUCTO (CÓDIGO PRODUCTO, PV, MARCA ) GAFAS (MODELO, MATERIAL FABRICACIÓN) ♥ GAFAS DE GRADUACIÓN (GRADUACIÓN, TIPO DE PROBLEMA) ♥GAFAS DE SOL ( NIVEL FILTRADO) ♥GAFAS DE SOL_ GRADUACIÓN LENTES DE CONTACTO (COLOR, PRODUCTO LIMPIEZA, GRADUACIÓN) PERSONAS (CÓDIGO, NOMBRE, APELLIDO, CIUDAD, TELÉFONO) HABITUAL_ O_ O OCASIONAL (DESCUENTO, FECHA) 84
  • 85. DISEÑO DEL PROBLEMA DIAGRAMA ENTIDAD RELACIÓN 85
  • 87. SCRIPT MYSQL mysql>CREATE DATABASE OPTICO; MYSQL>USE OPTICO ; mysql>CREATE TABLE PRODUCTOS(CODIGO_PRODUCTO INT(5)NOT NULL,PV MONEY NOT NULL, MARCA VARCHAR(15NOT NULL, MARCA VARCHAR(15)NOT, MARCA VARCHAR(15)NOT NULL, PRIMARY KEY( CODIGO_PRODUCTO))ENGINE=INNODB; mysql> CREATE TABLE PERSONAS( CODIGO INT(15)NOT NULL, NOMBRE VARCHAR(15)NOT NULL, APELLIDOS VARCHAR(15)NOT NULL, CIUDAD VARCHAR(15)NOT NULL, TELEFONO INT(10)NOT NULL, PRIMARY KEY(CODIGO))ENGINE=INNODB; mysql> CREATE TABLE LENTES_CONTACTO(CODIGO_PRODUCTO INT(5)NOT NULL, COLOR VARCHAR(15)NOT NULL, PRODUCTO_LIMPIEZA VARCHAR(15)NOT NULL, GRADUACION INT(10), PRIMARY KEY( CODIGO_PRODUCTO))ENGINE=INNODB; MYSQL> ALTER TABLE OPTICO ADD INDEX(CODIGO_PRODUCTO); mysql>ALTERTABLE OPTICO ADD FOREIGNKEY(CODIGO_PRODUCTO)REFERENCES. PRODUCTO(CODIGO_PRODUCTO) ON DELETE NOT ACTION ON UPDATE CASCADE; mysql> CREATE TABLE GAFAS( CODIGO_PRODUCTO INT(5)NOT NULL, CODIGO INT(15)NOT NULL, MODELO VARCHAR(15)NOT NULL, MATERIAL_FABRICACION VARCHAR(15)NOT NULL, PRIMARY KEY( CODIGO_PRODUCTO))ENGINE=INNODB; MYSQL> ALTER TABLE OPTICO ADD INDEX(CODIGO_PRODUCTO); mysql>ALTERTABLE OPTICO ADD FOREIGNKEY(CODIGO_PRODUCTO)REFERENCES. PRODUCTO(CODIGO_PRODUCTO) ON DELETE NOT ACTION ON UPDATE CASCADE; MYSQL> ALTER TABLE OPTICO ADD INDEX(CODIGO); mysql>ALTERTABLE OPTICO ADD FOREIGNKEY(CODIGO)REFERENCES. PRERSONAS (CODIGO) ON DELETE NOT ACTION ON UPDATE CASCADE; 87
  • 88. mysql> CREATE TABLE GAFA_DE_GRADUACION(CODIGO_PRODUCTO INT(5)NOT NULL, GRADUACION INT(10)NOT NULL, TIPO_PROBLEMA TEXT NOT NULL, PRIMARY KEY(CODIGO_PRODUCTO))ENGINE=INNODB; MYSQL> ALTER TABLE OPTICO ADD INDEX(CODIGO_PRODUCTO); mysql>ALTERTABLE OPTICO ADD FOREIGNKEY(CODIGO_PRODUCTO)REFERENCES. GAFAS (CODIGO_PRODUCTO) ON DELETE NOT ACTION ON UPDATE CASCADE; MYSQL> CREATE TABLE GAFAS_DE_SOL(CODIGO_PRODUCTO INT(5)NOT NULL, NIVEL_FILTRADO INT(10)NOT NULL, PRIMARY KEY(CODIGO_PRODUCTO))ENGINE=INNODB; MYSQL> ALTER TABLE OPTICO ADD INDEX(CODIGO_PRODUCTO); mysql>ALTERTABLE OPTICO ADD FOREIGNKEY(CODIGO_PRODUCTO)REFERENCES. GAFAS (CODIGO_PRODUCTO) ON DELETE NOT ACTION ON UPDATE CASCADE; MYSQL> CREATE TABLE GAFAS_SOL_GRADUCACION(CODIGO_PRODUCTO INT(5)NOT NULL,PRIMARY(CODIGO_PRODUCTO))ENGINE=INNODB; MYSQL> ALTER TABLE OPTICO ADD INDEX(CODIGO_PRODUCTO); mysql>ALTERTABLE OPTICO ADD FOREIGNKEY(CODIGO_PRODUCTO)REFERENCES. GAFAS (CODIGO_PRODUCTO) ON DELETE NOT ACTION ON UPDATE CASCADE; mysql> CREATE TABLE HABITUAL_O_OCACIONAL(DESCUENTO MONEY NOT NULL, CODIGO INT(15)NOT NULL, FECHA DATETIME NOT NULL, PRIMARY KEY(DESCUETO,CODIGO))ENGINE=INNOBD; MYSQL> ALTER TABLE OPTICO ADD INDEX(CODIGO); mysql>ALTERTABLE OPTICO ADD FOREIGNKEY(CODIGO)REFERENCES. PERSONAS (CODIGO) ON DELETE NOT ACTION ON UPDATE CASCADE; 88
  • 89. 89
  • 90. 90