INTITUTO TECNOLÒGICO DE LAS AMERICA (ITLA)
MATERIA:
ELECTIVA 1
TEMA:
CREACIÓN DE UN ALMACÉN DE DATOS PARA LA BASE
DE DATOS NORTHWIND
NOMBRES Y MATRICULAS:
SEBASTIAN ESCAÑO
2023-1063
MODELO ER
SCRIPT DE LA BASE DE DATOS
drop database
DWHNorthwindOrders create
database DWHNorthwindOrders
use DWHNorthwindOrders
-- Creación de las tablas dimensionales del DW
CREATE TABLE DimEmployees (
EmployeeID INT PRIMARY KEY,
LastName NVARCHAR(20) NOT NULL,
FirstName NVARCHAR(10) NOT NULL,
Title NVARCHAR(30),
TitleOfCourtesy NVARCHAR(25),
BirthDate DATETIME,
HireDate DATETIME,
Address NVARCHAR(60),
City NVARCHAR(15),
Region NVARCHAR(15),
PostalCode NVARCHAR(10),
Country NVARCHAR(15),
HomePhone NVARCHAR(24),
Extension NVARCHAR(4),
Photo IMAGE,
Notes NTEXT,
ReportsTo INT,
PhotoPath NVARCHAR(255)
);
CREATE TABLE DimCategories (
CategoryID INT PRIMARY KEY,
CategoryName NVARCHAR(15) NOT NULL,
Description NTEXT,
Picture IMAGE
);
CREATE TABLE DimCustomers (
CustomerID NCHAR(5) PRIMARY KEY,
CompanyName NVARCHAR(40) NOT NULL,
ContactName NVARCHAR(30),
ContactTitle NVARCHAR(30),
Address NVARCHAR(60),
City NVARCHAR(15),
Region NVARCHAR(15),
PostalCode NVARCHAR(10),
Country NVARCHAR(15),
Phone NVARCHAR(24),
Fax NVARCHAR(24)
);
CREATE TABLE DimShippers (
ShipperID INT PRIMARY KEY,
CompanyName NVARCHAR(40) NOT NULL,
Phone NVARCHAR(24)
);
CREATE TABLE DimSuppliers (
SupplierID INT PRIMARY KEY,
CompanyName NVARCHAR(40) NOT NULL,
ContactName NVARCHAR(30),
ContactTitle NVARCHAR(30),
Address NVARCHAR(60),
City NVARCHAR(15),
Region NVARCHAR(15),
PostalCode NVARCHAR(10),
Country NVARCHAR(15),
Phone
NVARCHAR(24), Fax
NVARCHAR(24),
HomePage NTEXT
);
CREATE TABLE DimProducts (
ProductID INT PRIMARY KEY,
ProductName NVARCHAR(40) NOT NULL,
SupplierID INT,
CategoryID INT,
QuantityPerUnit NVARCHAR(20),
UnitPrice MONEY,
UnitsInStock SMALLINT,
UnitsOnOrder SMALLINT,
ReorderLevel SMALLINT,
Discontinued BIT NOT NULL,
FOREIGN KEY (SupplierID) REFERENCES DimSuppliers
(SupplierID),
FOREIGN KEY (CategoryID) REFERENCES DimCategories
(CategoryID)
);
CREATE TABLE DimOrders (
OrderID INT PRIMARY KEY,
CustomerID NCHAR(5),
EmployeeID INT,
OrderDate DATETIME,
RequiredDate DATETIME,
ShippedDate DATETIME,
ShipVia INT,
Freight MONEY,
ShipName NVARCHAR(40),
ShipAddress NVARCHAR(60),
ShipCity NVARCHAR(15),
ShipRegion NVARCHAR(15),
ShipPostalCode NVARCHAR(10),
ShipCountry NVARCHAR(15),
FOREIGN KEY (CustomerID) REFERENCES DimCustomers
(CustomerID),
FOREIGN KEY (EmployeeID) REFERENCES DimEmployees
(EmployeeID), FOREIGN KEY (ShipVia) REFERENCES
DimShippers (ShipperID)
);
-- Creación de la tabla de Fact del DW
CREATE TABLE FactOrderDetails (
OrderID INT,
ProductID INT,
UnitPrice MONEY NOT NULL,
Quantity SMALLINT NOT NULL,
Discount REAL NOT NULL,
FOREIGN KEY (OrderID) REFERENCES DimOrders (OrderID),
FOREIGN KEY (ProductID) REFERENCES DimProducts
(ProductID) );
-- Carga de datos en las tablas dimensionales del data warehouse
INSERT INTO DWHNorthwindOrders.dbo.DimEmployees (EmployeeID,
LastName, FirstName, Title, TitleOfCourtesy, BirthDate,
HireDate, Address, City, Region, PostalCode, Country, HomePhone,
Extension, Photo, Notes, ReportsTo, PhotoPath)
SELECT EmployeeID, LastName, FirstName, Title, TitleOfCourtesy,
BirthDate,
HireDate, Address, City, Region, PostalCode, Country, HomePhone,
Extension,
Photo, Notes, ReportsTo,
PhotoPath FROM
Northwind.dbo.Employees;
INSERT INTO DWHNorthwindOrders.dbo.DimCategories (CategoryID,
CategoryName,
Description, Picture)
SELECT CategoryID, CategoryName, Description,
Picture FROM Northwind.dbo.Categories;
INSERT INTO DWHNorthwindOrders.dbo.DimCustomers (CustomerID,
CompanyName,
ContactName, ContactTitle, Address, City, Region, PostalCode,
Country, Phone, Fax)
SELECT CustomerID, CompanyName, ContactName, ContactTitle,
Address, City, Region, PostalCode, Country, Phone, Fax FROM
Northwind.dbo.Customers;
INSERT INTO DWHNorthwindOrders.dbo.DimShippers (ShipperID,
CompanyName, Phone)
SELECT ShipperID, CompanyName,
Phone FROM
Northwind.dbo.Shippers;
INSERT INTO DWHNorthwindOrders.dbo.DimSuppliers (SupplierID,
CompanyName,
ContactName, ContactTitle, Address, City, Region, PostalCode,
Country, Phone, Fax, HomePage)
SELECT SupplierID, CompanyName, ContactName, ContactTitle,
Address, City, Region, PostalCode, Country, Phone, Fax, HomePage
FROM Northwind.dbo.Suppliers;
INSERT INTO DWHNorthwindOrders.dbo.DimProducts (ProductID,
ProductName,
SupplierID, CategoryID, QuantityPerUnit, UnitPrice,
UnitsInStock, UnitsOnOrder,
ReorderLevel, Discontinued)
SELECT ProductID, ProductName, SupplierID, CategoryID,
QuantityPerUnit,
UnitPrice, UnitsInStock, UnitsOnOrder, ReorderLevel,
Discontinued
FROM Northwind.dbo.Products;
INSERT INTO DWHNorthwindOrders.dbo.DimOrders (OrderID,
CustomerID, EmployeeID,
OrderDate, RequiredDate, ShippedDate, ShipVia, Freight,
ShipName, ShipAddress, ShipCity, ShipRegion, ShipPostalCode,
ShipCountry)
SELECT OrderID, CustomerID, EmployeeID, OrderDate, RequiredDate,
ShippedDate,
ShipVia, Freight, ShipName, ShipAddress, ShipCity, ShipRegion,
ShipPostalCode, ShipCountry
FROM
Northwind.dbo.Orders;
-- Relaciones entre tablas en el data warehouse
DWHNorthwindOrders
ALTER TABLE DWHNorthwindOrders.dbo.FactOrderDetails
ADD CONSTRAINT FK_FactOrderDetails_Orders FOREIGN KEY
(OrderID) REFERENCES DWHNorthwindOrders.dbo.DimOrders
(OrderID);
ALTER TABLE DWHNorthwindOrders.dbo.FactOrderDetails
ADD CONSTRAINT FK_FactOrderDetails_Products FOREIGN
KEY (ProductID) REFERENCES
DWHNorthwindOrders.dbo.DimProducts (ProductID);
ALTER TABLE DWHNorthwindOrders.dbo.DimProducts
ADD CONSTRAINT FK_DimProducts_Suppliers FOREIGN KEY
(SupplierID) REFERENCES
DWHNorthwindOrders.dbo.DimSuppliers (SupplierID);
ALTER TABLE DWHNorthwindOrders.dbo.DimProducts
ADD CONSTRAINT FK_DimProducts_Categories FOREIGN KEY
(CategoryID) REFERENCES
DWHNorthwindOrders.dbo.DimCategories (CategoryID);
ALTER TABLE DWHNorthwindOrders.dbo.DimOrders
ADD CONSTRAINT FK_DimOrders_Customers FOREIGN KEY (CustomerID)
REFERENCES DWHNorthwindOrders.dbo.DimCustomers
(CustomerID);
ALTER TABLE DWHNorthwindOrders.dbo.DimOrders
ADD CONSTRAINT FK_DimOrders_Employees FOREIGN KEY (EmployeeID)
REFERENCES DWHNorthwindOrders.dbo.DimEmployees
(EmployeeID);
ALTER TABLE DWHNorthwindOrders.dbo.DimOrders
ADD CONSTRAINT FK_DimOrders_Shippers FOREIGN KEY (ShipVia)
REFERENCES DWHNorthwindOrders.dbo.DimShippers (ShipperID);