Sunteți pe pagina 1din 9

Proyecto de base de datos

CASO DE UNA LIBRERIA

I. Generalidades del proyecto


1.1. Descripción general del negocio

Una librería pequeña con una base de datos que centraliza información para que sea más fácil y más eficaz
de manejar el inventario, las órdenes de pedido (facturas) y las ventas. La tienda maneja libros raros y
agotados y tiende a llevar sólo unos mil títulos en cualquier momento.

1.2. Descripción del proceso a modelar

Para cada libro, el gerente escribe el título, autor, editor, la fecha de la publicación, edición, costo, precio
minorista sugerido, y una valoración que indica el estado del libro. A cada libro se le asigna una de las
siguientes valoraciones: extraordinario, excelente, bueno, justo, pobre, o dañado. Se puede agregar una
descripción a cada valoración (sólo un par de frases), pero la descripción no debe ser obligatoria. La
información sobre cada libro debe incluir el título, autor, costo, precio minorista sugerido, el editor y
valoración. La fecha de la publicación, y edición no siempre están disponibles.

El gerente asigna un único ID a cada libro para que puedan diferenciarse títulos idénticos. Este ID debe ser
incluido con la información del libro. El ID de libro asignado por el gerente es un ID de ocho caracteres
compuestos de números y letras.

El gerente también mantiene información limitada sobre cada autor de los libros que han pasado por la
tienda. La tienda podría tener más de un libro por autor, y a veces un libro ha sido escrito por más de un
autor. El gerente mantiene información de aproximadamente 2500 autores. La información incluye el
nombre del autor, el apellido y año de nacimiento. La información debe incluir como mínimo el apellido del
autor. Descripción breve de cada autor, cuando la dispone, cuando un autor se agrega a la lista. La descripción
normalmente no excederá a una o dos frases.

La librería tiene empleados (incluidos el gerente y su asistente). La información del empleado debe incluir el
nombre, el apellido, dirección, el número de teléfono, fecha de nacimiento, fecha de ingreso, y cargo en la
tienda. Los cargos incluyen a Gerente, Asistente de Gerente, Empleado de Ventas Full Time Lleno, y Empleado
de Ventas Part Time. Agregar una descripción breve de los deberes del trabajo a cada cargo (por lo menos, a
algunos de los cargos).

Para cada cliente, la información incluye el nombre del cliente, apellido, número de teléfono, dirección de
correo de envío, libros que el cliente ha comprado, y fecha de la compra. El gerente tiene actualmente una
lista de aproximadamente 2000 clientes.

Se mantiene un registro de ventas de cada pedido con datos sobre la fecha del pedido y la fecha de cuando
se completó la venta. En algunos casos, como con los clientes sin pedido previo, estos dos eventos ocurren
concurrentemente. Cada orden debe incluir información sobre el libro vendido, el cliente que compró, la
cantidad de la venta, y la fecha de la orden. La orden también debe incluir la fecha en que el libro debe ser
entregado o retirado.
Cada orden incluye el método del pago y el estado de la orden. Los métodos del pago incluyen dinero en
efectivo, cheque, y tarjetas del crédito. Los estados de una orden pueden ser uno de los siguientes: (1) para
ser enviado, (2) a ser retirado por el cliente, (3) enviado, o (4) retirado. Una orden puede tener sólo un cliente,
vendedor, fecha de la orden, fecha de la entrega, método de pago, y estado de la orden; sin embargo, una
orden puede contener uno o más libros.

Las formas se usan para asegurarse que las órdenes se envían (si es aplicable) y para mantener un registro
de ventas. Los libros vendidos permanecieran en la lista de libros pero marcados para mostrar de algún modo
que el libro se ha vendido.

1.3. Reglas del negocio

RELACIONADOS A LOS LIBROS:

 Dado que estos libros son raros, cada título debe registrarse individualmente, aún si son el mismo
libro (título idéntico, autor, editor, fecha de la publicación, y edición).
 La tienda está abierta cinco a la semana por aproximadamente 10 horas por día. La tienda vende
aproximadamente 20 libros al día.
 Descripción de la valoración del libro, no obligatoria, de por lo menos dos frases
 Fecha publicación y edición no siempre disponibles
 Fecha publicación del libro debe ser mayor a 1600 y menor a 2099
 El ID debe ser de 4 caracteres alfanumérico
 En la información del autor, al menos el apellido es obligatorio
 Puede duplicarse información de título, autor, editor, fecha publicación y edición
 Se puede tener más de un libro por autor
 Un libro puede tener varios autores
 Descripción del autor de por lo menos dos frases
 Información del cliente obligatoria: apellido

POSICION DEL EMPLEADO:

 Dado que a algunos clientes no les gusta repartir información personal, sólo el apellido son
obligatorios.
 No todos los clientes que son incluidos en la lista han comprado libros, aunque la mayoría sí.
 Hay uno a dos vendedores que trabajan al mismo tiempo, y hay dos contadores de ventas donde las
personas retiran y pagan por los libros y donde se procesan las órdenes de los vendedores. Siempre
está en la tienda al menos uno de los dos gerentes.
 Para servir a los clientes eficazmente, cada empleado debe poder acceder a una fuente centralizada
de información sobre los autores, libros, clientes, y órdenes.

FORMA DE PAGO

 Los métodos del pago solo incluyen dinero en efectivo, cheque, y tarjetas del crédito.
ESTADO DE LA ORDEN

 Una orden se completa cuando el libro se ha pagado y es retirado de la tienda o enviado al cliente.
Un libro no puede sacarse de la tienda o puede enviarse a menos que se haya pagado.
 Una orden puede tener sólo un cliente, un vendedor, fecha de orden, fecha de entrega,
 método de pago y estado de la orden
 Una orden puede tener uno o más libros.

Modelo lógico de datos

Editorial -> Editorial_ID , Nombre


Editorial
EditorialID
Nombre
CODIGO

CREATE TABLE AUTORES (


Autor_ID char(8) NOT NULL PRIMARY KEY,
Nombre varchar(30) NOT NULL,
Apellido varchar(30) NOT NULL,
AñoNac DATE DEFAULT NULL CHECK (AñoNac>'1/1/1600' AND AñoNac<='SYSDATE'),
AñoMuerte varchar(4) DEFAULT NULL,
Descripcion varchar(20) DEFAULT NULL
);

CREATE TABLE CLIENTES(


Cliente_ID char(8) PRIMARY KEY NOT NULL CHECK (Cliente_ID>=00000001 AND
CLiente_ID<=99999999),
Nombre varchar(25) NULL,
Apellido varchar(25) NOT NULL,
Telefono char(9) NOT NULL,
Dir1 varchar(30) NULL,
Dir2 varchar(30) DEFAULT NULL,
Ciudad varchar(20) NOT NULL,
Estado varchar(20) NULL,
Pais varchar(20) NOT NULL,
CP varchar(4) NULL,
);

CREATE TABLE POSICIONES(


Posicion_ID varchar(4) PRIMARY KEY CHECK (Posicion_ID>0 AND Posicion_ID<=4),
Cargo varchar(20) NOT NULL CHECK (Cargo='Gerente' OR Cargo='Asistente de
Gerente' OR Cargo='Empleado de Ventas Full Time Lleno'
OR Cargo='Empleado de Ventas Part Time'),
Descripcion varchar(20) DEFAULT null
);

CREATE TABLE EMPLEADOS (


Empleado_ID char(8) PRIMARY KEY NOT NULL CHECK (Empleado_ID>=00000001 AND
Empleado_ID<=99999999),
Nombre varchar(25) NOT NULL,
Apellido varchar(25) NOT NULL,
Dir1 varchar(30) NOT NULL,
Dir2 varchar(30) NULL,
Ciudad varchar(20) NOT NULL,
Estado varchar(20) NOT NULL,
CP varchar(20) NULL,
Telefono char(9) NOT NULL CHECK (Telefono>0),
FechaIng DATE NOT NULL CHECK (FechaIng<= SYSDATETIME()),
Posicion_ID varchar(4) FOREIGN KEY REFERENCES POSICIONES(Posicion_ID) NOT NULL
);

CREATE TABLE ESTADOORDEN (


Estado_ID char(1) PRIMARY KEY NOT NULL CHECK(Estado_ID>=1 and Estado_ID<=4),
EstadoDescrip varchar(20) NOT NULL CHECK ((1='para ser enviado') OR (2='a ser
retirado por el cliente')OR
(3='enviado') OR 4=('retirado') )
);

CREATE TABLE FORMADEPAGO (


Pago_ID char(1) PRIMARY KEY NOT NULL CHECK(Pago_ID>0 AND Pago_ID<=3),
PagoDescrip varchar(20) NOT NULL CHECK ((1='efectivo') OR (2='credito') OR
(3='Cheque'))
);

Select * FROM FORMADEPAGO;

CREATE TABLE EDITORIAL (


Editorial_ID varchar(10) PRIMARY KEY NOT NULL,
Nombre_Editorial varchar(20) NOT NULL
);

CREATE TABLE LIBROSESTADO (


Condicion_ID char(1) PRIMARY KEY NOT NULL CHECK (Condicion_ID>0 and
Condicion_Id<=6),
NombreCondic varchar(20) NOT NULL CHECK (NombreCondic='extraordinario' OR
NombreCondic='excelente' OR NombreCondic= 'bueno'
OR NombreCondic='justo' OR NombreCondic='pobre' OR NombreCondic='dañado'),
Descripcion varchar(30) DEFAULT NULL
);

CREATE TABLE LIBROS (


Libro_ID char(8) NOT NULL PRIMARY KEY ,
Titulo varchar(25) NOT NULL,
Editorial_ID varchar(10) NOT NULL FOREIGN KEY REFERENCES
EDITORIAL(Editorial_ID),
FechaED DATE NOT NULL CHECK (FechaED<=SYSDATETIME()),
Costo money NOT NULL CHECK (Costo>0 and Costo<1000),
Condicion_ID char(1) NOT NULL FOREIGN KEY REFERENCES LIBROSESTADO(Condicion_ID)
CHECK (Condicion_ID>0 and Condicion_ID<=4),
vendido varchar(2) NOT NULL CHECK (vendido='SI' OR vendido='NO') DEFAULT
('NO')
);

CREATE TABLE LIBROSAUTORES (


Libro_ID CHAR(8) NOT NULL FOREIGN KEY REFERENCES LIBROS(LIBRO_ID),
Autor_ID char(8) NOT NULL FOREIGN KEY REFERENCES AUTORES(Autor_ID),
);

CREATE TABLE ORDENES (


Orden_ID varchar(4) PRIMARY KEY,
Cliente_ID char(8) NOT NULL FOREIGN KEY REFERENCES CLIENTES(Cliente_ID),
Empleado_ID char(8) NOT NULL FOREIGN KEY REFERENCES EMPLEADOS(Empleado_ID),
Monto money NOT NULL CHECK (Monto>0),
FechaOrden DATE NOT NULL CHECK (FechaOrden>= SYSDATETIME()),
FechaEnvio DATE NOT NULL CHECK (FechaEnvio>=SYSDATETIME()),
Pago_ID char(1) NOT NULL FOREIGN KEY REFERENCES FORMADEPAGO(Pago_ID) CHECK
(Pago_ID>=1 and Pago_Id<=3),
Estado_ID char(1) FOREIGN KEY REFERENCES ESTADOORDEN(Estado_ID) CHECK
(Estado_ID>=1 AND ESTADO_ID<=6)
);

CREATE TABLE LIBROSORDENES (


Orden_ID varchar(4) NOT NULL FOREIGN KEY REFERENCES ORDENES(Orden_ID),
Libro_ID char(8) NOT NULL FOREIGN KEY REFERENCES LIBROS(Libro_ID)
);

--------------------------------------------------------------------
INSERT INTO AUTORES(Autor_ID, Nombre,Apellido,AñoNac,AñoMuerte,Descripcion)
VALUES('AUT12345','RENZO','FLORES','3/5/1970','NULL','NULL');
INSERT INTO AUTORES(Autor_ID, Nombre,Apellido,AñoNac,AñoMuerte,Descripcion)
VALUES('AUT12346','BILL','SALAZAR','3/7/1997','NULL','NULL');

INSERT INTO AUTORES(Autor_ID, Nombre,Apellido,AñoNac,AñoMuerte,Descripcion)


VALUES('AUT12347','JULIO','PEREZ','14/9/1998','22/11/1998','NULL');

INSERT INTO
LIBROS(Libro_ID,Titulo,Editorial_ID,FechaED,Costo,Condicion_ID,vendido)
VALUES('1234LIBR','HARRY POTER','SAL1','1998',45,'4','SI');

INSERT INTO
LIBROS(Libro_ID,Titulo,Editorial_ID,FechaED,Costo,Condicion_ID,vendido)
VALUES('1235LIBR','SISTEMAS OPERATIVOS','CER1','2008',75,'3','SI');

INSERT INTO
LIBROS(Libro_ID,Titulo,Editorial_ID,FechaED,Costo,Condicion_ID,vendido)
VALUES('1236LIBR','HISTORIA DE OCCIDENTE','ERS2','2001',35,'2','NO');

INSERT INTO LIBROSESTADO(Condicion_ID,NombreCondic,Descripcion)


VALUES('1','EXTRAORDINARIO','NULL');

INSERT INTO LIBROSESTADO(Condicion_ID,NombreCondic,Descripcion)


VALUES('2','EXCELENTE','RECOMENDADO');

INSERT INTO LIBROSESTADO(Condicion_ID,NombreCondic,Descripcion)


VALUES('3','BUENO','NULL');

INSERT INTO LIBROSESTADO(Condicion_ID,NombreCondic,Descripcion)


VALUES('4','JUSTO','NULL');

INSERT INTO LIBROSESTADO(Condicion_ID,NombreCondic,Descripcion)


VALUES('5','POBRE','NULL');

INSERT INTO LIBROSESTADO(Condicion_ID,NombreCondic,Descripcion)


VALUES('6','DANADO','DE FABRICA');

INSERT INTO LIBROSAUTORES(LIBRO_ID,AUTOR_ID)


VALUES('1234LIBR','AUT12346');

INSERT INTO LIBROSAUTORES(LIBRO_ID,AUTOR_ID)


VALUES('1235LIBR','AUT12345');

INSERT INTO LIBROSAUTORES(LIBRO_ID,AUTOR_ID)


VALUES('1236LIBR','AUT12347');

INSERT INTO EDITORIAL(Editorial_ID, Nombre_Editorial)


VALUES('SAL1', 'SALAMANDRA');
INSERT INTO EDITORIAL(Editorial_ID, Nombre_Editorial)
VALUES ('CER1' , 'GG&G');
INSERT INTO EDITORIAL(Editorial_ID, Nombre_Editorial)
VALUES ('ERS2' ,'MCGOY');

INSERT INTO
ORDENES(Orden_ID,Cliente_ID,Empleado_ID,Monto,FechaOrden,FechaEnvio,Pago_ID,Esta
do_ID)
VALUES('1234','9876','abc1',75,’ 07/11/2016’,’ 08/11/2016’,'pag1','3');

INSERT INTO
ORDENES(Orden_ID,Cliente_ID,Empleado_ID,Monto,FechaOrden,FechaEnvio,Pago_ID,Esta
do_ID)
VALUES('1235','9875','bcd1',45,’ 06/11/2016’,NULL,'pag2','2');
INSERT INTO
ORDENES(Orden_ID,Cliente_ID,Empleado_ID,Monto,FechaOrden,FechaEnvio,Pago_ID,Esta
do_ID)
VALUES('1236','98754','abc1',35,’ 07/11/2016’,’ 07/11/2016’,'pag3','1');

INSERT INTO
LIBROORDENES(ORDEN_ID, LIBRO_ID)
VALUES(‘1234’,’1234LIBR’);

INSERT INTO
LIBROORDENES(ORDEN_ID, LIBRO_ID)
VALUES(‘1235’,’1235LIBR’);

INSERT INTO
LIBROORDENES(ORDEN_ID, LIBRO_ID)
VALUES(‘1236’,’1236LIBR’);

INSERT INTO
ESTADOORDEN(ESTADO_ID, ESTADODESCRIP)
VALUES (‘1’,’PARA SER ENVIADO’);

INSERT INTO
ESTADOORDEN(ESTADO_ID, ESTADODESCRIP)
VALUES (‘2’,’A SER RETIRADO POR EL CLIENTE’);

INSERT INTO
ESTADOORDEN(ESTADO_ID, ESTADODESCRIP)
VALUES (‘3’,’ENVIADO’);

INSERT INTO
ESTADOORDEN(ESTADO_ID, ESTADODESCRIP)
VALUES (‘4’,’RETIRADO’);

INSERT INTO
FORMADEPAGO(PAGO_ID, PAGODESCRIP)
VALUES (‘1’,’EFECTIVO’);

INSERT INTO
FORMADEPAGO(PAGO_ID, PAGODESCRIP)
VALUES (‘2’,’CREDITO’);

INSERT INTO
FORMADEPAGO(PAGO_ID, PAGODESCRIP)
VALUES (‘3’,’CHEQUE’);

INSERT INTO CLIENTES (Cliente_ID, Nombre, Apellido, Telefono, Dir1, Dir2,


Ciudad, Estado, Pais, CP)

INSERT INTO POSICIONES(POSICION_ID, CARGO,DESCRIPCION)


VALUES (‘GER1’, ‘GERENTE’, ‘PRINCIPAL’);
INSERT INTO POSICIONES(POSICION_ID, CARGO,DESCRIPCION)
VALUES (‘EMP1’, ‘EMPLEADO DE VENTAS’, ‘CREAR,RASTREAR’);
INSERT INTO POSICIONES(POSICION_ID, CARGO,DESCRIPCION)
VALUES (‘AS1’, ‘ASISTENTE DE GERENTE’, ‘MODIFICA INFORMACION’);
INSERT INTO POSICIONES(POSICION_ID, CARGO,DESCRIPCION)
VALUES (‘CDE1’, ‘EMPLEADO PART TIME’, ‘CREAR,RASTREAR’);

INSERT INTO EMPLEADOS(EMPLEADOS_ID, NOMBRE, APELLIDO, DIR1, DIR2, CIUDAD,


ESTADO,CP, TELEFONO,FECHAING , POSICION_ID)
VALUES (‘abc1’, ‘WALTER’ , ‘LETURIA’, ‘LOS ALAMOS’, NULL, ‘TRUJILLO’,
‘TRUJILLO’,’5778’, ‘876231432’, ‘5/08/2012’, ‘GER1’);

INSERT INTO EMPLEADOS(EMPLEADOS_ID, NOMBRE, APELLIDO, DIR1, DIR2, CIUDAD,


ESTADO,CP, TELEFONO,FECHAING , POSICION_ID)
VALUES (‘bcd1’, ‘FERNANDO’, ‘CALMET’, ‘AV ESPANA’, NULL, ‘TRUJILLO’ ,
‘TRUJILLO’, NULL, ‘987456654’, ‘11/10/2016’, ‘EMP1’);

INSERT INTO EMPLEADOS(EMPLEADOS_ID, NOMBRE, APELLIDO, DIR1, DIR2, CIUDAD,


ESTADO,CP, TELEFONO,FECHAING , POSICION_ID)
VALUES (‘cde1’, ‘PAULO’, ‘TIRADO’, ‘LOS PINOS’ , ‘SANTA MONICA’,
‘TRUJILLO’,’TRUJILLO’ , NULL,’911221321’,’16/09/2016’,’ASI1’);

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