# Mega Mart Grocery ## Schema Overview The `MEGA_MART_GROCERY` database underpins the core operations of a grocery retail system, managing product categories, customer information, employee details, and sales orders including individual order items. ## Table Summary | Table Name | Primary Responsibility | | :--------- | :--------------------- | | `Categories` | Organizes products into distinct categories for efficient inventory management and customer Browse. | | `Customers` | Stores comprehensive information about all registered customers. | | `Employees` | Contains details of all employees involved in the grocery operations. | | `OrderDetails` | Links products to specific orders, defining the quantity of each item purchased. | | `Orders` | Records each customer order, including who placed it, who processed it, and when. | | `Products` | Manages the catalog of all items available for sale within the grocery store. | | `Shippers` | Stores information about the companies responsible for delivering orders. | | `Suppliers` | Maintains details of all product suppliers. | ----- ## `Categories` Table This table defines the various categories under which products are grouped. It is essential for organizing the product catalog and enabling filtered searches within the application. | Column Name | Data Type | Description | | :---------- | :-------- | :---------- | | `CategoryID` | INT | Unique identifier for this entity. Used for all lookups and relationships. | | `CategoryName` | VARCHAR(25) (Optional) | The name of the product category. | | `Description` | VARCHAR(255) (Optional) | A brief explanation of the category. | ## `Customers` Table This table holds the master data for all customers. It is crucial for order processing, customer relationship management, and personalized services. | Column Name | Data Type | Description | | :---------- | :-------- | :---------- | | `CustomerID` | INT | Unique identifier for this entity. Used for all lookups and relationships. | | `CustomerName` | VARCHAR(50) (Optional) | The full name of the customer. | | `ContactName` | VARCHAR(50) (Optional) | The name of the primary contact person for the customer. | | `Address` | VARCHAR(50) (Optional) | The customer's street address. | | `City` | VARCHAR(20) (Optional) | The city where the customer resides. | | `PostalCode` | VARCHAR(10) (Optional) | The postal code for the customer's address. | | `Country` | VARCHAR(15) (Optional) | The country where the customer resides. | ## `Employees` Table This table stores information about the employees of the grocery store. This data is used to track who processed an order and for internal HR functions. | Column Name | Data Type | Description | | :---------- | :-------- | :---------- | | `EmployeeID` | INT | Unique identifier for this entity. Used for all lookups and relationships. | | `LastName` | VARCHAR(15) (Optional) | The employee's last name. | | `FirstName` | VARCHAR(15) (Optional) | The employee's first name. | | `BirthDate` | DATETIME (Optional) | The employee's birth date. Map to `java.time.LocalDateTime` for modern date/time handling. | | `Photo` | VARCHAR(25) (Optional) | File path or reference to the employee's photo. | | `Notes` | VARCHAR(1024) (Optional) | General notes or additional information about the employee. | ## `OrderDetails` Table This table captures the individual items within each order. It establishes a many-to-many relationship between orders and products, detailing quantities. | Column Name | Data Type | Description | | :---------- | :-------- | :---------- | | `OrderDetailID` | INT | Unique identifier for this entity. Used for all lookups and relationships. | | `OrderID` | INT (Optional) | Establishes a relationship with `Orders.OrderID`. Essential for data integrity and joins. | | `ProductID` | INT (Optional) | Establishes a relationship with `Products.ProductID`. Essential for data integrity and joins. | | `Quantity` | INT (Optional) | The number of units of the product included in this order detail. | ## `Orders` Table This table records each transaction made by customers. It links customers, employees, and shippers to specific orders, providing a complete overview of each sale. | Column Name | Data Type | Description | | :---------- | :-------- | :---------- | | `OrderID` | INT | Unique identifier for this entity. Used for all lookups and relationships. | | `CustomerID` | INT (Optional) | Establishes a relationship with `Customers.CustomerID`. Essential for data integrity and joins. | | `EmployeeID` | INT (Optional) | Establishes a relationship with `Employees.EmployeeID`. Essential for data integrity and joins. | | `OrderDate` | DATETIME (Optional) | The date and time the order was placed. Map to `java.time.LocalDateTime` for modern date/time handling. | | `ShipperID` | INT (Optional) | Establishes a relationship with `Shippers.ShipperID`. Essential for data integrity and joins. |