Está en la página 1de 4

Ejercicio a Resolver Nº 01

CASO.- La gestión de almacén de una empresa requiere la implementación de una base de datos, para lo cual se
deben estructurar las tablas: CATEGORIAS, PROVEEDORES y ARTICULOS, cuyas características son las
siguientes

Tabla CATEGORIAS: IdCatego NombreCategor


ria ia
 Reúne los datos de las categorías que organizan a los artículos del almacén, 100 Almacenamiento
cuyos códigos se auto generan en forma correlativa de 100 en 100.
200 Ingreso
 Ya que la empresa habitualmente opera con dispositivos de 300 Salida
almacenamiento, la categoría por defecto a mostrarse deberá ser
Almacenamiento. 400 Procesador
500 Otros

Tabla PROVEEDORES:
 Contiene datos de los proveedores que proporcionan los productos para la empresa. Cada proveedor esta identificado con un
código que se auto genera en forma correlativa de 10 en 10 y cuyo numero inicial es 12.
 Además los proveedores que habitualmente trabajan con la empresa son del distrito de Surco, por lo que dicho distrito será el
valor por defecto.
 Así mismo cada proveedor cuenta con un RUC, que se considera como un valor único.
 Finalmente todos los campos deberán contar con algún dato ingresado a excepción del campo Pagina Web, ya solo hay algunas
empresas que cuentan con la misma.
IdProveed NombreProveed Telefono Distri RUC WebSite
or or to
12 OMEGA S.A. 433-2145 SURC 987987789 www.omega.com.pe
O 87
22 COMPUTECH SRL 968-98987 LIMA 878987546
45
32 GRUPO LEAFAR 536-2569 LIMA 987954689 www.megatrinic.com.p
S.A. 78 e
42 MEGATRONIC S.A. 987-65988 SURC 987985326
O 97
52 DATA SYSTEM SRL 332-7525 LINC 999956489
E 87
62 ALPHA SRL 336-8789 LINC 965498789
E 87
72 PRIMA S.A. 978- SURC 923164489 www.prima.com.pe
895458 O 83

Tabla ARTICULOS
 Contiene datos de los artículos que negocia la empresa
 La Marca con la que mas trabaja la empresa es Samsung, por lo que deberá mostrase como valor predeterminado en la marca
 La fecha de ingreso deberá mostrar la fecha actual como valor por defecto.
 El stock en almacén debe ser un valor positivo que no supere las 20 unidades.
 Los precios nunca podrán ser valores negativos no podrá exceder los $1200.
Inartic NombreArticulo Marca Modelo IdCatego IdProveed Ingreso Sto Prec
ulo ria or ck io
A-01 MICROPROCESADO INTEL PENTIUM IV 2,5 GB 400 12 15/02/20 5 155
R 04
A-02 MOUSE GENIUS 3 BOTONES 200 22 12/05/20 2 10
05
A-03 MOUSE TOSHIBA OPTICO 200 32 01/06/20 3 15
04
A-04 TECLADO DELL 121 TECLAS 200 42 02/04/20 4 10
03
A-05 MEMORIA USB KINGSTO 128 GB 500 52 01/03/20 5 25
N 02
A-06 MEMORIA USB LG 256 GB 500 62 25/08/20 2 35
00
A-07 DISCO DURO SONY 80 GB 100 72 24/03/20 1 85
04
A-08 QUEMADOR LG 64 MMX 500 12 21/09/20 5 55
02
A-09 MONITOR SANSUN 21 PULG. 300 22 17/04/20 6 150
G 03
A-10 MONITOR LG 15 PULG. 300 32 25/10/20 8 120
00
A-11 MICROPROCESADO INTEL CELERON 2,3 GB 400 42 15/06/20 7 150
R 02
A-12 TECLADO TOSHIBA KB -2971 200 52 10/02/20 1 10
01
A-13 CD SONY R-720 MB 100 62 15/02/20 2 1.5
03
A-14 CD IMATION RW-690MB 100 72 21/11/20 3 2
04
A-15 DISKETTE SONY 1,44 MB 100 12 23/05/20 4 0.2
03
A-16 IMPRESORA EPSON ESTYLUS COLOR 300 22 26/06/20 5 85
800 04
Docente: Oscar J Gonzales G. Pág. 1 de 2
A-17 IMPRESORA CANON JT-230 300 32 15/05/20 6 78
03

1. Escribir el TRANSACT - SQL, que permita elaborar las tablas, así como sus respectivas relaciones:
CATEGORIAS

CREATE TABLE Categorias (


IdCategoria int IDENTITY(100,100) ,
Categoria varchar(50) DEFAULT 'Almacenamiento'

PRIMARY KEY (IdCategoria)


);

PROVEEDORES

CREATE TABLE Proveedores (


IdProveedor int IDENTITY(12,10) ,
NombreProveedor varchar(50) NOT NULL,
Telefono varchar(50)NOT NULL ,
Distrito varchar(50)NOT NULL ,
Ruc varchar(50)NOT NULL ,
Website varchar(50)
PRIMARY KEY (IdProveedor),
UNIQUE (Ruc)
);

ARTICULOS

CREATE TABLE Articulos (


Idarticulo int IDENTITY(12,10) ,
NombreArticulo varchar(50) NOT NULL,
Marca varchar(50) DEFAULT 'Samsung',
Modelo varchar(50)NOT NULL ,
IdCategoria int,
IdProveedor int,
Ingreso date DEFAULT GETDATE(),
Stock int NOT NULL CHECK (Stock >0 and Stock <20 ),
Precio decimal(18,2)NOT NULL CHECK (Precio >0 and PRECIO <1200 ),
CONSTRAINT fk_Categorias FOREIGN KEY (IdCategoria) REFERENCES Categorias (IdCategoria),
CONSTRAINT fk_Proveedores FOREIGN KEY (IdProveedor) REFERENCES Proveedores (IdProveedor)
);

2. Elabore las siguientes consultas

--a) Lista de artículos ordenados por precio en forma descendente


--Articulo Marca Modelo Categoria Precio$
select Idarticulo,NombreArticulo,Marca, Modelo,idCategoria,Precio
from articulos
order by precio desc

--b) Artículos cuyo precio es mayor a $20


--Articulo Marca Modelo Proveedor Precio$
Docente: Oscar J Gonzales G. Pág. 2 de 2
select Idarticulo,NombreArticulo,Marca, Modelo,idCategoria,Precio
from articulos
where Precio > 20
--c) Dispositivos de Ingreso o Almacenamiento
--Articulo Marca Modelo Categoria Precio$
select Idarticulo,NombreArticulo,Marca, Modelo,Categoria,Precio
from Categorias
inner join Articulos on
categorias.IdCategoria=articulos.IdCategoria
where Categoria='Ingreso' or Categoria='Almacenamiento'

--d) Proveedores con teléfono fijo que no tiene Pagina Web


--Proveedor Distrito Telefono
select NombreProveedor,Distrito,Telefono, Website from
Proveedores
where LEN(Telefono )<=8 and Website is not null
ORDER BY
LEN(Telefono ) DESC;

--e) Proveedores que sean Sociedad Anónima y que vendieron artículos en el ultimo trimestre del
2003 y 2004.
--Proveedor Distrito Telefono FIngreso
select NombreProveedor,Distrito,Telefono,Ingreso
from
Proveedores inner join Articulos on
Proveedores.IdProveedor=Articulos.IdProveedor
where NombreProveedor LIKE '%S.A.' and YEAR(ingreso)>=2003
and YEAR(ingreso)<=2004 AND DATEPART(QUARTER, Ingreso)>=4
--f) Artículos que no sean dispositivos de proceso y que ingresaron en el primer semestre del año
2003 y 2005.
--Articulo Modelo Marca Categoría FIngreso
select NombreArticulo,Modelo,Marca,Categoria,Ingreso from
Categorias inner join Articulos on
Categorias.IdCategoria=Articulos.IdCategoria
where categoria='PROCESADOR' and YEAR(ingreso)>=2003
and YEAR(ingreso)<=2004 AND DATEPART(QUARTER, Ingreso)>=1
--g) Relación de artículos cuya marca tenga más de 4 caracteres.
--Articulo Marca Modelo Proveedor
select NombreArticulo,Marca,Modelo,NombreProveedor
from
Articulos inner join Proveedores on
articulos.IdProveedor=Proveedores.IdProveedor
where LEN(NombreProveedor )>4
--h) Relación de artículos que ingresaron a almacén a partir de la segunda quincena de julio del
2002 y cuyo proveedor es de Lima o Surco
--Articulo Marca Modelo FIngreso Proveedor Distrito
select NombreArticulo,Marca,Modelo,Ingreso,NombreProveedor,Distrito
from
Articulos inner join Proveedores on
articulos.IdProveedor=Proveedores.IdProveedor
where Ingreso>='16-07-2002' and Distrito='SURCO' OR Distrito='LIMA'

--i) Relación artículos cuya antepenúltima letra de la Marca sea cualquiera de las ultimas 6
letras del abecedario
--Articulo Marca Proveedor FIngreso
select NombreArticulo,Marca,Modelo,Ingreso,NombreProveedor
from
Articulos inner join Proveedores on
articulos.IdProveedor=Proveedores.IdProveedor
where substring(Marca, len(Marca)-1, 1) LIKE '[UVWXYZ]'

--j) Promedio del precio de los artículos cuya categoría es ALMACENAMIENTO o PROCESADOR
--Categoría PromedioPrecio
SELECT Categoria,AVG(PRECIO)'PRECIO PROMEDIO'
FROM
Categorias INNER JOIN Articulos ON
CategoriaS.IdCategoria=Articulos.IdCategoria
WHERE Categoria='ALMACENAMIENTO' OR Categoria='PROCESADOR'
Docente: Oscar J Gonzales G. Pág. 3 de 2
GROUP BY Categoria

--k) Cantidad total de Artículos cuyos proveedores son de Surco o Lima


--Distrito Proveedor TotalStock
SELECT Distrito,NombreProveedor,COUNT(Stock) 'CANTIDAD TOTAL'
FROM
Articulos INNER JOIN Proveedores ON
Articulos.IdProveedor = Proveedores.IdProveedor
WHERE Distrito='SURCO' OR Distrito='LIMA'
GROUP BY Distrito,NombreProveedor
--l) Total de proveedores por Categoría
--Categoría NoProveedores
SELECT Categoria,COUNT(NombreProveedor) 'TOTAL DE PROVEEDORES'
FROM Proveedores INNER JOIN Articulos ON
Proveedores.IdProveedor = Articulos.IdProveedor
INNER JOIN Categorias ON
CategoriaS.IdCategoria=Articulos.IdCategoria
GROUP BY Categoria

Docente: Oscar J Gonzales G. Pág. 4 de 2

También podría gustarte