diff --git a/LittleLemonDB.sql b/LittleLemonDB.sql new file mode 100644 index 0000000..dc60a27 --- /dev/null +++ b/LittleLemonDB.sql @@ -0,0 +1,156 @@ +-- MySQL Workbench Forward Engineering + +SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0; +SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0; +SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'; + +-- ----------------------------------------------------- +-- Schema LittleLemonDB +-- ----------------------------------------------------- + +-- ----------------------------------------------------- +-- Schema LittleLemonDB +-- ----------------------------------------------------- +CREATE SCHEMA IF NOT EXISTS `LittleLemonDB` ; +USE `LittleLemonDB` ; + +-- ----------------------------------------------------- +-- Table `LittleLemonDB`.`Address` +-- ----------------------------------------------------- +CREATE TABLE IF NOT EXISTS `LittleLemonDB`.`Address` ( + `AddressID` INT NOT NULL, + `Street` VARCHAR(255) NOT NULL, + `PostalCode` VARCHAR(12) NOT NULL, + `City` VARCHAR(255) NOT NULL, + `Country` VARCHAR(255) NOT NULL, + PRIMARY KEY (`AddressID`)) +ENGINE = InnoDB; + + +-- ----------------------------------------------------- +-- Table `LittleLemonDB`.`Customer` +-- ----------------------------------------------------- +CREATE TABLE IF NOT EXISTS `LittleLemonDB`.`Customer` ( + `CustomerID` INT NOT NULL, + `FirstName` VARCHAR(255) NOT NULL, + `LastName` VARCHAR(255) NOT NULL, + `PhoneNumber` VARCHAR(45) NOT NULL, + `EmailAddress` VARCHAR(255) NULL, + `AddressID` INT NULL, + PRIMARY KEY (`CustomerID`), + INDEX `FK_Customer_Address1_idx` (`AddressID` ASC) VISIBLE, + CONSTRAINT `FK_Customer_Address1` + FOREIGN KEY (`AddressID`) + REFERENCES `LittleLemonDB`.`Address` (`AddressID`) + ON DELETE CASCADE + ON UPDATE CASCADE) +ENGINE = InnoDB; + + +-- ----------------------------------------------------- +-- Table `LittleLemonDB`.`Employee` +-- ----------------------------------------------------- +CREATE TABLE IF NOT EXISTS `LittleLemonDB`.`Employee` ( + `EmployeeID` INT NOT NULL, + `FirstName` VARCHAR(255) NOT NULL, + `LastName` VARCHAR(255) NOT NULL, + `PhoneNumber` VARCHAR(45) NOT NULL, + `EmailAddress` VARCHAR(255) NOT NULL, + `Role` VARCHAR(255) NOT NULL, + `AnnualSalary` DECIMAL(6,2) NOT NULL COMMENT 'Gross annual salary', + `AddressID` INT NOT NULL, + PRIMARY KEY (`EmployeeID`), + INDEX `FK_Employee_Address1_idx` (`AddressID` ASC) VISIBLE, + CONSTRAINT `FK_Employee_Address1` + FOREIGN KEY (`AddressID`) + REFERENCES `LittleLemonDB`.`Address` (`AddressID`) + ON DELETE CASCADE + ON UPDATE CASCADE) +ENGINE = InnoDB; + + +-- ----------------------------------------------------- +-- Table `LittleLemonDB`.`Booking` +-- ----------------------------------------------------- +CREATE TABLE IF NOT EXISTS `LittleLemonDB`.`Booking` ( + `BookingID` INT NOT NULL, + `Reserved` DATETIME NOT NULL, + `Table` INT NOT NULL, + `CustomerID` INT NOT NULL, + `EmployeeID` INT NOT NULL, + PRIMARY KEY (`BookingID`), + INDEX `FK_Booking_Customer1_idx` (`CustomerID` ASC) VISIBLE, + INDEX `FK_Booking_Employee1_idx` (`EmployeeID` ASC) VISIBLE, + CONSTRAINT `FK_Booking_Customer1` + FOREIGN KEY (`CustomerID`) + REFERENCES `LittleLemonDB`.`Customer` (`CustomerID`) + ON DELETE CASCADE + ON UPDATE CASCADE, + CONSTRAINT `FK_Booking_Employee1` + FOREIGN KEY (`EmployeeID`) + REFERENCES `LittleLemonDB`.`Employee` (`EmployeeID`) + ON DELETE CASCADE + ON UPDATE CASCADE) +ENGINE = InnoDB; + + +-- ----------------------------------------------------- +-- Table `LittleLemonDB`.`MenuItem` +-- ----------------------------------------------------- +CREATE TABLE IF NOT EXISTS `LittleLemonDB`.`MenuItem` ( + `MenuItemID` INT NOT NULL, + `Name` VARCHAR(255) NOT NULL, + `Type` VARCHAR(255) NOT NULL, + `Price` DECIMAL(6,2) NOT NULL, + `Active` TINYINT NOT NULL DEFAULT 1, + PRIMARY KEY (`MenuItemID`)) +ENGINE = InnoDB; + + +-- ----------------------------------------------------- +-- Table `LittleLemonDB`.`Order` +-- ----------------------------------------------------- +CREATE TABLE IF NOT EXISTS `LittleLemonDB`.`Order` ( + `OrderID` INT NOT NULL, + `Started` DATETIME NOT NULL, + `Finished` DATETIME NULL, + `BillAmount` DECIMAL(10,2) NULL, + `BookingID` INT NOT NULL, + PRIMARY KEY (`OrderID`), + INDEX `FK_Order_Booking1_idx` (`BookingID` ASC) VISIBLE, + CONSTRAINT `FK_Order_Booking1` + FOREIGN KEY (`BookingID`) + REFERENCES `LittleLemonDB`.`Booking` (`BookingID`) + ON DELETE CASCADE + ON UPDATE CASCADE) +ENGINE = InnoDB; + + +-- ----------------------------------------------------- +-- Table `LittleLemonDB`.`OrderItem` +-- ----------------------------------------------------- +CREATE TABLE IF NOT EXISTS `LittleLemonDB`.`OrderItem` ( + `MenuItemID` INT NOT NULL, + `OrderID` INT NOT NULL, + `Price` DECIMAL(6,2) NOT NULL, + `Ordered` DATETIME NOT NULL, + `Delivered` DATETIME NULL, + `DeliveryStatus` VARCHAR(45) NOT NULL, + PRIMARY KEY (`MenuItemID`, `OrderID`), + INDEX `FK_OrderItem_Order1_idx` (`OrderID` ASC) VISIBLE, + CONSTRAINT `FK_OrderItem_MenuItem1` + FOREIGN KEY (`MenuItemID`) + REFERENCES `LittleLemonDB`.`MenuItem` (`MenuItemID`) + ON DELETE CASCADE + ON UPDATE CASCADE, + CONSTRAINT `FK_OrderItem_Order1` + FOREIGN KEY (`OrderID`) + REFERENCES `LittleLemonDB`.`Order` (`OrderID`) + ON DELETE CASCADE + ON UPDATE CASCADE) +ENGINE = InnoDB; + + +SET SQL_MODE=@OLD_SQL_MODE; +SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS; +SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;