-- 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 -- ----------------------------------------------------- DROP SCHEMA IF EXISTS `LittleLemonDB` ; -- ----------------------------------------------------- -- Schema LittleLemonDB -- ----------------------------------------------------- CREATE SCHEMA IF NOT EXISTS `LittleLemonDB` ; USE `LittleLemonDB` ; -- ----------------------------------------------------- -- Table `LittleLemonDB`.`Addresses` -- ----------------------------------------------------- CREATE TABLE IF NOT EXISTS `LittleLemonDB`.`Addresses` ( `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`.`Customers` -- ----------------------------------------------------- CREATE TABLE IF NOT EXISTS `LittleLemonDB`.`Customers` ( `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_Customers_Addresses1_idx` (`AddressID` ASC) VISIBLE, CONSTRAINT `FK_Customers_Addresses1` FOREIGN KEY (`AddressID`) REFERENCES `LittleLemonDB`.`Addresses` (`AddressID`) ON DELETE CASCADE ON UPDATE CASCADE) ENGINE = InnoDB; -- ----------------------------------------------------- -- Table `LittleLemonDB`.`Employees` -- ----------------------------------------------------- CREATE TABLE IF NOT EXISTS `LittleLemonDB`.`Employees` ( `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(10,2) NOT NULL COMMENT 'Gross annual salary', `AddressID` INT NOT NULL, PRIMARY KEY (`EmployeeID`), INDEX `FK_Employees_Addresses1_idx` (`AddressID` ASC) VISIBLE, CONSTRAINT `FK_Employees_Addresses1` FOREIGN KEY (`AddressID`) REFERENCES `LittleLemonDB`.`Addresses` (`AddressID`) ON DELETE CASCADE ON UPDATE CASCADE) ENGINE = InnoDB; -- ----------------------------------------------------- -- Table `LittleLemonDB`.`Bookings` -- ----------------------------------------------------- CREATE TABLE IF NOT EXISTS `LittleLemonDB`.`Bookings` ( `BookingID` INT NOT NULL, `Reserved` DATETIME NOT NULL, `TableNumber` INT NOT NULL, `CustomerID` INT NOT NULL, `EmployeeID` INT NOT NULL, PRIMARY KEY (`BookingID`), INDEX `FK_Bookings_Customers1_idx` (`CustomerID` ASC) VISIBLE, INDEX `FK_Bookings_Employees1_idx` (`EmployeeID` ASC) VISIBLE, CONSTRAINT `FK_Bookings_Customers1` FOREIGN KEY (`CustomerID`) REFERENCES `LittleLemonDB`.`Customers` (`CustomerID`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `FK_Bookings_Employees1` FOREIGN KEY (`EmployeeID`) REFERENCES `LittleLemonDB`.`Employees` (`EmployeeID`) ON DELETE CASCADE ON UPDATE CASCADE) ENGINE = InnoDB; -- ----------------------------------------------------- -- Table `LittleLemonDB`.`MenuItems` -- ----------------------------------------------------- CREATE TABLE IF NOT EXISTS `LittleLemonDB`.`MenuItems` ( `MenuItemID` INT NOT NULL, `Name` VARCHAR(255) NOT NULL, `Category` VARCHAR(255) NOT NULL, `Price` DECIMAL(6,2) NOT NULL, `InUse` TINYINT NOT NULL DEFAULT 1, PRIMARY KEY (`MenuItemID`)) ENGINE = InnoDB; -- ----------------------------------------------------- -- Table `LittleLemonDB`.`Orders` -- ----------------------------------------------------- CREATE TABLE IF NOT EXISTS `LittleLemonDB`.`Orders` ( `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_Orders_Bookings1_idx` (`BookingID` ASC) VISIBLE, CONSTRAINT `FK_Orders_Bookings1` FOREIGN KEY (`BookingID`) REFERENCES `LittleLemonDB`.`Bookings` (`BookingID`) ON DELETE CASCADE ON UPDATE CASCADE) ENGINE = InnoDB; -- ----------------------------------------------------- -- Table `LittleLemonDB`.`OrderItems` -- ----------------------------------------------------- CREATE TABLE IF NOT EXISTS `LittleLemonDB`.`OrderItems` ( `OrderItemID` INT NOT NULL, `Ordered` DATETIME NOT NULL, `Delivered` DATETIME NULL, `DeliveryStatus` VARCHAR(45) NOT NULL, `OrderID` INT NOT NULL, `MenuItemID` INT NOT NULL, PRIMARY KEY (`OrderItemID`), INDEX `FK_OrderItems_Orders1_idx` (`OrderID` ASC) VISIBLE, INDEX `FK_OrderItems_MenuItems1_idx` (`MenuItemID` ASC) VISIBLE, CONSTRAINT `FK_OrderItems_Orders1` FOREIGN KEY (`OrderID`) REFERENCES `LittleLemonDB`.`Orders` (`OrderID`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `FK_OrderItems_MenuItems1` FOREIGN KEY (`MenuItemID`) REFERENCES `LittleLemonDB`.`MenuItems` (`MenuItemID`) 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;