The Star Schema of a Database: 1412593

Task 3

CREATE TABLE `dimension_clients` (

  `ClientID` int(10) NOT NULL,

  `CompanyName` varchar(20) NOT NULL,

  `NumberOfEmployees` int(5) NOT NULL,

  `BankAccount` varchar(20) NOT NULL,

  `Address` varchar(20) NOT NULL,

  `Telephone` int(15) NOT NULL,

  `ABN` int(15) NOT NULL,

  `Manager` varchar(20) NOT NULL,

  PRIMARY KEY (`ClientID`)

)

CREATE TABLE `dimension_contract` (

  `ContactID` int(10) NOT NULL,

  `ContactSignedDate` date NOT NULL,

  `LeasingStartDate` date NOT NULL,

  `LeasingEndDate` date NOT NULL,

  PRIMARY KEY (`ContactID`)

)

CREATE TABLE `dimension_invoice` (

  `InvoiceID` int(11) NOT NULL,

  `InvoicePremise` varchar(20) NOT NULL,

  `InvoiceDate` date NOT NULL,

  `PaymentType` varchar(20) NOT NULL,

  `TotalPrice` int(11) NOT NULL,

  PRIMARY KEY (`InvoiceID`)

)

CREATE TABLE `dimension_leased_premises` (

  `LeasedID` int(10) NOT NULL,

  `LeasedSize` int(10) NOT NULL,

  `LeasedUnitPrice` int(10) NOT NULL,

  PRIMARY KEY (`LeasedID`)

)

CREATE TABLE `dimension_premises` (

  `PremisesID` int(10) NOT NULL,

  `PremisesType` varchar(10) NOT NULL,

  `Size` int(10) NOT NULL,

  PRIMARY KEY (`PremisesID`)

)

CREATE TABLE `dimension_utilities` (

  `UtilitiesID` int(10) NOT NULL,

  `Description` varchar(100) NOT NULL,

  `Capacity` int(10) NOT NULL,

  `GovernmentChargePerUnit` int(10) NOT NULL,

  PRIMARY KEY (`UtilitiesID`)

)

CREATE TABLE `dimension_utilities_used` (

  `ConsumptionID` int(11) NOT NULL,

  `Description` varchar(100) NOT NULL,

  `UnitPrice` int(11) NOT NULL,

  `ConsumptionAmount` int(11) NOT NULL,

  `TotalPrice` int(11) NOT NULL,

  `ConsumptionStartDate` date NOT NULL,

  `ConsumptionEndDate` date NOT NULL,

  PRIMARY KEY (`ConsumptionID`)

)

CREATE TABLE `dimension_warehouse` (

  `WarehouseID` int(11) NOT NULL,

  `EstablishedYear` int(11) NOT NULL,

  `Size` int(11) NOT NULL,

  `ConstructionCost` int(11) NOT NULL,

  `MantananceAnnualCost` int(11) NOT NULL,

  PRIMARY KEY (`WarehouseID`)

)

CREATE TABLE  `fact_sales` (

  `ClientID` int(11) NOT NULL,

  `ContractID` int(11) NOT NULL,

  `UtilitiesID` int(11) NOT NULL,

  `InvoiceID` int(11) NOT NULL,

  `PremisesID` int(11) NOT NULL,

  `ConsumptionID` int(11) NOT NULL,

  `LeasedID` int(11) NOT NULL,

  `WarehouseID` int(11) NOT NULL,

  KEY `ClientID` (`ClientID`),

  KEY `UtilitiesID` (`UtilitiesID`),

  KEY `ContractID` (`ContractID`),

  KEY `InvoiceID` (`InvoiceID`),

  KEY `PremisesID` (`PremisesID`),

  KEY `ConsumptionID` (`ConsumptionID`),

  KEY `LeasedID` (`LeasedID`),

  KEY `WarehouseID` (`WarehouseID`)

)

ALTER TABLE `fact_sales`

  ADD CONSTRAINT `ClientID_FK` FOREIGN KEY (`ClientID`) REFERENCES `dimension_clients` (`ClientID`),

  ADD CONSTRAINT `ContractID_FK` FOREIGN KEY (`ContractID`) REFERENCES `dimension_contract` (`ContactID`);

ADD CONSTRAINT `UtilitiesID_FK` FOREIGN KEY (`UtilitiesID`) REFERENCES `dimension_Utilities` (`UtilitiesID`),

  ADD CONSTRAINT `InvoiceID_FK` FOREIGN KEY (`InvoiceID`) REFERENCES `dimension_invoice` (`InvoiceID`);

ADD CONSTRAINT `PremisesID_FK` FOREIGN KEY (`PremisesID`) REFERENCES `dimension_premises` (`PremisesID`),

  ADD CONSTRAINT `ConsumptionID_FK` FOREIGN KEY (`ConsumptionID`) REFERENCES `dimension_ConsumptionID` (`Consumption`);

ADD CONSTRAINT `LeasedID_FK` FOREIGN KEY (`LeasedID`) REFERENCES `dimension_lease_premises` (`LeasedID`),

  ADD CONSTRAINT `WarehouseID_FK` FOREIGN KEY (`WarehouseID`) REFERENCES `dimension_ WarehouseID` (`WarehouseID`);

Task 4

  1. SELECT SUM(dimension_invoice.TotalPrice) ORDER BY INNER JOIN dimension_client.size
  2. SELECT SUM(dimension_utilities_used.TotalPricet)WHERE INNER JOIN dimension_contract.leasingStartDate =2016
  3. SELECT COUNT(dimension_contracts.ContractID) from dimension_contract INNER JOIN (SELECT * FROM dimension_company WHERE size>100
  4. SELECT COUNT(contracts) GROUP BY (dimension_contract.ContracteSignedDate INNER JOIN dimension_client.NumberOfEmployees) order DESC