Practica Calificada
Nombre - Kevin Jeremy Valdez Navarrete
1 - Creación de Usuario (login), crear los siguientes usuarios, todos estos tendrán la misma clave (Clave = 123456)
Usuario
|
ROLES DE SERVIDOR
|
ROLES DE BASE DE DATOS
|
Profesor
|
sysAdmin
|
|
2 – Ingresar con el usuario creado anteriormente (profesor), crear el script para la construcción de la siguiente base de datos, con sus respectivas constraint
A – Crear la siguiente base de datos y tabla
Nombre de Base de Datos :BDMPractIsil - Archivo MDF, Tamaño inicial 20MB, Incremento 3, Tamaño Final – 100mb
Detalle de Tablas
Guía_detalle
Atributo
|
Tipo
|
Restricción
|
idguia
|
int
|
NOT NULL
|
idproducto
|
Int
|
NOT NULL
|
precioventa
|
Money
|
NOT NULL
|
cantidad
|
smallint
|
NOT NULL
|
Orden_detalle
Atributo
|
Tipo
|
Restricción
|
idorden
|
Int
|
NOT NULL
|
idproducto
|
Int
|
NOT NULL
|
preciocompra
|
Money
|
NOT NULL
|
cantidadsolicitada
|
Smallint
|
NOT NULL
|
cantidadrecibida
|
Smallint
|
NULL
|
estado
|
varchar(10)
|
NULL
|
Producto
Atributo
|
Tipo
|
Restricción
|
idproducto
|
int
|
IDENTITY
|
idcategoria
|
int
|
NOT NULL
|
idproveedor
|
int
|
NOT NULL
|
nombre
|
varchar(40)
|
NOT NULL
|
unidadmedida
|
varchar(30)
|
NULL
|
precioproveedor
|
money
|
NULL
|
stockactual
|
smallint
|
NULL
|
stockminimo
|
smallint
|
NULL
|
Categoria
Atributo
|
Tipo
|
Restricción
|
idcategoria
|
int
|
IDENTITY
|
categoría
|
varchar(20)
|
NOT NULL
|
descripción
|
varchar(20)
|
NULL
|
Guia
Atributo
|
Tipo
|
Restricción
|
idguia
|
int
|
NOT NULL
|
idlocal
|
int
|
NOT NULL
|
fechasalida
|
datetime
|
NOT NULL
|
transportista
|
varchar(30)
|
NOT NULL
|
Local
Atributo
|
Tipo
|
Restricción
|
idlocal
|
int
|
NOT NULL
|
dirección
|
varchar(60)
|
NULL
|
distrito
|
varchar(20)
|
NULL
|
teléfono
|
varchar(15)
|
NULL
|
fax
|
varchar(15)
|
NULL
|
Orden
Atributo
|
Tipo
|
Restricción
|
idorden
|
int
|
NOT NULL
|
fechaorden
|
datetime
|
NOT NULL
|
fechaentrada
|
datetime
|
NULL
|
Proveedor
Atributo
|
Tipo
|
Restricción
|
idproveedor
|
int
|
IDENTITY
|
nombre
|
varchar(40)
|
NOT NULL
|
representante
|
varchar(30)
|
NULL
|
dirección
|
varchar(60)
|
NULL
|
ciudad
|
varchar(15)
|
NULL
|
departamento
|
varchar(15)
|
NULL
|
codigopostal
|
varchar(15)
|
NULL
|
teléfono
|
varchar(15)
|
NULL
|
fax
|
varchar(15)
|
NULL
|
descontinuado
|
bit
|
|
Respuesta Script –
--Creando La BD
CREATE DATABASE BDPractIsil
ON PRIMARY
(
NAME ='BDPractIsil_DATA',
FILENAME='D:PracticaBDPractIsil_DATA.MDF',
SIZE=20MB, --TAMAÑO INICIAL
MAXSIZE=100MB, --TAMAÑO FINAL
FILEGROWTH=3MB) --INCREMENTO DE LA BD
LOG ON
(
NAME='BDPractIsil_LOG',
FILENAME='D:PracticaBDPractIsil_DLOG.LDF',
SIZE=5MB, --TAMAÑO INICIAL
MAXSIZE=32MB, --TAMAÑO FINAL
FILEGROWTH=1MB --INCREMENTO DE LA BD
)
--VER INFORMACION DE LA BD
SP_HELPDB BDPractIsil
------------------------------------------------
USE BDPractIsil
GO
--Creacion de las Tablas
--Guia_Detalle
create table Guia_detalle
(
idguia int not null,
idproducto int not null,
precioventa money not null,
cantidad smallint not null
)
go
--Orden_detalle
create table Orden_detalle
(
idorden int not null,
idproducto int not null,
preciocompra money not null,
cantidadsolicitada smallint not null,
cantidadrecibida smallint not null,
estado varchar(10) null
)
go
--Producto
create table Producto
(
idproducto int identity (1,1) not null,
idcategoria int not null,
idproveedor int not null,
nombre varchar(40) not null,
unidadmedida varchar(30) null,
precioproveedor money null,
stockactual smallint null,
stockminimo smallint null
)
go
--Proveedor
create table Proveedor
(
idproveedor int identity (1,1) not null,
nombre varchar(40) not null,
representante varchar(30) null,
dirección varchar(60) null,
ciudad varchar(15) null,
departamento varchar(15) null,
codigopostal varchar(15)null,
telefono varchar(15) null,
fax varchar(15) null,
descontinuado bit
)
go
--Categoria
create table categoria
(
idcategoria int identity,
categoría varchar(20) not null,
descripcion varchar(20) null,
)
go
--Guia
create table guia
(
idguia int not null,
idlocal int not null,
fechasalida datetime not null,
transportista varchar(30) not null
)
go
--Local1
create table Local1
(
idlocal int not null,
direccion varchar(60) null,
distrito varchar(20) null,
teléfono varchar(15) null,
fax varchar(15) null
)
go
--Orden
create table Orden
(
idorden int not null,
fechaorden datetime not null,
fechaentrada datetime null
)
go
B – Crear la siguiente constraint
producto
|
Idproducto
|
|
Orden_detalle
|
Idorden
|
|
|
|
proveedor
|
Idproveedor
|
|
Orden_detalle
|
Idproducto
|
|
Tabla
|
Restriccion Check
Mayor a cero
|
categoria
|
Idcategoria
|
|
producto
|
Idproveedor
|
|
Producto
|
stockactual
|
guia
|
Idguia
|
|
producto
|
Idcategoria
|
|
|
|
local
|
Idlocal
|
|
guia
|
Idlocal
|
|
|
|
orden
|
Idorden
|
|
|
|
|
|
|
Respuesta Script –
--Creando los constraint
--llave primaria de producto
alter table Producto
add constraint PK_Producto
Primary key(idproducto)
--
sp_help Producto
--
--llave primaria de proveedor
alter table Proveedor
add constraint PK_Proveedor
Primary key (idproveedor)
--
sp_help Proveedor
--
--llave primaria de categoria
alter table categoria
add constraint PK_categoria
Primary key (idcategoria)
--
sp_help categoria
--
--llave primaria de guia
alter table guia
add constraint PK_guia
Primary key (idguia)
--
sp_help guia
--
--llave primaria de local1
alter table Local1
add constraint PK_Local1
Primary key (idlocal)
--
sp_help Local1
--
--llave primaria de orden
alter table Orden
add constraint PK_Orden
Primary key (idorden)
--
sp_help Orden
--
--LLaves Foraneas
--Tabla Orden_detalle
alter table Orden_detalle
add constraint FK_Orden
foreign key(idorden) --el campo foraneo
references Orden(idorden) --tabla de referencia
alter table Orden_detalle
add constraint FK_Orden_2
foreign key(idproducto) --el campo foraneo
references Producto(idproducto) --tabla de referencia
--
sp_help Orden_detalle
--
--tabla Producto
alter table Producto
add constraint FK_Producto
foreign key(idproveedor) --el campo foraneo
references Proveedor(idproveedor) --tabla de referencia
alter table Producto
add constraint FK_Producto1
foreign key(Idcategoria) --el campo foraneo
references categoria(Idcategoria) --tabla de referencia
--
sp_help Producto
--
--tabla guia
alter table guia
add constraint FK_guia
foreign key(idlocal) --el campo foraneo
references local1(idlocal) --tabla de referencia
--
sp_help guia
--aplicando el constraint check
--tabla producto
alter table Producto
add constraint CK_stockactual
check (stockactual>0)
C – Pegar la Imagen del Diagrama de la base de datos
3 - Crear los siguientes usuarios, con sus respectivos roles(de servidor o base de dato) e indicar que tipo de proceso podemos realizar
Usuario
|
ROLES DE SERVIDOR
|
ROLES DE BASE DE DATOS
|
Programador
|
SysAdmin
|
db_denyreader
|
Alumno
|
|
db_datareader y db_datawriter
|
Soporte
|
|
db_datareader
|
Extras
|
|
db_denydatareader y db_datawriter
|
Respuesta Script –
Programador: tiene un rol de servidor que le permite manejar cualquier BD el tiene todos los permisos. En su rol de base de datos se especifica que se niege la lectura de las BD
Alumno: Solo tiene permisos para leer y escribir. Es decir si este usuario quisiera modificar algo no podria
Soporte: Solo tiene permisos para leer
Extras: No tiene permiso para leer pero si para escribir.
4 - Se pide crear la siguiente tabla, usando el usuario soporte (revisemos el tipo de resultado que nos devuelve)
create table pedido(
n_pedido int identity(1,1) not null,
c_producto varchar(2),
c_cant_ped int,
i_aceptado char(1),
i_anulado char(1))
Respuesta Script –
Mens. 262, Nivel 14, Estado 1, Línea 1
Se ha denegado el permiso CREATE TABLE en la base de datos 'BDPractIsil'.
Ahora realicemos la misma operación de creación con el usuario programador (revisemos el resultado obtenido)
Respuesta Script –
Comandos completados correctamente.
5 – Se pide crear los siguientes tipos de datos de usuario, //programador
Nombre del Tipo de Dato
|
Valor
|
Tipo2
|
varchar(2) not null
|
Ruc
|
varchar(11) null
|
GenCod
|
int Identity(1,1) not null
|
Valor
|
int not null ------ check = 0 y 100
|
Respuesta Script –
--crear tipos de datos de usuario
sp_addtype 'Tipo2','varchar(2)','Not Null'
--
sp_addtype 'Ruc','varchar(11)','Null'
--
sp_addtype 'GenCod','int','not null','identity(1,1)'
--
sp_addtype 'Valor','int','Not null'
select * from systypes --verificando que nuestros datos se hayn creado apareceran al final
6 – Usando el usuario programador, Se pide crear las siguientes tablas:
Tabla Factura
codfac
|
varchar(3)
|
|
tipcli
|
Tipo2
|
solo pueden ser CL(clientes), CE(clientes externos), PV(proveedores)
|
nomcli
|
varchar(50)
|
|
numruccli
|
ruc
|
tipo de dato definido por el usuario, solo debe aceptar números
|
fecha
|
datetime
|
|
monto
|
money
|
|
Tabla factura_detalle
codfac
|
varchar(3)
|
|
coditem
|
GenCod
|
|
nompro
|
varchar(50)
|
|
cantpro
|
valor
|
tipo de dato definido por el usuario, debe ser siempre mayor a cero y menor a 100
|
mtoUpro
|
money
|
|
totalItem
|
(cantpro * mtoUpro)
|
es un campo calculado
|
--Creando las tablas
--tabla factura
create table Factura
(
codfac varchar(3),
tipcli Tipo2,
numruccli ruc,
fecha datetime,
monto money
)
go
alter table Factura
add constraint CK_tipcli--esto significa que el stock no puede ser menor que 50
check(tipcli LIKE'[CL][CE][PV]')
ALTER TABLE Factura
add constraint Only_Numebrs
check (numruccli NOT LIKE '%[^A-Z0-9 ]%')
--
--tabla Factura_detalle
create table factura_detalle
(
codfac varchar(3),
coditem GenCod,
nompro varchar(50),
cantpro valor,
mtoUpro money,
totalItem as (cantpro * mtoUpro)
)
go
-----
ALTER TABLE factura_detalle
add constraint cantpro
check (cantpro Like '[0-100]')
|