Initial commit
This commit is contained in:
117
test_data/init_baseline.sql
Executable file
117
test_data/init_baseline.sql
Executable file
@@ -0,0 +1,117 @@
|
||||
-- Baseline Database Initialization Script
|
||||
-- This creates a sample database structure for testing
|
||||
|
||||
USE master;
|
||||
GO
|
||||
|
||||
-- Create test database
|
||||
IF NOT EXISTS (SELECT name FROM sys.databases WHERE name = 'TestDB_Baseline')
|
||||
BEGIN
|
||||
CREATE DATABASE TestDB_Baseline;
|
||||
END
|
||||
GO
|
||||
|
||||
USE TestDB_Baseline;
|
||||
GO
|
||||
|
||||
-- Create sample tables
|
||||
|
||||
-- Dimension: Customers
|
||||
CREATE TABLE dbo.DimCustomer (
|
||||
CustomerID INT PRIMARY KEY IDENTITY(1,1),
|
||||
CustomerName NVARCHAR(100) NOT NULL,
|
||||
Email NVARCHAR(100),
|
||||
City NVARCHAR(50),
|
||||
Country NVARCHAR(50),
|
||||
CreatedDate DATETIME DEFAULT GETDATE()
|
||||
);
|
||||
|
||||
-- Dimension: Products
|
||||
CREATE TABLE dbo.DimProduct (
|
||||
ProductID INT PRIMARY KEY IDENTITY(1,1),
|
||||
ProductName NVARCHAR(100) NOT NULL,
|
||||
Category NVARCHAR(50),
|
||||
UnitPrice DECIMAL(10,2),
|
||||
IsActive BIT DEFAULT 1
|
||||
);
|
||||
|
||||
-- Fact: Sales
|
||||
CREATE TABLE dbo.FactSales (
|
||||
SaleID INT PRIMARY KEY IDENTITY(1,1),
|
||||
CustomerID INT,
|
||||
ProductID INT,
|
||||
SaleDate DATE,
|
||||
Quantity INT,
|
||||
UnitPrice DECIMAL(10,2),
|
||||
TotalAmount DECIMAL(10,2),
|
||||
TaxAmount DECIMAL(10,2),
|
||||
FOREIGN KEY (CustomerID) REFERENCES dbo.DimCustomer(CustomerID),
|
||||
FOREIGN KEY (ProductID) REFERENCES dbo.DimProduct(ProductID)
|
||||
);
|
||||
|
||||
-- Insert sample data (TEST DATA ONLY - NOT REAL CUSTOMERS)
|
||||
|
||||
-- Customers
|
||||
INSERT INTO dbo.DimCustomer (CustomerName, Email, City, Country) VALUES
|
||||
('TestCustomer1', 'test1@test.local', 'City1', 'Country1'),
|
||||
('TestCustomer2', 'test2@test.local', 'City2', 'Country2'),
|
||||
('TestCustomer3', 'test3@test.local', 'City3', 'Country3'),
|
||||
('TestCustomer4', 'test4@test.local', 'City4', 'Country4'),
|
||||
('TestCustomer5', 'test5@test.local', 'City5', 'Country5');
|
||||
|
||||
-- Products
|
||||
INSERT INTO dbo.DimProduct (ProductName, Category, UnitPrice, IsActive) VALUES
|
||||
('Laptop', 'Electronics', 999.99, 1),
|
||||
('Mouse', 'Electronics', 29.99, 1),
|
||||
('Keyboard', 'Electronics', 79.99, 1),
|
||||
('Monitor', 'Electronics', 299.99, 1),
|
||||
('Desk Chair', 'Furniture', 199.99, 1),
|
||||
('Desk', 'Furniture', 399.99, 1),
|
||||
('Notebook', 'Stationery', 4.99, 1),
|
||||
('Pen Set', 'Stationery', 12.99, 1);
|
||||
|
||||
-- Sales (100 records)
|
||||
DECLARE @i INT = 1;
|
||||
WHILE @i <= 100
|
||||
BEGIN
|
||||
INSERT INTO dbo.FactSales (CustomerID, ProductID, SaleDate, Quantity, UnitPrice, TotalAmount, TaxAmount)
|
||||
VALUES (
|
||||
(ABS(CHECKSUM(NEWID())) % 5) + 1, -- Random CustomerID 1-5
|
||||
(ABS(CHECKSUM(NEWID())) % 8) + 1, -- Random ProductID 1-8
|
||||
DATEADD(DAY, -ABS(CHECKSUM(NEWID())) % 365, GETDATE()), -- Random date in last year
|
||||
(ABS(CHECKSUM(NEWID())) % 10) + 1, -- Random Quantity 1-10
|
||||
(ABS(CHECKSUM(NEWID())) % 900) + 100.00, -- Random price 100-1000
|
||||
0, -- Will be calculated
|
||||
0 -- Will be calculated
|
||||
);
|
||||
|
||||
-- Calculate amounts
|
||||
UPDATE dbo.FactSales
|
||||
SET TotalAmount = Quantity * UnitPrice,
|
||||
TaxAmount = Quantity * UnitPrice * 0.1
|
||||
WHERE SaleID = @i;
|
||||
|
||||
SET @i = @i + 1;
|
||||
END
|
||||
GO
|
||||
|
||||
-- Create some views for testing
|
||||
CREATE VIEW dbo.vw_SalesSummary AS
|
||||
SELECT
|
||||
c.CustomerName,
|
||||
p.ProductName,
|
||||
s.SaleDate,
|
||||
s.Quantity,
|
||||
s.TotalAmount
|
||||
FROM dbo.FactSales s
|
||||
JOIN dbo.DimCustomer c ON s.CustomerID = c.CustomerID
|
||||
JOIN dbo.DimProduct p ON s.ProductID = p.ProductID;
|
||||
GO
|
||||
|
||||
-- Create statistics
|
||||
CREATE STATISTICS stat_sales_date ON dbo.FactSales(SaleDate);
|
||||
CREATE STATISTICS stat_customer_country ON dbo.DimCustomer(Country);
|
||||
GO
|
||||
|
||||
PRINT 'Baseline database initialized successfully';
|
||||
GO
|
||||
Reference in New Issue
Block a user