Beruflich Dokumente
Kultur Dokumente
Lic. Informtica
Proyecto Final
Pgina 1
CUCEI
Lic. Informtica
INDICE
Objetivo ....................................................................................................................................................... 3
Giro del Sistema ........................................................................................................................................ 4
Bases de Datos Avanzadas Actividades de EER ............................................................................ 5
DER de la Base de Datos. ...................................................................................................................... 5
Disear el Diagrama EER de la Base de Datos ................................................................................... 7
Modelo Relacional de la Base de Datos............................................................................................... 8
Disear el Diagrama de Clases de UML de la Base de Datos a partir del EER. .............................. 9
Bases de Datos Avanzadas Actividades de BDOO ...................................................................... 10
Objeto Complejo Estructurado (GRAFO) de la Base de Datos ........................................................ 10
Especificar los tipos de objetos mediante Constructores de Tipo (del grafo anterior). ................... 11
Definir los tipos de objetos y sus operaciones del esquema de su BD mediante un Lenguaje de
Definicion de Datos (ODL). ................................................................................................................... 12
Representar el esquema de su BD en Notacin grafica de ODL. .................................................... 14
Bases de Datos Avanzadas Actividades de BD Deductivas ....................................................... 15
Hacer una representacin de su modelo de DER en Notacin Prolog usando: hechos, reglas y
consultas ................................................................................................................................................. 15
Disear una interpretacin de hechos y reglas en CORAL. .............................................................. 19
Bases de Datos Avanzadas Actividades Distribuidas ................................................................. 20
Desarrollar 4 fragmentaciones en ALGEBRA RELACIONAL: una FH Derivada, una FH, una FV y
una F Mixta de la Base de Datos ......................................................................................................... 20
Desarrollar 4 fragmentaciones en SQL: dos FH, una FV y una F Mixta de la BD de su proyecto.21
Desarrollar 3 consultas de la BD de su proyecto, en dos de ellas utilizando 3 estrategias (UNION)
y la otra utilizando la fragmentacin vertical para optimizarla (SEMIREUNION). ........................... 24
Proyecto Ferretera .............................................................................................................................. 25
CODIGO FUENTE ................................................................................................................................. 35
Conclusin ................................................................................................................................................ 39
Pgina 2
CUCEI
Lic. Informtica
Objetivo
Como objetivo general nos hemos trazado el poder contribuir a que el sistema
desarrollado en este trabajo pueda facilitar el desempeo de los trabajadores as
como hacer ms eficiente el trabajo realizado por los mismos.
Poder llevar el control de los datos de personal que labora aqu.
Lograr que aqu donde diariamente se reciban artculos y se lleva el control de los
precios.
As como de transaccin de diversos mbitos controlar de una manera sencilla
usando la base de datos que se le est proporcionando para evitar confusiones en
las diferentes actividades de esta empresa.
Indagando a profundidad en las necesidades para la elaboracin del sistema nos
hemos encontrado con la oportunidad de especificar un poco ms los objetivos
hacer un eficaz facilitara el entendimiento, funcionamiento y justificacin del mismo.
Pgina 3
CUCEI
Lic. Informtica
Pgina 4
CUCEI
Lic. Informtica
Pgina 5
CUCEI
Lic. Informtica
Pgina 6
CUCEI
Lic. Informtica
Pgina 7
CUCEI
Lic. Informtica
Pgina 8
CUCEI
Lic. Informtica
Pgina 9
CUCEI
Lic. Informtica
Pgina 10
CUCEI
Lic. Informtica
PERSONA
O0= (i0, tupla, <ID: i1, Tel: i2, Nombre: i3, Direccin: i7>)
ID
O1= (i1, atom, 01)
TEL
O2= (i2, atom, 3348367191)
NOMBRE
O3= (i3, tupla, <NombreP: i4, ApellidoPP: i5, ApellidoPM: i6>)
NOMBRES
O4= (i4, atom, Juan Pablo)
APELLIDOP
O5= (i5, atom, Prez)
APELLIDOM O6= (i6, atom, Mendoza)
DIRECCION
O7= (i7, tupla, <Calle: i8, Num: i9, Colonia: i10>)
CALLE
O8= (i8, atom, Paradise)
NUM
O9= (i9, atom, 2477)
COLONIA
O10= (i10, atom, Paraiso)
EMPLEADO
O11= (i11, tupla, <Persona: i0, Salario: i12, NSS: i13, CCompra: i28>)
SALARIO
O12= (i12, atom, 154.2)
NSS
O13= (i13, atom, JEjejd232)
CLIENTE
O14= (i14, tupla, < Persona: i0, RFC: i15, CVenta: i27>)
RFC
O15= (i15, atom, JEJDJS123JD)
PROVEEDOR O16= (i16, tupla, <Persona: i0, RFC: i15, CCompra: i22, CProducto: i29>)
SUCURSAL
O17= (i17, tupla, <ID: i1, Tel: i2, Direccin: i7, CEmpleado: i26>)
PRODUCTO O18= (i18, tupla, <ID: i1, Existencia: i19, Marca: i20, Precio: i21, CVenta: i25>)
EXISTENCIA O19= (i19, atom, 98)
MARCA
O20= (i20, atom, Patito)
PRERCIO
O21= (i21, atom, 25.6)
COMPRA
O22= (i22, tupla, <ID: i1, Fecha: i23, Total: i24, CProducto: i29,
CProveedor: i16:>)
FECHA
O23= (i23, atom, 26/08/1991)
TOTAL
O24= (i24, atom, 35.4)
VENTA
O25= (i25, tupla, <ID: i1, Fecha: i23, Total: i24, CProducto: i29, CCliente: i30,
CEmpleado: i26>)
CEMPLEADO O26 = (i26, set, {Empleado1: i11, Empleado2:i11,, EmpleadoN: i11})
CVENTA
O27= (i27, set, {Venta1: i25, Venta2: i25,, VentaN: i25})
CCOMPRA
O28= (i28, set, {Compra1: i22, Compra2: i22,, CompraN: i22})
CPRODUCTO O29= (i29, set, {Producto1: i18, Producto2: i18,, ProductoN: i18})
CCLIENTE
O30 = (i30, set, {Persona1: i0, RFC: i15, CVenta1: i27})
Pgina 11
CUCEI
Lic. Informtica
nombre: string,
Apaterno: string,
Amaterno:string),
Direccion:tuple( calle:string,
Num:string,
Colonia:string),
Telefono: string)
End
Class EMPLEADO inherit PERSONA
Type tuple( salario: decimal,
Nss: string)
End
Class CLIENTE inherit PERSONA
Type tuple( RFC: string)
End
Class PROVEEDOR inherit PERSONA
Type tuple( RFC: string,
Cproductos: set(PRODUCTO)
End
Class SUCURSAL
Type tuple( ID: integer,
Direccion:tuple( calle:string,
Num:string,
Colonia:string),
Telefono: string)
Method
AgregaEmpleado: EMPLEADO
End
Pgina 12
CUCEI
Lic. Informtica
Class PRODUCTO
Type Tuple( ID: integer,
Marca: string,
Precio: decimal,
Existencias: integer)
Method
nuevoProducto: PRODUCTO
End
Class COMPRA
Type tuple( ID: string,
Fecha:date,
Total: decimal,
Cproducto: set( PRODUCTO) )
Method
nuevaCompra:COMPRA,
calculaSubtotal: decimal,
calculaIVA: decimal,
end
Class VENTA
Type tuple( ID: string,
Fecha:date,
Total: decimal,
Cproducto: set( PRODUCTO) )
Method
nuevaVenta: VENTA,
calculaSubtotal: decimal,
calculaIVA: decimal,
end
Pgina 13
CUCEI
Lic. Informtica
Pgina 14
CUCEI
Lic. Informtica
Pgina 15
CUCEI
Lic. Informtica
Reglas:
Empleados_en_sucursal(X, Y):- empleado(X), sucursal(X, Y).
Producto_de_proveedor(X,Y):-producto(X), proveedor(Y), productoprov(X,Y).
Precios_altos(Y):- precio(X,Y), Y>20
Personas_de_GDL(X):- (empleado(X); cliente(X); proveedor(X)), Y=Guadalajara,
direccin(X,Y).
Superior(X, Y):- Supervisar (X, Y).
Superior(X, Y):- Supervisar (X, Z), Superior(Z, Y).
Gerente(X):- empleado(X), NOT(Supervisar(Y,X)).
Consultas:
Empleados_en_sucursal(X,1).
X=fernanda
X=melissa
X=armando
Producto_de_proveedor(ferromex,X).
X=martillo
X=serrucho
X=desarmador
X=aurora
Precios_altos(martillo,Y).
False
Personas_de_GDL(X).
X=ferromex X=mexifer X=camilo X=fernanda X=ming
X=aurora
Superior(ming, Y).
Y=uriel
Y=luis
Gerente(X).
X=fernanda
X=ming
X=eduardo
Empleados_en_sucursal(melissa,1).
true
Empleados_en_sucursal(rubi,1).
false
Personas_de_GDL(luis).
False
Pgina 16
CUCEI
Lic. Informtica
Prolog:
Pgina 17
CUCEI
Lic. Informtica
Pgina 18
CUCEI
Lic. Informtica
Pgina 19
CUCEI
Lic. Informtica
Fragmentacin Horizontal
no _sucursal=1, (EMPLEADO)
marca=HUNTER, (PRODUCTO)
direccion=GUADALAJARA, (SUCURSAL)
direccion= GUADALAJARA, (CLIENTE)
direccion= GUADALAJARA, (EMPLEADO)
direccion=GUADALAJARA, (PROVEEDOR)
Fragmentacin Vertical
Fragmentacin Mixta
Pgina 20
CUCEI
Lic. Informtica
Fragmentacin Horizontal
Pgina 21
CUCEI
Lic. Informtica
Fragmentacin Vertical
Pgina 22
CUCEI
Lic. Informtica
Fragmentacin Mixta
Pgina 23
CUCEI
Lic. Informtica
UNION
SEMIREUNION
Pgina 24
CUCEI
Lic. Informtica
Proyecto Ferretera
A continuacin se muestran algunas capturas del programa:
Pgina 25
CUCEI
Lic. Informtica
En caso de que exista algn error como querer agregar un gerente en una
sucursal que ya cuenta con uno nos marcara que no se puede realizar la
operacin
Pgina 26
CUCEI
Lic. Informtica
Pgina 27
CUCEI
Lic. Informtica
Pgina 28
CUCEI
Lic. Informtica
Pgina 29
CUCEI
Lic. Informtica
Pgina 30
CUCEI
Lic. Informtica
Para una nueva venta se ingresa el nombre o id del cliente que solicita la
venta, as como el id del empleado que la realiza.
Pgina 31
CUCEI
Lic. Informtica
Pgina 32
CUCEI
Lic. Informtica
Pgina 33
CUCEI
Lic. Informtica
Pgina 34
CUCEI
Lic. Informtica
CODIGO FUENTE
SET statement_timeout = 0;
SET lock_timeout = 0;
SET client_encoding = 'WIN1252';
SET standard_conforming_strings = on;
SET check_function_bodies = false;
SET client_min_messages = warning;
--- Name: plpgsql; Type: EXTENSION; Schema: -; Owner:
-CREATE EXTENSION IF NOT EXISTS plpgsql WITH SCHEMA pg_catalog;
--- Name: EXTENSION plpgsql; Type: COMMENT; Schema: -; Owner:
-COMMENT ON EXTENSION plpgsql IS 'PL/pgSQL procedural language';
SET search_path = public, pg_catalog;
SET default_tablespace = '';
SET default_with_oids = false;
--- Name: cliente; Type: TABLE; Schema: public; Owner: Melissa; Tablespace:
-CREATE TABLE cliente (
id_cliente integer NOT NULL,
nombre character varying(60) NOT NULL,
direccion character varying(80) NOT NULL,
telefono character varying(15) NOT NULL,
rfc character varying(13)
);
ALTER TABLE public.cliente OWNER TO "Melissa";
--- Name: compra; Type: TABLE; Schema: public; Owner: Melissa; Tablespace:
-CREATE TABLE compra (
id_compra integer NOT NULL,
id_empleado integer NOT NULL,
id_proveedor integer NOT NULL,
fecha_pedido date,
subtotal numeric,
iva numeric,
total numeric
);
ALTER TABLE public.compra OWNER TO "Melissa";
--- Name: detallecompra; Type: TABLE; Schema: public; Owner: Melissa; Tablespace:
-CREATE TABLE detallecompra (
id_compra integer NOT NULL,
Pgina 35
CUCEI
Lic. Informtica
id_producto integer NOT NULL,
cantidad integer NOT NULL,
precio numeric,
importe numeric
);
ALTER TABLE public.detallecompra OWNER TO "Melissa";
--- Name: detalleventa; Type: TABLE; Schema: public; Owner: Melissa; Tablespace:
-CREATE TABLE detalleventa (
id_venta integer NOT NULL,
id_producto integer NOT NULL,
cantidad integer NOT NULL,
precio numeric,
importe numeric
);
ALTER TABLE public.detalleventa OWNER TO "Melissa";
--- Name: empleado; Type: TABLE; Schema: public; Owner: Melissa; Tablespace:
-CREATE TABLE empleado (
id_empleado integer NOT NULL,
nombre character varying(60) NOT NULL,
direccion character varying(80) NOT NULL,
telefono character varying(15),
nss character(11),
no_sucursal integer NOT NULL,
cargo character varying(15),
salario numeric NOT NULL,
fecha_inicio date,
status character varying(15),
foto character varying(150),
CONSTRAINT empleado_cargo_check CHECK ((((cargo)::text = 'Empleado'::text) OR ((cargo)::text
= 'Gerente'::text)))
);
ALTER TABLE public.empleado OWNER TO "Melissa";
--- Name: producto; Type: TABLE; Schema: public; Owner: Melissa; Tablespace:
-CREATE TABLE producto (
id_producto integer NOT NULL,
nombre_p character varying(60) NOT NULL,
precio numeric NOT NULL,
existencias integer,
marca character varying(50),
status character varying(15),
foto character varying(150)
);
Pgina 36
CUCEI
Lic. Informtica
ALTER TABLE public.producto OWNER TO "Melissa";
--- Name: proveedor; Type: TABLE; Schema: public; Owner: Melissa; Tablespace:
-CREATE TABLE proveedor (
id_proveedor integer NOT NULL,
nombre character varying(60) NOT NULL,
direccion character varying(80) NOT NULL,
telefono character varying(15),
rfc character varying(13) NOT NULL,
mail character varying(30),
detalles character varying(50),
status character varying(15)
);
ALTER TABLE public.proveedor OWNER TO "Melissa";
--- Name: proveedorproducto; Type: TABLE; Schema: public; Owner: Melissa; Tablespace:
-CREATE TABLE proveedorproducto (
id_proveedor integer,
id_producto integer,
preciocompra numeric
);
ALTER TABLE public.proveedorproducto OWNER TO "Melissa";
--- Name: sucursal; Type: TABLE; Schema: public; Owner: Melissa; Tablespace:
-CREATE TABLE sucursal (
no_sucursal integer NOT NULL,
direccion character varying(50) NOT NULL,
telefono character varying(15),
empleados integer,
no_gerente integer NOT NULL,
CONSTRAINT sucursal_empleados_check CHECK ((empleados <= 8))
);
ALTER TABLE public.sucursal OWNER TO "Melissa";
--- Name: vempleadosensucursal; Type: TABLE; Schema: public; Owner: Melissa; Tablespace:
-CREATE TABLE vempleadosensucursal (
idsucursal integer,
idempleado integer,
nombre character varying(60),
salario numeric
);
ALTER TABLE public.vempleadosensucursal OWNER TO "Melissa";
Pgina 37
CUCEI
Lic. Informtica
--- Name: venta; Type: TABLE; Schema: public; Owner: Melissa; Tablespace:
-CREATE TABLE venta (
id_venta integer NOT NULL,
id_cliente integer NOT NULL,
id_empleado integer NOT NULL,
fecha date,
subtotal numeric,
iva numeric,
total numeric
);
ALTER TABLE public.venta OWNER TO "Melissa";
--- Name: vganancias; Type: VIEW; Schema: public; Owner: Melissa
-CREATE VIEW vganancias AS
SELECT s.no_sucursal AS idsucursal,
sum(c.total) AS totaldecompras,
sum(v.total) AS totaldeventas,
(sum(v.total) - sum(c.total)) AS ganacias
FROM (((sucursal s
JOIN empleado e ON ((s.no_sucursal = e.no_sucursal)))
JOIN compra c ON ((e.id_empleado = c.id_empleado)))
JOIN venta v ON ((e.id_empleado = v.id_empleado)))
GROUP BY s.no_sucursal;
ALTER TABLE public.vganancias OWNER TO "Melissa";
--- Name: vgerentes; Type: VIEW; Schema: public; Owner: Melissa
-CREATE VIEW vgerentes AS
SELECT s.no_sucursal AS idsucursal,
e.id_empleado AS idempleado,
e.nombre,
e.salario
FROM (empleado e
JOIN sucursal s ON ((e.no_sucursal = s.no_sucursal)))
WHERE ((e.cargo)::text = 'Gerente'::text);
ALTER TABLE public.vgerentes OWNER TO "Melissa";
--- Data for Name: cliente; Type: TABLE DATA; Schema: public; Owner: Melissa
--
Pgina 38
CUCEI
Lic. Informtica
Conclusin
Como conclusin hemos obtenido como equipo que el estudio de la
factibilidad ha sido muy provechoso para nosotros, ya que esta nos ayud a
conocer si la empresa dispone de los recursos tanto humanos, tcnicos,
econmicos y legales, para la implementacin de un nuevo sistema, que
nos permita llevar a cabo los objetivos y metas propuestas.
As como al realizar este trabajo nos hemos percatado del gran peso que
son las necesidades de parte del usuario final y la aceptacin que este le
proporcione al sistema es lo que en verdad lo convierte en un sistema
eficiente.
La informacin reunida en este documento constata como es que sirve la
base para estrategias de diseos de lo que fue mejora del sistema
rudimentario actual que tenan he implementar a la empresa una
organizacin funcional por parte de nuestro sistema.
Pgina 39