Advertisement
erehh

Untitled

Jun 6th, 2023
1,507
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MySQL 12.10 KB | None | 0 0
  1. --factory table
  2. CREATE TABLE Factory(
  3. factory_id INT PRIMARY KEY,
  4. f_name VARCHAR (255),
  5. f_location VARCHAR (255)
  6. );
  7.  
  8. --branch table
  9. CREATE TABLE Branch(
  10. branch_id INT PRIMARY KEY,
  11. branch_name VARCHAR(255),
  12. branch_factory_id int,
  13. FOREIGN KEY (branch_factory_id) REFERENCES Factory (factory_id)
  14. );
  15.  
  16. --supplier table
  17. CREATE TABLE Supplier(
  18. supplier_id INT PRIMARY KEY,
  19. supplier_name VARCHAR(255)
  20. );
  21.  
  22. --water table
  23. --price of 1L of water - 0.3
  24. CREATE TABLE Water(
  25. water_id VARCHAR(5) PRIMARY KEY,
  26. water_source VARCHAR(255) NOT NULL,
  27. amount_obtained INT NOT NULL,
  28. water_price DECIMAL(4,2) DEFAULT 0.3,
  29. date_obtained DATE NOT NULL
  30. );
  31.  
  32. --bottle table
  33. CREATE TABLE Bottle(
  34. bottle_id VARCHAR(6) PRIMARY KEY,
  35. supplier_id INT,
  36. bottle_type VARCHAR(10) CHECK(bottle_type IN ('glass', 'plastic')),
  37. bottle_price DECIMAL(4,2) NOT NULL,
  38. bottle_amount INT NOT NULL,
  39. FOREIGN KEY (supplier_id) REFERENCES Supplier ( supplier_id)
  40. );
  41.  
  42. --update to the bottle table to set the price accordingly
  43. --if plastic -0.3, if glass - 1.5, else 0
  44. UPDATE Bottle
  45. SET bottle_price = CASE
  46.     WHEN bottle_type = 'glass' THEN 1.5
  47.     WHEN bottle_type = 'plastic' THEN 0.3
  48.     ELSE 0
  49. END;
  50.  
  51. --Product ( bottled water ) table
  52. CREATE TABLE Product(
  53. product_id VARCHAR(9) PRIMARY KEY,
  54. product_type VARCHAR(10) CHECK(product_type IN ('glass', 'plastic')),
  55. bottle_id VARCHAR(6),
  56. water_id VARCHAR(5),
  57. product_price DECIMAL(6,2),
  58. product_amount INT NOT NULL,
  59. date_produced DATE NOT NULL,
  60. date_shipped DATE,
  61. FOREIGN KEY (bottle_id) REFERENCES Bottle (bottle_id),
  62. FOREIGN KEY (water_id) REFERENCES Water (water_id)
  63. );
  64.  
  65. -- Update the price values using the calculated formula.
  66. --price is equal to the sum of bottle and water price, plus 45%
  67. UPDATE Product
  68. SET product_price =
  69. (SELECT (Bottle.bottle_price + Water.water_price) * 1.45
  70. FROM Bottle, Water WHERE Bottle.bottle_id = Product.bottle_id AND Water.water_id = Product.water_id);
  71.  
  72. --person table, will be used for the manager and employee table
  73. CREATE TABLE Person(
  74. ssn VARCHAR(11) PRIMARY KEY,
  75. );
  76.  
  77. --director table
  78. CREATE TABLE Director(
  79. director_ssn VARCHAR(11),
  80. factory_id INT,
  81. FOREIGN KEY (director_ssn) REFERENCES Person(ssn),
  82. FOREIGN KEY (factory_id) REFERENCES Factory(factory_id)
  83. );
  84. --manager table
  85. CREATE TABLE Manager(
  86. manager_id VARCHAR(10) PRIMARY KEY,
  87. manager_ssn VARCHAR(11) NOT NULL,
  88. manager_name VARCHAR(255) NOT NULL,
  89. manager_lname VARCHAR(255) NOT NULL,
  90. factory_id INT NOT NULL,
  91. branch_id INT NOT NULL,
  92. FOREIGN KEY (manager_ssn) REFERENCES Person(ssn),
  93. FOREIGN KEY (factory_id) REFERENCES Factory(factory_id),
  94. FOREIGN KEY (branch_id) REFERENCES Branch(branch_id)
  95. );
  96.  
  97. --employee table
  98. CREATE TABLE Employee(
  99. employee_ssn VARCHAR(11),
  100. employee_name VARCHAR(255) NOT NULL,
  101. employee_lname VARCHAR(255) NOT NULL,
  102. employee_factory INT NOT NULL,
  103. employee_branch INT NOT NULL,
  104. FOREIGN KEY (employee_ssn) REFERENCES Person(ssn),
  105. FOREIGN KEY (employee_factory) REFERENCES Factory(factory_id),
  106. FOREIGN KEY (employee_branch) REFERENCES Branch(branch_id)
  107. );
  108.  
  109. --store table
  110. CREATE TABLE Store(
  111. store_id INT PRIMARY KEY,
  112. store_name VARCHAR(255) NOT NULL,
  113. product_id VARCHAR(9),
  114. product_price DECIMAL(6,2),
  115. product_amount_received INT,
  116. date_received DATE,
  117. FOREIGN KEY (product_id) REFERENCES Product(product_id)
  118. );
  119.  
  120. --update the Store table to calculate the revenue received
  121. UPDATE STORE
  122. SET product_price = (SELECT Product.product_price * Store.product_amount_received
  123.                      FROM Product, Store
  124.                      WHERE Product.product_id = Store.product_id);
  125.                      
  126.  
  127. --sales table
  128. CREATE TABLE Sales(
  129. store_id int,
  130. revenue_date DATE NOT NULL,
  131. revenue DECIMAL(7,2),
  132. FOREIGN KEY (store_id) REFERENCES Store(store_id)
  133. );
  134.  
  135. --update to Sales, revenue date is the same as the day the store received the products
  136. UPDATE Sales
  137. SET revenue_date = (SELECT Store.date_received
  138.                     FROM Store);
  139.  
  140. ----update to Sales, revenue is the same as the price paid by the store
  141. UPDATE Sales
  142. SET revenue = (SELECT Store.product_price
  143.                 FROM Store);
  144.  
  145. --salaries table
  146. CREATE TABLE Salaries(
  147. worker_ssn VARCHAR(11),
  148. worker_branch_id INT,
  149. worker_salary DECIMAL(7,2),
  150. FOREIGN KEY (worker_ssn) REFERENCES Person(ssn),
  151. FOREIGN KEY (worker_branch_id) REFERENCES Branch(branch_id)
  152. );
  153.  
  154.  
  155. --update to salaries table, each branch has its own salary
  156. UPDATE salaries
  157. SET worker_salary =
  158.     CASE
  159.         WHEN worker_branch_id = 1 AND worker_ssn IN (SELECT manager_ssn FROM Manager) THEN 2500
  160.         WHEN worker_branch_id = 1 AND worker_ssn IN (SELECT employee_ssn FROM Employee) THEN 1500
  161.         WHEN worker_branch_id = 2 AND worker_ssn IN (SELECT manager_ssn FROM Manager) THEN 5500
  162.         WHEN worker_branch_id = 2 AND worker_ssn IN (SELECT employee_ssn FROM Employee) THEN 3500
  163.         WHEN worker_branch_id = 3 AND worker_ssn IN (SELECT manager_ssn FROM Manager) THEN 1700
  164.         WHEN worker_branch_id = 3 AND worker_ssn IN (SELECT employee_ssn FROM Employee) THEN 900
  165.     END;
  166.  
  167.  
  168.  
  169. --inserting info into the tables
  170.  
  171. --inserting into the Factory table
  172. INSERT INTO Factory
  173. VALUES
  174.     (1, 'kumisis wyaro', 'Kumisi'),
  175.     (2, 'rustavis wyali', 'Rustavi');
  176.  
  177. --inserting into the branch table
  178. INSERT INTO Branch (branch_id, branch_name, branch_factory_id)
  179. SELECT 1, 'Water obtaining', factory_id FROM Factory WHERE factory_id = 1
  180. UNION ALL
  181. SELECT 2, 'Water filtration', factory_id FROM Factory WHERE factory_id = 1
  182. UNION ALL
  183. SELECT 3, 'water mineralisation', factory_id FROM Factory WHERE factory_id = 1
  184. UNION ALL
  185. SELECT 4, 'Bottling water', factory_id FROM Factory WHERE factory_id = 2
  186. UNION ALL
  187. SELECT 5, 'Warehouse ', factory_id FROM Factory WHERE factory_id = 2;
  188.  
  189. --inserting into the supplier table
  190. INSERT INTO Supplier
  191. Values
  192.     (1, 'Suramis gandzi'),
  193.     (2, 'Pol-Ethyl');
  194.  
  195. --inserting into the water table
  196. INSERT INTO Water
  197. VALUES
  198.     ('W0001','Kumisi creek N1',7000,0.3,'2023-06-01'),
  199.     ('W0002','Kumisi creek N2',8500,0.3,'2023-06-01'),
  200.     ('W0003','Kumisi creek N3',2000,0.3,'2023-06-02'),
  201.     ('W0004','Kumisi creek N1',3500,0.3,'2023-06-03'),
  202.     ('W0005','Kumisi creek N2',6000,0.3,'2023-06-06');
  203.  
  204. --inserting into the bottle table
  205. INSERT INTO Bottle (bottle_id, supplier_id, bottle_type, bottle_price, bottle_amount)
  206. SELECT 'BG0001', supplier_id, 'glass', 1.50, 100
  207. FROM Supplier
  208. WHERE supplier_name = 'Suramis gandzi';
  209.  
  210. INSERT INTO Bottle (bottle_id, supplier_id, bottle_type, bottle_price, bottle_amount)
  211. SELECT 'BP0001', supplier_id, 'plastic', 0.3, 2300
  212. FROM Supplier
  213. WHERE supplier_name = 'Pol-Ethyl';
  214.  
  215. INSERT INTO Bottle (bottle_id, supplier_id, bottle_type, bottle_price, bottle_amount)
  216. SELECT 'BG0002', supplier_id, 'glass', 1.50, 1550
  217. FROM Supplier
  218. WHERE supplier_name = 'Suramis gandzi';
  219.  
  220. INSERT INTO Bottle (bottle_id, supplier_id, bottle_type, bottle_price, bottle_amount)
  221. SELECT 'BP0002', supplier_id, 'plastic', 0.3, 650
  222. FROM Supplier
  223. WHERE supplier_name = 'Pol-Ethyl';
  224.  
  225. INSERT INTO Bottle (bottle_id, supplier_id, bottle_type, bottle_price, bottle_amount)
  226. SELECT 'BP0003', supplier_id, 'plastic', 0.3, 950
  227. FROM Supplier
  228. WHERE supplier_name = 'Pol-Ethyl';
  229.  
  230. INSERT INTO Bottle (bottle_id, supplier_id, bottle_type, bottle_price, bottle_amount)
  231. SELECT 'BP0004', supplier_id, 'plastic', 0.3, 650
  232. FROM Supplier
  233. WHERE supplier_name = 'Pol-Ethyl';
  234.  
  235. INSERT INTO Bottle (bottle_id, supplier_id, bottle_type, bottle_price, bottle_amount)
  236. SELECT 'BP0005', supplier_id, 'plastic', 0.3, 750
  237. FROM Supplier
  238. WHERE supplier_name = 'Pol-Ethyl';
  239.  
  240. INSERT INTO Bottle (bottle_id, supplier_id, bottle_type, bottle_price, bottle_amount)
  241. SELECT 'BP0006', supplier_id, 'plastic', 0.3, 9000
  242. FROM Supplier
  243. WHERE supplier_name = 'Pol-Ethyl';
  244.  
  245. INSERT INTO Bottle (bottle_id, supplier_id, bottle_type, bottle_price, bottle_amount)
  246. SELECT 'BP0007', supplier_id, 'plastic', 0.3, 7000
  247. FROM Supplier
  248. WHERE supplier_name = 'Pol-Ethyl';
  249.  
  250. INSERT INTO Bottle (bottle_id, supplier_id, bottle_type, bottle_price, bottle_amount)
  251. SELECT 'BG0003', supplier_id, 'glass', 1.50, 550
  252. FROM Supplier
  253. WHERE supplier_name = 'Suramis gandzi';
  254.  
  255. INSERT INTO Bottle (bottle_id, supplier_id, bottle_type, bottle_price, bottle_amount)
  256. SELECT 'BG0004', supplier_id, 'glass', 1.50, 1700
  257. FROM Supplier
  258. WHERE supplier_name = 'Suramis gandzi';
  259.  
  260. INSERT INTO Bottle (bottle_id, supplier_id, bottle_type, bottle_price, bottle_amount)
  261. SELECT 'BG0005', supplier_id, 'glass', 1.50, 120
  262. FROM Supplier
  263. WHERE supplier_name = 'Suramis gandzi';
  264.  
  265. INSERT INTO Bottle (bottle_id, supplier_id, bottle_type, bottle_price, bottle_amount)
  266. SELECT 'BG0006', supplier_id, 'glass', 1.50, 1200
  267. FROM Supplier
  268. WHERE supplier_name = 'Suramis gandzi';
  269.  
  270. INSERT INTO Bottle (bottle_id, supplier_id, bottle_type, bottle_price, bottle_amount)
  271. SELECT 'BG0007', supplier_id, 'glass', 1.50, 1500
  272. FROM Supplier
  273. WHERE supplier_name = 'Suramis gandzi';
  274.  
  275. --inserting into the product table
  276. INSERT INTO Product (product_id, product_type, bottle_id, water_id, product_price, product_amount, date_produced, date_shipped)
  277. VALUES ('P00000001', 'glass', (SELECT bottle_id FROM Bottle WHERE bottle_id = 'BG0001'), (SELECT water_id FROM Water WHERE water_id = 'W0001'), 2.50, 100, '2023-06-01', '2023-06-05');
  278.  
  279. INSERT INTO Product (product_id, product_type, bottle_id, water_id, product_price, product_amount, date_produced, date_shipped)
  280. VALUES ('P00000002', 'plastic', (SELECT bottle_id FROM Bottle WHERE bottle_id = 'BP0002'), (SELECT water_id FROM Water WHERE water_id = 'W0002'), 1.00, 200, '2023-06-02', NULL);
  281.  
  282. INSERT INTO Product (product_id, product_type, bottle_id, water_id, product_price, product_amount, date_produced, date_shipped)
  283. VALUES ('P00000003', 'glass', (SELECT bottle_id FROM Bottle WHERE bottle_id = 'BG0002'), (SELECT water_id FROM Water WHERE water_id = 'W0003'), 2.50, 150, '2023-06-03', '2023-06-06');
  284.  
  285. INSERT INTO Product (product_id, product_type, bottle_id, water_id, product_price, product_amount, date_produced, date_shipped)
  286. VALUES ('P00000004', 'plastic', (SELECT bottle_id FROM Bottle WHERE bottle_id = 'BP0001'), (SELECT water_id FROM Water WHERE water_id = 'W0002'), 1.00, 300, '2023-06-04', NULL);
  287.  
  288. INSERT INTO Product (product_id, product_type, bottle_id, water_id, product_price, product_amount, date_produced, date_shipped)
  289. VALUES ('P00000005', 'plastic', (SELECT bottle_id FROM Bottle WHERE bottle_id = 'BP0001'), (SELECT water_id FROM Water WHERE water_id = 'W0002'), 1.00, 300, '2023-06-04', NULL);
  290.  
  291. INSERT INTO Product (product_id, product_type, bottle_id, water_id, product_price, product_amount, date_produced, date_shipped)
  292. VALUES ('P00000006', 'plastic', (SELECT bottle_id FROM Bottle WHERE bottle_id = 'BP0002'), (SELECT water_id FROM Water WHERE water_id = 'W0002'), 1.00, 300, '2023-06-04', NULL);
  293.  
  294. INSERT INTO Product (product_id, product_type, bottle_id, water_id, product_price, product_amount, date_produced, date_shipped)
  295. VALUES ('P00000007', 'plastic', (SELECT bottle_id FROM Bottle WHERE bottle_id = 'BP0003'), (SELECT water_id FROM Water WHERE water_id = 'W0004'), 1.00, 300, '2023-06-04', NULL);
  296.  
  297. INSERT INTO Product (product_id, product_type, bottle_id, water_id, product_price, product_amount, date_produced, date_shipped)
  298. VALUES ('P00000008', 'glass', (SELECT bottle_id FROM Bottle WHERE bottle_id = 'BG0001'), (SELECT water_id FROM Water WHERE water_id = 'W0003'), 2.50, 100, '2023-06-01', '2023-06-05');
  299.  
  300. INSERT INTO Product (product_id, product_type, bottle_id, water_id, product_price, product_amount, date_produced, date_shipped)
  301. VALUES ('P00000009', 'glass', (SELECT bottle_id FROM Bottle WHERE bottle_id = 'BG0002'), (SELECT water_id FROM Water WHERE water_id = 'W0002'), 2.50, 100, '2023-06-01', '2023-06-05');
  302.  
  303. INSERT INTO Product (product_id, product_type, bottle_id, water_id, product_price, product_amount, date_produced, date_shipped)
  304. VALUES ('P00000010', 'glass', (SELECT bottle_id FROM Bottle WHERE bottle_id = 'BG0003'), (SELECT water_id FROM Water WHERE water_id = 'W0001'), 2.50, 100, '2023-06-01', '2023-06-05');
  305.  
  306. --inserting into the person table
  307.  
  308. INSERT INTO Person
  309. VALUES
  310.     ('00000000001'),
  311.     ('00000000001'),
  312.     ('00000000001'),
  313.     ('00000000001'),
  314.     ('00000000001'),
  315.     ('00000000001'),
  316.     ('00000000001'),
  317.     ('00000000001'),
  318.     ('00000000001'),
  319.     ('00000000001'),
  320.     ('00000000001');
  321.  
  322.  
  323.  
  324.  
  325.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement