From 4394ab4d02cf3675fe26999d8295fc98b125edf2 Mon Sep 17 00:00:00 2001 From: ruchikagogia1799 Date: Fri, 15 Aug 2025 12:43:29 +0200 Subject: [PATCH 1/2] labs --- ERD_diagram.png | Bin 0 -> 21700 bytes README.md | 2 +- create.sql | 61 ++++++++++++++++++++++++++++++++++++++++++++++++ delete.sql | 21 +++++++++++++++++ seeding.sql | 34 +++++++++++++++++++++++++++ update.sql | 20 ++++++++++++++++ 6 files changed, 137 insertions(+), 1 deletion(-) create mode 100644 ERD_diagram.png create mode 100644 create.sql create mode 100644 delete.sql create mode 100644 seeding.sql create mode 100644 update.sql diff --git a/ERD_diagram.png b/ERD_diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..50f17245b1ce52f5662e2a8fb1584edb9226a342 GIT binary patch literal 21700 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
diff --git a/create.sql b/create.sql new file mode 100644 index 0000000..b88997e --- /dev/null +++ b/create.sql @@ -0,0 +1,61 @@ +-- create.sql +CREATE DATABASE IF NOT EXISTS lab_mysql; +USE lab_mysql; + +-- Drop in FK-safe order +DROP TABLE IF EXISTS invoices; +DROP TABLE IF EXISTS salespersons; +DROP TABLE IF EXISTS customers; +DROP TABLE IF EXISTS cars; + +-- Cars +CREATE TABLE cars ( + id INT AUTO_INCREMENT PRIMARY KEY, + vin VARCHAR(17) NOT NULL, + manufacturer VARCHAR(50) NOT NULL, + model VARCHAR(100) NOT NULL, + model_year YEAR NOT NULL, + color VARCHAR(30) NOT NULL + -- Optionally enforce VIN uniqueness after cleaning: + -- , UNIQUE KEY uk_cars_vin (vin) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; + +-- Customers +CREATE TABLE customers ( + id INT AUTO_INCREMENT PRIMARY KEY, + cust_id INT NOT NULL, -- business ID (not PK) + cust_name VARCHAR(100) NOT NULL, + cust_phone VARCHAR(30), + cust_email VARCHAR(100), + cust_address VARCHAR(150), + cust_city VARCHAR(100), + cust_state VARCHAR(100), + cust_country VARCHAR(100), + cust_zipcode VARCHAR(20), + UNIQUE KEY uk_customers_cust_id (cust_id) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; + +-- Salespersons +CREATE TABLE salespersons ( + id INT AUTO_INCREMENT PRIMARY KEY, + staff_id INT NOT NULL, -- business ID (not PK) + name VARCHAR(100) NOT NULL, + store VARCHAR(100) NOT NULL, + UNIQUE KEY uk_salespersons_staff_id (staff_id) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; + +-- Invoices (car sale) +CREATE TABLE invoices ( + id INT AUTO_INCREMENT PRIMARY KEY, + invoice_number BIGINT NOT NULL, + invoice_date DATE NOT NULL, + car_id INT NOT NULL, + customer_id INT NOT NULL, + salesperson_id INT NOT NULL, + UNIQUE KEY uk_invoice_number (invoice_number), + -- Enforce 1 sale per car (optional but recommended): + UNIQUE KEY uk_invoices_car_once (car_id), + CONSTRAINT fk_inv_car FOREIGN KEY (car_id) REFERENCES cars(id) ON DELETE RESTRICT, + CONSTRAINT fk_inv_customer FOREIGN KEY (customer_id) REFERENCES customers(id) ON DELETE RESTRICT, + CONSTRAINT fk_inv_salesperson FOREIGN KEY (salesperson_id) REFERENCES salespersons(id) ON DELETE RESTRICT +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; diff --git a/delete.sql b/delete.sql new file mode 100644 index 0000000..2824c35 --- /dev/null +++ b/delete.sql @@ -0,0 +1,21 @@ +-- delete.sql (variant A) +USE lab_mysql; +DELETE FROM cars WHERE id = 4; + +-- Verify it’s gone +SELECT id, vin, manufacturer, model FROM cars ORDER BY id; + +-- delete.sql (variant B) +USE lab_mysql; + +-- Remove duplicate VIN rows, keeping the smallest id for each VIN +DELETE c1 FROM cars c1 +JOIN cars c2 + ON c1.vin = c2.vin + AND c1.id > c2.id; + +-- After cleaning, prevent future duplicates (add UNIQUE index) +ALTER TABLE cars ADD UNIQUE KEY uk_cars_vin (vin); + +-- Verify +SELECT vin, COUNT(*) AS n FROM cars GROUP BY vin HAVING n > 1; diff --git a/seeding.sql b/seeding.sql new file mode 100644 index 0000000..b231366 --- /dev/null +++ b/seeding.sql @@ -0,0 +1,34 @@ +-- seeding.sql +USE lab_mysql; + +-- Cars (note duplicated VIN for ids 5 and 6 on purpose for Bonus) +INSERT INTO cars (id, vin, manufacturer, model, model_year, color) VALUES +(1, '3K096I98581DHSNUP', 'Volkswagen', 'Tiguan', 2019, 'Blue'), +(2, 'ZM8G7BEUQZ97IH46V', 'Peugeot', 'Rifter', 2019, 'Red'), +(3, 'RKXVNNIHLVVZOUB4M', 'Ford', 'Fusion', 2018, 'White'), +(4, 'HKNDGS7CU31E9Z7JW', 'Toyota', 'RAV4', 2018, 'Silver'), +(5, 'DAM41UDN3CHU2WVF6', 'Volvo', 'V60', 2019, 'Gray'), +(6, 'DAM41UDN3CHU2WVF6', 'Volvo', 'V60 Cross Country', 2019, 'Gray'); + +-- Customers (1-based IDs to match invoices) +INSERT INTO customers (id, cust_id, cust_name, cust_phone, cust_email, cust_address, cust_city, cust_state, cust_country, cust_zipcode) VALUES +(1, 10001, 'Pablo Picasso', '+34 636 17 63 82', NULL, 'Paseo de la Chopera, 14', 'Madrid', 'Madrid', 'Spain', '28045'), +(2, 20001, 'Abraham Lincoln', '+1 305 907 7086', NULL, '120 SW 8th St', 'Miami', 'Florida', 'United States', '33130'), +(3, 30001, 'Napoléon Bonaparte', '+33 1 79 75 40 00', NULL, '40 Rue du Colisée', 'Paris', 'Île-de-France', 'France', '75008'); + +-- Salespersons +INSERT INTO salespersons (id, staff_id, name, store) VALUES +(1, 1, 'Petey Cruiser', 'Madrid'), +(2, 2, 'Anna Sthesia', 'Barcelona'), +(3, 3, 'Paul Molive', 'Berlin'), +(4, 4, 'Gail Forcewind', 'Paris'), +(5, 5, 'Paige Turner', 'Miami'), +(6, 6, 'Bob Frapples', 'Mexico City'), +(7, 7, 'Walter Melon', 'Amsterdam'), +(8, 8, 'Shonda Leer', 'São Paulo'); + +-- Invoices +INSERT INTO invoices (id, invoice_number, invoice_date, car_id, customer_id, salesperson_id) VALUES +(1, 852399038, '2018-08-22', 1, 1, 3), +(2, 731166526, '2018-12-31', 3, 3, 5), +(3, 271135104, '2019-01-22', 2, 2, 7); diff --git a/update.sql b/update.sql new file mode 100644 index 0000000..c357b5f --- /dev/null +++ b/update.sql @@ -0,0 +1,20 @@ +-- update.sql +USE lab_mysql; + +-- If Workbench complains about safe updates: +SET SQL_SAFE_UPDATES = 0; + +UPDATE customers SET cust_email = 'ppicasso@gmail.com' +WHERE cust_name = 'Pablo Picasso'; + +UPDATE customers SET cust_email = 'lincoln@us.gov' +WHERE cust_name = 'Abraham Lincoln'; + +UPDATE customers SET cust_email = 'hello@napoleon.me' +WHERE cust_name = 'Napoléon Bonaparte'; + +-- Optional: turn safe updates back on +SET SQL_SAFE_UPDATES = 1; + +-- Verify +SELECT id, cust_name, cust_email FROM customers ORDER BY id; From b5297b7e4b08ae73fef1601fbc9136a480b49051 Mon Sep 17 00:00:00 2001 From: ruchikagogia1799 Date: Tue, 9 Sep 2025 16:36:57 +0200 Subject: [PATCH 2/2] chlab --- ERD_diagram.png => E-R diagram.png | Bin 1 file changed, 0 insertions(+), 0 deletions(-) rename ERD_diagram.png => E-R diagram.png (100%) diff --git a/ERD_diagram.png b/E-R diagram.png similarity index 100% rename from ERD_diagram.png rename to E-R diagram.png