237 lines
6.2 KiB
SQL
237 lines
6.2 KiB
SQL
DROP DATABASE IF EXISTS Petstoredb;
|
|
CREATE DATABASE Petstoredb;
|
|
USE Petstoredb;
|
|
|
|
-- Create Tables
|
|
|
|
CREATE TABLE storeLocation (
|
|
storeId INT AUTO_INCREMENT PRIMARY KEY,
|
|
storeName VARCHAR(100) NOT NULL,
|
|
address VARCHAR(255),
|
|
phone VARCHAR(20),
|
|
email VARCHAR(100)
|
|
);
|
|
|
|
CREATE TABLE employee (
|
|
employeeId INT AUTO_INCREMENT PRIMARY KEY,
|
|
firstName VARCHAR(50) NOT NULL,
|
|
lastName VARCHAR(50) NOT NULL,
|
|
email VARCHAR(100),
|
|
phone VARCHAR(20),
|
|
role VARCHAR(50),
|
|
isActive BOOLEAN DEFAULT TRUE
|
|
);
|
|
|
|
CREATE TABLE employeeStore (
|
|
employeeId INT,
|
|
storeId INT,
|
|
PRIMARY KEY (employeeId, storeId),
|
|
FOREIGN KEY (employeeId) REFERENCES employee(employeeId),
|
|
FOREIGN KEY (storeId) REFERENCES storeLocation(storeId)
|
|
);
|
|
|
|
CREATE TABLE customer (
|
|
customerId INT AUTO_INCREMENT PRIMARY KEY,
|
|
firstName VARCHAR(50) NOT NULL,
|
|
lastName VARCHAR(50) NOT NULL,
|
|
email VARCHAR(100),
|
|
phone VARCHAR(20)
|
|
);
|
|
|
|
CREATE TABLE pet (
|
|
petId INT AUTO_INCREMENT PRIMARY KEY,
|
|
petName VARCHAR(50),
|
|
petSpecies VARCHAR(50),
|
|
petBreed VARCHAR(50),
|
|
petAge INT,
|
|
petStatus VARCHAR(20),
|
|
petPrice DECIMAL(10, 2)
|
|
);
|
|
|
|
CREATE TABLE adoption (
|
|
adoptionId INT AUTO_INCREMENT PRIMARY KEY,
|
|
petId INT,
|
|
customerId INT,
|
|
adoptionDate DATE,
|
|
adoptionStatus VARCHAR(20),
|
|
FOREIGN KEY (petId) REFERENCES pet(petId),
|
|
FOREIGN KEY (customerId) REFERENCES customer(customerId)
|
|
);
|
|
|
|
CREATE TABLE supplier (
|
|
supId INT AUTO_INCREMENT PRIMARY KEY,
|
|
supCompany VARCHAR(100) NOT NULL,
|
|
supContactFirstName VARCHAR(50),
|
|
supContactLastName VARCHAR(50),
|
|
supEmail VARCHAR(100),
|
|
supPhone VARCHAR(20)
|
|
);
|
|
|
|
CREATE TABLE category (
|
|
categoryId INT AUTO_INCREMENT PRIMARY KEY,
|
|
categoryName VARCHAR(100) NOT NULL,
|
|
categoryType VARCHAR(50)
|
|
);
|
|
|
|
CREATE TABLE product (
|
|
prodId INT AUTO_INCREMENT PRIMARY KEY,
|
|
prodName VARCHAR(100) NOT NULL,
|
|
prodSku VARCHAR(50) UNIQUE,
|
|
prodPrice DECIMAL(10, 2),
|
|
categoryId INT,
|
|
prodDesc TEXT,
|
|
FOREIGN KEY (categoryId) REFERENCES category(categoryId)
|
|
);
|
|
|
|
CREATE TABLE productSupplier (
|
|
supId INT,
|
|
prodId INT,
|
|
PRIMARY KEY (supId, prodId),
|
|
FOREIGN KEY (supId) REFERENCES supplier(supId),
|
|
FOREIGN KEY (prodId) REFERENCES product(prodId)
|
|
);
|
|
|
|
CREATE TABLE inventory (
|
|
inventoryId INT AUTO_INCREMENT PRIMARY KEY,
|
|
prodId INT,
|
|
quantity INT DEFAULT 0,
|
|
FOREIGN KEY (prodId) REFERENCES product(prodId)
|
|
);
|
|
|
|
CREATE TABLE service (
|
|
serviceId INT AUTO_INCREMENT PRIMARY KEY,
|
|
serviceName VARCHAR(100) NOT NULL,
|
|
serviceDesc TEXT,
|
|
serviceDuration INT,
|
|
servicePrice DECIMAL(10, 2)
|
|
);
|
|
|
|
CREATE TABLE appointment (
|
|
appointmentId INT AUTO_INCREMENT PRIMARY KEY,
|
|
serviceId INT,
|
|
customerId INT,
|
|
appointmentDate DATE,
|
|
appointmentTime TIME,
|
|
appointmentStatus VARCHAR(20),
|
|
FOREIGN KEY (serviceId) REFERENCES service(serviceId),
|
|
FOREIGN KEY (customerId) REFERENCES customer(customerId)
|
|
);
|
|
|
|
CREATE TABLE appointmentPet (
|
|
appointmentId INT,
|
|
petId INT,
|
|
PRIMARY KEY (appointmentId, petId),
|
|
FOREIGN KEY (appointmentId) REFERENCES appointment(appointmentId),
|
|
FOREIGN KEY (petId) REFERENCES pet(petId)
|
|
);
|
|
|
|
CREATE TABLE sale (
|
|
saleId INT AUTO_INCREMENT PRIMARY KEY,
|
|
saleDate DATETIME,
|
|
totalAmount DECIMAL(10, 2),
|
|
paymentMethod VARCHAR(50),
|
|
employeeId INT,
|
|
storeId INT,
|
|
FOREIGN KEY (employeeId) REFERENCES employee(employeeId),
|
|
FOREIGN KEY (storeId) REFERENCES storeLocation(storeId)
|
|
);
|
|
|
|
CREATE TABLE saleItem (
|
|
saleItemId INT AUTO_INCREMENT PRIMARY KEY,
|
|
saleId INT,
|
|
prodId INT,
|
|
quantity INT,
|
|
unitPrice DECIMAL(10, 2),
|
|
FOREIGN KEY (saleId) REFERENCES sale(saleId),
|
|
FOREIGN KEY (prodId) REFERENCES product(prodId)
|
|
);
|
|
|
|
CREATE TABLE activityLog (
|
|
logId INT AUTO_INCREMENT PRIMARY KEY,
|
|
employeeId INT,
|
|
activity TEXT,
|
|
logTimestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
FOREIGN KEY (employeeId) REFERENCES employee(employeeId)
|
|
);
|
|
|
|
-- Insert Sample Data
|
|
|
|
INSERT INTO storeLocation (storeName, address, phone, email)
|
|
VALUES
|
|
('Downtown Branch', '123 Main St', '123-456-7890', 'downtown@petshop.com'),
|
|
('North Branch', '456 North Ave', '987-654-3210', 'north@petshop.com');
|
|
|
|
INSERT INTO employee (firstName, lastName, email, phone, role, isActive)
|
|
VALUES
|
|
('John', 'Doe', 'john@petshop.com', '111-222-3333', 'Manager', TRUE),
|
|
('Sara', 'Smith', 'sara@petshop.com', '444-555-6666', 'Staff', TRUE);
|
|
|
|
INSERT INTO employeeStore (employeeId, storeId)
|
|
VALUES
|
|
(1, 1),
|
|
(2, 1),
|
|
(2, 2);
|
|
|
|
INSERT INTO customer (firstName, lastName, email, phone)
|
|
VALUES
|
|
('Alex', 'Brown', 'alex@gmail.com', '777-888-9999'),
|
|
('Emily', 'Clark', 'emily@gmail.com', '666-555-4444');
|
|
|
|
INSERT INTO pet (petName, petSpecies, petBreed, petAge, petStatus, petPrice)
|
|
VALUES
|
|
('Buddy', 'Dog', 'Labrador', 2, 'Available', 500.00),
|
|
('Milo', 'Cat', 'Persian', 1, 'Available', 300.00);
|
|
|
|
INSERT INTO adoption (petId, customerId, adoptionDate, adoptionStatus)
|
|
VALUES
|
|
(1, 1, '2026-01-15', 'Completed');
|
|
|
|
INSERT INTO supplier (supCompany, supContactFirstName, supContactLastName, supEmail, supPhone)
|
|
VALUES
|
|
('PetFood Inc', 'Robert', 'King', 'contact@petfood.com', '888-111-2222');
|
|
|
|
INSERT INTO category (categoryName, categoryType)
|
|
VALUES
|
|
('Dog Food', 'Product'),
|
|
('Cat Toys', 'Product');
|
|
|
|
INSERT INTO product (prodName, prodSku, prodPrice, categoryId, prodDesc)
|
|
VALUES
|
|
('Premium Dog Food', 'DF001', 50.00, 1, 'High quality dog food'),
|
|
('Cat Toy Ball', 'CT001', 10.00, 2, 'Colorful toy for cats');
|
|
|
|
INSERT INTO productSupplier (supId, prodId)
|
|
VALUES
|
|
(1, 1),
|
|
(1, 2);
|
|
|
|
INSERT INTO inventory (prodId, quantity)
|
|
VALUES
|
|
(1, 100),
|
|
(2, 200);
|
|
|
|
INSERT INTO service (serviceName, serviceDesc, serviceDuration, servicePrice)
|
|
VALUES
|
|
('Pet Grooming', 'Full grooming service', 60, 40.00);
|
|
|
|
INSERT INTO appointment (serviceId, customerId, appointmentDate, appointmentTime, appointmentStatus)
|
|
VALUES
|
|
(1, 2, '2026-02-01', '10:30:00', 'Booked');
|
|
|
|
INSERT INTO appointmentPet (appointmentId, petId)
|
|
VALUES
|
|
(1, 2);
|
|
|
|
INSERT INTO sale (saleDate, totalAmount, paymentMethod, employeeId, storeId)
|
|
VALUES
|
|
(NOW(), 60.00, 'Card', 2, 1);
|
|
|
|
INSERT INTO saleItem (saleId, prodId, quantity, unitPrice)
|
|
VALUES
|
|
(1, 2, 2, 10.00);
|
|
|
|
INSERT INTO activityLog (employeeId, activity)
|
|
VALUES
|
|
(1, 'Created new sale'),
|
|
(2, 'Booked appointment');
|