172 lines
5.1 KiB
SQL
172 lines
5.1 KiB
SQL
--File Version: 1.0.0.0 for SQL Server
|
|
--Purpose: Creates an empty database template in SQL for the Advertising Profit Control software; master template.
|
|
--Notes: This version does not implement any table relationships, its just flat data tables.
|
|
-- Currency will be represented with DECIMAL(19,2) as the standard. From stackoverflow:
|
|
-- http://stackoverflow.com/questions/628637/best-data-type-for-storing-currency-values-in-a-mysql-database
|
|
|
|
--Create the database called "AdvertisingProfitControl".
|
|
CREATE DATABASE AdvertisingProfitControl
|
|
|
|
--Begin creating the tables for the database.
|
|
CREATE TABLE ActualSales
|
|
(
|
|
Id INTEGER NOT NULL PRIMARY KEY,
|
|
--Sold and sale price need to be stored as a string since they need to support # Bin(s)
|
|
--and $#.##/# formatting respectively.
|
|
Sold VARCHAR(128),
|
|
SalePrice VARCHAR(128),
|
|
--Might be over kill to store money like this but better safe then sorry.
|
|
TotalSales DECIMAL(19,2),
|
|
Cost DECIMAL(19,2),
|
|
ProfitReturn DECIMAL(19,2),
|
|
TotalProfitReturn DECIMAL(19,2),
|
|
--The attributes of the row can not be null, and neither can the foreign keys.
|
|
RowPosition INTEGER NOT NULL,
|
|
--A precision of two digits should be everything we need for the row attribute.
|
|
RowAttribute INTEGER NOT NULL,
|
|
--Now begin all the foreign keys.
|
|
FkAdItemId INTEGER NOT NULL,
|
|
FkAdSpecialGoupId INTEGER NOT NULL,
|
|
FkDateId INTEGER NOT NULL
|
|
)
|
|
|
|
CREATE TABLE AdItem
|
|
(
|
|
Id INTEGER NOT NULL PRIMARY KEY,
|
|
AdItem VARCHAR(255) NOT NULL,
|
|
Description VARCHAR(255) --Optional field may be used later one.
|
|
)
|
|
|
|
CREATE TABLE AdSpecial
|
|
(
|
|
Id INTEGER NOT NULL PRIMARY KEY,
|
|
AdSpecial VARCHAR(255) NOT NULL,
|
|
Description VARCHAR(255) --Optional field may be used later one, most likely in a tool tip.
|
|
)
|
|
|
|
CREATE TABLE Note --Comment is a reserved word so the table and column had to be renamed to "Note" instead.
|
|
(
|
|
Id INTEGER NOT NULL PRIMARY KEY,
|
|
--The current version (1.0.0.0) only allows the user to enter a max of 256 characters into the comments box.
|
|
Note VARCHAR(256) NOT NULL,
|
|
FkDateId INTEGER NOT NULL
|
|
)
|
|
|
|
CREATE TABLE CostAnalysis
|
|
(
|
|
Id INTEGER NOT NULL PRIMARY KEY,
|
|
SalesPerManHour DECIMAL(19,2),
|
|
--Allows percentages between %1000.00 (10,000 percent) and %0.12356.
|
|
SalaryPercentage DECIMAL(6,2), --The percentage of the manager's salary that was made on this week's sale items.
|
|
SalaryDollar DECIMAL(19,2), --
|
|
Supplies DECIMAL(19,2) --Total of costs from invoices (?).
|
|
)
|
|
|
|
CREATE TABLE Holiday
|
|
(
|
|
Id INTEGER NOT NULL PRIMARY KEY,
|
|
Holiday VARCHAR(64) NOT NULL
|
|
)
|
|
|
|
CREATE TABLE Inventory
|
|
(
|
|
Id INTEGER NOT NULL PRIMARY KEY,
|
|
--All values minus the primary key and foreign keys are set as strings to allow
|
|
--specifying the number of bins of product are present.
|
|
BeginningInventory VARCHAR(255),
|
|
Recieved VARCHAR(255),
|
|
TotalInventory VARCHAR(255),
|
|
EndingInventory VARCHAR(255),
|
|
--The attributes of the row can not be null, and neither can the foreign keys.
|
|
RowPosition INTEGER NOT NULL,
|
|
--A precision of two digits should be everything we need for the row attribute.
|
|
RowAttribute INTEGER NOT NULL,
|
|
--Now begin all the foreign keys.
|
|
FkAdItemId INTEGER NOT NULL,
|
|
FkAdSpecialGoupId INTEGER NOT NULL,
|
|
FkDateId INTEGER NOT NULL
|
|
)
|
|
|
|
CREATE TABLE Invoice
|
|
(
|
|
Id INTEGER NOT NULL PRIMARY KEY,
|
|
InvoiceDate DATE NOT NULL,
|
|
InvoiceNumber INTEGER NOT NULL,
|
|
InvoiceNetAmountAtCost DECIMAL(19,2),
|
|
InvoiceNetAmount DECIMAL(19,2),
|
|
InvoiceNote VARCHAR(255),
|
|
--Keys are never allowed to be null.
|
|
FkSupplierId INTEGER NOT NULL,
|
|
FkDateId INTEGER NOT NULL
|
|
)
|
|
|
|
CREATE TABLE Projections
|
|
(
|
|
Id INTEGER NOT NULL PRIMARY KEY,
|
|
--Sold and sale price need to be stored as a string since they need to support # Bin(s)
|
|
--and $#.##/# formatting respectively.
|
|
Sold VARCHAR(128),
|
|
SalePrice VARCHAR(128),
|
|
--Might be over kill to store money like this but better safe then sorry.
|
|
TotalSales DECIMAL(19,2),
|
|
Cost DECIMAL(19,2),
|
|
ProfitReturn DECIMAL(19,2),
|
|
TotalProfitReturn DECIMAL(19,2),
|
|
--The attributes of the row can not be null, and neither can the foreign keys.
|
|
RowPosition INTEGER NOT NULL,
|
|
--A precision of two digits should be everything we need for the row attribute.
|
|
RowAttribute INTEGER NOT NULL,
|
|
--Now begin all the foreign keys.
|
|
FkAdItemId INTEGER NOT NULL,
|
|
FkAdSpecialGoupId INTEGER NOT NULL,
|
|
FkDateId INTEGER NOT NULL
|
|
)
|
|
|
|
CREATE TABLE Supplier
|
|
(
|
|
Id INTEGER NOT NULL PRIMARY KEY,
|
|
Supplier VARCHAR(255),
|
|
Description VARCHAR(255) --Optional field may be used later one.
|
|
)
|
|
|
|
CREATE TABLE Taxable
|
|
(
|
|
Id INTEGER NOT NULL PRIMARY KEY,
|
|
Sunday DECIMAL(19,2),
|
|
Monday DECIMAL(19,2),
|
|
Tuesday DECIMAL(19,2),
|
|
Wednesday DECIMAL(19,2),
|
|
Thursday DECIMAL(19,2),
|
|
Friday DECIMAL(19,2),
|
|
Saturday DECIMAL(19,2),
|
|
Total DECIMAL(19,2),
|
|
--Keys are never allowed to be null.
|
|
FkDateId INTEGER NOT NULL
|
|
)
|
|
|
|
CREATE TABLE Version
|
|
(
|
|
Id INTEGER NOT NULL PRIMARY KEY,
|
|
VersionNumber VARCHAR(64) --64 characters should be more then enough to store a version number.
|
|
)
|
|
|
|
CREATE TABLE WeekEndingDate
|
|
(
|
|
Id INTEGER NOT NULL PRIMARY KEY,
|
|
WeekEndingDate DATE NOT NULL --A date is required to be entered.
|
|
)
|
|
|
|
CREATE TABLE WeeklySales
|
|
(
|
|
Id INTEGER NOT NULL PRIMARY KEY,
|
|
Sunday DECIMAL(19,2),
|
|
Monday DECIMAL(19,2),
|
|
Tuesday DECIMAL(19,2),
|
|
Wednesday DECIMAL(19,2),
|
|
Thursday DECIMAL(19,2),
|
|
Friday DECIMAL(19,2),
|
|
Saturday DECIMAL(19,2),
|
|
TotalSales DECIMAL(19,2),
|
|
--Keys are never allowed to be null.
|
|
FkDateId INTEGER NOT NULL
|
|
) |