Diseño de Una Base de Datos

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 7

Artículos y encargos Una base de datos para una pequeña empresa debe contener información

acerca de clientes, artículos y pedidos. Hasta el momento se registran los siguientes datos en
documentos varios:

• Para cada cliente: Número de cliente (único), Direcciones de envío (varias por cliente), Saldo,
Límite de crédito (depende del cliente, pero en ningún caso debe superar los 3.000.000 pts),
Descuento.

• Para cada artículo: Número de artículo (único), Fábricas que lo distribuyen, Existencias de ese
artículo en cada fábrica, Descripción del artículo.

• Para cada pedido: Cada pedido tiene una cabecera y el cuerpo del pedido. La cabecera está
formada por el número de cliente, dirección de envío y fecha del pedido. El cuerpo del pedido son
varias líneas, en cada línea se especifican el número del artículo pedido y la cantidad. Además, se
ha determinado que se debe almacenar la información de las fábricas. Sin embargo, dado el uso
de distribuidores, se usará: Número de la fábrica (único) y Teléfono de contacto. Y se desean ver
cuántos artículos (en total) provee la fábrica. También, por información estratégica, se podría
incluir información de fábricas alternativas respecto de las que ya fabrican artículos para esta
empresa. Nota: Una dirección se entenderá como Nº, Calle, Comuna y Ciudad. Una fecha incluye
hora.
Ciudad

Pk

id nombre

Comuna

pk fk/pk

id Id_ciudad nombre

DireccionEnvio

Pk fk fk

nro calle Id_comuna Id_ciudad Nro_cliente


Cliente

pk

Nro_cliente descuento Limite_credito saldo

Pedido

Pk fk

Nro fecha Nro_direccion

Articulo

Pk

nro nombre descripcion

Fabrica

pk

nro nombre telefono

ArticuloFabrica

Fk/pk fk/pk

Nro_articulo Nro_fabrica existencia


Pedido

Pk fk

Nro_pedido fecha Nro_direccion

ArticuloFabricaPedido

Fk/pk fk/pk fk/pk

Nro_pedido Nro_articulo Nro_fabrica cantidad

create database ejemplo_examen;


use ejemplo_examen;

create table cliente(


nro_cliente int not null primary key,
descuento float not null,
limite_credito float not null,
saldo float not null
);

create table ciudad(


id int not null primary key,
nombre varchar(60) not null
);

create table fabrica(


nro int not null primary key,
nombre varchar(60) not null,
telefono int not null
);

create table articulo(


nro int not null primary key,
nombre varchar(60) not null,
descripcion varchar(120) not null,
);

create table articulo_fabrica(


nro_articulo int not null,
nro_fabrica int not null,
existencia int not null,
primary key(nro_articulo,nro_fabrica),
foreign key (nro_articulo) references articulo(nro) on delete cascade on
update cascade,
foreign key (nro_fabrica) references fabrica(nro) on delete cascade on update
cascade
);
create table comuna(
id int not null,
id_ciudad int not null,
nombre varchar(60) not null,
primary key(id,id_ciudad),
foreign key (id_ciudad) references ciudad(id) on delete cascade on update
cascade
);

create table direccion_envio(


nro int not null primary key,
calle varchar(60) not null,
id_comuna int not null,
id_ciudad int not null,
nro_cliente int not null,
foreign key (id_comuna,id_ciudad) references comuna(id,id_ciudad) on delete
cascade on update cascade,
foreign key (nro_cliente) references cliente(nro_cliente) on delete cascade
on update cascade
);

create table pedido(


nro int not null primary key,
nro_direccion int not null,
fecha date not null,
foreign key (nro_direccion) references direccion_envio(nro) on delete cascade
on update cascade
);

create table articulo_fabrica_pedido(


nro_articulo int not null,
nro_fabrica int not null,
nro_pedido int not null,
cantidad int not null,
primary key(nro_articulo,nro_fabrica,nro_pedido),
foreign key (nro_articulo,nro_fabrica) references
articulo_fabrica(nro_articulo,nro_fabrica) on delete cascade on update cascade,
foreign key (nro_pedido) references pedido(nro) on delete cascade on update
cascade,
);

insert into articulo values (1,'Taza','Una taza'),(2,'Cargador','Cargador de 5A'),


(3,'Raqueta electrica','Raqueta mata mozquitos')

insert into fabrica values (1,'Toyota',7592392),(2,'Samsung',26313987)

insert into articulo_fabrica values (1,2,100),(1,1,50),(2,2,230),(3,1,45)

select * from articulo_fabrica

--mostrar los nombres de todos los articulos


select nombre
from articulo

--mostrar los nombres de las fabricas


select nombre
from fabrica

--mostrar los nombres y las cantidades en cada fabrica de los articulos ademas del
nombre de cada fabrica
select articulo.nombre,existencia,fabrica.nombre
from articulo,articulo_fabrica,fabrica
where articulo.nro=articulo_fabrica.nro_articulo and
articulo_fabrica.nro_fabrica=fabrica.nro

--mostrar los articulos de manera ordenada por nombre


select * from articulo order by articulo.nombre desc

--mostrar la cantidad de articulos


select count(*) from articulo

--mostrar todas las existencias de "Taza"


select sum(existencia)
from articulo_fabrica
where nro_articulo=(select nro
from articulo
where nombre='Taza')

--mostrar todas las existencias de "Taza" ademas mostrar el nombre del articulo
select sum(existencia),nombre
from articulo_fabrica,articulo
where articulo_fabrica.nro_articulo=articulo.nro
and articulo.nombre='Taza'
group by nombre

insert into ciudad values (1,'Santa Cruz'),(2,'La Paz'),(3,'Cochabamba');

insert into comuna values(1,1,'Andrez Ibañez'),(1,2,'Cotoca'),


(2,1,'Quillacollo'),(2,2,'Llanura'),
(3,1,'Cochabamba'),(3,2,'Serranias')

insert into cliente values (1,0,500,2000),(2,0,600,1800)

insert into direccion_envio values (1,'La paz',1,1,1),(2,'Plan 3000',1,1,1),


(3,'Las Vegas',2,2,2)

insert into pedido values (1,1,'2020-11-02'),(2,2,'2020-05-15'),(3,1,'2020-02-24')

alter table pedido add total int


select * from articulo_fabrica_pedido
select * from pedido
delete from pedido where nro=3
update pedido set total=78 where pedido.nro=1

update articulo_fabrica set precio=7 where nro_articulo=3 and nro_fabrica=1


alter table articulo_fabrica add precio float

insert into articulo_fabrica_pedido values (1,2,1,4),(1,1,1,3)


insert into articulo_fabrica_pedido values (1,2,2,4),(1,1,2,3)
insert into articulo_fabrica_pedido values (2,2,3,6),(1,1,3,8),(1,2,3,5)

select * from articulo_fabrica_pedido

--sacar el total de todos los pedidos


select pedido.nro as nroPedido,sum(precio*cantidad) as total
from articulo_fabrica,articulo_fabrica_pedido,pedido
where articulo_fabrica.nro_articulo=articulo_fabrica_pedido.nro_articulo
and articulo_fabrica.nro_fabrica=articulo_fabrica_pedido.nro_fabrica
and articulo_fabrica_pedido.nro_pedido=pedido.nro
group by pedido.nro

--que nro de cliente realizo el pedido nro 1

select cliente.nro_cliente
from cliente,direccion_envio,pedido
where cliente.nro_cliente=direccion_envio.nro_cliente
and direccion_envio.nro=pedido.nro_direccion
and pedido.nro=1

--mostrar el nombre de la ciudad de los pedidos que


--tengan el articulo 1 y la fabrica 1 y el nombre del articulo y la fabrica
select ciudad.nombre,articulo.nombre,fabrica.nombre
from
ciudad,comuna,direccion_envio,pedido,articulo_fabrica_pedido,articulo_fabrica,articu
lo,fabrica
where ciudad.id=comuna.id_ciudad and comuna.id=direccion_envio.id_comuna
and comuna.id_ciudad=direccion_envio.id_ciudad and
direccion_envio.nro=pedido.nro_direccion
and pedido.nro=articulo_fabrica_pedido.nro_pedido
and articulo_fabrica_pedido.nro_articulo=articulo_fabrica.nro_articulo
and articulo_fabrica_pedido.nro_fabrica=articulo_fabrica.nro_fabrica
and articulo_fabrica.nro_articulo=articulo.nro and
articulo_fabrica.nro_fabrica=fabrica.nro
and articulo_fabrica_pedido.nro_articulo=1 and articulo_fabrica_pedido.nro_fabrica=1
order by ciudad.nombre desc

También podría gustarte