Está en la página 1de 5

Practica Dirigida Calificada Nº 01

Apellidos y Nombres: ……………………………………………………………………………………….

1. Construir el script en SQL para generar la base de datos: [6 puntos]

Deberá crear una base de datos de nombre Almacen01 de 120 MB de tamaño inicial para
datos (Puede crecer hasta 500 MB con un FILEGROWTH de 10%). Su log deberá ser de 50
MB de tamaño inicial (Puede crecer hasta 200 MB con un FILEGROWTH de 5%). El archivo
de datos tendrá por nombre DataAlmacen01.mdf y el archivo de log LogAlmacen01.ldf,
ambos estarán en la unidad G en una carpeta de nombre Database. Considerar un
archivo de tipo NDF con tamaño inicial de la mitad del archivo MDF. El tamaño
máximo del archivo NDF en 60% del archivo MDF. Su factor de crecimiento debe ser
igual al MDF.

CREATE DATABASE Almacen01


ON
PRIMARY(NAME=DataAlmacen01,
FILENAME='D:\Base\DataAlmacen01.mdf',
SIZE=120,
MAXSIZE=500,
FILEGROWTH=10%),

(NAME = DataAlmacen012,
FILENAME = 'D:\Base\DataAlmacen01.ndf',
SIZE = 60,
MAXSIZE = 300,
FILEGROWTH = 10% )

LOG ON
( NAME=ExamenlLog,
FILENAME='D:\Base\LogAlmacen01.ldf',
SIZE=50,
MAXSIZE=200,
FILEGROWTH=5%)
2. Construir el script para crear las siguientes tablas con la estructura que se detalla.
Agregar la tabla Plato (idPlato, Descripcion, preciouni) y considerar la llaves foráneas.
Ver Diagrama Entidad Relación. [14 puntos]

2.1. En la tabla DetallesdeFactura existe un campo plato (representa la descripción del mismo
y no el código). Modificar el modelo para agregar una tabla plato. Es decir agregar la
tabla que su FK debe estar en la tabla DetallesdeFactura.
Considerar lo siguiente:
 Los campos Id (llave primarias) considerarlas de tipo entera (int)
 En cuanto a nombres, apellidos, observaciones considerar varchar.
 Los importes deben ser de tipo datos money
 Nummaxcomensal (tabla mesa) considerar numérico entero.
 Importe (DetallesdeFactura) validar como mayor que cero.

CREATE DATABASE Almacen01


ON
PRIMARY(NAME=DataAlmacen01,
FILENAME='D:\Base\DataAlmacen01.mdf',
SIZE=120,
MAXSIZE=500,
FILEGROWTH=10%),

(NAME = DataAlmacen012,
FILENAME = 'D:\Base\DataAlmacen01.ndf',
SIZE = 60,
MAXSIZE = 300,
FILEGROWTH = 10% )

LOG ON
( NAME=ExamenlLog,
FILENAME='D:\Base\LogAlmacen01.ldf',
SIZE=50,
MAXSIZE=200,
FILEGROWTH=5%)
USE Almacen01
GO

Create Table Cliente(


IdCliente int not null primary key,
Nombre varchar(20) not null,
Apellido1 varchar(20) not null,
Apellido2 varchar(20) not null,
Observaciones varchar(50) not null,
)

GO

Create Table Mesa(


IdMesa int not null primary key,
NumMaxComensales int not null,
Ubicacion varchar(20) not null
)

GO

Create Table Cocinero(


IdCocinero int not null primary key,
Nombre varchar(20) not null,
Apellido1 varchar(20) not null,
Apellido2 varchar(20) not null
)

GO

Create Table Camarero(


IdCamarero int not null primary key,
Nombre varchar(20) not null,
Apellido1 varchar(20) not null,
Apellido2 varchar(20) not null
)

GO

Create Table Plato(


IdPlato int not null primary key,
Nombre varchar(20) not null
)

GO

Create Table Factura(


IdFactura int not null primary key,
IdCliente int not null,
FOREIGN KEY (IdCliente) REFERENCES Cliente (IdCliente),
IdCamarero int not null,
FOREIGN KEY (IdCamarero) REFERENCES Camarero (IdCamarero),
IdMesa int not null,
FOREIGN KEY (IdMesa) REFERENCES Mesa (IdMesa),
FechaFactura DateTime not null
)

Create Table DetallesdeFactura(


IdFactura int not null,
IdDetallesdeFactura int not null,
IdCocinero int not null,
FOREIGN KEY (IdCocinero) REFERENCES Cocinero (IdCocinero),
IdPlato int not null,
FOREIGN KEY (IdPlato) REFERENCES Plato (IdPlato),
Importe money not null
Constraint c_Importe Check (Importe > 0)
PRIMARY KEY CLUSTERED (IdFactura,IdDetallesdeFactura)
)

1.1. Insertar Registros en las tablas de la base de datos “Comida” siguiendo una coherencia
lógica de acuerdo a las llaves primarias y foráneas.

Que se registra primero ¿factura o DetallesdeFactura? Asi tenemos ¿DetallesdeFactura o


cocinero? DetallesdeFactura o plato? ¿Factura o camarero? Y así tenemos mas
relaciones entre las tablas.
Indicar el orden de inserción de registros en las tablas del modelo de base de datos.

1. Lo primero para registrar es la tabla factura y despues la tabla DetallesdeFactura.


2. Primero se registra la tabla cocinero y despues la tabla DetallesdeFactura
3. Primero se registra la tabla plato y despues DetallesdeFactura
4. Primero se registra la tabla camarero y luego la tabla factura

INSERT INTO CLiente (IdCliente,Nombre,Apellido1,Apellido2,Observaciones)


VALUES (
1,
'Michael',
'Huayllani',
'Plaza',
'Cliente Recurrente'
)
GO
SELECT * FROM Cliente
GO
INSERT INTO Mesa (IdMesa,NumMaxComensales,Ubicacion)
VALUES (
1,
4,
'Centro'
)
GO
SELECT * FROM Mesa
INSERT INTO Cocinero (IdCocinero,Nombre,Apellido1,Apellido2)
VALUES(
1,
'Susan',
'Manrique',
'Ruis'
)
GO
SELECT * FROM Cocinero
GO
INSERT INTO Camarero(IdCamarero,Nombre,Apellido1,Apellido2)
VALUES(
1,'Sara','Calizaya','Zapata'
)
GO
SELECT * FROM Camarero
GO
INSERT INTO Plato(IdPlato,Nombre)
VALUES(1,')
SELECT * FROM Plato
GO
INSERT INTO Factura(IdFactura,IdCliente,IdCamarero,IdMesa,FechaFactura)
VALUES(
1,1,1,1,
GETDATE()
)
SELECT * FROM Factura
GO
INSERT INTO DetallesdeFactura(IdFactura,IdDetallesdeFactura,IdCocinero,IdPlato,Importe)
VALUES(1,22,1,1,14.00)

GO

SELECT * FROM DetallesdeFactura

GO

SELECT F.IdFactura, C.Nombre + ' ' + C.Apellido1 + ' ' + C.Apellido2 AS [Cliente],
CA.Nombre + ' ' + CA.Apellido1 + ' ' + CA.Apellido2 AS [Camarero],

M.IdMesa, M.NumMaxComensales, M.Ubicacion


FROM Factura F
INNER JOIN Cliente C ON F.IdCliente = C.IdCliente
INNER JOIN Camarero CA ON F.IdCamarero = CA.IdCamarero
INNER JOIN Mesa M ON F.IdMesa = M.IdMesa

GO

SELECT IdFactura,IdDetallesdeFactura,C.Nombre + ' ' + C.Apellido1 + ' ' + C.Apellido2 AS


[Cocinero], P.Nombre, Importe
FROM DetallesdeFactura DF
INNER JOIN Cocinero C ON DF.IdCocinero = C.IdCocinero
INNER JOIN Plato P ON DF.IdPlato = P.IdPlato
WHERE IdFactura = 1

También podría gustarte