Você está na página 1de 23

Proyecto de base de

datos
Juan Manuel Zanola
Martn Telechea
Agustn Lpez

2BE

ndice

Consigna de trabajo

Anlisis y especificacin de la realidad

D.E.R completo

Descripcin grafica

Esquema Relacional en 3era. forma normal (con claves primarias y


externas)

Diccionario de Datos

Implementacin de DDL y DML utilizando el Gestor de Base de Datos MySQL


(creacin de tablas, claves externas, poblacin de tablas)

10 consultas relevantes (lgebra Relacional y en SQL)


2

Proyecto de Base de Datos 2016

Consigna de trabajo
Se desea disear una Base de Datos para la creacin y mantenimiento de toda la
realidad concerniente a los servicios de pedidos y entregas (delivery) de productos
que ofrecen diferentes comercios del pas.

Debern entregar:

Anlisis y especificacin de la realidad.


D.E.R completo.
Esquema Relacional en 3era. forma normal (con claves primarias y externas)
Diccionario de Datos.
Implementar el DDL y DML utilizando el Gestor de Base de Datos MySQL
10 consultas relevantes (no triviales) que pudiera necesitar ejecutar el usuario del
sistema en lgebra Relacional y en SQL.
Documentacin impresa y en medio electrnico.

Formacin de grupos: cmo mximo 3 alumnos.

Fecha de entrega FINAL:

semana del 1 de Noviembre de 2016


Proyecto de Base de Datos 2016

Anlisis y especificacin de la realidad

Letra del proyecto:

Se busca almacenar y monitorear la informacin necesaria para realizar la


funcin de delivery en un local de artculos e indumentaria deportiva de la
manera mas eficiente posible para satisfacer a los compradores. A
continuacin se expondr el funcionamiento de la realidad.
En primer lugar esta el cliente del cual interesa saber el nombre, el apellido y
la direccin, adems ste es identificado por un cdigo y numero de
documento correspondiente.
Dicho cliente, realiza su pedido, es fundamental conocer de ste la cantidad
de productos que desea adquirir, el cdigo del cliente que se le otorg y el
cdigo del pedido, el cual lo identificar.
Los productos que componen un pedido poseen un nombre, una ID y un
precio. las empresas pueden contar con varios locales, y estos son
identificados con un numero Rut.
Los envos son realizado por medio de un servicio de delivery, este se lleva a
cabo por un empleado de la tienda a la cual se le asigna el encargo de los
productos, este es identificado por un cdigo, de l interesa saber solamente
el nombre.
4

Proyecto de Base de Datos 2016

Diagrama entidad relacin

Proyecto de Base de Datos 2016

Descripcin grafica

1
Cliente

Forma de compra

Productos

Ciclo de Compra

5
Delivery
6

Proyecto de Base de Datos 2016

4
Local

Esquema relacional

Proyecto de Base de Datos 2016

Diccionario de datos

NroDoc Nmero de documento de cliente

NomCliente Nombre del cliente

NroCont Numero de contacto

CantProd Cantidad de productos

ApeCliente Apellido cliente

TotalP Precio total del pedido

DirCliente Direccin cliente

CodDeli Cdigo de delivery

NroCliente Nmero de cliente

CodCliente Cdigo del cliente

CodCompra Cdigo de compra

CodPedido Cdigo del pedido

NombProd Nombre de producto

NomProd Nombre del producto

Precio Precio del producto

IDProd Identificacin del producto

NomEmp Nombre de empresa

Rut Identificacin de la empresa

DirLoc Direccin del local

ApeEmp Apellido de empleado

Proyecto de Base de Datos 2016

Implementacin el DDL y DML

Proyecto de Base de Datos 2016

mysql

MySQLes unsistema de gestin de bases de datosrelacionaldesarrollado bajo licencia


dualGPL/Licencia comercialporOracle Corporationy est considerada como la base datosopen
sourcems popular del mundo

Es un sistema de administracin de bases de datos. Una base de datos es una coleccin


estructurada de tablas que contienen datos. Esta puede ser desde una simple lista de compras a
una galera de pinturas o el vasto volumen de informacin en una red corporativa. Para agregar, acceder
a y procesar datos guardados en un computador, usted necesita un administrador como MySQL Server.
Dado que los computadores son muy buenos manejando grandes cantidades de informacin, los
administradores de bases de datos juegan un papel central en computacin, como aplicaciones
independientes o como parte de otras aplicaciones.

Es un sistema de administracin relacional de bases de datos. Una base de datos relacional


archiva datos en tablas separadas en vez de colocar todos los datos en un gran archivo. Esto permite
velocidad y flexibilidad. Las tablas estn conectadas por relaciones definidas que hacen posible combinar
datos de diferentes tablas sobre pedido.

Es un software de fuente abierta. La expresin fuente abierta significa que es posible para
cualquier persona usarlo y modificarlo. Cualquier persona puede bajar el cdigo fuente de MySQL y
usarlo sin pagar. Cualquier interesado puede estudiar el cdigo fuente y ajustarlo a sus necesidades.
MySQL usa el GPL (GNU General Public License) para definir qu puede hacer y qu no puede hacer con
el software en diferentes situaciones. Si usted no se ajusta al GPL o requiere introducir cdigo MySQL en
aplicaciones comerciales, usted puede comprar una versin comercial licenciada.

10

Proyecto de Base de Datos 2016

Creacin de tablas
-TABLA DELIVERY-

-TABLA CLIENTESCREATE TABLE DELIVERY(


CREATE TABLE CLIENTE(
NOMEMP VARCHAR(15),
CODCLIENTE INT(9),
CODDELI VARCHAR(8),
RUTEMP INT (12) NOT NULL,
NRODOC INT NOT NULL DEFAULT 1,
APEEMP VARCHAR(15),
NONCLIENTE VARCHAR(15),
CONSTRAINT CLP_DELIVERY PRIMARY KEY (CODDELI)
APECLIENTE VARCHAR(15),
);
DIRCLIENTE VARCHAR(20),
-TABLA EMPRESA VENTACREATE TABLE EMPVENTA(
CONSTRAINT CLP_CLIENTE PRIMARY KEY (CODCLIENTE,
RUT INT (12) NOT NULL,
NRODOC)
NOMBEMP VARCHAR(15),
);
DIRLOC VARCHAR(20),
-TABLA PEDIDIOSNUMCONT INT(9),
CREATE TABLE PEDIDOS(
CONSTRAINT CLP_EMPVENTA PRIMARY KEY (RUT)
CODPEDIDO VARCHAR(10),
);
-TABLA REALIZATOTALP DECIMAL(5,2),
CREATE TABLE REALIZA(
CODDELI VARCHAR(8),
CODPEDIDO VARCHAR(10),
CONSTRAINT CLP_PEDIDOS PRIMARY KEY (CODPEDIDO)
CODCLIENTE INT(9),
);
FORMA VARCHAR(15),
-TABLA PRODUCTOSCONSTRAINT CLP_REAL PRIMARY KEY (CODPEDIDO,
CODCLIENTE)
CREATE TABLE PRODUCTOS(
);
NOMPROD VARCHAR(15),
IDPROD VARCHAR(8),
11
Proyecto de Base de Datos 2016
CONSTRAINT CLP_PRODUCTOS PRIMARY KEY (IDPROD)

-TABLA RECIBE-

-TABLA SUMINISTRAR-

CREATE TABLE RECIBE(


CODPEDIDO VARCHAR(10),
CODDELI VARCHAR(8),
CODCLIENTE INT(9),
CONSTRAINT CLP_RECI PRIMARY KEY
(CODPEDIDO, CODDELI, CODCLIENTE)
);

CREATE TABLE SUMINISTRA(

-TABLA TRABAJA EN-

-TABLA CONTIENE-

CREATE TABLE TRABAJA_EN(

CREATE TABLE CONTIENE(


CODPEDIDO VARCHAR(10),
IDPROD VARCHAR(8),
CONSTRAINT CLP_CONT PRIMARY KEY
(CODPEDIDO, IDPROD)
);

CODDELI VARCHAR(8),

RUT INT(12) NOT NULL,


IDPROD VARCHAR(8),
PRECIO DECIMAL(5,2),
CONSTRAINT CLP_SUMIN PRIMARY KEY (RUT, IDPROD)
);

RUT INT(12) NOT NULL,


CONSTRAINT CLP_TRABEN PRIMARY KEY (CODDELI,
RUT)
);

-TABLA ENTREGACREATE TABLE ENTREGA(


CODPEDIDO VARCHAR(10),
CODDELI VARCHAR(8),
CONSTRAINT CLP_ENTRE PRIMARY KEY
(CODPEDIDO, CODDELI)
);

12

Proyecto de Base de Datos 2016

CLAVES EXTERNAS

LTER TABLE PEDIDOS add constraint CLE_CODDELI_PEDIDOS foreign key (CODDELI) references DELIVERY(CODDELI);

ALTER TABLE DELIVERY add constraint CLE_RUTEMP_DELIVERY foreign key (RUTEMP) references EMPVENTA(RUT);

ALTER TABLE SUMINISTRA add constraint CLE_RUT_SUMINISTRA foreign key (RUT) references EMPVENTA(RUT);

ALTER TABLE SUMINISTRA add constraint CLE_IDPROD_SUMINISTRA foreign key (IDPROD) references
PRODUCTOS(IDPROD);

ALTER TABLE REALIZA add constraint CLE_CODCLIENTE_REALIZA foreign key (CODCLIENTE) references
CLIENTE(CODCLIENTE);

ALTER TABLE REALIZA add constraint CLE_CODPEDIDO_REALIZA foreign key (CODPEDIDO) references
PEDIDOS(CODPEDIDO);

ALTER TABLE CONTIENE add constraint CLE_CODPEDIDO_CONTIENE foreign key (CODPEDIDO) references
PEDIDOS(CODPEDIDO);

ALTER TABLE CONTIENE add constraint CLE_IDPRODRUT_CONTIENE foreign key (IDPROD, RUT) references
SUMINISTRA(IDPROD, RUT);

ALTER TABLE RECIBE add constraint CLE_CODCLIENTE_RECIBE foreign key (CODCLIENTE) references
CLIENTE(CODCLIENTE);

ALTER TABLE RECIBE add constraint CLE_CODDELI_RECIBE foreign key (CODDELI) references DELIVERY(CODDELI);

ALTER TABLE RECIBE add constraint CLE_CODPEDIDO_RECIBE foreign key (CODPEDIDO) references
PEDIDOS(CODPEDIDO);

13

Proyecto de Base de Datos 2016

Poblacin de tablas
CLIENTE:

INSERT INTO CLIENTE VALUES('123456789','49675195','Martin','Telechea','M 313 S 25, Pinar,UY')

INSERT INTO CLIENTE VALUES('987654321','48033562','Juan Manuel','Zanola','Samuel Blixen


4440, Montevideo, UY')

INSERT INTO CLIENTE VALUES('777999222','48025695','Agustin','Lopez','Pedro Berro 1225,


Montevideo, UY')

INSERT INTO CLIENTE VALUES('789963321','45726984','Gerardo','Lopez','Pedro Berro 1225,


Montevideo, UY')

INSERT INTO CLIENTE VALUES('987741123','42486295','Natalia','Rodriguez','Canelones 1354,


Montevideo, UY')

EMPVENTA:

INSERT INTO EMPVENTA VALUES(124637954681,'Arcadia','18 de Julio 1536',099666333)

14

Proyecto de Base de Datos 2016

PEDIDOS:
INSERT INTO PEDIDOS VALUES('0123456789','60,00','64892158')
INSERT INTO PEDIDOS VALUES('9876543210','100,00','64892158')

INSERT INTO PEDIDOS VALUES('2736491826','150,00','66669999')


INSERT INTO PEDIDOS VALUES('3794631852','300,00','66669999')
INSERT INTO PEDIDOS VALUES('9734932954','90,00','66669999')

INSERT INTO PEDIDOS VALUES('5665841559','35,00','25674165')

15

Proyecto de Base de Datos 2016

PRODUCTOS:
INSERT

INTO PRODUCTOS VALUES('B Adidas Fly','94326581')

INSERT

INTO PRODUCTOS VALUES('W Nike SB','27346199')

INSERT

INTO PRODUCTOS VALUES('B Nike SB','27346198')

INSERT

INTO PRODUCTOS VALUES('Pelota Nike Basket','27346117')

INSERT

INTO PRODUCTOS VALUES('Asics Clasics R','72861349')

INSERT

INTO PRODUCTOS VALUES('Pant Levis Blue','75346912')

INSERT

INTO PRODUCTOS VALUES('Camp Rusty Green','72836984')

INSERT

INTO PRODUCTOS VALUES('Red CK Short','22365897')

INSERT

INTO PRODUCTOS VALUES('Gloves Box Everlast','37649815')

INSERT

INTO PRODUCTOS VALUES('Caminadora','65148295')

16

Proyecto de Base de Datos 2016

DELIVERY:
INSERT

INTO DELIVERY VALUES('Martin','64892158',124637954681,'Garrix')


INSERT INTO DELIVERY VALUES('Nicky','25674165',124637954681,'Romero')
INSERT INTO DELIVERY VALUES('Oliver','66669999',124637954681,'Heldens')
SUMINISTRA:
INSERT
INSERT
INSERT
INSERT
INSERT
INSERT
INSERT
INSERT
INSERT
INSERT

17

INTO
INTO
INTO
INTO
INTO
INTO
INTO
INTO
INTO
INTO

SUMINISTRA
SUMINISTRA
SUMINISTRA
SUMINISTRA
SUMINISTRA
SUMINISTRA
SUMINISTRA
SUMINISTRA
SUMINISTRA
SUMINISTRA

VALUES('124637954681',
VALUES('124637954681',
VALUES('124637954681',
VALUES('124637954681',
VALUES('124637954681',
VALUES('124637954681',
VALUES('124637954681',
VALUES('124637954681',
VALUES('124637954681',
VALUES('124637954681',

'94326581',
'75346912',
'72861349',
'72836984',
'27346199',
'27346198',
'27346117',
'22365897',
'37649815',
'65148295',

'60.0')
'50.0')
'50.0')
'25.0')
'100.0')
'25,0')
'150.0')
'150.0')
'90,0')
'35.0')

Proyecto de Base de Datos 2016

REALIZA:
INSERT
INSERT
INSERT
INSERT
INSERT
INSERT

INTO
INTO
INTO
INTO
INTO
INTO

REALIZA
REALIZA
REALIZA
REALIZA
REALIZA
REALIZA

VALUES('0123456789',987654321,'Internet')
VALUES('2736491826',987741123,'Internet')
VALUES('3794631852',777999222,'Internet')
VALUES('9734932954',789963321,'Internet')
VALUES('5665841559',123456789,'Internet')
VALUES('9876543210',987654321,'Telefono')

RECIBE:
INSERT

INTO RECIBE VALUES('0123456789','64892158',123456789)


INSERT INTO RECIBE VALUES('9876543210','64892158',987654321)
INSERT

INTO RECIBE VALUES('2736491826','66669999',777999222)


INSERT INTO RECIBE VALUES('3794631852','66669999',789963321)
INSERT INTO RECIBE VALUES('9734932954','66669999',789963321)
INSERT

18

INTO RECIBE VALUES('5665841559','25674165',987741123

Proyecto de Base de Datos 2016

CONTIENE:
INSERT

INTO CONTIENE VALUES('0123456789','94326581',124637954681,1)

INSERT

INTO CONTIENE VALUES('9876543210','27346199',124637954681,2)

INSERT

INTO CONTIENE VALUES('9876543210','27346198',124637954681,2)

INSERT

INTO CONTIENE VALUES('2736491826','27346117',124637954681,3)

INSERT

INTO CONTIENE VALUES('2736491826','72861349',124637954681,3)

INSERT

INTO CONTIENE VALUES('2736491826','75346912',124637954681,3)

INSERT

INTO CONTIENE VALUES('3794631852','72836984',124637954681,2)

INSERT

INTO CONTIENE VALUES('3794631852','22365897',124637954681,2)

INSERT

INTO CONTIENE VALUES('9734932954','37649815',124637954681,1)

INSERT

INTO CONTIENE VALUES('5665841559','65148295',124637954681,1)

19

Proyecto de Base de Datos 2016

consultas
Algebra relacional y SQL

1) Producto con mayor precio en el pedido de Martin Telechea.


SELECT MAX(TOTALP)
FROM PEDIDOS P, RECIBE R, CLIENTE C
WHERE P.CodPedido=R.CodPedido AND R.CodCliente=C.CodCliente AND NomCliente='Martin' AND
ApeCliente='Telechea'

2) Nombre de el o los Delivery que enviaron paquetes a Natalia Rodriguez.


SELECT NomEmp
FROM Delivery D,Recibe R,Cliente C
Where C.CodCliente=R.CodCliente AND R.CodDeli=D.CodDeli AND NomCliente='Natalia' AND
ApeCliente='Rodriguez'

3) Se necesita saber el cdigo de cliente que compr el producto B Adidas Fly.


SELECT C.CodCliente
FROM CLIENTE C, REALIZA R, CONTIENE W, PRODUCTOS P
WHERE C.CodCliente=R.CodCliente AND R.CodPedido=W.CodPedido AND W.IdProd=P.IdProd AND
NomProd='B Adidas Fly'
Debido a irregularidades se debe saber el nombre y apellido de los clientes que compraron el
producto con la ID 94326581.

20

Proyecto de Base de Datos 2016

4) Debido a irregularidades se debe saber el nombre y apellido de los clientes que compraron
el producto con la ID 94326581.
SELECT NomCliente, ApeCliente
FROM CLIENTE C, REALIZA R, CONTIENE W, PRODUCTOS P
WHERE C.CodCliente=R.CodCliente AND R.CodPedido=W.CodPedido AND W.IdProd=P.IdProd
AND P.IdProd='94326581'

5) Nombre de el o los productos de la persona cuya cedula de identidad es 49675195 que


superen los $30 dlares.
SELECT NomProd
FROM CLIENTE C, REALIZA R, CONTIENE W, PRODUCTOS P, SUMINISTRA S
WHERE C.CodCliente=R.CodCliente AND R.CodPedido=W.CodPedido AND W.IdProd=P.IdProd
AND P.IdProd=S.IdProd AND NroDoc=49675195 AND Precio>'30,00'

6) Se desea saber el precio total que pag el cliente cuya direccin es Samuel Blixen 4440
SELECT TotalP
FROM PEDIDOS P, RECIBE R, CLIENTE C
WHERE P.CodPedido=R.CodPedido AND R.CodCliente=C.CodCliente AND DirCliente='Samuel
Blixen
21
4440,'
Proyecto de Base de Datos 2016

7) Forma de compra en la que fue comprado el producto con ID 37659815


SELECT Forma
FROM CLIENTE C, REALIZA R, CONTIENE W, PRODUCTOS P
WHERE C.CodCliente=R.CodCliente AND R.CodPedido=W.CodPedido AND W.IdProd=P.IdProd AND
P.IdProd='37649815'

8) Direccin de los clientes que adquirieron un producto con un precio menor a 30$ en la
empresa Arcadia
SELECT DirCliente
FROM CLIENTE C, RECIBE R, DELIVERY D, SUMINISTRA S, EMPVENTA E
WHERE C.CodCliente=R.CodCliente AND R.CodDeli=D.CodDeli AND D.Rut=E.Rut AND E.Rut=S.Rut
AND Precio<'30,00' AND NombEmp='Arcadia'

9) Se quiere saber el precio total y el codigo del pedido de los clientes que vivan en Pedro Berro
1225, Mo
SELECT TotalP, P.CodPedido
FROM CLIENTE C, REALIZA R, PEDIDOS P
WHERE C.CodCliente=R.CodCliente AND R.CodPedido=P.CodPedido AND DirCliente='Pedro Berro
1225, Mo'

22

Proyecto de Base de Datos 2016

10) Cantidad de clientes que compraron mas de un producto


SELECT P.CodPedido, COUNT(*)
FROM PEDIDOS P, CONTIENE C
WHERE C.CodPedido=P.CodPedido
GROUP BY Codpedido HAVING COUNT(*)>1

23

Proyecto de Base de Datos 2016

Você também pode gostar