-- 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;