Sunteți pe pagina 1din 139

CREACION DE BASE DE DATOS

LINA MARCELA MEJIA GONGORA PAOLA VARON FORERO

INSTITUCION DE EDUCACION SUPERIOR ITFIP FACULTAD: INGENIERIA CIENCIAS AGROINDUSTRIALES SISTEMAS Y COMPUTACION BASE DE DATOS SEMESTRE III NOCTURNO ESPINAL TOLIMA 2012

CREACION DE BASE DE DATOS

LINA MARCELA MEJIA GONGORA PAOLA VARON FORERO NAYIBE SORAYA SANCHEZ LEON DOCENTE

INSTITUCION DE EDUCACION SUPERIOR ITFIP FACULTAD INGENIERIA CIENCIAS AGROINDUSTRIALES SISTEMAS Y COMPUTACION BASE DE DATOS SEMESTRE III NOCTURNO ESPINAL TOLIMA 2012

TABLA DE CONTENIDO
Introduccin. Objetivos. Cuerpo del trabajo Enunciados. Modelo entidad relacin. Modelo relaciona. Diccionarios de datos. Script de MYSQL.

INTRODUCCION
Una base de datos es un sistema para archivar informacin en computadora cuyo propsito general es mantener informacin y hacer que est disponible cuando se solicite. Actualmente el mundo empresarial necesita manejar gran cantidad de datos, por lo que se hace necesario disponer de medios hardwares y software que permitan acceder a la informacin de una manera rpida, sencilla y fiable. El presente trabajo se basa en la solucin de diversos ejercicios de desarrollo de Base de Datos cada uno con su Modelo Entidad Relacin (MER), Modelo Relacional (M/R), Diccionario de Datos y por ltimo el script de MYSQL donde crea la base de datos.

OBJETIVOS Nuestro principal objetivo es poder desarrollar Bases de Datos que puedan emplearse en diversas situaciones empresariales donde se necesite manejar variables cantidades de datos facilitando as su procesamiento y garantizar una gran seguridad de almacenamiento y facilidad de acceso.
El objetivo final de dicho proyecto es la elaboracin de sistemas de informacin (BD) acerca de datos reales empleando los conocimientos obtenidos en el transcurso del III semestre de SISTEMAS Y COMPUTACION en el rea de BASE DE DATOS dirigido por la docente NAYIBE SORAYA SANCHEZ LEON.

CUERPO DEL TRABAJO


1 TALLER EJERCICIO 1. 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 vehculo. Es necesario guardar los datos personales de cada persona (nombre, apellidos, direccin, poblacin, telfono y DNI). De cada vehculo se desea almacenar la matrcula, la marca y el modelo. Una persona puede tener varios vehculos, y puede darse el caso de un vehculo pertenezca a varias personas a la vez. Tambin se desea incorporar la informacin destinada a gestionar los accidentes del municipio. Cada accidente posee un nmero de referencia correlativo segn 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 vehculos. Se desea llevar tambin un registro de las multas que se aplican. Cada multa tendr asignado un nmero de referencia correlativo. Adems, deber registrarse la fecha, hora, lugar de infraccin e importe de la misma. Una multa solo se aplicar a un conductor e involucra a un solo vehculo." Realiza el modelo E-R y psalo al modelo relacional. MODELO ENTIDAD RELACION

MODELO RELACIONAL

SCRIPT DE MYSQL Mysql>CRATE DATABASE multas Mysql>USE multas; Mysql>CREATE TABLE VEHCULOS (MATRICULA VARCHAR (15) NOT NULL, MARCA VARCHAR(11)NOT NULL, color VARCHAR (10), PRIMARY KEY(MATRICULA ) )ENGINE=INNODB; Mysql>CREATE TABLE PERSONAS( CEDULA INT(11)NOT NULL, NOMBRE VARCHAR (15)NOT NULL,DIRECCIN VARCHAR (25)NOT NULL, APELLIDOS VARCHAR (35) NOT NULL, TELFONO INT (12)NOT NULL, PRIMARY KEY(CEDULA) )EGINE=INNODB; Mysql>CREATE TABLE MULTAS (CONCECUTIVODEMULTAS INT (11) NOT NULL,CEDULA INT(11) NOT NULL , FECHAYHORA DATETIME, LUGARINFRACION VARCHAR(16)NOT NULL,PRIMARYKEY(CONCECUTIVODEMULTAS) ENGINE=INNODB; MYSQL>ALTER TABLE MULTAS ADD INDEX (CEDULA); Mysql> ALTER TABLE MULTAS ADD FOREIGN KEY (CEDULA)REFERENCES MULTAS.PERSONAS (CEDULA) ON DELETE NOT ACTION ON UPDATE CASCADE;

Mysql>CREATE TABLE POSSER( TARJETA_DE_PROPIEDAD VARCHAR(11) NOT NULL, CIUDAD_DE_EXPEDICION VARCHAR (16) NOT NULL, MATRICULA VARCHAR (15) NOT NULL, CEDULA INT (11) NOT NULL, PRIMARY KEY(TARJETA_DE_PROPIEDAD, CIUDAD_DE_EXPEDICION, MATRICULA, CEDULA)ENGINE= INNODB; Mysql>ALTER TABLE MULTAS ADD INDEX (DNI); Mysql> ALTER TABLE MULTAS ADD FOREIGN KEY (CEDULA) REFERENCES .PERSONAS (CEDULA) ON DELETE NOT ACTION ON UPDATE CASCADE; Mysql>ALTER TABLE MULTAS ADD INDEX (MATRICULA); Mysql> ALTER TABLE MULTAS ADD FOREIGN KEY(MATRICULA )REFERENCES MULTAS.VEHICULOS (MATRICULA) ON DELETE NOT ACTION ON UPDATE CASCADE; Mysql> CREATE TABLE INVOLUCRAR (HORA DATETIME, MATRICULA VARCHAR (16) NOT NULL, CEDULA INT (15) NOT NULL, PRIMARY KEY (HORA, MATRICULA, CEDULA), Mysql>ALTER TABLE MULTAS ADD INDEX (MATRICULA); Mysql> ALTER TABLE MULTAS ADD FOREIGN KEY(MATRICULA )REFERENCES MULTAS.VEHICULOS (MATRICULA) ON DELETE NOT ACTION ON UPDATE CASCADE; Mysql>ALTER TABLE MULTAS ADD INDEX (DNI); Mysql> ALTER TABLE MULTAS ADD FOREIGN KEY (CEDULA)REFERENCES MULTAS.PERSONAS (CEDULA) ON DELETE NOT ACTION ON UPDATE CASCADE;

EJERCICIO 2.

Se trata de realizar el diseo de la base de datos en el modelo E/R para una cadena de hoteles. "Cada hotel (del que interesa almacenar su nombre, direccin, telfono, ao de construccin, etc.) se encuentra clasificado obligatoriamente en una categora (por ejemplo, tres estrellas) pudiendo bajar o aumentar de categora. Cada categora tiene asociada diversas informaciones, como, por ejemplo, el tipo de IVA que le corresponde y la descripcin. Los hoteles tiene diferentes clases de habitaciones (suites, dobles, individuales, etc.), que se numeran de forma que se pueda identificar fcilmente la planta en la que se encuentran. As pues, de cada habitacin se desea guardar el cdigo y el tipo de habitacin. Los particulares pueden realizar reservas de las habitaciones de los hoteles. En la reserva de los particulares figurarn el nombre, la direccin y el telfono. Las agencias de viaje tambin pueden realizar reservas de las habitaciones. En caso de que la reserva la realiza una agencia de viajes, se necesitarn los mismos datos que para los particulares, adems del nombre de la persona para quien la agencia de viajes est realizando la reserva. En los dos casos anteriores tambin se debe almacenar el precio de la reserva, la fecha de inicio y la fecha de fin de la reserva". MODELO ENTIDAD RELACION

MODELO RELACIONAL

SCRIPT MYSQL Mysql>CREATE DATABASE HOTEL; Mysql>USE HOTEL; Mysql>CREATE TABLE CATEGORIA (NIVELVARCHAR (10) NOT NULL, IVA MONEY, DESCRIPCION TEXT, PRIMARY KEY (NIVEL )) ENGINE=INNODB; Mysql> CREATE TABLE PERSONAS(CEDULAINT(12)NOT NULL,NOMBRE VARCHAR(10) NOT NULL, APELLIDOS VARCHAR(10) NOT NULL, DIRECCION VARCHAR(5) NOT NULL, TELEFONO INT (12) NULL, PRIMARY KEY ( CEDULA ) ) ENGINE= INNODB ; Mysql> CREATE TABLE AGENCIAS_DE_VIAJES(NIT_A_V INT (12) NOT NULL ,NOMBRE VARCHAR(10) NOT NULL, DIRECCION VARCHAR(5)NOTNULL, TELEFONO INT (12) NULL, CIUDAD VARCHAR(10) NOT NULL, PRIMARY KEY (NIT_A_V))ENGINE= INNODB; Mysql> CREATE TABLE HOTELES (NIT INT (10) NOT NULL, NIVEL VARCHAR (10) NOT NULL, NOMBRE VARCHAR(10) NOT NULL, DIRECCION VARCHAR(5) NOT NULL, AO_DE_CONSTRUCCION INT (4) NOT NULL, PRIMARY KEY( NIT)) ENGINE= INNODB;

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

Mysql> CREATE TABLE HABITACION (CODIGO_HABITACION INT (12) NOT NULL,NIT INT (10) NOT NULL, TIPOS_DE_HABITACIONES VARCHAR(15) NOT NULL, PRIMARY KEY( CODIGO_HABITACION )) ENGINE= INNODB; Mysql>ALTER TABLE HOTEL ADD INDEX (NIT); Mysql> ALTER TABLE HOTEL ADD FOREIGN KEY(NIT )REFERENCES HOTEL .HOTELES (NIT) ON DELETE NOT ACTION ON UPDATE CASCADE; Mysql> CREATE TABLE RESERVAS (NUMERO_RESERVAS INT(2)NOT NULL, NIT INT (12) NOT NULL, CEDULA INT (12) NOT NULL, NIT_A_V INT (12) 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 HOTEL ADD INDEX (NIT); Mysql> ALTER TABLE HOTEL ADD FOREIGN KEY(NIT)REFERENCES HOTEL .HOTELES (NIT) ON DELETE NOT ACTION ON UPDATE CASCADE;

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

EJERCICIOS 2 TALLER EJERCICIO 1


A partir del siguiente enunciado se desea realiza el modelo entidad-relacin y pasarlo al modelo de datos relacional. Una agencia de viajes desea informatizar toda la gestin 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 informacin. "La agencia desea guardar la siguiente informacin de los viajeros: dni, nombre, direccin y telfono. De cada uno de los viajes que maneja la agencia interesa guardar el cdigo de viaje, nmero 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 slo 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 cdigo, nombre y otros datos que puedan ser de inters. Un viaje tiene un nico lugar de destino y un nico lugar de origen".

MODELO ENTIDAD RELACION

MODELO RELACIONAL

SCRIPT DE MYSQL
SCRIPT MYSQL mysql>CREATE DATABASE AGENCIAVIAJES; MYSQL>USE AGENCIAVIAJES; MYSQL>CREATE TABLE VIAJEROS( DNI INT(12)2NOT VARCHAR(10)NOT NULL, DIRECCION VARCHAR(5)NOT NULL, NOT NULL, PRIMARY KEY( DNI))ENGINE=INNODB; NULL, NOMBRE TELEFONO INT(6)

MYSQL>CREATE TABLE VIAJES(CODIGO INT(12) NOT NULL, DNI INT(12)NOT NULL, NUMERO_PLAZAS INT(3)NOT NULL, FRV DATETIME NOT NULL, PRIMARY KEY( CODIGO))ENGINE=INNODB; MYSQL> ALTER TABLE AGENCIAVIAJES ADD INDEX (DNI); mysql> ALTER TA BLE AGENCIAVIAJES ADD FOREIGN KEY(DNI)REFERENCES.VIAJEROS (DNI) ON DELETE NOT ACTION ON UPDATE CASCADE; MYSQL> CREATE TABLE ORIGEN(CODIGO INT(12)NOT NULL, CODIGO_ORIGEN INT(12)NOT NULL, PRIMARY KEY(CODIGO))ENGINE=INNODB; MYSQL> ALTER TABLE AGENCIAVIAJES ADD INDEX(CODIGO);

mysql>ALTERTABLEAGENCIAVIAJES ADDFOREIGNKEY(CODIGO)REFERENCES.VIAJEROS (CODIGO) ON DELETE NOT ACTION ON UPDATE CASCADE; mysql> CREATE TABLE DESTINO( CODIGO INT(5) NOT NULL, CODIGO_DESTINO INT((12)NOT NULL, PRIMARY KEY(CODIGO))ENGINE=INNODB; MYSQL> ALTER TABLE AGENCIAVIAJES ADD INDEX(CODIGO); mysql>ALTERTABLEAGENCIAVIAJES ADDFOREIGNKEY(CODIGO)REFERENCES.VIAJEROS (CODIGO) 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(10)NOT NULL, DIRECCION INT(6) NOT NULL, TELEFONO INT(12) NOT NULL, PRIMARY KEY ( DNI_FAMILIAR, DNI ,CODIGO))ENGINE=INNODB;

MYSQL> ALTER TABLE AGENCIAVIAJES ADD INDEX(DNI); mysql>ALTERTABLEAGENCIAVIAJES ADDFOREIGNKEY(DNI)REFERENCES.VIAJEROS (DNI) ON DELETE NOT ACTION ON UPDATE CASCADE; MYSQL> ALTER TABLE AGENCIAVIAJES ADD INDEX(CODIGO); mysql>ALTERTABLEAGENCIAVIAJES ADDFOREIGNKEY(CODIGO)REFERENCES.VIAJEROS (CODIGO) ON DELETE NOT ACTION ON UPDATE CASCADE; DICCIONARIO DE DATOS

EJERCICIO 2. A partir del siguiente enunciado se desea realiza el modelo entidad-relacin y pasarlo al modelo de datos relacional. "A un concesionario de coches llegan clientes para comprar automviles. De cada coche interesa saber la matrcula, 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 informacin: dni, nombre, apellidos, direccin y telfono.

Los coches que el concesionario vende pueden ser nuevos o usados (de segunda mano). De los coches nuevos interesa saber el nmero de unidades que hay en el concesionario. De los coches viejos interesa el nmero de kilmetros que lleva recorridos. El concesionario tambin dispone de un taller en el que los mecnicos reparan los coches que llevan los clientes. Un mecnico repara varios coches a lo largo del da, y un coche puede ser reparado por varios mecnicos. Los mecnicos tienen un dni, nombre, apellidos, fecha de contratacin y salario. Se desea guardar tambin la fecha en la que se repara cada vehculo y el nmero de horas que se tardado en arreglar cada automvil". MODELO ENTIDAD RELACION

MODELO RELACIONAL

Script Mysql
CREATE DATABASE CONSECCIONARIO; USE DATABASE CONSECCIONARIO;

CREATE TABLE CLIENTE ( DN VARCHAR(25), NOMBRE VARCHAR(25), APELLIDOS VARCHAR(500), DIRECCION VARCHAR(25), TELEFONO VARCHAR(25), PRIMARY KEY ( DN ) );

CREATE TABLE MECANICO ( DNI_MECANICO VARCHAR(25), NOMBRE VARCHAR(25), APELLIDOS VARCHAR(25), FECHA_CONTRATACION VARCHAR(25),

SALARIO VARCHAR(25), FECHA_DEMORA VARCHAR(25), TIEMPOAREGLANDO VARCHAR(25), PRIMARY KEY ( DNI_MECANICO ) );

CREATE TABLE COCHES ( MATRICULA VARCHAR(25), DN VARCHAR(25), MODELO VARCHAR(25), MARCA VARCHAR(23), COLOR VARCHAR(22), PRIMARY KEY ( MATRICULA ), FOREIGN KEY ( DN ) REFERENCES CLIENTE ( DN ) );

CREATE TABLE NUEVO ( MATRICULA VARCHAR(25), UNIDADESDISPONIBLES VARCHAR(23), PRIMARY KEY ( MATRICULA ), FOREIGN KEY ( MATRICULA )

);

REFERENCES COCHES ( MATRICULA )

CREATE TABLE VIEJO ( MATRICULA VARCHAR(25), KILOMETROSRECORRIDO VARCHAR(25), PRIMARY KEY ( MATRICULA ), FOREIGN KEY ( MATRICULA ) REFERENCES COCHES ( MATRICULA ) );

CREATE TABLE REPARA ( MATRICULA VARCHAR(25), DNI_MECANICO VARCHAR(25), PRIMARY KEY ( MATRICULA, DNI_MECANICO ), FOREIGN KEY ( MATRICULA ) REFERENCES COCHES ( MATRICULA ), FOREIGN KEY

);

( DNI_MECANICO ) REFERENCES MECANICO ( DNI_MECANICO )

SCRIPT DE MYSQL EJERCICIO 3. A partir del siguiente enunciado se desea realiza el modelo entidad-relacin y pasarlo al modelo de datos relacional. Una empresa de aparatos electrnicos desea informatizar sus datos. Cada aparato electrnico viene determinado por un Cdigo nico y una descripcin. Adems cada aparato corresponde a un tipo de electrodomsticos (a lo sumo). Cada tipo de electrodomstico (televisor, mp3, lavadora, etc.) tiene un nombre y unas caractersticas (un campo de texto). Se supone que no hay dos tipos con el mismo nombre y caractersticas. Algunos tipos pueden formar parte de otro tipo ms general (mp3 de aparato de msica), 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). Tambin 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 cuntas), pero en este caso todas estarn suministradas por el mismo fabricante y con un mismo precio. MODELO ENTIDAD RELACION

MODELO RELACIONAL

SCRIPT MYSQL CREATE DATABASE APARATOSELECTRONIC; USE APARATOSELECTRONIC; CREATE TABLE TIPOELECTRODOMESTICO ( CODIGO_ELECTRODOMESTICO VARCHAR(26), NOMBRE VARCHAR(100),

CARACTERISTICAS VARCHAR(22), PRIMARY KEY ( CODIGO_ELECTRODOMESTICO ) );

CREATE TABLE FABRICANTE ( CIF VARCHAR(25), DOMICILIOSOCIAL VARCHAR(56), PRIMARY KEY ( CIF ) );

CREATE TABLE APARATO ( CODIGO VARCHAR(23), CODIGO_ELECTRODOMESTICO VARCHAR(26), DESCRIPCION VARCHAR(15), PRIMARY KEY ( CODIGO ), FOREIGN KEY ( CODIGO_ELECTRODOMESTICO ) REFERENCES TIPOELECTRODOMESTICO ( CODIGO_ELECTRODOMESTICO ) );

CREATE TABLE COMPONENTES ( CODIGO_COMPO VARCHAR(23), CIF VARCHAR(25),

NOMBRE VARCHAR(25), ESPECIFICACIONES VARCHAR(33), PRIMARY KEY ( CODIGO_COMPO ), FOREIGN KEY ( CIF ) REFERENCES FABRICANTE ( CIF ) );

CREATE TABLE TENER ( CODIGO_COMPO VARCHAR(23), CODIGO VARCHAR(23), PRIMARY KEY ( CODIGO_COMPO, CODIGO ), FOREIGN KEY ( CODIGO_COMPO ) REFERENCES COMPONENTES ( CODIGO_COMPO ), FOREIGN KEY ( CODIGO ) REFERENCES APARATO ( CODIGO ) );

DICCIONARIOS DE DATOS

EJERCICIO 4. Para los siguientes enunciados identifique las entidades y sus relaciones. a. Una persona puede comprar una o muchas casas, Una casa debe ser propiedad de una sola persona. MODELO ENTIDAD RELACION

MODELO RELACIONAL

b. Un cliente debe comprar uno o muchos productos, Un producto debe ser comprado por un cliente. MODELO ENTIDAD RELACION

MODELO RELACIONAL

c. Un proveedor puede proveer uno o ms productos, Un producto debe ser provisto por uno o ms proveedores. MODELO ENTIDAD RELACION

MODELO RELACIONAL

d. Un empleado puede estar a cargo de uno o muchos empleados, Un empleado debe ser subordinado de un empleado. MODELO ENTIDAD RELACION

MODELO RELACIONAL

e. Un investigador puede hacer muchas observaciones, Una observacin debe ser hecha por un investigador. MODELO ENTIDAD RELACION

MODELO RELACIONAL

f. Un territorio puede pertenecer a una comunidad, Una comunidad debe habitar en un territorio. MODELO ENTIDAD RELACION

MODELO RELACIONAL

g. Una hembra puede ser la madre de muchos chimpancs. Un chimpanc debe ser hijo de una hembra. MODELO ENTIDAD RELACION

MODELO RELACIONAL

h. Un libro puede ser escrito por uno o muchos autores. Un autor puede escribir muchos libros. MODELO ENTIDAD RELACION

MODELO RELACIONAL

i.

Un estudiante est matriculado en muchos cursos. En un curso hay muchos estudiantes matriculados.

MODELO ENTIDAD RELACION

MODELO RELACIONAL

j.

Una base de datos debe contener informacin relativa a las ventas de los productos de una cierta compaa. Cada agente de la compaa es responsable de las ventas en una o ms reas. Cada rea tiene uno o ms agentes como responsables de las ventas que se realicen en ella. Cada agente es responsable de la venta de uno o ms productos y cada producto tiene uno o ms agentes responsables de su venta. Un producto se vende en todas las reas y en un rea se pueden vender todos los productos.

MODELO ENTIDAD RELACION

MODELO RELACIONAL

SCRIPT MYSQL CREATE DATABASE VARIOS; USE VARIOS; CREATE TABLE PERSONA ( CEDULA BIGINT, NOMBRE TEXT, PRIMARY KEY ( CEDULA ) );

CREATE TABLE CLIENTE ( CEDULA BIGINT, NOMBRE TEXT, PRIMARY KEY ( CEDULA ) );

CREATE TABLE EMPLEADO ( NIT VARCHAR(20), NOMBRE TEXT, PRIMARY KEY ( NIT ) );

CREATE TABLE PROVEDOR ( NIT VARCHAR(20), NOMBRE TEXT, PRIMARY KEY (

);

NIT )

CREATE TABLE PRODUCTOSS ( COD VARCHAR(20), NOMBRE TEXT, PRIMARY KEY ( COD ) );

CREATE TABLE INVESTIGADOR ( CEDULA BIGINT, NOMBRE TEXT, PRIMARY KEY ( CEDULA ) );

CREATE TABLE COMUNIDAD ( NOMBRE TEXT, UBICACION VARCHAR(20), PRIMARY KEY ( NOMBRE ) );

CREATE TABLE HEMBRA ( NOMBRE TEXT, EDAD BIGINT,

PRIMARY KEY ( NOMBRE ) );

CREATE TABLE LIBRO ( CODIGO VARCHAR(20), NOMBRE VARCHAR(10), PRIMARY KEY ( CODIGO ) );

CREATE TABLE AUTORES ( COD_AUTOR VARCHAR(20), NOMBRE VARCHAR(10), PRIMARY KEY ( COD_AUTOR ) );

CREATE TABLE ESTUDIANTE ( CODIGO_ESTUDIANTE VARCHAR(20), NOMBRE TEXT, PRIMARY KEY ( CODIGO_ESTUDIANTE ) );

CREATE TABLE CURSOS (

COD_CURSO VARCHAR(12), NOMBRE VARCHAR(10), PRIMARY KEY ( COD_CURSO ) );

CREATE TABLE AGENTE ( COD_AGENTE VARCHAR(12), NOMBRE VARCHAR(10), PRIMARY KEY ( COD_AGENTE ) );

CREATE TABLE AREAS ( COD_AREA VARCHAR(10), NOMBRE VARCHAR(10), PRIMARY KEY ( COD_AREA ) );

CREATE TABLE PRODUCT ( CODIGO VARCHAR(20), NOMBRE TEXT, PRIMARY KEY ( CODIGO ) );

CREATE TABLE CASAS ( DIRECCION VARCHAR(20), CEDULA BIGINT, BARRIO VARCHAR(25), PRIMARY KEY ( DIRECCION ), FOREIGN KEY ( CEDULA ) REFERENCES PERSONA ( CEDULA ) );

CREATE TABLE PRODUCTOS ( COD VARCHAR(30), CEDULA BIGINT, NOMBRE VARCHAR(40), PRIMARY KEY ( COD ), FOREIGN KEY ( CEDULA ) REFERENCES CLIENTE ( CEDULA ) );

CREATE TABLE EMPLEADOS ( NIT VARCHAR(20), NIT_1 VARCHAR(20),

NOMBRE TEXT, PRIMARY KEY ( NIT ), FOREIGN KEY ( NIT_1 ) REFERENCES EMPLEADO ( NIT ) );

CREATE TABLE OBSERVACIONES ( NOMBRE VARCHAR(10), CEDULA BIGINT, CANTIDAD BIGINT, PRIMARY KEY ( NOMBRE ), FOREIGN KEY ( CEDULA ) REFERENCES INVESTIGADOR ( CEDULA ) );

CREATE TABLE TERRITORIO ( NOMBRE TEXT, NOMBRE_1 TEXT, DIMENSION VARCHAR(10), PRIMARY KEY ( NOMBRE

), FOREIGN KEY ( NOMBRE_1 ) REFERENCES COMUNIDAD ( NOMBRE ) );

CREATE TABLE CHIMPANCES ( NOMBRE TEXT, NOMBRE_1 TEXT, EDAD BIGINT, PRIMARY KEY ( NOMBRE ), FOREIGN KEY ( NOMBRE_1 ) REFERENCES HEMBRA ( NOMBRE ) );

CREATE TABLE PROVEER ( NIT VARCHAR(20), COD VARCHAR(20), PRIMARY KEY ( NIT, COD ), FOREIGN KEY ( NIT

) REFERENCES PROVEDOR ( NIT ), FOREIGN KEY ( COD ) REFERENCES PRODUCTOSS ( COD ) );

CREATE TABLE ESCRITO ( CODIGO VARCHAR(20), COD_AUTOR VARCHAR(20), PRIMARY KEY ( CODIGO, COD_AUTOR ), FOREIGN KEY ( CODIGO ) REFERENCES LIBRO ( CODIGO ), FOREIGN KEY ( COD_AUTOR ) REFERENCES AUTORES ( COD_AUTOR ) );

CREATE TABLE MATRICULARSE ( COD_CURSO VARCHAR(12), CODIGO_ESTUDIANTE VARCHAR(20), PRIMARY KEY ( COD_CURSO, CODIGO_ESTUDIANTE ), FOREIGN KEY ( COD_CURSO ) REFERENCES CURSOS ( COD_CURSO ), FOREIGN KEY ( CODIGO_ESTUDIANTE ) REFERENCES ESTUDIANTE ( CODIGO_ESTUDIANTE ) );

CREATE TABLE ADMINISTRA_VENTAS ( CODIGO VARCHAR(20), COD_AGENTE VARCHAR(12), PRIMARY KEY ( CODIGO, COD_AGENTE ), FOREIGN KEY ( CODIGO ) REFERENCES PRODUCT ( CODIGO ),

FOREIGN KEY ( COD_AGENTE ) REFERENCES AGENTE ( COD_AGENTE ) );

CREATE TABLE ADMINISTRAR_VENTAS ( COD_AGENTE VARCHAR(12), COD_AREA VARCHAR(10), PRIMARY KEY ( COD_AGENTE, COD_AREA ), FOREIGN KEY ( COD_AGENTE ) REFERENCES AGENTE ( COD_AGENTE ), FOREIGN KEY ( COD_AREA ) REFERENCES AREAS ( COD_AREA ) );

CREATE TABLE VENDER ( CODIGO VARCHAR(20), COD_AREA VARCHAR(10), PRIMARY KEY

( CODIGO, COD_AREA ), FOREIGN KEY ( CODIGO ) REFERENCES PRODUCT ( CODIGO ), FOREIGN KEY ( COD_AREA ) REFERENCES AREAS ( COD_AREA ) );

DICCIONARIO DE DATOS A)

B)

c)

d)

e)

F)

G)

H)

I)

J)

EJERCICIO 5. A partir del siguiente enunciado se desea realiza el modelo entidad-relacin 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 prstamo (vivienda, vehculo, estudio, electrodomsticos...), cada modalidad tiene un plazo mximo estipulado y una tasa de inters definida. Los socios pueden tener varios prstamos a la vez y para cada uno la cooperativa registra los siguientes datos: Nmero del prstamo, fecha de inicio, el valor del prstamo, la cuota mensual y el plazo en meses el cual no puede sobrepasar el plazo mximo estipulado. Cada socio para adquirir un prstamo debe estar trabajando en una empresa, por lo tanto la cooperativa guarda no slo los datos del socio sino tambin los de la empresa en la cual trabaja ya que se lleva estadsticas sobre las empresas que ms socios tienen asociados a la cooperativa. De las empresas interesa conocer persona de contacto, direccin de la empresa y nmero de empleados total, y si actualmente se tiene o no convenio con ellos. De los socios adems de sus datos bsicos (cdula, nombre, telfono, direccin, nmero de celular y correo electrnico opcionales), interesa conocer el salario mensual. Cada prstamo requiere adems de un codeudor del cual se registran sus datos bsicos. Tambin es importante conocer si el codeudor es un posible cliente o no, para enviarle informacin para que se afilie a la cooperativa. En caso de que un codeudor se vuelve socio de la compaa entonces es necesario que el asociado solicitante del prstamo consiga otro codeudor externo, no se permiten codeudores que sean socios de la cooperativa. MODELO ENTIDAD RELACION

MODELO RELACIONAL

SCRIPT MYSQL CREATE DATABASE PRESTAMO; USE PRESTAMO; CREATE TABLE EMPRESAS ( COD_EMPRESA VARCHAR(20), PERSO_CONTACTO VARCHAR(25), DIRECCIONEMPRESA VARCHAR(45), NEMPLEADOS VARCHAR(25), CONVENIOS VARCHAR(15), PRIMARY KEY ( COD_EMPRESA ) );

CREATE TABLE CODEUDOR ( CEDULACODEUDOR VARCHAR(24), NOMBRE VARCHAR(25), TELEFONO_CODEU VARCHAR(25), DIRECCION VARCHAR(14), POSIBLECLIENTE VARCHAR(25),

PRIMARY KEY ( CEDULACODEUDOR ) );

CREATE TABLE MODALIDADPRESTAMO ( COD_MODALIDAD VARCHAR(25), TIPOMODALIDAD VARCHAR(24), PLAZOMAX VARCHAR(25), TASAINTERES VARCHAR(25), PRIMARY KEY ( COD_MODALIDAD ) );

CREATE TABLE SOCIOS ( CEDULA VARCHAR(15), COD_EMPRESA VARCHAR(20), NOMBRE VARCHAR(30), TELEFONO VARCHAR(50), DIRECCION VARCHAR(25), CELULAR VARCHAR(15), CORREO VARCHAR(20), SALARIOMENSUAL MONEY, PRIMARY KEY ( CEDULA ), FOREIGN KEY ( COD_EMPRESA ) REFERENCES EMPRESAS ( COD_EMPRESA ) );

CREATE TABLE PRESTAMO ( CODIGO_PRESTA VARCHAR(14), CEDULA VARCHAR(15), CEDULACODEUDOR VARCHAR(24), NU_PRESTAMO VARCHAR(25), FECHAINICIO VARCHAR(25), VALORPRESTAMO VARCHAR(14), CUOTAMENSUAL VARCHAR(15), PLAZOENMESES VARCHAR(15), PRIMARY KEY ( CODIGO_PRESTA ), FOREIGN KEY ( CEDULA ) REFERENCES SOCIOS ( CEDULA ), FOREIGN KEY ( CEDULACODEUDOR ) REFERENCES CODEUDOR ( CEDULACODEUDOR ) );

CREATE TABLE PERTENECE ( COD_MODALIDAD VARCHAR(25), CODIGO_PRESTA VARCHAR(14), PRIMARY KEY ( COD_MODALIDAD, CODIGO_PRESTA ), FOREIGN KEY

( COD_MODALIDAD ) REFERENCES MODALIDADPRESTAMO ( COD_MODALIDAD ), FOREIGN KEY ( CODIGO_PRESTA ) REFERENCES PRESTAMO ( CODIGO_PRESTA ) );

SCRIPT DE MYSQL EJERCICIO 6. A partir del siguiente enunciado se desea realiza el modelo entidad-relacin y pasarlo al modelo de datos relacional. Se desea disear una base de datos para una comisara de polica que recoja la informacin acerca de su funcionamiento. Se consideran los siguientes supuestos: a serie de policas que tienen una cedula, nombre y categora, ellos pueden desempear funciones distintas como administrativas, agentes etc. de armas. Cada arma est identificada por un cdigo nico pertenece a una clase y tiene un nombre determinado. importante conocer el grado de habilidad (puntuacin de 1 a 10) de cada polica con cada una de las armas que utiliza. ms policas. tiene un cdigo y una ubicacin. caso y el juzgado que los instruye); Interesa saber cul es principal cargo (robo, homicidio etc.) que se le atribuye a un delincuente en cada caso que est involucrado. MODELO ENTIDAD RELACION

MODELO RELACIONAL

MODELO ENTIDAD RELACION

SCRIPT DE MYSQL CREATE DATABASE POLICIAS; USE POLICIAS; CREATE TABLE JEFES ( CEDULA VARCHAR(20), NOMBRE_JEFE VARCHAR(25), RANGO VARCHAR(25), FUNCION VARCHAR(25), PRIMARY KEY ( CEDULA ) );

CREATE TABLE CELDA ( CODIGO_CELDA VARCHAR(25), UBICACION VARCHAR(23), PRIMARY KEY ( CODIGO_CELDA ) );

CREATE TABLE ARRESTOS ( COD_CASO VARCHAR(20), CEDULA VARCHAR(23), CEDULA_DELICUENTE VARCHAR(25), JUZGADO VARCHAR(25), PRIMARY KEY ( COD_CASO ) );

CREATE TABLE POLICIAS

( CEDULA VARCHAR(25), CEDULA_1 VARCHAR(20), NOMBRE VARCHAR(24), CATEGORIA VARCHAR(24), FUNCIONES VARCHAR(23), HABILIDADARMAS VARCHAR(25), PRIMARY KEY ( CEDULA ), FOREIGN KEY ( CEDULA_1 ) REFERENCES JEFES ( CEDULA ) );

CREATE TABLE ARMA ( CODIGOARMA VARCHAR(25), CEDULA VARCHAR(25), CLASE VARCHAR(23), NOMBRE VARCHAR(25), PRIMARY KEY ( CODIGOARMA ), FOREIGN KEY ( CEDULA ) REFERENCES POLICIAS ( CEDULA ) );

CREATE TABLE DELICUENTE

( CEDULA_DELICUENTE VARCHAR(25), COD_CASO VARCHAR(20), CODIGO_CELDA VARCHAR(25), NOMBRE VARCHAR(23), TELEFONO VARCHAR(23), PRIMARY KEY ( CEDULA_DELICUENTE ), FOREIGN KEY ( COD_CASO ) REFERENCES ARRESTOS ( COD_CASO ), FOREIGN KEY ( CODIGO_CELDA ) REFERENCES CELDA ( CODIGO_CELDA ) );

CREATE TABLE ARRESTAR ( COD_CASO VARCHAR(20), CEDULA VARCHAR(25), PRIMARY KEY ( COD_CASO, CEDULA ), FOREIGN KEY ( COD_CASO ) REFERENCES ARRESTOS ( COD_CASO

), FOREIGN KEY ( CEDULA ) REFERENCES POLICIAS ( CEDULA ) );

TALLER 3
EJERCICIO 1. Obtn el modelo ERE, relacional: Queremos hacer una aplicacin para gestionar un pequeo aeropuerto. En este aeropuerto tendremos aviones identificados por un nmero, cada avin 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 nmero, una capacidad y una localizacin. En este aeropuerto tenemos tres tipos de personas (nss, direccin y telfono): 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 posesin de uno o varios propietarios interesndonos almacenar desde qu fecha lo poseen. MODELO ENTIDAD RELACION

MODELO RELACIONAL

SCRIPT DE MYSQL MYSQL>USE AEROPUERTO; 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) PERSONAS(NSS) ON DELETE NOT ACTION ON UPDATE CASCADE; mysql> CREATE TABLE EMPLEADOS(NSS VARCHAR(12)NOT NULL, MONEY NOT NULL, TURNO VARCHAR(15)NOT NULL,PRIMARY KEY(NSS))ENGINE=INNODB; mysql> CREATE TABLE PROPIETARIO KEY(NSS))ENGINE=INNODB; REFERENCES. SALARIO

NSS VARCHAR(12) NOT NULL,PRIMAY

MYSQL> ALTER TABLE AEROPUERTO ADD INDEX(NSS); mysql>ALTERTABLE AEROPUERTO ADDFOREIGNKEY(NSS) PERSONAS(NSS) ON DELETE NOT ACTION ON UPDATE CASCADE; REFERENCES.

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;

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 NUMERO_AVIONES VARCHAR(10)NOT NULL, KEY(NSS,NUMERO_AVIONES))ENGINE=INNODB; MYSQL> ALTER TABLE AEROPUERTO ADD INDEX(NSS);

VARCHAR(12)NOT NULL, PRIMARY

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

REFERENCES.

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

DICCIONARIO DE DATOS

EJERCICIO 2. Dado el siguiente enunciado obtn el modelo ERE, relacional. Una empresa de servicios quiere informatizar su gestin en lo referente su personal, proyectos y los servicios que presta a otras empresas. Respecto al personal de la empresa, se almacenar un cdigo asignado por el departamento de Recursos Humanos, el nombre, direccin y telfono 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 slo tiene un directivo como jefe directo. En cuanto al personal que aparece como plantilla, se almacenar adems la especialidad en la que ejercer sus funciones. Los directivos siempre tendrn 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 cdigo de proyecto, un nombre y el esfuerzo estimado en personas-mes para realizarlo. Lo proyectos son de dos tipos: de desarrollo o estratgicos, sin embargo, en algunos casos, los proyectos de desarrollo pueden ser adems, estratgicos. Si un proyecto es estratgico, se almacenar adems el plazo de ejecucin estimado y si es de desarrollo, el presupuesto. Cada proyecto es gestionado por un directivo de la empresa siempre y cuando el proyecto sea estratgico. No puede haber proyectos de este tipo sin directivo asignado. Esto no significa que todo directivo tenga un proyecto bajo su direccin. En caso que el proyecto sea de desarrollo, se almacenar qu personal de plantilla participa en dicho proyecto y el tanto por ciento de dedicacin. Una persona de plantilla puede estar asignada a ninguno o muchos proyectos. Respecto a los servicios que se prestan a otras empresas, la poltica 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 cdigo de servicio y el precio por mes. Tambin 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, direccin, telfono.

MODELO ENTIDAD RELACION

MODELO RELACIONAL

SCRIPT MYSQL CREATE DATABASE PROYECTO; USE PROYECTO; CREATE TABLE PROYECTOS ( CODIGO_PROYECTO VARCHAR(20), NOMBRE_PROYECTO VARCHAR(20), ESFUERZO_AL_MES VARCHAR(20), PRIMARY KEY ( CODIGO_PROYECTO ) );

CREATE TABLE EMPRESA_CLIENTE ( NIT VARCHAR(20), NOMBRE_EMPRESA VARCHAR(20), DIRECCION_EMPRESA VARCHAR(20), TELEFONO_EMPRESA VARCHAR(12), PRIMARY KEY ( NIT ) );

CREATE TABLE SERVIIOS_PRESTADOS ( CODIGO_SERVICIO VARCHAR(2), NIT VARCHAR(20), PRECIO_POR_MES MONEY, EMPRESA_CONTRATADORA VARCHAR(20), PRIMARY KEY ( CODIGO_SERVICIO ), FOREIGN KEY ( NIT

) REFERENCES EMPRESA_CLIENTE ( NIT ) );

CREATE TABLE EMPEADOS ( CODIGO_EMPLEADO VARCHAR(15), CODIGO_SERVICIO VARCHAR(2), NOMBRE_EMPELADO VARCHAR(20), DIRECCION_EMPELADO VARCHAR(20), TELEFONO_EMPLEADO VARCHAR(12), PRIMARY KEY ( CODIGO_EMPLEADO ), FOREIGN KEY ( CODIGO_SERVICIO ) REFERENCES SERVIIOS_PRESTADOS ( CODIGO_SERVICIO ) );

CREATE TABLE DIRECTIVO ( CODIGO_EMPLEADO VARCHAR(15), PERSONAL_A_CARGO INT, PRIMARY KEY ( CODIGO_EMPLEADO ), FOREIGN KEY ( CODIGO_EMPLEADO ) REFERENCES EMPEADOS (

);

CODIGO_EMPLEADO )

CREATE TABLE PLANILLA ( CODIGO_EMPLEADO VARCHAR(15), ESPECIALIDAD VARCHAR(20), PRIMARY KEY ( CODIGO_EMPLEADO ), FOREIGN KEY ( CODIGO_EMPLEADO ) REFERENCES EMPEADOS ( CODIGO_EMPLEADO ) );

CREATE TABLE DESARROLLO ( CODIGO_PROYECTO VARCHAR(20), CODIGO_EMPLEADO VARCHAR(15), PRESUPUESTO MONEY, PRIMARY KEY ( CODIGO_PROYECTO ), FOREIGN KEY ( CODIGO_PROYECTO ) REFERENCES PROYECTOS ( CODIGO_PROYECTO ), FOREIGN KEY ( CODIGO_EMPLEADO

) REFERENCES PLANILLA ( CODIGO_EMPLEADO ) );

CREATE TABLE ESTRATEGICO ( CODIGO_PROYECTO VARCHAR(20), CODIGO_EMPLEADO VARCHAR(15), PLAZO_EJECUCION VARCHAR(20), PRIMARY KEY ( CODIGO_PROYECTO ), FOREIGN KEY ( CODIGO_PROYECTO ) REFERENCES PROYECTOS ( CODIGO_PROYECTO ), FOREIGN KEY ( CODIGO_EMPLEADO ) REFERENCES DIRECTIVO ( CODIGO_EMPLEADO ) );

EJERCICIO 3. Dado el siguiente enunciado, obtn el modelo entidad-relacin extendido, relacional. Una empresa dedicada a la realizacin de reformas y construcciones en general maneja la siguiente informacin para llevar parte de su negocio. La empresa dispone de albailes en plantilla de los que almacena, entre otras cosas, el nmero de la Seguridad Social, nombre, apellidos, fecha de nacimiento, nmeros de los telfonos que dispone (fijos y/o mviles) y categora profesional. Las categoras profesionales en las que clasifica a los albailes son Maestro y Pen, pudiendo haber otras categoras. Si un albail tiene la categora de Maestro almacena el dni y el sueldo. Si es Pen Albail almacena, el dni y el sueldo en el caso de ser de nacionalidad espaola, y el pas de origen y sueldo si es extranjero. Obviamente un albail slo puede pertenecer a una categora. Los albailes en plantilla estn agrupados en cuadrillas propias de la empresa (un albail debe encontrarse en una y solo una cuadrilla) de las que se almacena un cdigo interno, nombre (que tambin la identifica) y localidad principal de actuacin. MODELO ENTIDAD RELACION

MODELO RELACIONAL

SCRIPT DE MYSQL CREATE DATABASE CONTRUCCION; USE CONSTRUCCION; CREATE TABLE CUADRILLA ( COD_INTERNO BIGINT, NOMBRE VARCHAR(40), LOCALIDAD VARCHAR(40), PRIMARY KEY ( COD_INTERNO ) );

CREATE TABLE ALBAIL ( NSS VARCHAR(40), COD_INTERNO BIGINT, NOMBRE VARCHAR(10), APELLIDO VARCHAR(10), F_NACIMIENTO DATETIME, N_FIJO BIGINT, N_MOVIL BIGINT, PRIMARY KEY

( NSS ), FOREIGN KEY ( COD_INTERNO ) REFERENCES CUADRILLA ( COD_INTERNO ) );

CREATE TABLE PEON ( NSS VARCHAR(40), DNI VARCHAR(70), SUELDO MONEY, NACIONALIDAD VARCHAR(80), PRIMARY KEY ( NSS ), FOREIGN KEY ( NSS ) REFERENCES ALBAIL ( NSS ) );

CREATE TABLE MAESTRO ( NSS VARCHAR(40), DNI VARCHAR(70), SUELDO MONEY, PRIMARY KEY ( NSS ),

FOREIGN KEY ( NSS ) REFERENCES ALBAIL ( NSS ) );

EJERCICIO 4. Dado el siguiente enunciado, obtn el modelo entidad-relacin extendido, relacional. Una empresa dedicada a la venta de material ptico desea que diseemos una base de datos para la automatizacin de sus procesos. La informacin 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 cdigo de producto (que es nico), su precio de venta y su marca. En cuanto a las lentes de contacto interesa, adems, conocer su tipo (blandas, rgidas, etc.), su color, los productos de limpieza que requiere y su graduacin. Para las gafas, se desea tambin almacenar su modelo, el material de fabricacin. 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 graduacin as como en qu tipo de problemas oculares se pueden utilizar (miopa, astigmatismo, etc.). De las gafas de sol, interesa conocer el nivel de filtrado de los rayos ultravioleta. Hay que tener en cuenta adems que queremos gestionar las personas que han comprado gafas en nuestro establecimiento, para estas personas almacenaremos un cdigo y el nombre. Adems 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. MODELO ENTIDAD RELACION

MODELO RELACIONAL

SCRIPT DE MYSQL CREATE DATABASE OPTICA; USE OPTICA; CREATE TABLE CLIENTE ( CODIGO VARCHAR(4000), NOMBRE VARCHAR(40), PRIMARY KEY (

);

CODIGO )

CREATE TABLE GAFAS ( CODIGO VARCHAR(60), CODIGO_1 VARCHAR(4000), PRECIO VARCHAR(700), MARCA VARCHAR(80), MODELO VARCHAR(90), MATERIAL_FABRICACION VARCHAR(50), PRIMARY KEY ( CODIGO ), FOREIGN KEY ( CODIGO_1 ) REFERENCES CLIENTE ( CODIGO ) );

CREATE TABLE LENTES ( CODIGO VARCHAR(100), CODIGO_1 VARCHAR(4000), PRECIO VARCHAR(4000), MARCA VARCHAR(10), TIPO_BANDA VARCHAR(70), COLOR VARCHAR(70), PRODUCTOS_LIMPIEZA VARCHAR(70), GRADUACION VARCHAR(40), PRIMARY KEY ( CODIGO ), FOREIGN KEY (

);

CODIGO_1 ) REFERENCES CLIENTE ( CODIGO )

CREATE TABLE GRADUADAS ( CODIGO VARCHAR(60), GRADUACION VARCHAR(70), PROBLEMAS_OCULARES VARCHAR(80), PRIMARY KEY ( CODIGO ), FOREIGN KEY ( CODIGO ) REFERENCES GAFAS ( CODIGO ) );

CREATE TABLE SOL ( CODIGO VARCHAR(60), CODIGO_1 VARCHAR(4000), NIVEL_FILTRADO_R_ULTRAVIOLETA VARCHAR(80), PRIMARY KEY ( CODIGO ), FOREIGN KEY ( CODIGO ) REFERENCES GAFAS (

CODIGO ), FOREIGN KEY ( CODIGO_1 ) REFERENCES CLIENTE ( CODIGO ) );

CREATE TABLE SOL_GRADUADAS ( CODIGO VARCHAR(60), NIVEL_FILTRADO_R_ULTRAVIOLETA VARCHAR(70), PRIMARY KEY ( CODIGO ), FOREIGN KEY ( CODIGO ) REFERENCES GAFAS ( CODIGO ) );

CREATE TABLE HABITUAL ( CODIGO VARCHAR(4000), DESCUENTO VARCHAR(70), PRIMARY KEY ( CODIGO ), FOREIGN KEY ( CODIGO )

);

REFERENCES CLIENTE ( CODIGO )

CREATE TABLE OCASIONAL ( CODIGO VARCHAR(4000), DESCUENTO VARCHAR(70), PRIMARY KEY ( CODIGO ), FOREIGN KEY ( CODIGO ) REFERENCES CLIENTE ( CODIGO ) );

EJERCICIOS SIN ENUNCIADO PRODUCTO INFORMATIVO MODELO ENTIDAD RELACION

MODELO RELACIONAL

SCRIPT MYSQL mysql>CREATE DATABASE PRODUCTOINFORMATIVO; mysql>USE PRODUCTOINFORMATIVO; mysql> CREATE TABLE CLIENTE(CODIGO_CLIENTE INT(12) NOT NULL, NOMBRE VARCHAR(10) NOT NULL, APELLIDOS VARCHAR(10) NOT NULL , DIRECCION VARCHAR(6) NOT NULL, TELEFONO INT(12) NOT NULL, PRIMARY KEY( CODIGO_CLIENTE) )ENGINE=INNODB; mysql> CREATE TABLE PRODUCTO(CODIGO INT(12) NOT NULL, DESCRIPCION VARCHAR(20)NOT NULL, PRECIO MONEY NOT NULL, EXITENCIAS INT(2),PRIMARYKEY( CODIGO))ENGINE=INNODB; mysql> CREATE TABLE PROVEDORES(CODIGO_PROVEDOR INT(12)NOT NULL, NOMBRE VARCHAR(10) NOT NULL, APELLIDOS VARCHAR(10) NOT NULL, DIRECCION VARCHAR(6)NOT NULL, PROVINCIA VARCHAR(10)NOT NULL, NUMEROTEL INT(10)NULL,PRIMARYKEY(CODIGO_PROVEDOR)) ENGINE=INNODB; mysql> CREATE TABLE COMPRAR(FECHA_COMPRA DATETIME NOT NULL, CODIGO_CLIENTE INT(12) NOT NULL, CODIGO INT(12) NOT NULL, PRIMARY KEY( FECHA_COMPRA, CODIGO_CLIENTE, CODIGO)ENGINE=INNODB; mysql>ALTER TABLE PRODUCTOINFORMATIVO ADD INDEX (CODIGO_CLIENTE); mysql>ALTERTABLE PRODUCTOINFORMATIVO ADDFOREIGNKEY (CODIGO_CLIENTE)REFERENCES PRODUCTOINFORMATIVO .CLIENTE (CODIGO_CLIENTE) ON DELETE NOT ACTION ON UPDATE CASCADE; mysql>ALTER TABLE PRODUCTOINFORMATIVO ADD INDEX (CODIGO); mysql> ALTER TABLE PRODUCTOINFORMATIVO ADD FOREIGN KEY(CODIGO)REFERENCES PRODUCTOINFORMATIVO .PRODUCTO (CODIGO) ON DELETE NOT ACTION ON UPDATE CASCADE; mysql> CREATE TABLE SUMINISTRAR(CANTIDAD INT(2) NOT NULL, CODIGO_PROVEDOR INT(12)NOT NULL, PRIMARY KEY(CANTIDAD_PRODUCTO,CODIGO, CODIGO_PROVEDOR))ENGINE=INNODB; mysql>ALTER TABLE PRODUCTOINFORMATIVO ADD INDEX (CODIGO);

mysql> ALTER TABLE PRODUCTOINFORMATIVO ADD FOREIGN KEY(CODIGO)REFERENCES PRODUCTOINFORMATIVO .PRODUCTO (CODIGO) ON DELETE NOT ACTION ON UPDATE CASCADE; mysql>ALTER TABLE PRODUCTOINFORMATIVO ADD INDEX (CODIGO_PROVEDOR); mysql> ALTER TABLE PRODUCTOINFORMATIVO ADD FOREIGN KEY(CODIGO_PROVEDOR )REFERENCES PRODUCTOINFORMATIVO .PROVEDORES ( CODIGO_PROVEDOR ) ON DELETE NOT ACTION ON UPDATE CASCADE;

AUTOS MODELO ENTIDAD RELACION

MODELO RELACIONAL

SCRIPT MYSQL Mysql>CREATE DATABASE AUTO; Mysql>USE AUTO;

Mysql>CREATE TABLE CLIENTES ( NIT INT (12) NOT NULL , NOMBRE VARCHAR(15) NOT NULL, APELLIDOS VARCHAR(15) NOT NULL, DIRECCION VARCHAR(6) NOT NULL, CIUDAD VARCHAR(15) NOT NULL, CODINTERNO INT(12), PRIMARY KEY( NIT)) ENGINE=INNODB; Mysql>CREATE TABLE MARCA (COD_MARCA INT (10) NOT NULL, DESCRIPCION TEXT NOT NULL, PRIMARY KEY (COD_MARCA)) ENGINE= INNODB; Mysql> CREATE TABLE COCHE (MATRICULA VARCHAR(6)NOT NULL, MODELO TEXT NOT NULL, COLOR TEXT NOT NULL , PVC MONEY NOT NULL, PRIMARY KEY (MATRICULA)) ENGINE=INNODB; Mysql>ALTER TABLE AUTO ADD INDEX (NIT); Mysql> ALTER TABLE AUTO ADD FOREIGN KEY(NIT)REFERENCES AUTO .CLIENTES (NIT) ON DELETE NOT ACTION ON UPDATE CASCADE; Mysql>ALTER TABLE AUTO ADD INDEX (COD_MARCA); Mysql> ALTER TABLE AUTO ADD FOREIGN KEY(CODIGO_M)REFERENCES AUTO .MARCA (COD_MARCA) ON DELETE NOT ACTION ON UPDATE CASCADE;

FUTBOL MODELO ENTIDAD RELACION

MODELO RELACIONAL

SCRIPT MYSQL CREATE DATABASE FUTBOL; USE FUTBOL; CREATE TABLE PARTIDOS ( COD_PARTIDO BIGINT, FECHA_PARTIDO DATETIME, GOLES_AFAVOR BIGINT, GOLES_CONTRA BIGINT, PRIMARY KEY ( COD_PARTIDO ) );

CREATE TABLE PRESIDENTE ( DNI VARCHAR(6), NOMBRE VARCHAR(50), APELLIDOS VARCHAR(50), FEC_NACIMIENTO DATETIME, EQUIPO_PRESIDE VARCHAR(25), AO_ELECCION DATETIME, PRIMARY KEY ( DNI ) );

CREATE TABLE EQUIPOS ( CODIGO_EQUIPO VARCHAR(5), DNI VARCHAR(6), NOM_EQUIPO VARCHAR(35), NOM_ESTADIO VARCHAR(35), AFORO VARCHAR(50), AO_FUNDADO BIGINT, CIUDAD_EQUIPO VARCHAR(25), PRIMARY KEY ( CODIGO_EQUIPO

), FOREIGN KEY ( DNI ) REFERENCES PRESIDENTE ( DNI ) );

CREATE TABLE JUGADORES ( CODIGO_JUG VARCHAR(5), CODIGO_EQUIPO VARCHAR(5), NOMBRE VARCHAR(50), FECHA_NAC DATETIME, POSICION VARCHAR(25), PRIMARY KEY ( CODIGO_JUG ), FOREIGN KEY ( CODIGO_EQUIPO ) REFERENCES EQUIPOS ( CODIGO_EQUIPO ) );

CREATE TABLE GOLES ( CODIGO_JUG VARCHAR(5), COD_PARTIDO BIGINT, MINUTO_GOL DATETIME, DESCRIPCION_GOL VARCHAR(50), PRIMARY KEY ( CODIGO_JUG, COD_PARTIDO

), FOREIGN KEY ( CODIGO_JUG ) REFERENCES JUGADORES ( CODIGO_JUG ), FOREIGN KEY ( COD_PARTIDO ) REFERENCES PARTIDOS ( COD_PARTIDO ) );

DICCIONARIOS DE DATOS

CARGA ACADEMIDA MODELO ENTIDAD RELACION

MODELO RELACIONAL

SCRIPT MYSQL CREATE DATABASE ACADEMICA; USE ACADEMICA; CREATE TABLE ASIGNATURAS ( CODASIGNATURA VARCHAR(5), NOMBASIGNATURA VARCHAR(20), CREDACADASIGNATURA INT, /* Creditos Academicos Asignatura */ IHTASIGNATURA INT, /* Intensidad Horas Teoricas */ IHPASIGNATURA INT, /* Intensidad Horas Practicas */ CONDASIGNATURA VARCHAR(30), /* Condiciones de la asignatura */ PRIMARY KEY ( CODASIGNATURA ) );

CREATE TABLE DOCENTES ( CODDOCENTE VARCHAR(10), NOMBDOCENTE VARCHAR(30), APLLDOCENTE VARCHAR(30), PROFDOCENTE VARCHAR(2), CELDOCENTE VARCHAR(12), VINCDOCENTE VARCHAR(2), PRIMARY KEY ( CODDOCENTE ) );

/* profesion */ /* celular */ /* Vinculacion Laboral */

CREATE TABLE ALUMNOS ( CODALUMNO VARCHAR(6), NOMBALUMNO VARCHAR(30), APLLALUMNO VARCHAR(30), CELALUMNO VARCHAR(12), PRIMARY KEY

);

( CODALUMNO )

CREATE TABLE CARRERAS ( CODPROGRAMA VARCHAR(4), NOMBCARRERA VARCHAR(50), TOTALCREDITOS INT, PRIMARY KEY ( CODPROGRAMA ) );

CREATE TABLE FORMINSCRIPCION ( CONSINSCRIPCION INT, CODALUMNO VARCHAR(6), CODPROGRAMA VARCHAR(4), FECHINSCRIPCION DATETIME, SEMINSCRIPCION CHAR(5), PRIMARY KEY ( CONSINSCRIPCION ), FOREIGN KEY ( CODALUMNO ) REFERENCES ALUMNOS ( CODALUMNO ), FOREIGN KEY ( CODPROGRAMA ) REFERENCES CARRERAS ( CODPROGRAMA

/* /* semestre academico */ */

) );

CREATE TABLE REGISTROMATERIAS ( CONSEREGISTRO INT, CODASIGNATURA VARCHAR(5), CODDOCENTE VARCHAR(10), CONSINSCRIPCION INT, JORNADA CHAR(2), PRIMARY KEY ( CONSEREGISTRO ), FOREIGN KEY ( CODASIGNATURA ) REFERENCES ASIGNATURAS ( CODASIGNATURA ), FOREIGN KEY ( CODDOCENTE ) REFERENCES DOCENTES ( CODDOCENTE ), FOREIGN KEY ( CONSINSCRIPCION ) REFERENCES FORMINSCRIPCION ( CONSINSCRIPCION ) );

CREATE TABLE ASIGNAR (

CONSCARGA INT, CODDOCENTE VARCHAR(10), CODASIGNATURA VARCHAR(5), DIACLASE VARCHAR(10), HORACLASE TEXT, SALONCLASE TEXT, SEMACADEMICO VARCHAR(5), PRIMARY KEY ( CONSCARGA, CODDOCENTE, CODASIGNATURA ), FOREIGN KEY ( CODDOCENTE ) REFERENCES DOCENTES ( CODDOCENTE ), FOREIGN KEY ( CODASIGNATURA ) REFERENCES ASIGNATURAS ( CODASIGNATURA ) );

S-ar putea să vă placă și